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

 

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

Наличие динамического распределения памяти предполагает, что программа компилируется в т.н. «логических» адресах, а в процессе работы происходит автоматическое преобразование логических адресов в физические.

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

 

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

Диапазон реальных адресов, существующих в конкретной ЭВМ (2n, где n– разрядность регистра физического адреса), называется пространством реальных адресов R этой машины. Предполагают, что объем V значительно больше R.

Виртуальная память представляет собой, моделируемую на внешней памяти основную память машины. Перевод виртуальных адресов в реальные во время выполнения процесса, называется динамическим преобразованием адресов (DAT). Это преобразование адресов выполняет сама система, причем это делается прозрачно (невидимо) для пользователя.

Существует два наиболее распространенных способа реализации виртуальной памяти – это страничная и сегментная организация.

Блоки фиксированного размера, называются страницами, блоки переменного размера называются сегментами. В современной ВС оба вида блоков комбинируются, причем как правило применяются сегменты длина которых выражается целым числом страниц (странично-сегментная организация памяти).

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