Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
Виртуальная память — это совокупность программно-аппаратных средств, позволяющих пользователям писать программы, размер которых превосходит имеющуюся оперативную память. Для этого виртуальная память решает следующие задачи:
- размещает данные в запоминающих устройствах разного типа, например, часть программы в оперативной памяти, а часть на диске;
- перемещает по мере необходимости данные между запоминающими устройствами разного типа, например, подгружает нужную часть программы с диска в оперативную память;
- преобразует виртуальные адреса в физические.
Все эти действия выполняются автоматически, без участия программиста, то есть механизм виртуальной памяти является прозрачным по отношению к пользователю.
Наиболее распространёнными реализациями виртуальной памяти является страничное, сегментное и странично-сегментное распределение памяти, а также свопинг.
Принцип организации.
1) Все обращения к памяти в рамках процесса представляют собой логические (виртуальные) адреса, которые динамически транслируются в физические адреса во время исполнения. Это означает, что процесс может быть выгружен на диск и вновь загружен в основную память, так что во время работы он может находиться в разных местах основной памяти.
2) Процесс может быть разбит на ряд частей (страниц или сегментов), которые не обязательно должны располагаться в основной памяти единым непрерывным блоком. Это обеспечивается за счёт динамической трансляции адресов и использования таблицы страниц или сегментов.
Если в системе выполняются указанные принципы, то наличие всех страниц или сегментов процесса в основной памяти одновременно не является обязательным.
При загрузке каждого нового процесса операционная система размещает в памяти только один или нескольких блоков, включая блок, содержащий начало программы. Часть процесса, располагающаяся в некоторый момент времени в основной памяти, называется резидентным множеством процесса. Во время выполнения процесса всё происходит так, как если бы все ссылки были только на резидентное множество процесса. При помощи таблицы сегментов или страниц процессор всегда может определить, располагается ли блок, к которому требуется обращение, в основной памяти. Если процессор сталкивается с виртуальным адресом, который не находится в основной памяти, он генерирует прерывание, свидетельствующее об ошибке доступа к памяти. Операционная система переводит прерванный процесс в заблокированное состояние и получает управление. Чтобы продолжить выполнение прерванного процесса, операционной системе необходимо загрузить в основную память блок, содержащий вызвавший проблемы виртуальный адрес. Для этого операционная система использует запрос на чтение с диска (во время выполнения которого может продолжаться выполнение других процессов). После того, как необходимый блок загружен в основную память, выполняется прерывание ввода-вывода, передающее управление операционной системе, которая, в свою очередь, переводит заблокированный процесс в состояние готовности.
Как можно видеть, для реализации виртуальной памяти необходима аппаратная поддержка процесса трансляции виртуальных адресов в физические.
Обычно виртуальный адрес представляет собой пару значений (s, gT), где s — номер сегмента, ad — смещение внутри сегмента.
В системе (процессоре) обязательно имеется регистр, содержащий адрес таблицы сегментов (блоков) текущего процесса.
Процесс трансляции в общем виде выглядит следующим образом (рис. 30.1). При обращении к памяти из таблицы сегментов, на которую указывает специальный регистр процессора, выбирается строка, соответствующая номеру сегмента s, записанному в виртуальном адресе. Из строки выбирается физический адрес s' загрузки данного сегмента в ОП. Далее вычисляется исполнительный физический адрес га по формуле
Как можно видеть, каждое обращение к памяти требует на самом деле минимум двух обращений к ОП (не считая обращений к внешней памяти, если нужный сегмент в ОП отсутствует). Если бы запросы к памяти были распределены по процессу равномерно, то механизм виртуальной памяти был бы крайне неэффективным. Однако благодаря свойству локальности и наличию механизмов кэширования в современных ЭВМ, реальная производительность механизма виртуальной памяти достигает 95 % и более от номинальной производительности ЭВМ.
Дата публикования: 2015-02-03; Прочитано: 2451 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!