Глава 3. Адресация памяти в защищённом режимеПервое, с чем сталкивается программа при переходе в защищённый режим - это совершенно другая система адресации памяти. Для начала, давайте вспомним, как это происходит в режиме реальных адресов - для обращения к памяти используется пара 16-разрядных регистров - сегментный регистр и смещение.
Осталось заметить, что, вообще говоря, в режиме реальных адресов адресное пространство немного больше одного мегабайта, а именно:
При этом адрес будет равен:
Теперь давайте рассмотрим схему образования адреса в защищённом режиме, как это происходит в процессоре i386 (80386 - это базовая модель для любого Pentium-а).
Как видите, информации об одном сегменте достаточно много. Для того, чтобы её хранить, используется не регистр, а специальная область памяти. Сегмент по-прежнему указывается в сегментном регистре, но теперь в нём хранится номер сегмента из списка определённых сегментов. Этот номер называется селектор. Предел сегмента - это максимально допустимое смещение внутри него, таким образом, предел сегмента определяет его размер: размер_сегмента = предел_сегмента + 1 Обратите внимание, что значение предела - 20-разрядная величина, это значит, что максимальное значение предела равно 2 20 - 1. Эта способность измерять сегмент либо байтами, либо страницами, называется гранулярность. |