Wikia

OSDev Wiki

Физический адрес

Обсуждение0
263статьи на этой вики

Физический адрес — это адрес, по которому производится реальное обращение к памяти.

Обычно программисты не имеют напрямую дело с физическими адресами. Вместо этого они работают с виртуальными адресами (в терминологии фирмы Intel — с логическими адресами), которые затем преобразуются процессором в физические. Процесс преобразования может включать несколько стадий. Например, в реальном режиме IA-32 стадия всего одна — преобразование логического адреса, состоящего из селектора сегмента и смещения, в линейный, численно совпадающий с физическим. В защищённом режиме логический адрес сначала преобразуется в линейный, а уже последний преобразуется в физический (частным случаем — когда страничный механизм отсутствует или неактивен — является совпадение линейного и физического адресов). В 64-разрядном режиме преобразование выполняется в одну стадию. Здесь линейный адрес совпадает с логическим адресом, поскольку механизм сегментации отключен, и преобразование производится лишь с помощью страничного механизма из линейного в физический адрес.

Разрядность физического адреса зависит от модели процессора. Микропроцессоры 8086 и 80186 использовали 20-разрядный физический адрес, 80286 — 24-разрядный, 80386 и ряд последующих 32-разрядных процессоров — 32-разрядный. Начиная с микропроцессора Pentium Pro, появилась возможность использования расширенных 36-разрядных физических адресов — технология PAE. С выпуском 64-разрядных микропроцессоров (технологии AMD64 и Intel EM64T) теоретическая разрядность физического адреса возросла до 64 бит, однако на практике используются более узкие физические адреса, но не меньше, чем 36 бит.

Подпробно способы преобразования логических адресов в физические описаны в разделах Управление памятью в реальном режиме, Управление памятью в защищённом режиме и Управление памятью в режиме IA-32e.

Викия-сеть

Случайная вики