Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
L_SPPO.doc
Скачиваний:
30
Добавлен:
04.11.2018
Размер:
522.24 Кб
Скачать
  1. Адресация в 32-разрядных микропроцессорах i80х86 при работе в защищенном режиме

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

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

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

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

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

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

31 23 19 15 11 7 0

База сегмента

(биты 31-24)

G

D

0

0

Биты 19-16 поля Limit

P

DPL

S

Type

A

База сегмента

(биты 23-16)

Базовый адрес сегмента (биты 15-0)

Байт прав доступа

Limit-размер (предел) сегмента (биты 15-0)

31 15 0

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

Рис.1. Дескриптор сегмента

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

  1. поле индекса ─ старшие 13 битов (3-15). Определяют номер сегмента:

  2. поле индикатора таблицы сегмента ─ бит с номером 2. Определяет часть виртуального адресного пространства.

  3. поле уровня привилегий ─ биты 0 и 1. Указывает запрашиваемый уровень привилегий.

Страничная организация виртуальной памяти состоит в том, что все фрагменты программы, на которые она разбивается произвольным образом, имеют одинаковую длину. Эти одинаковы части называют страницами и говорят, что память разбивается на физические страницы, а программа ─ на виртуальные страницы. Часть виртуальных страниц задачи размещается в оперативной памяти, а часть ─ во внешней. Величина страницы выбирается кратной степени двойки. Таким образом, вместо одномерного адресного пространства можно говорить о двумерном. Первая координата адресного пространства ─ это номер страницы, а вторая ─ номер ячейки внутри выбранной страницы (его называют индексом). Таким образом, физический адрес определяется парой (Pp,i), а виртуальный адрес ─ парой (Pν,i), где Pν ─ номер виртуальной страницы, Pp ─ номер физической страницы, i ─ индекс ячейки внутри страницы. Количество битов, отводимое под индекс, определяет размер страницы, а количество битов, отводимое под номер виртуальной страницы ─ объем возможной виртуальной памяти, которой может воспользоваться программа. При это нет необходимости ограничивать число виртуальных страниц числом физических, то есть не поместившиеся страницы можно размещать во внешней памяти, которая в этом случае служит расширением оперативной. Для отображения виртуального адресного пространства задачи на физическую память для каждой задачи, как и в случае сегментного способа, необходимо иметь таблицу страниц для трансляции адресных пространств. Для описания каждой страницы диспетчер памяти ОС заводит соответствующий дескриптор.

В микропроцессорах i80х86 размер страницы равен 212=4096=4Кбайт, а поле номера страницы, имеющей размер 20 битов, разбивается на два поля и осуществляется двухшаговая страничная трансляция. Для описания каждой страницы создается соответствующий 32-битовый дескриптор. Это дает возможность адресоваться к любому байту из 232, а шина адреса как раз и позволяет использовать физическую память с таким объемом. Так что можно отказаться от сегментного способа адресации. Т.е. можно считать, что задача состоит из одного сегмента, который разбит на страницы. Такой подход получил название «плоская память». При использовании плоской памяти упрощается создание ОС и систем программирования. Поэтому в большинстве 32-разрядных ОС для микропроцессоров i80х86 используется плоская модель памяти.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]