Для адресации памяти
в реальном режиме процессор использует два
регистра, в одном из которых хранится
сегмент, а в другом — смещение. Их
совокупность определяет логический адрес
памяти, физический адрес получается
сдвигом содержимого регистра сегмента на 4
разряда влево и сложением полученного с
содержимым регистра смещения. Такая схема
реализуется аппаратно и дает 20—разрядный
физический адрес в пределах первого
мегабайта оперативной памяти.
В защищенном режиме
также используются два регистра для
логического адреса: селектор и смещение.
Регистр селектора не сдвигается влево, как
в реальном режиме, а указывает на один из
элементов так называемой таблицы
дескрипторов. В отличие от реального режима
регистр смещения содержит 32 разряда, т.к. в
защищенном режиме сегмент может быть
любого размера вплоть до 4 Гбайт (в
процессоре 80286 используется 16-разрядный
регистр смещения и поэтому размер
используемых в нем сегментов по—прежнему
составляет 64 Кбайт). Совместное
использование выбираемого селектором
дескриптора и смещения в конечном счете
формирует физический адрес (см. рис.8.1).
Важную роль в этой
схеме играет таблица дескрипторов, 8—байтные
элементы которой хранят три поля: базовый
адрес, предел и поле доступа. Базовый адрес
используется для получения физического
адреса, предел содержит размер сегмента в
байтах или страницах по 4096 байт, а поле
доступа — ряд признаков, определяющих
способ использования сегмента. В
защищенном режиме сегменты могут быть либо
сегментами кода, либо сегментами данных. В
сегмент кода нельзя записывать информацию,
а в сегменте данных нельзя исполнять
программу или какую-либо ее часть. Тип
сегмента хранится в поле доступа и, если
программа нарушила правила доступа к
сегменту (например, попыталась изменить
собственный код), возникает аппаратное
прерывание, которое обычно приводит к
выгрузке программы из памяти. Другим
признакоМг хранящимся в поле доступа,
является уровень привилегий, которыми
обладает владеющая
сегментом программа.
Для этого признака выделено 2 бита, поэтому
в защищенном режиме используется 4 уровня
привилегий, причем нулевой уровень —
высший.
Логический адрес
Логический адрес 15 32 16 16
э) б) Рис.8.1.
Адресация в защищенном режиме: а) в
процессорах 80386/80436;