Информационная основа работы механизма защиты

 

Информационной основой механизма защиты является дескриптор. По области использования дескрипторы делятся на системные и пользовательские. По структуре и типу описываемых объектов различают следующие дескрипторы:

- дескрипторы – описатели сегментов;

- дескрипторы – описатели точек входа в программы, т.е. дескрипторы шлюзов.

К описателям сегментов относятся:

1. дескрипторы сегментов (программных, стековых, данных)

2. системные дескрипторы: дескрипторы сегментов состояния задач и дескрипторы сегментов различных таблиц.

Все дескрипторы шлюзов являются системными. К ним относятся:

1. дескрипторы шлюзов вызовов;

2. дескрипторы шлюзов прерываний;

3. дескрипторы шлюзов ловушек;

4. дескрипторы шлюзов задач.

Дескрипторы сегментов имеют формат 64 разряда (8 байт), из которых механизм защиты использует 20-ти разрядное поле размера сегмента, 8-ми разрядный байт доступа (AR) и бит G – дробности (гранулярности).

Байт прав доступа содержит следующие поля:

P (Present) - бит присутствия сегмента в оперативной памяти. Используется механизмом виртуальной памяти для организации загрузки (подкачки – свопинга) нужного сегмента с диска в оперативную память. Если сегмент в оперативной памяти отсутствует, то Р=0. Бит Р устанавливается в единицу при загрузке сегмента в ОЗУ. Механизмом защиты бит Р используется в проверках при загрузке стекового сегмента.

DPL (Descriptor Privilege Level) – двухразрядное поле, определяющее уровень привилегий сегмента. Механизмом защиты применяется в проверках корректности использования сегмента.

S – тип дескриптора сегмента. При S=0 дескриптор является сегментным, т.е. определяет сегменты программ, данных и стеков. При S=1 дескриптор используется как системный дескриптор.

TIPE – четырехразрядное поле, интерпретируемое по разному, в зависимости от типа дескрипторов.

В системных дескрипторах, т.е. при S=1, разряды поля TIPE кодируют подтипы системных дескрипторов. Коды подтипов системных дескрипторов используются механизмом защиты при проверках корректности обращений к программам.

В дескрипторах сегментов программ и данных, т.е. при S=0, поле TIPE содержит следующие признаки:

E – бит исполняемости, который уточняет тип сегмента. При E=0 сегменты определяются как сегменты данных, а при Е=1 – как кодовые сегменты. Механизмом защиты используются при проверках корректности обращений к программам и данным.

ED/C – для сегментов данных этот бит определяет направление расширения (ED – расширение). Используется механизмом защиты при проверках соответствия адреса обращения границам сегмента. Для программных сегментов этот бит определяет подчиненность сегмента (с – conforming). Механизмом защиты используется при проверках корректности межсегментных передач управления.

W/R – определяет права использования. Для программных сегментов, т.е. при E=1, признак W/R определяет доступность сегментов по чтению (R от слова Read). Изменение, т.е. модификация, программных сегментов, запрещена, безусловно. При этом при R=1 разрешается производить чтение содержимого сегментов программ. При R=0 попытка чтения сегмента программ вызывает прерывание, что делает невозможным копирование программ, т.е. чтение сегмента с целью его копирования. Следует отметить, что при R=0 программа из этого сегмента выполняться будет без всяких ограничений, т.е. допускается чтение команд из сегмента только для их исполнения, а не для копирования. Для сегментов данных, т.е. при Е=0, признак W/R определяет доступность сегментов по записи (W от слова Write). Процедура чтения сегментов данных разрешена, безусловно, а запись может быть либо разрешена при W=1 , либо запрещена при W=0. Механизмом защиты используется при проверках корректности использования сегмента.

А – бит обращения (доступа) к сегменту. Бит А устанавливается в единицу при обращении к сегменту, т.е. при загрузке соответствующего селектора в сегментный регистр. Этот бит периодически проверяется ОС, которая выявляет невостребованные сегменты, имеющие А=0. Сегменты с А=0 выводятся из ОЗУ на диск, освобождая место для других сегментов. Этот бит механизмом защиты непосредственно не используется, а используется в механизме виртуальной памяти.