Защищенный режим

Защищенный режим позволяет адресовать до 4 Гбайт физической памяти, через которые при использовании механизма страничной адресации могут отображаться до 64 Кбайт виртуальной памяти каждой задачи. Режим виртуального 86 является особым состоянием задачи защищенного режима, в котором микропроцессор функционирует как 86, но с возможностью использования 32 разрядных адресов и операндов. Защищенный режим предназначен для обеспечения независимости выполнения нескольких задач, что подразумевает защиту ресурсов одной задачи от возможного воздействия другой. Основным защищаемым ресурсом является память, в которой хранятся коды, данные, и различные системные таблицы. Защищать требуется и совместно используемую аппаратуру обращение, к которой обычно происходит через операцию ввода вывода и прерывания. Защита памяти основана на использовании сегментации.
Сегмент _ это блок адресного пространства памяти определенного назначения. К элементам сегмента возможно обращение с помощью различных инструкций использующих разные режимы адресации для формирования адреса в пределах сегмента. Сегменты выделяются операционной системой, но в реальном режиме любая задача может переопределить значение сегментных регистров, задающих положение сегмента в пространстве памяти. В защищенном режиме прикладная программа может использовать только разрешенное для нее сегменты, выбирая их с помощью селекторов через предварительно сформулированные таблицы дескрипторов сегментов.
Селекторы _ это 16 битные указатели, загруженные в сегментные регистры.
Дескрипторы _ это структуры данных используемые для определения свойств программных элементов (сегментов, вентилей и таблиц). Дескриптор определяет положение в памяти размер занимаемой им области элемента (лимит), его назначение и характеристики защиты. Защита памяти с помощью сегментации не позволяет:

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

Защищенный режим предоставляет средства переключения задач состояния каждой задачи, т.е. значения всех связей с ней регистров может быть сохранено в специальном сегменте состояния задачи (TSS) на который указывает селектор в регистре задачи. При переключении задач достаточно загрузить новый селектор в TR и состояние предусматривающей задачи автоматически сохраняется в ее TSS. А в процессор загружается состояние новой, возможно и ранее прерванной задачи, и начнется ее выполнение. 4 уровневая иерархическая система привилегий предназначена для управления использованием привилегированных инструкций и доступом к дескрипторам. Нулевой уровень соответствует неограниченным возможностям доступа и отводится для ядра операционной системы. Уровень 3 имеет самые ограниченные права и предоставляется прикладным задачам. Сервисы, предоставляемые задачам могут находиться на разных уровнях привилегий. Передача управления между задачами контролируется вентилями, проверяющими правильность использования уровня привилегий. Через вентили задачи могут получить доступ только к разрешенным им сервисам других сегментов. Уровни привилегий относятся к дескрипторам, селекторам и задачам. Кроме того, в регистре флагов имеется поле привилегий ввода вывода, с помощью которого обеспечивается управление доступом к инструкциям ввода вывода и управление флагом прерываний. Дескрипторы и привилегии являются основой системы защиты. Дескрипторы определяют структуры элементов без, которых невозможно их использование, а привилегии определяют возможность доступа к дескрипторам и выполнение привилегированных инструкций. Любое нарушение защиты приводит к возникновению специальных исключений обрабатываемых ядром операционной системы.
Механизм виртуальной памяти позволяет любой задаче использовать логическое адресное пространство размером до 16К сегментов по 4 Гбайта. Для этого каждый сегмент в своем дескрипторе имеет специальный бит, который указывает на присутствие данного сегмента в оперативной памяти в текущий момент времени. Не используемый сегмент может быть выгружен из оперативной во внешнюю память, о чем делается пометка в его дескрипторе. На освободившееся место из внешней памяти может восстановиться содержимое другого сегмента и в его дескрипторе делается пометка о присутствии. При обращении задачи к отсутствующему сегменту микропроцессор вырабатывает соответствующее исключение обработчик, которого и заведует виртуальной памятью в операционной системе. После свопинга страницы или сегмента выполнение задачи продолжается. Поэтому виртуализация памяти для прикладных задач прозрачна.