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

Виртуальная память ограничивает число одновременно выполняющихся программ. Одним из решений этой проблемы было разделение программ на части, которые называются overlay – если какой-то модуль не работает в течение какого-то периода выполнения, то на его место можно записать другой модуль. Также эти программы называли программами с перекрытием. Все overlay хранились на диске и перемещались средствами ОС, разрабатываемыми программистами. Позднее в мультипрограммных системах появился другой способ решения проблемы, при котором образы некоторых процессов целиком или частично временно выгружаются на диски. Все действия по организации совместного использования диска и ОП, а именно определение места, настройка адресов, осуществляются аппаратурой автоматически. такая подмена (виртуализация) ОП дисковой памятью позволяет повысить уровень мультипрограммирования. Виртуализация осуществляется совокупностью программных модулей ОС и аппаратных схем процессора и включает решение следующих задач:

Виртуализация осуществляется посредством 2 подходов: swapping (свопинг) – образы процессов перегружаются на диск и обратно целиком; virtual memory – между ОП и диском перемещаются части образов процессов. Свопинг представляет собой частный и наиболее простой случай виртуальной памяти, при котором в основной памяти в каждый момент времени находится только одна программа. Программа выполняется по мере возможного, потом на её место вклинивается другая программа. Этот метод эффективен, когда основная память имеет ограниченные размеры. Ему свойственна избыточность, а именно при активизации процесса для его выполнения, как правило, не требуется загружать в память все его сегменты полностью, аналогично при освобождении не требуется выгружать диск целиком. Перемещение избыточной информации замедляет работу системы. Кроме того системы, поддерживающие свопинг, не способны загрузить процесс, виртуальное пространство которого превышает свободное место в памяти. Такие системы практически не используются в настоящий момент.

Концепция виртуальной памяти впервые была реализована в машине Atlas в 1960 году. Её суть заключается в том, что адреса, к которым обращается процесс, отделяются от адресов, реально существующих в первичной памяти. Те адреса, на которые делает ссылки выполняющийся процесс, называются виртуальными, а те адреса, которые существуют в физической памяти, называются реальными. Диапазон виртуальных адресов называется пространством виртуальных адресов V этого процесса. Диапазон реальных адресов – пространство реальных адресов R компьютера. Смежные адреса виртуального пространства не обязательно будут смежными в реальной памяти. Это свойство называется искусственной смежностью. В случае с виртуальной памятью нет необходимости вести её учет, но несмотря на то, что процессы обращаются только к виртуальным адресам, в действительности они должны работать с реальной памятью, поэтому виртуальные адреса необходимо динамически преобразовывать в реальные. Для преобразования используются таблицы отображения виртуальных адресов на реальные. Главная проблема преобразований – это минимизация количества информации отображения, которую необходимо держать в первичной памяти, а также достижение удовлетворительных скоростей. Решению этих проблем способствует так называется поблочное отображение. Существует 2 способа реализации виртуальной памяти: страничная и сегментная. Страница – это блок фиксированного размера, сегмент – блок переменного размера. В системах с комбинированием обоих блоков обычно применяются сегменты, длина которых выражается целым числом страниц. В схемах поблочного отображения адреса рассматриваются как упорядоченные пары. V=(b,d), b – блок, в котором находится виртуальный адрес, d – смещение адреса относительно начала блока. Из скоростных соображений эта таблица размещается в кэш-памяти или в ассоциативной памяти, в которой адресация производится на основе содержимого, а не их положения.

Преобразование адреса виртуальной памяти в реальный адрес осуществляется по схеме:

 

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

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

Комбинированная организация. Виртуальный адрес представляет собой тройку (s, p, d). Динамическое преобразование осуществляется довольно сложно как бы в 2 этапа, поскольку строки таблиц сегментов указывают на таблицы страниц, а строки таблиц страниц указывают на кадры. В комбинированных системах почти всегда применяются высокоскоростные ассоциативные устройства или кэш-память. Коллективное использование в комбинированной системе осуществляется благодаря тому, что строки различных таблиц сегментов указывают на одну таблицу страниц.

 

3 апреля 2012 года