Адресация в 32-разрядных микропроцессорах i80х86 при работе в защищенном режиме

Новые системные регистры микропроцессоров i80х86

a) 32-битовый указатель команды EIP, младшие 16 разрядов есть регистр IP микропроцессора i8086/88;

b) 32-битовый регистр флагов EFLAGS, младшие 16 разрядов есть регистр FLAGS микропроцессора i8086/88;

c) 32-битовые регистры общего назначения EAX, EBX, ECX, EDX, а также ESP, EBP, ESI, EDI, а их младшие 16 разрядов есть регистры микропроцессора i8086/88: AX, BX, CX, DX, SP, BP, SI, DI;

d) 16-битовые сегментные регистры CS, SS, DS, ES, FS, GS. При каждом из этих регистров есть недоступные никому, кроме собственно микропроцессора, 64-битовые регистры, в которые загружаются дескрипторы соответствующих сегментов;

e) 16-битовый регистр-указатель на локальную таблицу сегментов текущей задачи – LDTR. При нем также имеется «теневой» (скрытый от программиста) 64-битовый регистр, в который микропроцессор заносит дескриптор, указывающий на таблицу дескрипторов сегментов задачи, описывающих ее локальное виртуальное адресное пространство;

f)16-битовый регистр-указатель задачи TR (task register). Указывает на дескриптор в глобальной таблице дескрипторов, позволяющий получить доступ к дескриптору задачи TSS – информационной структуре, которая поддерживает микропроцессор для управления задачами;

g) 48-битовый регистр GDTR глобальной таблицы GDT (global descriptor table), содержащий как дескрипторы общих сегментов, так и специальные системные дескрипторы;

h) 48-битовый регистр IDTR таблицы дескрипторов прерываний. Сдержит информацию, необходимую для доступа к таблице прерываний IDT.

i) 32-битовые управляющие регистры CRO, CR1, CR2, CR3. Регистр CR0 содержит флаги, определяющие режим работы микропроцессора. Регистр CR1 предназначен для размещения в нем адреса подпрограммы обработки страничного исключения. Регистр CR3 содержит номер физической страницы, в которой располагается таблица каталогов таблиц страниц текущей задачи.

 

Для организации эффективной и надежной работы ПК в мультипрограммном режиме необходимо, чтобы:

a) у каждого вычислительного процесса было собственное (локальное) адресное пространство, которое бы не пересекалось с адресными пространствами других задач;

b) существовало общее (разделяемое) адресное пространство.

Поэтому в микропроцессорах i80х86 реализован сегментный способ организации распределения памяти. Помимо этого, может быть задействована и страничная трансляция.

Сегментная организация виртуальной памятисостоит в том, что программа разбивается на логические элементы (например, блоки, процедуры) ─ так называемые сегменты разной длины, которые размещаются в памяти как до определенной степени самостоятельная единица. Логически обращение к элементам программы будет представляться как указание имени сегмента и смещения относительно начала этого сегмента. Физическое имя сегмента (его порядковый номер) будет соответствовать некоторому адресу, с которого этот сегмент начинается при его размещении в памяти, и смещение должно прибавляться к этому базовому адресу. Таким образом, адрес для этого способа состоит из двух полей: номер сегмента и смещение относительно сегмента. Каждый сегмент, размещаемый в памяти, имеет соответствующую информационную структуру, называемую дескриптором сегмента:

 

Старшее двойное слово дескриптора

31 23 19 15 11 7 0

 

База сегмента (биты 31-24) G D Биты 19-16 поля Limit P DPL S Type A База сегмента (биты 23-16)
Базовый адрес сегмента (биты 15-0) Байт прав доступа
Limit-размер (предел) сегмента (биты 15-0)

31 15 0

Первое (младшее) двойное слово дескриптора