Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
otvety_po_vt.doc
Скачиваний:
4
Добавлен:
02.08.2019
Размер:
455.17 Кб
Скачать
  1. Основные понятия защищенного режима

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

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

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

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

  1. Соотношение уровней привилегий источника и приемника в защищенном режиме

Соотношение уровней привилегий источника и приемника в защищенном режиме должны иметь одинаковый уровень привилегий.

  1. Передача управлений между уровнями привилегий

Передача управлений между уровнями привилегий. Как было указано выше, передача управления командами CALL или JMP возможна только в пределах одного уровня привилегий. Для преодоления данного ограничения (передачи управления между уровнями привилегий) применяются два способа:

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

- применение специальных дескрипторов - шлюзов (вентилей) вызова.

Подчиненные сегменты кода позволяют обращаться к себе на любом уровне привилегий, так как они подчиняются тому уровню привилегий, который передается им командами CALL или JMP. Поэтому здесь отсутствуют проблемы согласования уровней. Однако при использовании подчиненных сегментов передача управления разрешается только в сторону повышения привилегий (внутрь колец, CPL > DPL), что связано с проблемой правильной организацией возврата к исходной программе.

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

В отличие от подчиненных сегментов, когда при передаче управления уровень привилегий не изменяется, применение вентилей (шлюзов) вызова связано с изменением уровней привилегий. При этом используют дескрипторы вентилей вызова. В отличие от дескрипторов сегментов кода, данных, стека, дескрипторы вентилей не определяют адресное пространство, а содержат адрес точки входа.

Размещаются дескрипторы в дескрипторных таблицах и для обращения к ним необходимый селектор следует загружать только в сегментный регистр CS. Следует отметить, что указанную структуру имеют и другие типы вентилей: вентиль задач - для переключения задач; вентили прерываний и ловушек - используются для вызова обработчиков прерываний (отличие в том, что вентили прерываний сбрасывают флаг IF, а вентили ловушек - нет).

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]