Операционные системы/Пример организации страничной виртуальной памяти
Материал из eSyr's wiki.
Модельная (упрощенная) схема организации функционирования страничной памяти ЭВМ следующая.
Пусть одна система команд ЭВМ позволяет адресовать и использовать m страниц размером 2k каждая. То есть виртуальное адресное пространство программы/процесса может использовать для адресации команд и данных до m страниц.
Физическое адресное пространство, в общем случае, может иметь произвольное число физических страниц (их может быть больше m, а может быть и меньше). Соответственно, структура исполнительного физического адреса будет отличаться от структуры исполнительного виртуального адреса размером поля ”номер страницы”.
В виртуальном адресе размер поля определяется максимальным числом виртуальных страниц – m.
В физическом адресе – максимально возможным количеством физических страниц, которые могут быть подключены к данной ЭВМ (это также фиксированная аппаратная характеристика ЭВМ).
В ЦП ЭВМ имеется аппаратная таблица страниц (иногда таблица приписки) следующей структуры:
Таблица содержит m строк. Содержимое таблицы определяет соответствие виртуальной памяти физической для выполняющейся в данный момент программы/процесса. Соответствие определяется следующим образом: i-я строка таблицы соответствует i-й виртуальной странице. Содержимое строки αi определяет, чему соответствует i-я виртуальная страница программы/процесса. Если αi ≥ 0, то это означает, что αi есть номер физической страницы, которая соответствует виртуальной странице программы/процесса. Если αi= -1, то это означает, что для i-й виртуальной страницы нет соответствия физической странице ОЗУ (обработка этой ситуации ниже). Итак, рассмотрим последовательность действий при использовании аппарата виртуальной страничной памяти.
- При выполнении очередной команды схемы управления ЦП вычисляет некоторый адрес операнда (операндов) Aисп. Это виртуальный исполнительный адрес.
- Из Aисп выделяются значимые поля номер страницы (номер виртуальной страницы). По этому значению происходит индексация и доступ к соответствующей строке таблицы страниц.
- Если значение строки ≥ 0, то происходит замена содержимого поля номер страницы на соответствующее значение строки таблицы, таким образом, получается физический адрес. И далее ЦП осуществляет работу с физическим адресом.
- Если значение строки таблицы равно –1, то это означает, что полученный виртуальный адрес не размещен в ОЗУ. Причин такой ситуации может быть две. Первая – данная виртуальная страница отсутствует в перечне станиц, доступных для программы/процесса, то есть имеет место попытка обращения в “чужую” память. Вторая ситуация – когда операционная система в целях оптимизации использования ОЗУ откачала некоторые страницы программы/процесса в ВЗУ (свопинг). Что происходит в системе, если значение строки таблицы страниц –1, и мы обратились к этой строке? Происходит прерывание “защита памяти”, управление передается операционной системе (по стандартной схеме обработки прерывания и далее происходит программная обработка ситуации (обращаем внимание, что все, что выполнялось до сих пор – пункт 1, 2, 3 и 4 – это действия аппаратуры, без какого-либо участия программного обеспечения)).
ОС по содержимому внутренних данных определяет конечную причину данного прерывания: или это действительно защита памяти, или мы пытались обратиться к странице ОЗУ, которая временно размещена во внешней памяти. Таким образом, предложенная модель организации виртуальной памяти позволяет решить проблему фрагментации ОЗУ. На самом деле, некоторая фрагментация остается (если в странице занят хотя бы 1 байт, то занята вся страница), но она является контролируемой и не оказывает значительного влияния на производительность системы. Далее, данная схема позволяет простыми средствами организовать защиту памяти, а также своппирование страниц. Предложенная модель организации виртуальной памяти позволяет иметь отображение виртуального адресного пространства программы/процесса в произвольные физические адреса; она также позволяет выполнять в системе программы/процессы, размещенные в ОЗУ частично (оставшаяся часть может быть размещена во внешней памяти).
Недостаток – необходимость наличия в ЦП аппаратной таблицы значительных размеров.
Итак мы рассмотрели модельный, упрощенный вариант организации виртуальной памяти. Реальные решения используемые в различных архитектурах ЭВМ могут быть гораздо сложнее, но основные идеи остаются неизменными.