- •Московский государственный открытый университет
- •Лекции по
- •Чебоксары 2006 Лекция 1. Архитектура центрального процессора пэвм
- •Лекции 2,3. Определение данных. Команды пересылки данных
- •Лекция 4. Основы языка ассемблер
- •Лекция 5. Арифметические команды.
- •Лекция 6. Логические операции
- •Лекция 7. Сегменты и передача управления.
- •Лекция 8 Регистр флагов Flags и условные переходы
- •Лекция 9 Организация циклов.
- •Лекции 10,11 программы и подпрограммы. Связь по управлению и по данным
- •Лекция 12 Прерывания
- •Контроллер прерываний и микропроцессоры 80х86.
- •Лекция 13 сопроцессор и его программирование
- •Лекция 14
Лекция 14
Виртуальная память
В современных вычислительных системах пользовательская программа может получить в своё распоряжение весьма большой объём оперативной памяти, значительно превышающий имеющийся объём реальной (физической) оперативной памяти. Достигается это за счет организации так называемой виртуальной, т.е. кажущейся, воображаемой памяти, в которую наряду с ОП включается часть внешней (обычно дисковой) памяти. При этом пользователь работает в виртуальном адресном пространстве как в обычной памяти, а все заботы о ее имитировании берет на себя оборудование и операционная система.
Реализация виртуальной памяти (ВП) достигается за счёт двух программно-аппаратных механизмов:
-
Сегментно-страничной организации памяти (ССОП);
-
Механизма динамического преобразования адресов (ДПА).
-
Табл.1. Структура физического адреса.
Индекс сегмента |
Индекс страницы |
Смещение в сегменте |
Любой формируемый в программе адрес рассматривается как состоящий из трех частей: индекса сегмента, индекса страницы и смещения в сегменте (табл.1). Операционная система ведет для каждой выполняемой в данный момент задачи каталоги сегментов и страниц. Сегмент – это довольно большой блок памяти, страница – это составная часть сегмента меньшего объёма. Часть страниц сегмента присутствует в оперативной памяти, а часть может храниться во внешней. В каждый момент времени выполняющаяся задача имеет так называемое рабочее множество страниц, которое ей используется. Если оно полностью помещается в ОП, то реализация ВП осуществляется только с помощью ДПА. Для этого сначала осуществляется поиск описателя сегмента в таблице сегментов, на который указывает один из системных регистров (локальная или глобальная таблица сегментов, таблица векторов прерываний – регистры LDTR, GDTR или IDTR). В описателе сегмента присутствует адрес таблицы страниц данного сегмента. В этой таблице по индексу страницы находится соответствующая строка, содержащая физический адрес данной страницы в оперативной памяти. К этому адресу добавляется смещение, и получается физический адрес команды или операнда.
Такой процесс вычисления адреса требует больших дополнительных затрат времени. Поэтому процессор, вычислив физический адрес виртуальной страницы помещает его в один из теневых регистров, и при всех следующих обращениях внутри данной страницы берёт их оттуда. Теневые регистры программно недоступны и используются внутри CPU.
При отсутствии нужной страницы в ОП возникает программное прерывание типа «Ошибка доступа». Номер отсутствующей страницы фиксируется, и ОС подкачивает её из внешней памяти в оперативную. Часто при этом требуется освободить место в ОП, для чего нужно перенести какую-либо страницу из ОП на внешний носитель. Чтобы при этом возникало меньше передач информации из ОП в ВП и обратно, ОС ведёт мониторинг страниц, для чего фиксируются обращения к страницам по чтению и по записи аппаратно и программно. Аппаратно при обращении к странице устанавливаются биты чтения/записи (R/W), расположенные либо в селекторе блока памяти, либо в некоторых архитектурах как часть блока оперативной памяти. ОС систематически проверяет эти отметки и обнуляет их, ведя свои собственные подсчёты статистики обращений. При выборе страницы для замещения предпочтение отдаётся неизменявшимся страницам (так как их не надо сохранять во внешней памяти), и наиболее редко используемым.
Виртуальная память позволяет также решить вопрос о защите информации одной задачи от другой, так как таблицы сегментов и страниц различных задач всегда будут ссылаться на разные блоки оперативной памяти.