??0000 – 1 раз

??0001 – 2 раз

??0002 – 3 раз и т. д.

Защитные режимы МП

Любой современный МП в реальном режиме работы позволяет работать с так называемыми пользовательскими регистрами. Начиная с i486 и Pentium их 16:

- 8 32-разрядных РОН(регистров общего назначения) EAX/AX/AH/AL, EBX, ECX, EDX, EBP\BP, ESi\Si, EDi\Di, ESP\SP

- 6 16-разрядных сегментных регистра CF, DF, SF, EF, SS, GS

- регистры состояния и управления EFLAGS\FLAGS, EiP\iP

Существуют ещё 16 системных регистров. Защищённый режим МП позволяет полностью использовать все возможные атрибуты для многозадачного режима. При этом сегментация памяти усложняется. Любой сегмент памяти в ЗР имеет следующие атрибуты:

- Расположение сегментов в памяти

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

- Уровень привилегий, определяющий права этого сегмента относительно других

- Тип доступа (определяет назначение сегмента) и некоторые другие…

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

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

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

НЕ нашли? Не то? Что вы ищете?

Системные регистры МП:

- 4 регистра управления

- 4 регистра системных адресов

- 8 регистров отладки

1. Регистры управления предназначены для общего управления системой и доступны только для программ с уровнем привилегий 0 (Cr 0, Cr1, Cr2, Cr3).

Cr 1 – зарезервирован для спец использования и не доступен.

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

Рассмотрим некоторые системные флаги:

- PE(Project Enable), бит 0; при PE=0 – реальный режим, в противном случае ЗР

- MP(Math Present), бит 1; при MP=1 – указывается на наличие сопроцессора

- TS(Task Switched), бит 3; переключение задач (автоматически изменяется при переключении на выполнеие другой задачи)

- AM(Alignment Mask), бит 18; маска выравнивания. При AM=1 – разрешён контроль выравнивания, в противном случае - запрет

- CD(Cash Disable), бит 30; При CD=1 – запрещена кеш-память

- PG(PaGin), бит 31; При PG=1 – разрешено страничное преобразование.

Cr 2 - используется при страничной организации памяти в ситуации, когда текущая команда обратилась по адресу, содержащемуся на странице, отсутствующей в данный момент в ОП. Тогда в МП возникает прерывание и 32 битовый адрес команды записывается в Cr 2 и обработчик определяет нужную страницу, определяет её в ОП и возобновляет нормальную работу программы.

Регистр Cr 3 используется так же при страничной организации памяти. Это регистр каталога страниц первого уровня. Он содержит 20 битовый физический базовый адрес каталога страниц текущей задачи. Этот каталог содержит 1024 32 битовых дескриптора, каждый из которых содержит адрес таблицы страниц второго уровня. В свою очередь, каждая из таблиц страниц второго уровня содержит 1024 32 битовых дескриптора, адресующих страничные кадры памяти размером по 4 КБ.

2. Регистры системных адресов (регистры управления памятью) предназначены для защиты программ и данных в мультизадачном режиме работы МП. В ЗР адресное пространство делится на:

- Глобальное (общее для всех задач)

- Локальное (отдельная для каждой задачи).

Поэтому в МП существуют следующие системные регистры:

-  GDTR (Global Description Table Register) – его размер 48 бит, 32 из которых (с 16 по 47 ) базовый адрес глобальной дескрипторной таблицы CDT и 16 бит (с 0 по 15) – значение предела, т. е.размер таблицы GDT в байтах

-  LDTR (Local Description Table Register) – регистр таблицы локальных дескрипторов размером в 16 бит. Содержит, так называемый, селектор дескриптора LDT, который является указателем таблицы GDT, которая описывает сегмент, содержащий LDT.

-  IDTR (Interrupt Description Table Register) – регистр дескриптора прерываний, размер 48 бит. Предназначен для таблиц IDT, аналогичен GDTR.

-  TR (Task Register) – регистр задачи размером 16 бит, подобно LDTR содержит селектор, т. е. указатель на дескриптор в таблице GDT, который описывает текущий сегмент состояния задачи.

TSS – этот сегмент создаётся для каждой задачи в системе, имеет жёстко регламентированную структуру и содержит контекст или текущее состояние задачи. Основное назначение сегментов TSS – сохранить текущее состояние задачи в момент переключения на другую задачу.

3. Регистры отладки предназначены для аппаратной отладки. Реально из 8 регистров МП используются 6 (все они 32 битовые):

Dr 0, Dr 1, Dr 2, Dr 3 – предназначены для задания линейных адресов четырёх контрольных точек прерывания, при этом используется механизм : любой, формируемы текущей программой, адрес сравнивается с адресами в регистрах Dr 0 , Dr 3 и при совпадении генерируется “исключения отладки №1”.

Dr 6 – регистр состояния отладки, биты этого регистра устанавливаются в соответствии с причинами прерывания.

Dr 7 – регистр управления отладкой. В нём для каждого из регистров Dr 0 …Dr 3 имеются поля, с помощью которых можно уточнить следующие условия, при которых генерируются прерывания:

- Место регистрации контрольной точки (только в текущей или любой задаче ) – это младшие 8 бит (по 2 бита на каждую контрольную точку)

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

Большинство из системных регистров – программно-доступные.

Структуры данных ЗР.

Так как в ЗР запрос к памяти со стороны программ должен быть санкционирован, то МП аппаратно контролирует доступ к любому адресу называемому целевым. В отличие от реального режима, в сегментных регистрах вместо адреса начала сегмента, в ЗР загружается, так называемый, селектор, в котором хранится указатель на 8 байтовый блок памяти называемый дескриптором.

Схема обращения к дескриптору.

15 0

is i i ………..i e p p

+ 1 1 1 ……….1 0 0 0

31 0

адрес таблицы дескриптора

адрес дескриптора сегмента памяти

Дескриптор:

63 Б7 Б6 48 47 Б5 Б4 31

База(31..24) GD04Предел(19..16) p d d a t t t A База (23..16)

31 Б3 Б2 16 15 Б1 Б0 0

База сегмента(15..0) Предел сегмента (15..0)

Таблица дескрипторов может быть:

- Глобальной (GDT)

- Локальной (LDT)

- Прерываний (IDT)

Адрес таблицы дескрипторов выбирается в соответствии с битом L, который при равенстве 1 LDTR, в случае равенства 0 - GDTR.

Поля дескрипторов используются следующим образом:

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

2.  20 битовое поле предела расположенное в Б0, Б1 и частично в Б6 и определяет границу сегмента.

3.  Б5 называется AR(Access Raights) в нём закодированы права доступа к сегменту.

4.  В старшей части Б6 находятся ещё 3 управляющих бита:

D – бит размера, если D=0, то данные представлены 16 битами, если 1, то данные 32 битные.

U – бит пользователя, предназначен для системы, МП его не использует.

G – бит поля гранулярности, определяет размер сегмента. При G=0 – размер в Байтах, при G=1 – размер указывается в страницах и, так как страница 4 КБ, то максимальный размер 1М * 4КБ = 4 ГБ.


Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 8 9 10 11