Страничная организация виртуальной памяти. Отображение страниц. Динамическое преобразование адреса (упрощенная схема). Защита страниц. Проблема выбора размера страниц.
Организация виртуальной памяти.
Принцип: программа пишется в адресах виртуальной памяти, а исполняется в адресах реальной памяти. Преимущества такой организации:
1) программисту нет необходимости знать реальное количество памяти и её распределение по адресам, в том числе физической памяти может быть меньше чем необходимо.
2) независимость программы от аппаратуры.Впервые появилась в 1980-м году в Манчестерском университете на ЭВМ Atlas. Виртуальное адресное пространство обозначим , а реальное адресное пространство – . При этом может выполняться следующая зависимость . Виртуальное адресное пространство, как правило, ограничено разрядностью шины адреса процессора.
Отделение виртуальных адресов от реальных и перегрузка неиспользуемых программ.
Привязка программ:
Трансляция адресов: DAT – динамическая адресная трансляция, выполняется аппаратно (аппаратура процессора содержит специализированную схему). Необходимо хранить соответствие адреса и адреса . Если пытаться отображать каждый байт, то это вызовет слишком большой размер таблицы, значит необходимо размещение по блокам (его начальный адрес и его размер).
Страничная таблица определяет какие виртуальные страницы загружены в ОП и в каких физических страницах данные виртуальные страницы находятся.
Все виртуальное пространство может быть описано с помощью 2-х таблиц:
1) страничная таблица (описана ранее).
2) карта диска:
Число записей в данных таблицах соответствует числу виртуальных страниц.
Страничная организация памяти.
Идея: все пространство памяти разбивается на равные части (страницы), обычно размер страницы 4-8 КБ. Он выбирается кратным размеру сектора магнитного диска. Виртуальные и физические адресные пространства также разбиваются на блоки размером в страницу. Блок основной памяти, равный странице, называют страничным кадром или фреймом. Страницам виртуальной и физической памяти присваивают номера. При обращении процессора к какой-либо ячейке памяти процессор выставляет адрес, который состоит из номера виртуальной страницы и смещения относительно начала страницы. Этот виртуальный адрес поступает в схему преобразования адресов с целью преобразования данного адреса в физический, причем преобразованию подвергается только номер виртуальной страницы, так как смещения для ВП и ОП одинаковые. Если преобразователь адресов обнаруживает, что страница с необходимым номером отсутствует в ОП, то формируется сигнал страничного сбоя (Page Fault) (аппаратное прерывание процессором самого себя, exception) и требуемая страница загружается диспетчером памяти из внешней памяти в основную. Преобразователь адресов – часть ОС, транслирующая виртуальный адрес в физический (реальный). Преобразование адреса из виртуального в физический осуществляется с помощью страничной таблицы. Обычно она содержит:
Признаки |
|||||
Номер виртуальной страницы |
Номер физической страницы |
V |
M |
R |
A |
Номер виртуальной страницы |
Сектор |
Дорожка |
Где ТОС – таблица отображения страниц;
р – номер виртуальной страницы;
d – смещение;
p' – номер реальной страницы.
Для отображения необходимо найти соответствие .
Признаки страничной таблицы:
1) V – признак присутствия, определяет загружена ли страница в основой памяти или нет (1 –данная виртуальная страница находится в ОП; в этом случае в поле номера физической страницы находится номер страницы ОП; 0 – виртуальная страница отсутствует в основной памяти, генерируется сигнал страничного сбоя (PF), по нему происходит замена, т.е. данная виртуальная страница загружается в ОП через карту диска) и далее V = 1. 2) R – признак использования страницы, устанавливается при обращении к данной странице, информация эта используется при замещении страницы в основной памяти; по данному признаку анализируется, какую страницу выпускать из ОП, если нужно записать другую страницу (см. КЭШ). 3) M – признак модификации (“грязная страница”), данное поле работает, как в КЭШ памяти, определяет была ли изменена страница в процессе работы. 0 – страница не изменялись; 1 – страница изменялись. Если 1 (страница ВП изменялись), то выполняется перезапись данных во внешнюю память. Иначе – сохранять не надо, ее копия уже лежит на диске 4) A – признак прав доступа, данный признак используется с целью защиты информации и определяет, какой вид доступа разрешен в этой таблице (например, 0 – read/write, 1 – read only). Кроме того в страничной таблице содержатся и другие признаки (для защиты): 5) U/S пользователь/супервизор. Определяет уровень привилегий страницы. Используется для защиты системных страниц (вариант Intel – номер кольца защиты ring 0-3). 6) R/W/Х чтение/запись/исполнение. Атрибуты страницы (ограничивает доступ). Достоинства: а) не нужно хранить размер блока. б) в таблице указывается не начальный адрес, а номер блока виртуальной памяти. в) аналогично для файла подкачки. г) не надо проверять влезет ли блок в свободное пространство. Недостатки: при страничной организации памяти вся ВП рассматривается как непрерывное линейное пространство, ОДНАКО специфика некоторых программ требует, чтобы реализация была другой. Поэтому возникла сегментная организация. Для того, чтобы сократить число обращений к ТОС в процессор вводят специальный кэш страниц (ассоциативная таблица, признак ассоциативного поиска – номер виртуальной страницы). Используются иерархические таблицы. Отдельной проблемой при разработке системы со страничной или сегментной адресацией является выбор размера страницы. Этот размер определяется шириной соответствующего битового поля адреса и поэтому должен быть степенью двойки. С одной стороны, страницы не должны быть слишком большими, так как это может привести к неэффективному использованию памяти и перекачке слишком больших объемов данных при сбросе страниц на диск. С другой стороны, страницы не должны быть слишком маленькими, так как это приведет к чрезмерному увеличению таблиц трансляции, требуемого объема КЭШа дескрипторов и т.д. Что будет считаться "слишком" большим или, наоборот, маленьким, в действительности зависит от среднего количества памяти, используемого программой. В реальных системах размер страницы меняется от 512 байт у машин семейства VAX до нескольких килобайт. Например, i3/486 имеет страницу размером 4 К. У процессора i860 размер страницы переключается между 4 К и 4 Мбайтами.