Руководство по языку B.Pascal 7

       

Что такое защищенный режим?


Процессор 80286 и более поздние процессоры поддерживают два режима операций: защищенный режим и реальный режим. Реальный ре- жим совместим с работой процессора 8086 и позволяет прикладной программе адресоваться к памяти объемом до одного мегабайта. За- щищенный режим расширяет диапазон адресации до 16 мегабайт. Ос- новное отличие между реальным и защищенным режимом заключается в способе преобразования процессором логических адресов в физичес- кие. Логические адреса - это адреса, используемые в прикладной программе. Как в реальном, также и в защищенном режиме логический адрес - это 32-разрядное значение, состоящее из 16-битового се- лектора (адреса сегмента) и 16-битового смещения. Физические ад- реса - это адреса, которые процессор использует для обмена данны- ми с компонентами системной памяти. В реальном режиме физический адрес представляет собой 20-битовое значение, а в защищенном ре- жиме - 24-битовое.

Когда процессор обращается к памяти (для выборки инструкции или записи переменной), он генерирует из логического адреса физи- ческий адрес. В реальном режиме генерация физического адреса сос- тоит из сдвига селектора (адреса сегмента) на 4 бита влево (это означает умножение на 16) и прибавления смещения. Полученный в результате 20-разрядный адрес используется затем для доступа к памяти.

16Мб----------------- ¦ ¦ --------- ¦ ¦ ¦Смещение+- ¦ ¦ L--------- ¦ ¦ ¦ ¦ +----------------+ L--+----->----------¦+ сегмент 64К -->+----------------+- ¦ ¦ ¦ ¦ ¦ Пространство ¦ --------- ------- ¦ ¦ адресов ¦ ¦Селектор+-+ x 16 +------ ¦ ¦ L--------- L------- ¦ ¦ 0L-----------------

Рис. 17.1 Генерация физического адреса в реальном режиме.

Чтобы получить физический адрес в защищенном режиме, селек- торная часть логического адреса используется в качестве индекса таблицы дескрипторов. Запись в таблице дескрипторов содержит 24-битовый базовый адрес, к которому затем для образования физи- ческого адреса прибавляется смещение логического адреса.

16Мб----------------- ¦ ¦ --------- ¦ ¦ ¦Смещение+- ¦ ¦ L--------- ¦ ¦ ¦ ¦ +----------------+ Таблица дескрипторов L--+----->----------¦+ сегмент 64К ------- -->+----------------+- +------+ ¦ ¦ ¦ +------+ ¦ ¦ Пространство ¦ +------+ ¦ ¦ адресов ¦ -->+------+---- ¦ ¦ ¦ +------+ ¦ ¦ ¦ +------+ 0L----------------- ¦ +------+ ¦ +------+ ¦ +------+ ¦ +------+ ¦ +------+ ¦ +------+ ¦ +------+ ¦ +------+ --------- ¦ +------+ ¦Селектор+-- L------- L---------


Рис. 17.2 Генерация физического адреса в защищенном режиме.

Каждая запись в таблице дескрипторов называется дескриптором и определяет сегмент в памяти. Запись таблицы дескрипторов зани- мает 8 байт, а записанная в дескрипторе информация включает в се- бя базовый адрес, предельное значение и флаги полномочий доступа к сегменту.

Записи предельного значения сегмента и полномочий доступа в дескрипторе определяют размер и тип сегмента. Сегменты могут иметь размер от 1 до 65536 байт и могут быть сегментами кода или сегментами данных. Сегменты кода могут содержать выполняемые ма- шинные инструкции и доступные только по чтению данные. Сегменты данных могут содержать данные, доступные по чтению и записи. За- писывать данные в сегменты кода или выполнять инструкции в сег- ментах данных невозможно. Любая попытка сделать это или попытка доступа к данным вне границ сегмента вызывает общий сбой по на- рушению защиты (сокращенно сбой GP). Поэтому режим и называется защищенным.

По данному адресу в реальном режиме прикладная программа мо- жет определить физический адрес. В защищенном режиме это обычно не так, поскольку селекторная часть логического адреса является индексом в таблице дескрипторов, и сам селектор не имеет прямого отношения к вычислению физического адреса. Это дает то преиму- щество, что управление виртуальной памятью можно реализовать, не влияя на прикладную программу. Например, путем простого обновле- ния поля базового адреса дескриптора сегмента, операционная сис- тема может перемещать сегмент в физической памяти без влияния на использующую сегмент прикладную программу. Прикладная программа ссылается только на селектор сегмента, и на селектор не влияют изменения в дескрипторе.

Прикладная программа редко имеет дело с дескрипторами. При необходимости дескрипторы создаются и уничтожаются операционной системой и администратором памяти, а прикладная программа знает о соответствующих селекторах. Селекторы аналогичны описателям фай- лов - с точки зрения прикладной программы это то, что обслужива- ется операционной системой, но в операционной системе они работа- ют как индексы содержащих дополнительную информацию таблиц.


Содержание раздела