Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
мпс с 1 по 294.doc
Скачиваний:
13
Добавлен:
16.04.2019
Размер:
6.2 Mб
Скачать

1 Поле предела называют также полем границы.

2 Байты сегмента размещены в оп в порядке возрастания адресов памяти или в обратном порядке. Такое размещение также называют соответственно по принципу «младший» и «старший крайний».

Когда G = 1, процессор присоединяет 12 младших единичных разрядов к значению гра­ницы поля из дескриптора. В этом случае истинная граница находится в диапазоне от OFFFH (212 или 4 Кбайта) до OFFFFFFFFH(232- 1 или 4 Гбайта).

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

  1. попытка обращения к байту памяти по адресу > границы;

  2. попытка обращения к слову памяти по адресу > (граница-1);

  3. попытка обращения к двойному слову памяти по адресу > (граница-3);

  4. попытка обращения к учетверенному слову по адресу памяти >(граница-7).

Для сегментов данных в обратной записи граница имеет ту же самую функцию, но ин­терпретируется иначе. В этом случае диапазон ошибочных адресов находится в пределах от границы +1 до: или 64К или 232- 1 (4 Гбайт) в зависимости от состояния разряда В.

Сегмент в обратной записи имеет максимальный размер, когда граница равна нулю.

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

Поле границы дескриптора для дескрипторов таблиц используется процессором, что­бы сделать невозможным обращение из программы к таблице за ее пределы. Так как каж­дый дескриптор имеет 8-байтовую длину, значение границы равно М*8 - 1 для таблицы, которая может содержать до N дескрипторов.

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

Уровни привилегий. Концепция привилегий реализуется посредством задания ключа, принимающего значения от 0 до 3, объектам, распознаваемым процессором. Это значение называется уровнем привилегий. Значение «О» представляет самые большие привилегии, а значение «3» - самые малые. К числу объектов с распознаваемым процессором уровнем привилегий относятся:

  • дескрипторы - они содержат поле, называемое уровнем привилегий дескриптора (DPL);

  • селекторы - они содержат поле, называемое запрашиваемым уровнем привилегий (RPL), RPL предназначен для задания уровня привилегий процедуры, которая вызывает (заг­ружает) селектор;

  • скрытый в процессоре регистр сегмента хранит текущий уровень привилегий (CPL), обычно CPL равен DPL сегмента, который процессор выполняет в данный момент.

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

На рис. 3.25 показано, как уровни привилегий могут интерпретироваться кольцами за­щиты. Центральное кольцо содержит сегменты части ПО, наиболее критичной с позиций защиты, обычно ядра операционной системы. Другие кольца используются под сегменты, менее критичные с точки зрения защиты.

Можно и не использовать все четыре уровня привилегий. Существующие системы ПО спро­ектированы как одно- или двухуровневые. Такие системы просто игнорируют другие уровни.

Одноуровневая система должна использовать уровень «О». Двухуровневая система дол­жна использовать уровни «О» и «3».

Ограничение доступа к данным. Прежде чем программа сможет обратиться к операн­дам, она должна загрузить селектор соответствующего сегмента данных в сегментный регистр данных (DS, ES, FS, GS, SS). Процессор автоматически оценивает обращение к сегменту дан­ных путем сравнения уровней привилегий. Эта оценка обращения происходит в момент загруз­ки селектора для дескриптора сегмента назначения в сегментный регистр данных. Как следу­ет из рис. 3.26, в проверке привилегий участвуют три значения уровня привилегий: