Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
память перераб.doc
Скачиваний:
10
Добавлен:
18.07.2019
Размер:
1.29 Mб
Скачать

1 Процессор Pentium поддерживает еще один тип таблицы дескрипторов — таблицу дескрипторов прерываний (Interrupt Descriptor Table, idt). Эта таблица используется системой прерываний.

Таблица GDT одна, а таблиц LDT столько, сколько в системе выполняется задач (процессов). При этом в каждый момент времени операционной системой и аппаратными средствами процессора используется только одна из таблиц LDT, а именно та, которая соответствует выполняемому в данный момент пользовательскому процессу.

Таблица GDT описывает общую часть виртуального адресного пространства процессов, a LDT — индивидуальную часть для каждого процесса.

Таблицы GDT и LDT размещены в оперативной памяти в виде отдельных сегментов. Сегменты LDT и GDT содержат системные данные, поэтому их дескрипторы хранятся в таблице GDT. Таким образом, таблица GDT наряду с записями о других сегментах содержит запись о самой себе, а также обо всех таблицах LDT.

В каждый момент времени в специальных регистрах GDTR и LDTR хранится информация о местоположении и размерах глобальной таблицы GDT и активной таблицы LDT соответственно. Регистр GDTR содержит 32-разрядный физический адрес начала сегмента GDT в памяти, а также 16-битный размер этого сегмента (рис. .4). Регистр LDTR указывает на расположение сегмента LDT в оперативной памяти косвенно — он содержит индекс дескриптора в таблице GDT, в котором содержится адрес таблицы LDT и ее размер.

Рис. .4. Формат регистра GDTR

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

Селектор извлекается из одного из шести 16-разрядных сегментных регистров процессора (CS, SS, DS, ES, FS или GS) в зависимости от типа команды и стадии ее выполнения — выборки кода команды или данных. Например, при обращении к памяти во время выборки следующей команды используется селектор из сегментного регистра кода CS, а при записи результатов в сегмент данных процесса селекторы извлекаются из сегментных регистров данных DS или ES, если же данные записываются в стек по команде PUSH, то механизм виртуальной памяти извлекает селектор из сегментного регистра стека SS, и т. п.

Рис. .5. Формат селектора

Селектор состоит из трех полей (рис. .5):

индекса, который задает последовательный номер дескриптора в таблице GDT или LDT (13 бит);

указателя типа используемой таблицы дескрипторов: GDT или LDT (1 бит);

требуемого уровня привилегий — RPL (2 бита), это поле используется механизмом защиты данных, который будет рассмотрен ниже.

Виртуальное адресное пространство процесса складывается из всех сегментов, описанных в общей для всех процессов таблице GDT, и сегментов, описанных в его собственной таблице LDT. Разрядность поля индекса определяет максимальное число глобальных и локальных сегментов процесса — по 8 Кбайт (213) сегментов каждого типа, всего 16 Кбайт сегментов. С учетом максимального размера сегмента — 4 Гбайт — каждый процесс при чисто сегментной организации виртуальной памяти (без включения страничного механизма) может работать в вирту-;алъном адресном пространстве в 64 Тбайт.

Каждый дескриптор в таблицах GDT и LDT имеет размер 8 байт, поэтому максимальный размер каждой из этих таблиц — 64 Кбайт (8 байт х 8 Кбайт дескрипторов).

Из приведенного описания видно, что процессор Pentium обеспечивает поддержку работы ОС в двух отношениях:

поддерживает работу виртуальной памяти за счет быстрого аппаратного способа преобразования виртуального адреса в физический;

обеспечивает защиту данных и кодов различных приложений.