Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
мои шпоры ОСиСП(1).doc
Скачиваний:
32
Добавлен:
26.09.2019
Размер:
1.63 Mб
Скачать

3. Последовательность действий по преобразованию адреса в защищенном режиме

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

RPL – поле уровня запрашиваемых привилегий. В выборе дескриптора не участвует, а исп. Для контроля привилегий в механизме защиты.

TI – идентификатор таблицы. Показывает из какой дескрипторной таблицы следует выбрать дескриптор.0 – GDT, 1 – LDT.

  1. Взять селектор из сегментного регистра.

2.1) Если бит TI=0, то для преобразования задействована глобальная дескрипторная таблица. В этом случае:

А) Определяется адрес дескриптора в GDR. Для этого к линейному адресу GDR (хранится в GDTR) прибавляется значение индекса, умноженного на 8. Получится адрес выбранного дескриптора.

Б) Из дескриптора выбирается базовый адрес сегмента (32бита)

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

2.2) Если бит TI=1 , т.е. показывает на LDT, то:

А) Взять селектор сегмента LDT из регистра LDTR.

Б) Выделить в селекторе поле индекса, умножить этот индекс на 8 и т.о. получить

смещение внутри GDT, которое указывает на расположение дескриптора в LDTR.

В) Прибавить полученное значение к адресу GDT из регистра GDTR.

Г) Считать из памяти адресуемый дескриптор.

Д) Выделить из этого дескриптора базовый адрес сегмента, содержащего таблицу

LDT, полученный адрес является адресом;

  1. Выделить значение из поля исходного индекса селектора, умножить его на 8 и прибавить к адресу дескрипторной таблицы и считать дескриптор по этому адресу;

4) Выделить из дескриптора базовый адрес сегмента;

5) Прибавить значение смещения к базовому адресу сегмента, в результате получим линейный адрес

6) Осуществить обращение к памяти в соответствии с полученным линейным адресом

Если отмеченные действия производить каждый раз при преобразовании адреса, то время преобразования адреса было бы значительно больше, чем при работе процессора в реальном режиме. Для ускорения таких преобразований адреса в процессоре имеются специальные теневые регистры, связанные с сегментными регистрами и LDTR. Размер этих регистров 64 бита и при загрузке нового значения либо в сегментный регистр, либо в LDTR, в соответствующий теневой регистр помещается выбранный дескриптор из дескрипторной таблицы. Применение теневых регистров позволяет время преобразования адреса при работе в защищенном режиме сделать почти равным времени преобразования адреса при работе процессора в реальном режиме.

В случае страничной организации памяти из линейного адреса происходит переход к физическому адресу.

PDE – Page Directory Entry.

PTE – Page Table Entry.

PDBR – Page Directory Base Register.

В процессоре имеется специальная ассоциативная страница буфера. Таким образом, операция происходит в процессоре без обращения к памяти. На страничном уровне поддерживается только два уровня привилегий: системный и пользовательский.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]