Сделать свой сайт бесплатно

Реклама

Создай свой сайт в 3 клика и начни зарабатывать уже сегодня.

@ADVMAKER@

25.Защита памяти

21.01.2012

25.Защита памяти

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

Автоматически выполняются 1, 2 и 3. Программа может явно использовать проверку 4. 5 выполняется автоматически на уровне привилегий 3, если включена проверка выравнивания.

1. Проверка прав доступа (команда LAR -Load Access Rights).

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

2. Проверка доступа чтения/записи VERR - проверка на чтение (VERify for Reading) и VERW - проверка на запись (VERify for Writing).

3. Проверка предела (команда LSL - Load Segment Limit).

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

4. Проверка привилегии доступа вызывающей процедуры (команда ARPL - Adjust RPL - выровнять RPL).Поле запрошенного уровня привилегий RPL в селекторе содержит уровень привилегий вызывающей процедуры, т.е. её CPL. Прикладная процедура может вызывать системные процедуры (если это позволено) и передавать селекторы сегментов, к которым ей нужно обращаться. При доступе к сегменту вместе с RPL будет учитываться CPL. Большее значение определяет итоговый уровень привилегий.

Прикладная программа не может обратиться к системным сегментам, даже если она установит значение RPL в 0 - не позволит CPL. Прикладная программа может передать системной процедуре селектор с нулевым RPL и таким образом воспользоваться системным сегментом. Команда ARPL используется для того, чтобы скорректировать значение RPL переданного селектора. Если RPL меньше CPL вызывающей процедуры, то RPL:=CPL. Значение CPL вызывающей команды берется из стека.

5. Проверка выравнивания.

Когда CPL = 3, можно проверять выравнивание при доступе к памяти - это делается установкой флага AM в CR0 и AC в EFLAGS. Невыравненное обращение к памяти генерирует исключение выравнивания (#AC).

Комментарии (0)Просмотров (336)


Зарегистрированный
Анонимно