(собственно ответ на билет)
Процессор Пентиум – 32 разрядный, поэтому максимальный размер физической ОП, на которую он может отображать ВАП – 4 гига.
Процессор Пентиум может поддерживать как сегментную, так и сегментно-страничную организацию памяти.
· Сегментные средства работают всегда (верхний уровень);
· Страничные средства могут быть вкл/выкл (это нижний уровень);
Это делается в управляющем регистре CR0 – путем установки однобитного признака PE (Paging Enabling) в 0/1.
Итак, Пентиум работает в сегментном режиме.
1. У него есть ВАП, поделенный на СЕГМЕНТЫ.
2. У каждого сегмента есть описание – ДЕСКРИПТОР СЕГМЕНТА.
Формат дескриптора сегмента (размер – 8 байт)
Структура у дескриптора немного странная, это все пережитки истории.
Но в целом основные поля:
3. База – занимает 32 бита (4 байта) – содержит базовый адрес сегмента.
На рисунке желтая, видно, что состоит из 3 частей
4. Размер – занимает 24 бита (3 байта)
§ Поле G – единица измерения:
- 0 – байты (максимальный р-р сегмента – 64 кб)
|
|
- 1 – страницы по 4 кб
5. 5-й байт дескриптора (в красной рамке – байт доступа). – 8 бит (1 байт)
Он содержит:
§ Бит присутствия Р (1 бит):
o - 0 – сегмент не в памяти,
o - 1 – в памяти
§ DPL (Descriptor Privilege Level) – уровень привилегий для доступа к дескриптору (2 бит)
§ 5 бит – поля типа сегмента:
o - сегмент данных
o - сегмент кода
o - системный сегмент (GDT, TSS)
o И способ использования сегмента (чтение, запись, выполнение)
3. Дескрипторы объединяются в ТАБЛИЦЫ ДЕСКРИПТОРОВ (2 типа):
· Глобальная таблица дескрипторов(GDT) – сегменты межпроцессного взаимодействия, сегменты ОС, общие сегменты для всех процессов
· Локальная таблица дескрипторов (LDT) – у каждого процесса своя.
· (IDT – Interrupt Descriptor Table – таблица дескрипторов прерываний – используется системой прерываний для их обработки )
GDT – одна
LDT – столько, сколько процессов, при этом в каждый момент времени используется только одна.
Таблицы GDT и LDT размещены в памяти в виде отдельных сегментов.
Таблица GDT кроме всего прочего, хранит в себе данные о себе самой и обо всех LDT.
Адреса GDT и LDT хранятся в регистрах системных адресов GDTR и LDTR соответственно.
В GDTR хранится 32 разрядный физический адрес
В LDTR – индекс дескриптора в таблице GDT, а уже адрес нужной LDT берется из этой записи.