Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


Средства поддержки сегментной организации памяти в процессорах Пентиум




(собственно ответ на билет)

 

Процессор Пентиум – 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 берется из этой записи.

 

Итак, процесс обратился за памятью. Что происходит?

У него есть СЕЛЕКТОР и СМЕЩЕНИЕ.

· Селектор определяет ВИРТУАЛЬНЫЙ СЕГМЕНТ.

· Смещение – понятно.

 

· Селектор помещается в один из СЕГМЕНТНЫХ РЕГИСТРОВ процесса

Структура этого селектора:

А) Индекс (номер в таблице) (13 бит) – всего сегментов может быть 2 13 (8 килобайт) каждого типа, т.е. 16 килобайт (2 16). 16Кбайт * 4 Гбайта = 64 Тбайт – максимальный размер ВАП. До фига, в общем.

Б) Таблица, где его искать: глобальная или локальная (1 бит)

В) Требуемый уровень привилегий, чтобы с ним работать RPL (2 бита)

 

· Смещение задается МАШИННОЙ ИНСТРУКЦИЕЙ (под него отведено 32 бита – отсюда максимальный размер сегмента – 4 Гига)

 

Вариант 1: оказалось, что нужный сегмент – в GDT:

· Адрес GDT взят из регистра GDTR

· Сложили базовый адрес с индексом сегмента, сдвинутым на 3 разряда влево (зачем, я не въехала, но не суть)

· Получили ФИЗИЧЕСКИЙ АДРЕС ДЕСКРИПТОРА СЕГМЕНТА

· Извлекли дескриптор из памяти:

o - проверили, не больше ли смещение величины сегмента (если чего - прерывание)

o - проверили права доступа – (если чего, прерывание)

o - проверили, есть ли он в памяти (бит присутствия Р) – если чего, ну, вы поняли.

· Если все хорошо – приплюсовали смещение и радуемся.

 

Вариант 2: оказалось, что нужный сегмент – в LDT:

· Добываем базовый адрес таблицы LDT из GDT и LDTR

· Ну а дальше все по накатанной.

 

Таким образом, ОС, работая на Пентиуме должна всего лишь:

- сформировать таблицы GDT и LDT

- загрузить GDT в оперативу

- загрузить указатели на них в регистры GDTR и LDTR

- выключить поддержку страничной адресации

 

Все. Все остальное делает процессор САМ:

· быстро аппаратно преобразует виртуальные адреса в физические

· гарантирует защиту данных

А вот про защиту – это уже другая история, а именно - следующий вопрос.





Поделиться с друзьями:


Дата добавления: 2015-11-23; Мы поможем в написании ваших работ!; просмотров: 568 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Чтобы получился студенческий борщ, его нужно варить также как и домашний, только без мяса и развести водой 1:10 © Неизвестно
==> читать все изречения...

2458 - | 2338 -


© 2015-2025 lektsii.org - Контакты - Последнее добавление

Ген: 0.012 с.