Защита в многозадачном режиме
Виды защиты:
· задачи от задачи
· ОС от прикладных задач
· одну часть ОС от другой части
· защита задач от собственных ошибок
Привилегии
Многие средства защиты основаны на понятии привилегии. Уровень привилегии задачи определяется уровнем привилегии сегмента, в котором эта программа расположена. В каждом дескрипторе сегмента памяти выделяется поле DPL (подполе в поле атрибутов) уровень привилегии дескриптора. Существует 4 уровня привилегий. 0 уровень - самый высокий уровень привилегии. Возможно отключение механизма защиты (0 уровень у всех). Пример полного использования механизма защиты:
уровень 0 - ядро ОС (отлажено и изменению не подлежит)
уровень 1 - драйверы
уровень 3 - СУБД
уровень 4 - БД
Уровень привилегии ограничивает доступ к кодовому сегменту и накладывает ограничения на использование в этой программе команд.
Привилегированные команды - подмножество системных команд, которые используются в программах с уровнем 0.
Процессор может использовать ту память, которая определена как сегмент и описана соответствующим дескриптором в таблице дескрипторов. Каждое обращение к памяти проверяется на соответствие атрибуту защиты.
1. Это команды, связанные с распределением памяти (описание сегментов), изменение таблиц дескрипторов:
· LGDT - загрузка глобальной таблицы дескрипторов
· SGDT - хранение глобальной таблицы дескрипторов
· LTR - загрузка регистра задач
|
|
2. Команды, связанные с организацией ввода/вывода:
· in, out - используются в программах с определенным уровнем привилегий. В регистре флагов есть двухразрядное поле: IOPL - определяет минимальный уровень привилегий программы, которая может использовать команды ввода/вывода
Защита сегментов
Защита основана на согласованности атрибутов защиты.
Атрибуты защиты:
1. Привилегии
программе запрещается:
· данные из сегмента с некоторым уровнем привилегий могут быть считаны из программы того же или более высокого уровня привилегий. DPL - в поле атрибутов существует подполе, которое определяет уровень привилегий сегмента.
· межсегментный переход. Процедура из сегмента с некоторым уровнем привилегий может быть вызвана из программы того же уровня или менее привилегированной программы. Из менее привилегированных программ вызов процедур осуществляется с помощью шлюза вызова. В шлюзе вызова определена точка входа в процедуру. Так же каждый уровень привилегий имеет свой стек. При переключении на другой уровень не может разрушаться исходный стек.
· Все команды, поддерживающие сегментирование и механизмы защиты - привилегированные.
2. Предел (граница)
|
|
· обращаться к сегменту возможно в его пределах
· с его помощью обнаруживается переполнение стека, неверное указание индекса массива
3. Тип сегмента (определяется в поле атрибутов дескриптора)
· сегмент кода
· сегмент данных
4. Права доступа
Дескриптор сегмента может быть отмечен некоторыми правами, ограничивающими набор операций, производимых с его сегментом (чтение, запись, исполняемый или нет).
Дата добавления: 2016-01-04; просмотров: 32; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!