Независимости собственных адресных пространств каждой задачи LDT (local description table).



Общее разделяемое адресное пространство для обмена GDT (global description table).

В микропроцессорах Х86 реализована сегментная организация и может подключаться страничная.

Сегментная организация виртуальной памяти

Сегментная организация памяти предполагает наличие двух компонентов памяти:

* виртуальную,

 * физическую.

Все пространство виртуальной памяти делится на виртуальные адресные пространства процессов, а виртуальное адресное пространство процессов делится на сегменты в общем случае разного размера.

Отображение виртуальных адресных пространств процессов выполняется через таблицы дескрипторов сегментов.

Смежные сегменты процесса могут получить несмежные сегменты физической памяти.

Адресация памяти в командах программ осуществляется виртуальной парой Selector: offset (номер сегмента, адрес внутри сегмента), которая преобразуется операционной системой в адрес физической памяти.

Процесс преобразования виртуального адреса в физический осуществляется с помощью специальных регистров (GDTR, LDTR, IDTR, TR), доступных только операционной системе, таблиц дескрипторов сегментов (LDT, GDT, IDT) и таблиц контекстов прерванных задач TSS.  

После активизации (создании) процесса ОС заносит указатель селектора LDT в таблице GDT в регистр LDTR.

Это делает недоступным LDT процесса для другого процесса.

Использование таблиц локальных дескрипторов LDT позволяет разнести физические адресные пространства отдельных задач без права их обра­щения к "чужой" памяти, а система привилегий, встроенная в архитек­туру процессора, предотвращает несанкционированный вызов задачами защищенных процедур (например, программ операционной системы) или обращение к устройствам ввода-вывода.

Защита адресных пространств задач выполняется отдельными адресными пространствами и контролем уровней привилегий.

Каждый дескриптор имеет DPL (descriptor privilege level), задающий уровень привилегий сегмента.

В физической памяти могут быть сегменты кода, данных, стека, таблиц дескрипторов сегментов LDT, GDT, IDT, TSS .

Все сегменты физической памяти имеют дескрипторы, которые сведены в таблицы и имеют 8-байтный формат (дескриптор страниц имеет 4 – байтный формат, в Pentium – 8 байт).       

Таблицы дескрипторов также сведены в отдельные сегменты.      

Имеется три вида дескрипторов сегментов: GDT, LDT, IDT (дескриптор шлюза и TSS находится в GDT).

GDT– глобальная таблица дескрипторов для описания сегментов системного и сегментов общего (межзадачного взаимодействия) назначения (TSS и др.).

Эти сегменты могут использоваться всеми процессами.

Таблица GDT одна.

LDT – локальная таблица дескрипторов сегментов для описания сегментов процессов ( по одной на каждый процесс ).

В каждый момент времени активной может быть только одна таблица LDT.

Итак, число таблиц GDT одна, а LDT- равна числу процессов.  

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

Порядок дескрипторов в таблице (кроме нулевого) не имеет значения.

Сегменты активны, если их таблицы в ОЗУ.

IDT ( interrupt description table ) - содержит таблицу 256 векторов прерываний.

В регистрах GDTR и IDTR указываются начальные адреса сегментов с таблицами GDT и IDT.   

В регистре LDTR указывается селектор дескриптора таблицы LDT в таблице GDT.

В регистре TR ( task register – регистр задач) – указатель TSS (task state segment .

Для загрузки GDTR предусмотрена специальная привилегированная команда lgdt (load global descriptor table, загрузка таблицы глобальных дескрипторов), которая требует указания в качестве операнда имени псев­додескриптора.

 

Структуру виртуального адреса команды можно представить в следующем виде:

 

В реальном режиме в сегментные регистры загружаются базовые адреса сегментов в явной форме.

Для сегментов данных и стекапрограммистом командами программы, для сегмента кода это делает ОС.

В защищенном же режиме в сегментные регистры загружаются не сегментные адреса, а  селекторы, в состав которого входит номер (адрес) или индекс дескриптора соответствующего сегменту.

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

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

Индекс дескриптора записывается в селектор, начиная с бита 3, что экви­валентно умножению его на 8.

Таким образом, можно считать, что селекторы последователь­ных дескрипторов представляют собой числа 0, 8, 16, 24 и т.д.

Максимальное число глобальных и локальных сегментов (по числу дескрипторов) задачи 213 (по 8 Кбайт) равно 16 К (т.е . либо GDT, либо  LDT ).

В процессоре для каждого из сегментных регистров имеется так называемый теневой 96 р. программно – недоступный регистр дескриптора, который имеет формат.

Теневые регистры не доступны программисту; они автоматически загружаются процессором из таблицы дескрипторов каждый раз, когда процессор загружает соответствующий сегментный регистр.

Именно содержимое теневого регистра опреде­ляет область памяти, к которой обращается процессор при выполнении конкретной команды.

 

Так как доступ к ним быстрее, чем к таблице дескрипторов, то они играют роль КЭШ дескрипторов.

Таким образом, в защищенном режиме программист имеет делос селекторами, т.е. номерами дескрипторов, а процессор - с самими дескрипторами, хранящимися в теневых регистрах.

В реальном режиме теневые регистры заполняются не из таблицы дескрипторов, а непосред­ственно самим процессором.

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

Двухразрядный код 0 и 1 битов селектора указывают требуемый уровень привилегий задачи RPL – request privillege level в пределах 0 – 3.

 

Уровень привилегированности задачи называют текущим уровнем привилегированности (current privilege level, CPL).

Каждый дескриптор и каждый селектор также имеют свои  уровни привилегированности, называемые соответственно уровнем привилегиро­ванности дескриптора (descriptor privilege level, DPL) и запрашиваемым уровнем привилегированности (requested privileged level, RPL). 

Фактиче­ски текущий уровень привилегированности задачи (CPL) представляет со­бой не что иное, как уровень привилегированности селектора (RPL), загру­женного в данный момент в регистр CS.

Бит 2 указывает, какая таблица дескрипторов - GDT или LDT используется для преобразования виртуального адреса ( при 0 - GDT , иначе LDT ).

Биты 3-15 задают адрес (номер) дескриптора сегмента в выбранной таблице дескрипторов. 

Процессор по этим адресам нахо­дит нужный дескриптор с базовым адресом сегмента и др. данными.

Индекс селектора (3 – 15 ) задает максимальное число дескрипторов в таблицах GDT и LDT, равным 2 ^ 13 = 8 к.

32 – разрядный код смещения offset задает адрес ячейки в сегменте ОЗУ. 

Общий вид сегментной адресации памяти можно представить в виде, изображенном на рисунке.

 

Адрес ОЗУ сегмента равен сумме базового адреса (иногда упоминаемого как номер сегмента), указанного в дескрипторе, и смещения, указанного в компоненте offset команды.

Разрядность offset задает максимальный размер сегмента ОЗУ ( 232 = 4 Гб ).

Как уже отмечалось выше, обращение к сегментам в защищенном режиме возможно исключи­тельно через дескрипторы этих сегментов.

Для доступа к сегменту уровень привилегий, указанный в команде (RPL), должен быть не ниже уровня привилегий сегмента, указанного в дескрипторе сегмента DPL (description privilege level ).     

После получения доступа к сегменту уровень привилегий становится текущим (CPL –current privilege level ), который фактически совпадает с RPL, так как RPL >= DPL .

Размер дескриптора сегмента равен 8 байт, и он содер­жит все характеристики сегмента, необходимые для проверки правильно­сти доступа к нему и нахождения его в физическом адресном пространстве.

 


Дата добавления: 2018-08-06; просмотров: 371; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!