Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Шпаргалка.doc
Скачиваний:
111
Добавлен:
01.05.2014
Размер:
1.1 Mб
Скачать

Организация виртуальной памяти на i386 и более старших моделях.

Эти процессоры могут работать в трех режимах:

  1. Реальный режим (более быстрый особенно с 32 битными данными). Память до 4Гб.

  2. Защищенный режим использует виртуальную организацию памяти, многозадачный режим, развитая система защиты памяти (программ и данных).

  3. Реализация виртуальной машины i8086 при котором процессор реализовывает программы написанные для процессора i8086.

В защищенном режиме размер виртуальной памяти C ВАП =246 б. = 64Тб.

(Это возможно благодаря разбиению ВАП на 16К сегментов, максимальный размер которого = 4Гб. )

При организации памяти используется три вида адресов.

  1. ЛА  ВАП

  2. ФА  ФАП

  3. Линейный адрес – представляет собой объединение базового адреса смещения и смещения в пределах сегмента.

Любой регистр смещения состоит из двух частей: программно-доступной и скрытой

доступная скрытая

15 0 63 0

CS БАС граница атрибуты -

DS

GS

селектор RS индекс TI RPL

15 3 2 1 0

БАС – базовый адрес сегмента.

Индекс задает смещение таблицы, строки с описанием данного сегмента.

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

Структура дескриптора сегмента.

31 24 19 16 15 14 13 12 11 9 8 7 0

База G D 0 AVL Граница P DPL S тип А База

База Сег [0-15] Граница Сег [0-15]

20 бит граница сегмента определяет его длину.

Длина сегмента зависит от бита дробности (G) либо в байтах, либо в страницах.

 0, байт

G 

  • 1, страница (С = 4Кб.) 220 * 215 = 232 (4Гб.)

Остальные поля атрибуты.

D - задает тип данных в сегментах (Data)

= 0 – 16 битные данные

= 1 – 32 битные данные

AVL – бит предоставляемый в распоряжение пользователя (available)

P – бит присутствия

0 – на диске

1 – в оперативной памяти

DPL – уровень привилегий в дескрипторе (Descriptor Privilege Level)

RPL или CPL должен быть > DPL - логическое соответствие (если о числах, то знак меньше)

CPL – текущий уровень привилегий соответствует дескриптору сегмента выполняемый в данный момент программой

S – User / Supervisor

Тип – говорит, является ли сегмент программой или данным

Биты

11

10

9

Данные

1

E

W

Код

0

C

R

С – признак согласования сегментов (уровень привилегий с которыми обращается к данному сегменту, равно данному сегменту (можно не обращать внимания), более высоких типах процессоров от Intel он существует только для поддержки)

R – только чтение

W – только запись

E – бит расширения при загрузке сегмента (прямое - при увеличение адреса, обратное при уменьшение адреса)

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

Алгоритм преобразования виртуального адреса в физический адрес

база

+ смещение

+ * индекс

Коэф масштабирования

(1 , 2 , 4 , 8)

ЛА селектор ЛА смещ.

сегм. трансляция

лин. А.

0

PG&PE

1

DIR PAGE offset

стран. трансл.

ФА

Структура выполнения сегментной трансляции.

I этап

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

Линейный адрес = базовый сегмент + смещение.

II этап

Страничная трансляция.

CR – регистр управления

(CR0. PG)&(CR0. PE) = 1 - признак страничной трансляции.

TLB – буфер страничной трансляции (по сути это кэш, нужен он для ускорения)

1к каталог

1k страниц

4k смещение

1k x 1k x 4k= 4Gb

Таблица страниц

31 12

11

10 7

6

5

4 3

2

1

0

Адр. стр. кадра

AVL

0

D

A

0

U/S

R/W

P

Защита памяти в i80386

Только приCR0.PE =1(защищенный режим). Защита может осуществляться на уровне страниц и на уровне сегментов.

Защита на уровне сегментов и на уровне страниц обеспечивается либо атрибутом дескриптора сегмента, либо строкой страницы таблицы, так же и влияет соотношение уровней привилегий.

RPL – запрашиваемый уровень (при помещение селектора в сегментный регистр)

DPL – уровень привилегий дескриптора, фиксируется при первом обращение к данным дескриптора. Минимальный уровень, при котором данный деструктор доступен.

CPL – текущий уровень привилегий, которые соответствуют кодовому сегменту программы.

На уровне сегментов:

  1. Контроль типа  не зависит от уровня привилегий, определяется деструктором

  2. Контроль границ 

  3. Ограничение адресной области памяти. 

  4. Ограничение точек входа в процедуру.  Зависит от RPL, DPL, CPL

  5. Ограничение набора команд. 

Уровень страниц:

  1. Контроль типа.

  2. Ограничение адресной области памяти.

Контроль типов:

  1. На этапе загрузки селектора в регистр сегмента (проверка типа сегмента для которого осуществляется загрузка селектора)

  2. На этапе обращения к сегменту.

Пример: В CS может быть загружен только программный дескриптор; в DS не может быть загружен селектор дескриптора, который не доступен для чтения.

При обращении:

  1. Нельзя называть в кодовый сегмент.

  2. Нельзя писать в сегменте данных, если бит записи равен нулю.

  3. Нельзя читать кодовый сегмент, если бит равен нулю.

Контроль на уровне страниц: Зависит от U/S и R/W.

Контроль границ: Предотвращает выход за пределы сегмента.

Ограничение адресной области памяти.

{RPL, CPL}  DPL

CPL = DPL

CPL  DPL (численно), через спец дескриптор (вентиль вызова)

Ограничение набора команд.

  1. Свободные команды (непривилегированны).

  2. Привилегированные команды на уровне ядра.

  3. Чувствительные команды, зависят от уровня привилегии, но могут выполняться в любом режиме супервизора (от 0 до 2). В основном это команды ввода-вывода.