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

Защита целостности функционирования вычислительной системы.

 

Вычислительные системы проектируются под конкретные режимы работы, определяемые ОС. Четкое выполнение административных функций по поддержке заданных режимов входит в понятие целостности вычислительной системы (ВС). Обеспечение целостности функционирования ВС реализуется механизмами разделения адресного пространства и защиты по уровням привилегий PL. Поэтому механизм защиты процессора INTEL можно подразделить на две части: схемы управления памятью и защита по привилегиям.

Схемы управления памятью включают механизм управления виртуальной памятью и контроль обращений к объектам памяти, что позволяет обнаруживать большинство программных ошибок, например, формирование неверных адресов, выход индекса за пределы массива и т.п.

Защита по привилегиям фиксирует более тонкие ошибки и попытки нарушить целостность функционирования системы.

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

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

 

 

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

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

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

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

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

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

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

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

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

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

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

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

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

 

 

P DPL S IPE

7 6 5 4 3 0

 

 

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

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

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

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

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

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

3 2 1 0

E ED/C W/R A

 

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 выводятся из ОЗУ на диск, освобождая место для других сегментов. Этот бит механизмом защиты непосредственно не используется, а используется в механизме виртуальной памяти.