
Шпоры по ассемблеру, 1ый семестр (Гончаревич А Л) [3131 вопросов] / шпоры-1 / 26Организация защиты кода и данных в защищенном режиме
..docx-
Организация защиты кода и данных в защищенном режиме.
В защищенном режиме процессор обеспечивает определенные механизмы защиты на основе сегментации и на основе страничного преобразования. Механизмы защиты позволяют ограничивать доступ к определенным сегментам или страницам при помощи уровней привилегий (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 — бит гранулярности.