Материал: Уч_пос_АрхКомп_2017

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

6.10. Организация виртуальной памяти

Виртуальная память – система основной и дисковой памяти, организуемая для расширения адресного пространства, доступного программам пользователей. Для виртуальной памяти различают:

  1. ФАП (физическое адресное пространство) – совокупность адресов, соответствующих реально адресуемым физическим ячейкам памяти.

  2. ЛАП (ВАП) (логическое или виртуальное адресное пространство) – это совокупность адресов, которая может использоваться для доступа к данным.

Очевидно, что емкость ВАП должна значительно превышать емкость ФАП.

Для обеспечения доступа к ВАП из программ пользователей необходимо установить строгое соответствие между данными, размещаемыми в ОП, и данными, размещенными на диске, отражаемое в специальных таблицах соответствия адресов. Для сокращения длины таблицы соответствия адресов информация, хранящаяся в основной памяти и на диске, должна быть разбита на одинаковые (в обоих видах памяти) блоки, для которых и устанавливается соответствие.

Разбиение происходит по двум способам :

  1. Страничный;

  2. Сегментный

При первом вся память (основная и дисковая) разбивается на одинаковые по размерам блоки, называемые страницами; разбиение происходит независимо от типа и характера размещаемых данных. Говорят, что страничное разбиение ориентируется на физическую память.

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

Страничную организацию виртуальной памяти можно пояснить с помощью схемы, показанной на рис. 6.8.

Виртуальный (логический) адрес (ВА)

Базовый адрес Номер Смещение в Регистр

таблицы страниц страницы странице адреса

(в регистре) + Pва d

Рб

Диск

P

m / d р’

Замещение

3’ страниц

Таблица соответствия 4’

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

d

Основная

память (ФА)

Основная

память (ФА)

1

2’

Page_fault Карта диска

Page_hit

2,5’

Страничный

кадр

(фрейм)

3,6’

Рис.6.8

Сущность преобразования адресов: ВА p.d --> ФА p’.d

Признак m/d задает «бит присутствия»: 1 – страница есть в ОП, 0 – страница имеется только на диске.

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

  1. FIFO – заменяется страница ОП, которая была загружена первой из имеющихся в ОП страниц.

  2. LRU – заменяется страница ОП, к которой дольше всего не было обращений.

  3. WS (work set) – рабочее множество: для конкретных интервалов времени создается совокупность страниц ОП, которые активно используются и не замещаются, остальные можно удалить из памяти.

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

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

Такая структура называется буфер страничной трансляции (БСТ).

Сегментная организация виртуальной памяти

При сегментной организации ВП строка таблицы сегментов должна содержать специальные атрибуты, задающие не только факт присутствия сегмента в ОП, но также его длину и способ доступа к сегменту.

S

Сущность преобразования адресов:

Атрибуты S’ ВА S.d --> ФА S’.d,

где операция ‘.’ означает конкатенацию

Формат строки таблицы сегментов

m/d L R W E АВП Здесь признак m/d – «бит присутствия»

1 nI 1 1 1 nII

L – длина сегмента; R,W,E – доступность по чтению, записи, выполнению; АВП – адрес во внешней памяти.

Одной из проблем виртуальной памяти является фрагментация виртуальной памяти. Фрагментацию обычно различают внутреннюю и внешнюю. Внутренняя возникает от неполного использованния страницы сегмента и образованию участков памяти, доступ к которым затруднен. Внешняя возникает только при сегментной организации виртуальной памяти из-за того, что удаляемый и размещаемый на его место сегменты имеют разные размеры. Для преодоления фрагментации ОС запускает процедуру, называемую «сборка мусора» для объединения свободных участков памяти в сплошные блоки. Для устранения внешней фрагментации и сокращения длины таблицы страниц применяется сегментно-страничная организация (рис. 6.9).

S P d

Номер Номер Смещение

сегмента страницы в странице

+ ФА1

БА Сегмента Таблица стр.1

+

БА ТС1 +

i

ФАi

БА ТС i +

Таблица сегментов Таблица стр. i

Рис.6.9

Сегмент рассматривается не как целый, а разбивается на страницы, именно части страниц будут теряться при фрагментации. Таблицу сегментов также не рассматривают как указатель на сплошное адресное пространство, а как совокупность указателей на различные, не обязательно смежные страницы. Для различных задач могут быть разные таблицы сегментов и разные связи с таблицами страниц. В результате обеспечивается на логическом уровне – сегментная организация, а на физическом – страничная.

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

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

  1. Реальный режим – работает как быстрый процессор i8086, особенно с 32-битными данными, и имеет адресное пространство памяти до 4Гб.

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

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

В защищенном режиме размер виртуальной памяти C ВАП =246 б = 64Гб. Это достигается благодаря разбиению ВАП на 16К сегментов, максимальный размер каждого из которых равен 4 Гб.

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

  1. Логический адрес ЛА  ВАП.

  2. Физический адрес ФА  ФАП.

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

Любое описание сегмента состоит из двух частей: программно-доступной, называемой селектором сегмента и размещаемой в одном из сегментных регистров, и скрытой, называемой дескриптором сегмента и находящейся в одной из специальных структур в ОП, называемых таблицами дескрипторов. Считается, что дескриптор после выборки размещается в скрытой части регистра сегментов, находящейся в памяти (рис. 6.10).

Доступная (селектор) Скрытая (дескриптор)

15 0 63 0

CS БАС Граница Атрибуты - это дескриптор сегмента

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

DS

GS

Сегментный

регистр Индекс TI RPL (Поля селектора)

Селектор 15 … 3 2 1 0 (Номера битов)

Рис. 6.10

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

Поле TI определяет таблицу дескрипторов, на которую ссылается селектор (0 – глобальная, 1 – локальная ).

Поле RPL (0 - 3) - запрашиваемый уровень привелегий (инициатор запроса – программа, которая хочет получить доступ к ресурсам).

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

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

31 …24 23 22 21 20 19 … 16 15 14..13 12 11.. 9 8 7 … 0

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

База сегмента [0-15] Граница сегмента [0 -15]

Рис 6.11

Основные поля сегмента размещены в различных частях дескриптора: 32-битная база сегмента размещена в трех частях и определяет его место внутри 4-Гбайтного линейного адресного пространства, 20-битная граница сегмента размещена в двух частях и определяет его длину, остальные биты дескриптора образуют поле атрибутов. Длина сегмента, в зависимости от бита дробности (G), задается либо в байтах, либо в страницах: при G=0 – в байтах, а при G= 1 – в страницах (С = 4Кб) и объем будет 220 * 215 = 232 (4Гб).

Источник: https://studfile.net/preview/15919868/