Виды защит(алгоритмы проверок)


Во время вычисления физического адреса происходит проверка лигитивности (разрешения) доступа к ячейке памяти. Проверка по 6 пунктам:
1. Проверка границы
2. Проверка типа
3. Проверка уровня привилегией
4. Ограничение адресного домена
5. Ограничение точек входа в процедуру
6. Ограничение набора команд
Если все удачны то происходит выполнение команды.
Проверка границы сегмента
Т.к. размер сегмента плавающий, надо проверять имеет ли право доступа процессор к этой ячейке. Зависит от флага G (единица измерения 1 байт или 4 Кб ), флаг В используется для определения доступа 32 или 16 битных, флаг Е признак или направление расширения.
Расширение вниз для поля Е возможно только для сегмента данных.
Е=1 – память растет вниз
Проверка типа
Процессор использует флаг S и поле Type. S=0 – системный сегмент, S=1 – данные или код (в зависимости от старшего бита поля Type).
Основная операция IO, при которой производится проверка. 1.При загрузке селектора в сегментный регистр. Если загружен стековый регистр, то может быть загружен сегментом данных разрешением записи W=1. 2.Попытка инструкции обратиться к текущему сегменту ( а) попытка записи в текущий сегмент кода, б) попытка записи в сегмент данных по чтению, в) попытка чтения кодового сегмента при запрете чтения). 3.Доступ к нулевому селектору сегмента.
Проверка уровней привилегий
0 – уровень имеет больше всего доступа, предназначен для ядра ОС, 1 и 2 – для окружения ОС (драйверов), 3- для прикладных ПО
При попытке доступа к уровню, который не имеет сегмент процессор генерирует ошибку.
CPI – уровень привилегий текущей программы, хранится в CS и SS
DPL- уровень привилегий сегмента или шлюза
Хранится в поле DPL дескриптора
RPD – запрашиваемый уровень привилегий располагается в сегментном регистре, используется с СPL, для определения имеет ли программа право доступа к какому либо сегменту.
Для сегмента данных: DPI – показ наивысшее уровень привилегии, который должен иметь кодовый сегмент для доступа к сегменту данных.
Шлюз: DPL интерпретирует как у данных.
Для кодовых сегментов: не конформный (С=0) к данному кодовому сегменту могут обратиться только более привилегированные сегменты, конформный (С=1) доступ могут иметь сегмент, уровень привилегий которого меньше, чем у текущего кодового сегмента.

Загрузка...