Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Архитектура ПЭВМ.doc
Скачиваний:
19
Добавлен:
23.04.2019
Размер:
10.46 Mб
Скачать

2) 32 Битная адресация – применяется в защищённом режиме

Можно применять любой РОН, а индекс можно масштабировать (умножать) на 1, 2, 4, 8.

Рисунок 40 - 32 битная адресация

Адрес вычисляется также в 2 этапа – за 2 обращения к памяти.

1 этап – эффективный адрес вычисляется как сумма трёх компонент: база, индекс и смещение в команде.

2 этап – начинается с проверки характеристик сегмента, а конкретно размера сегмента и прав доступа. Затем вычисляется линейный адрес. К полученному эффективному адресу, который является смещением от базы сегмента, прибавляется базовый адрес сегмента, взятый из дескриптора сегмента. Если нет страничного преобразования, то полученный 32 битный линейный адрес выставляется на ША как физический, а при разрешённом страничном преобразовании линейный адрес преобразуется в физический с помощью таблиц страниц.

Задача: Сформировать физический адрес dword в ОП в PM with paging если содержимое регистров равно:

EBX=21B3D082h

EIP=01682F3Eh

ESI=0000082Ah

База сегмента в дескрипторе = 12003C4Ah

EBX

21B3D082

EIP

01682F3E

231BFFC0

ESI

0000082A

231C07EA (эффективный адрес)

БС

12003C4A

351C4434 (линейный адрес)

Рисунок 41 – Формирование физического адреса

Преобразуем линейный адрес в физический с помощью таблицы страниц.

Тема 4.3 Управление памятью

МП, имеющий n разрядную ША, может обращаться к 2 n ячейкам ОП. Схема интерфейса памяти работают линейным образом. Поэтому память называется линейной или сплошной, или плоской.

1 Сегментная организация памяти.

1) Общие понятия о сегментации.

Сегмент – блок смежных ячеек ОП. Для программ всё адресное пространство ОП делится на сегменты, поэтому любая программа может обращаться к данным только внутри сегмента, где также применяется линейная адресация (байт 0, байт 1…).

а) Сегментация в RM

Размер сегмента равен 64К, и он явно определяется через сегментный регистр, то есть базой сегмента. Но здесь много недостатков:

- Тип сегмента не определён, то есть к каждому сегменту можно обращаться как на запись, так и на чтение или выполнение.

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

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

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

2) Формат дескриптора сегмента

Рисунок 42 - Формат дескриптора сегмента.

Базовый адрес – 32 битное поле, занимает байты 2, 3, 4 и 7 дескриптора. Он определяет начальный адрес сегмента в линейном адресном пространстве в 4Гб.

Предел – 20 битное поле, называемое границей сегмента. Занимает байты 0 и 1 плюс младшие 4 бита 6-го байта дескриптора. Размер элементов сегмента задаёт специальный бит гранулярности G (55 бит дескриптора). Элементами сегмента могут быть байты или страницы по 4Кб каждая.

а) Сегмент с байтовой гранулярностью, когда G=0. Измеряется в байтах и его максимальный размер 220 равен 1 Мб, так как максимальное поле предела равно FFFFFH.

б) Сегмент со страничной гранулярностью (G=1). Измеряется в страницах и имеет максимальный размер 1 Мб страниц, то есть 4 Гб – всему линейному адресному пространству.

Права доступа – 5 байт дескриптора AR (Access Rights).

Бит P – бит присутствия. При P = 1 сегмент находится в физической ОП. При P = 0 сегмент считается как временно не присутствующий, то есть находится на ЖД. ОС отыскивает свободную область физической ОП, копирует запрашиваемый сегмент с диска , загружает в дескриптор новый базовый адрес сегмента и устанавливает бит P в 1 , осуществляет рестарт «виноватой» команды.

Подкачка сегментов с диска в физическую ОП называется Swapping.

DPL - descriptor privilege level. Определяет уровень привилегий, ассоциируемый с тем сегментом, который описывает данный дескриптор. 00 – наивысший уровень привилегий, 11 – наименьший.

S – system or segment. При S равном 1, дескриптор описывает сегмент памяти (кода, стека или данных). При S равном 0, дескриптор описывает системный объект: либо прерывание, либо LDT, либо TSS, которые, как правило, называются шлюзами (точками входа).

Type – 3-х битное поле – целевое использование сегмента.

000 – сегмент данных, только чт.

001 – сегмент данных, чт и зп.

010 – стека, только чт

011 – стека, чт и зп

100 – кода, только выполнение

101 – кода, выполнение и считывание

110 – подчинённый сегмент кода (только выполнение)

111 – подчинённый сегмент кода (выполнение, считывание)

A – бит доступа Accessed. Устанавливается в 1, когда идёт обращение к сегменту, описываемому данным дескриптором.

Дополнительные поля (в байте 6)

G – Гранулярность

D – Размер по умолчанию операндов. При D=0 все операнды – WORD, D=1 – DWORD

X – Резерв, должен быть в 0.

U – бит пользователя, используется программистом.