Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ОСиСП теория 4 семестра - методичка слайдов Бранцевич Петр Юльянович 2009.doc
Скачиваний:
160
Добавлен:
15.06.2014
Размер:
1.75 Mб
Скачать

5.5 Аппаратные особенности процессоров Intel-архитектуры, направленных на поддержку многозадачности

Для кодировки многозадачности процессора Intel-архитектуры имеются как пользовательские регистры, так и системные. Однако, если с пользовательскими можно работать на любом уровне привилегий, то для работы с системными регистрами необходима определять режим работы процессора и уровень привилегий выполняемых команд, а также пользовательские сегментные регистры применяемые при работе с памятью и в многозадачном режиме (CS, DC, SS, ES, GS, FS). Для архитектуры IA-32 пользовательские регистры 16 и 32-битные.

К системным регистрам относятся:

- Регистр глобального дескриптора таблиц (GDTR) – 48 бит

- Регистр таблиц прерывания (IDTR) – 48 бит

- Регистр локального дескриптора таблиц (LDTR) – 16 бит

- Регистр задачи (TR) – 16 бит

- Регистры управления (CR0-CR4)

- Регистры отладки (DR0-DR7)

- Регистры проверки (TR3-TR7)

Кроме них имеются регистры флаги.

Процессор может работать:

  1. Реальный режим (режим процессора 8086). В этот режим процессор переходит по включению питания. В этом режиме осуществляется начало инициализации. Поддерживает 1Mb памяти.

  2. Защищенный режим. В этом режиме процессор обеспечивает все возможные функции. Адресное пространство становится равным 232 (4Gb памяти). При распределении памяти обязательно поддерживается сегментная организация и по включению страничной организации памяти. Есть режим виртуализации процессора Intel 8086. Обеспечивается поддержка более ранних процессоров.

5.5.1 Сегментация памяти. Ia-32

Под сегментом понимается блок смежных ячеек памяти в адресном пространстве 1Mb, с максимальным размером в 64Kb и начальным (базовым) адресом, находящимся на 16-байтной границе (параграфе). Для обращения к памяти необходимо определить базу сегмента и 16-битное расстояние от базы, называемое смещением .

Чтобы упростить обращения к памяти, за каждой командой закрепляется сегментный регистр по умолчанию, т.е. команды адресуются через CS:IP, стек через SS:SP, данные через DS:[смещение] и ES:[смещение].

Преобразование пары СЕГМЕНТ : СМЕЩЕНИЕ в физический производится в соответствии с выше приведенным выражением и, в результате, получаем 20-битный физический адрес. Переход от логического адреса в физический однозначен, а из физического адреса в логический неоднозначен, т.е. каждому физическому адресу может быть сопоставлено в соответствие 4Kb логических адресов.

При таком подходе есть неприятный момент, называемый заворачиванием адреса, возникающий, когда рассчитываемое значение физического адреса больше 1Mb.

Сегментация памяти процессора 8086 имеете особенности, усложняющие разработку многозадачных систем:

Сегменты памяти имеют всего два атрибута:

- начальный адрес (на границе параграфа);

- максимальный размер (64 Kb).

Никаких аппаратных средств контроля правильности использования сегментов нет.

Размещение сегментов в памяти произвольно, т.е. они могут частично или полностью перекрываться или не иметь общих частей.

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

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

Что же касается процессора архитектуры IA-32, сегменты в нем описываются отдельными информационными структурами, называемыми дескрипторами.

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

Определение сегментов в многозадачном режиме производится на системном уровне, причем определяется следующая информация для каждого сегмента:

- базовый адрес;

- размер сегмента;

- целевое использование;

- уровень привилегий;

- другие параметры.

Базовый адрес может быть произвольным, т.е. выравнивание не требуется на границу параграфа или страницы. Размер сегмента может кодироваться от 1b до 4Gb. Это значит, что с помощью 32-битного индекса можно пройти всё адресное пространство, не модифицируя сегментный регистр.