Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Шпоры по ассемблеру, 1ый семестр (Гончаревич А Л) [3131 вопросов] / шпоры-1 / 26Организация защиты кода и данных в защищенном режиме

..docx
Скачиваний:
49
Добавлен:
15.06.2014
Размер:
16.07 Кб
Скачать
  1. Организация защиты кода и данных в защищенном режиме.

В защищенном режиме процессор обеспечивает определенные механизмы защиты на основе сегментации и на основе страничного преобразования. Механизмы защиты позволяют ограничивать доступ к определенным сегментам или страницам при помощи уровней привилегий (4 для сегментов и 2 для страниц). Например, критические код и данные операционной системы могут быть расположены на более привилегированном уровне, чем прикладные программы. Это позволит ограничить и контролировать доступ прикладных программ к функциям и данным операционной системы.

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

  • контроль предела;

  • контроль типа;

  • контроль уровня привилегий;

  • контроль выравнивания;

  • ограничение адресного пространства;

  • ограничение точек входа в процедуры (для шлюзов);

  • ограничение набора команд (привилегированные инструкции);

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

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

в защищенном режиме микропроцессор поддерживает два типа защиты — по привилегиям и доступу к памяти. В отличие от реального режима, в защищенном режиме программа уже не может запросто обратиться по любому физическому адресу памяти. Для этого она должна иметь определенные полномочия и удовлетворять ряду требований.  В защищенном режиме любой запрос к памяти как со стороны операционной системы, так и со стороны прикладных программ должен быть санкционирован. Микропроцессор аппаратно контролирует доступ программ к любому адресу в оперативной памяти. Для получения доступа целевой адрес, к которому хочет получить доступ программа, должен быть описан для программы. Это означает, что участок физической памяти, содержащий нужный адрес, должен быть описан с помощью некоторого дескриптора сегмента, который помещается в одну из трех дескрипторных таблиц. Локализация этих таблиц осуществляется с использованием одного из рассмотренных нами системных регистров — gdtr, Idtr или і dt г. Программе, которая желает использовать данный участок памяти, должен быть сообщен указатель на соответствующий дескриптор в одной из двух дескрипторных таблиц — GDT или LDT. Что касается таблицы IDT, то работа с ней осуществляется по несколько иному принципу, поэтому о ней мы поговорим позже. Указатель на дескриптор сегмента в одной из таблиц GDT или LDT, в зависимости от функционального назначения описываемого дескриптором участка памяти (сегмента), помещается в один из шести сегментных регистров. Таким образом, в защищенном режиме меняется роль сегментного регистра — теперь он содержит уже не адрес, а селектор или индекс в таблице дескрипторов сегментов. Но само назначение сегментных регистров не меняется — они по-прежнему указывают на сегменты команд, данных и стека, но делают это, используя принципиально иные механизмы. 

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

Наиболее важные поля байта AR — это dpi и биты R/W, C/EDhI, которые вместе определяют тип сегмента. Поле dpi — часть механизма защиты по привилегиям. Суть этого механизма заключается в том, что конкретный сегмент может находиться на одном из трех уровней привилегированности с номерами 0, 1, 2 и 3.

Самым привилегированным является уровень 0. Существует ряд ограничений на взаимодействие сегментов с различными уровнями привилегий. Приведем назначение некоторых полей дескриптора сегмента:

приведена структура дескриптор сегмента:

limit_l и limit_2 — 20-разрядное поле, определяющее размер сегмента;

base_l и base_2 — 32-разрядное поле, определяющее значение линейногоадре-

са начала сегмента в памяти;

AR — байт, поля которого определяют права доступа к сегменту;

D — бит разрядности операндов и адресов (глава 3);

G — бит гранулярности.