3

Если BIOS представляет собой 16-разрядную программу, работающую в реальном режиме, и в этом режиме возможно обращение только к 1 МБ, как BIOS определяет объем доступной оперативной памяти, например, 1 ГБ?

1 ответ1

7

BIOS представляет собой 16-разрядную программу, работающую в реальном режиме, и в этом режиме можно адресовать только 1 МБ.

Это неверно

16-битный реальный режим не ограничивает процессор до 1 МБ памяти.

Хотя процессор x86 запускается в реальном режиме и по умолчанию использует 16-битный набор инструкций 8086, в наборе инструкций 80286 есть расширения. Если вы префикс 8086 инструкции с байтом 0x67, это позволит этой инструкции доступ к 32-битному регистру, который имеет доступ к 2 32 байта или 4 ГБ памяти.

Если вы используете 64-разрядный процессор, процессор может использовать PAE (расширение физических адресов), которое дает процессору доступ к 2 52 байтам памяти, что больше, чем можно физически установить на любой современной материнской плате.

Источник Как BIOS может определить полный объем расширенной памяти


Как BIOS определяет объем доступной оперативной памяти, например, 1 ГБ?

Он использует методы, которые описаны в таблицах данных для контроллера памяти (северный мост).

Большинство BIOS не могут использовать ОЗУ до тех пор, пока они не определят тип установленной ОЗУ, затем определят размер каждого модуля памяти, а затем сконфигурируют набор микросхем для использования обнаруженной ОЗУ.

Все это зависит от конкретных методов набора микросхем и обычно документируется в таблицах данных для контроллера памяти (северный мост).

ОЗУ непригодно для запуска программ во время этого процесса. BIOS изначально запускается из ПЗУ, поэтому он может играть в необходимые игры с чипами ОЗУ. Но это совершенно невозможно сделать из любой другой программы.

Память обнаружения источника (x86)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .