Научная литература
booksshare.net -> Добавить материал -> Физика -> Александров Е.К. -> "Микропроцессорные системы" -> 158

Микропроцессорные системы - Александров Е.К.

Александров Е.К., Грушвицкий Р.И., Купрянов М.С., Мартынов О.Е. Микропроцессорные системы — Спб.: Политехника, 2002. — 935 c.
ISBN 5-7325-0516-4
Скачать (прямая ссылка): mikroprocessorniesistemi2002.djvu
Предыдущая << 1 .. 152 153 154 155 156 157 < 158 > 159 160 161 162 163 164 .. 528 >> Следующая

рис. 3.24.).
Разряд разрешения записи (W) в дескрипторе сегмента данных указывает,
могут ли команды осуществлять запись в этот сегмент.
Разряд разрешения чтения (R) в дескрипторе кодового1 сегмента указывает,
разрешено ли командам читать из сегмента (например, для доступа к
константам, которые хранятся в командах). Кодовый сегмент, разрешенный
для чтения, может быть прочитан двумя способами:
1) через регистр CS, путем использования префикса переопределения CS;
2) путем загрузки селектора дескриптора кодового сегмента в регистр
сегментов данных (DS, ES, FS или GS).
Проверка типа может быть использована для обнаружения ошибок программы,
при которых делается попытка использовать сегменты так, как это не
предусмотрено программистом . Процессор проверяет информацию типа по двум
алгоритмам:
1) когда селектор дескриптора зафужается в сегментный регистр;
определенные сегментные регистры могут содержать только определенные типы
дескрипторов, например: CS-регистр может загружаться только селектором
кодового сегмента; селекторы кодовых сегментов, для которых не разрешено
чтение, не могут быть зафужены в регистры сегментов данных; только
селекторы сегментов данных с разрешением записи в сегмент могут быть
загружены в регистр SS;
1 Синонимы: исполняемый (выполняемый) сегмент, программный сегмент.
272
ЗАЩИТА ПАМЯТИ
2) когда команда содержит обращение (неявное или явное) к сегментному
регистру; определенные сегменты могут быть использованы командами лишь в
определенных, наперед заданных случаях, например: никакая команда не
может записывать информацию в кодовый сегмент; никакая команда не может
записывать информацию в сегмент данных, если разряд разрешения записи не
установлен; никакая команда не может прочитать кодовый сегмент, если не
установлен разряд разрешения чтения.
Проверка предела1 (границы). Поле границы дескриптора сегмента
используется процессором для того, чтобы предотвратить адресацию за
пределы сегмента.
Процессор по-разному интерпретирует границу в зависимости от состояния
разряда дробности (G), а для сегментов данных процессор по-разному
интерпретирует границу в зависимости также от состояния разряда Е (разряд
прямой или обратной записи) и разряда В ("большого"2 разряда - см. табл.
3.5).
Когда G = 0, истинная граница имеет значение поля 20-разрядной границы,
которая указана в дескрипторе. В этом случае граница может простираться
от 0 до OFFFFFH (220- 1 или 1 Мбайт).
Таблица 3.5
Интерпретация границы в зависимости от разрядов
Случай 1 2 3 4
Направление расширения Е=0(вверх) Е=0(вверх) Е=1(вниз) Е=1(вниз)
G-бит 0 1 0 1
В-бит X X 0 1
Нижняя граница равна: 0 LIMIT+1 Shi (LIMIT, 12,1)+1 * * *
Верхняя граница равна: LIMIT Shi (LIMIT, 12,1) 64К-14 Г-1 * *
* *
Максимальный размер сегмента равен: 64 К 64К-14 Г-4К 4Г * * *
*
Минимальный размер сегмента равен: 0 4к * * *
Примечание. Shl(x. 12.1) - сдвиг влево на 12 разрядов со вставкой справа
12 единичных разрядов; х - любое состояние разряда
' Поле предела называют также полем границы.
2 Байты сегмента размещены в ОП в порядке возрастания адресов памяти или
в обратном порядке. Такое размещение также называют соответственно по
принципу "младший" и "старший крайний".
273
ИСПОЛЬЗОВАНИЕ КЭШ-ПАМЯТИ И ОРГАНИЗАЦИЯ ОСНОВНОЙ ПАМЯТИ
Когда G = 1, процессор присоединяет 12 младших единичных разрядов к
значению границы поля из дескриптора. В этом случае истинная граница
находится в диапазоне от OFFFH (212 или 4 Кбайта) до 0FFFFFFFFH(232- 1
или 4 Гбайта).
Для всех типов сегментов, за исключением сегментов данных в обратной
записи, значение границы на единицу меньше, чем размер сегмента,
выраженный в байтах. Процессор вырабатывает исключение по общей защите в
любом из четырех случаев:
1) попытка обращения к байту памяти по адресу > границы;
2) попытка обращения к слову памяти по адресу > (граница-1);
3) попытка обращения к двойному слову памяти по адресу > (граница-3);
4) попытка обращения к учетверенному слову по адресу памяти >(граница-7).
Для сегментов данных в обратной записи граница имеет ту же самую функцию,
но интерпретируется иначе. В этом случае диапазон ошибочных адресов
находится в пределах от границы +1 до: или 64К или 232- 1 (4 Гбайт) в
зависимости от состояния разряда В.
Сегмент в обратной записи имеет максимальный размер, когда граница равна
нулю.
Свойство обратной записи делает возможным увеличить размер стека при
копировании его в любой сегмент памяти большего размера без необходимости
одновременной корректировки указателей стека.
Поле границы дескриптора для дескрипторов таблиц используется
процессором, чтобы сделать невозможным обращение из программы к таблице
за ее пределы. Так как каждый дескриптор имеет 8-байтовую длину, значение
границы равно N*8 - 1 для таблицы, которая может содержать до N
дескрипторов.
Проверка границы позволяет улавливать такие программные ошибки, как
превышение длин записей или ошибочные точки входа. Эти ошибки
Предыдущая << 1 .. 152 153 154 155 156 157 < 158 > 159 160 161 162 163 164 .. 528 >> Следующая

Реклама

c1c0fc952cf0704ad12d6af2ad3bf47e03017fed

Есть, чем поделиться? Отправьте
материал
нам
Авторские права © 2009 BooksShare.
Все права защищены.
Rambler's Top100

c1c0fc952cf0704ad12d6af2ad3bf47e03017fed