Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Архитектура_и_команды_ЦП.doc
Скачиваний:
2
Добавлен:
07.11.2018
Размер:
340.99 Кб
Скачать

Лекция 14

Виртуальная память

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

Реализация виртуальной памяти (ВП) достигается за счёт двух программно-аппаратных механизмов:

  • Сегментно-страничной организации памяти (ССОП);

  • Механизма динамического преобразования адресов (ДПА).

Табл.1. Структура физического адреса.

Индекс сегмента

Индекс страницы

Смещение в сегменте

Любой формируемый в программе адрес рассматривается как состоящий из трех частей: индекса сегмента, индекса страницы и смещения в сегменте (табл.1). Операционная система ведет для каждой выполняемой в данный момент задачи каталоги сегментов и страниц. Сегмент ­– это довольно большой блок памяти, страница – это составная часть сегмента меньшего объёма. Часть страниц сегмента присутствует в оперативной памяти, а часть может храниться во внешней. В каждый момент времени выполняющаяся задача имеет так называемое рабочее множество страниц, которое ей используется. Если оно полностью помещается в ОП, то реализация ВП осуществляется только с помощью ДПА. Для этого сначала осуществляется поиск описателя сегмента в таблице сегментов, на который указывает один из системных регистров (локальная или глобальная таблица сегментов, таблица векторов прерываний – регистры LDTR, GDTR или IDTR). В описателе сегмента присутствует адрес таблицы страниц данного сегмента. В этой таблице по индексу страницы находится соответствующая строка, содержащая физический адрес данной страницы в оперативной памяти. К этому адресу добавляется смещение, и получается физический адрес команды или операнда.

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

При отсутствии нужной страницы в ОП возникает программное прерывание типа «Ошибка доступа». Номер отсутствующей страницы фиксируется, и ОС подкачивает её из внешней памяти в оперативную. Часто при этом требуется освободить место в ОП, для чего нужно перенести какую-либо страницу из ОП на внешний носитель. Чтобы при этом возникало меньше передач информации из ОП в ВП и обратно, ОС ведёт мониторинг страниц, для чего фиксируются обращения к страницам по чтению и по записи аппаратно и программно. Аппаратно при обращении к странице устанавливаются биты чтения/записи (R/W), расположенные либо в селекторе блока памяти, либо в некоторых архитектурах как часть блока оперативной памяти. ОС систематически проверяет эти отметки и обнуляет их, ведя свои собственные подсчёты статистики обращений. При выборе страницы для замещения предпочтение отдаётся неизменявшимся страницам (так как их не надо сохранять во внешней памяти), и наиболее редко используемым.

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