Основные задачи виртуальной памяти
Основными задачами виртуальной памяти являются реализации:
· динамической переадресации программ,
· памяти единого уровня.
Переадресации программ. В соответствии с основной концепцией виртуальной памяти пользователи могут писать программы с использованием любых адресов математической памяти. Переадресация программ заключается в изменении всех адресов обращения к памяти за командами и данными в соответствии с адресами памяти, выделенными операционной системой.
Имеется два способа переадресации программ: программный и аппаратный. Аппаратный способ переадресации используется в механизме виртуальной памяти. Альтернативой ему является программный способ.
Программный способ переадресации программ.Схема программного способа переадресации программ представлена на рис. 6.1. Это схема статической (глобальной) переадресации.
Рис.6.1. Схема статической (глобальной) переадресации.
При статической переадресации исходная программа, возможно разделенная на части, написанная с использованием различных языков программирования, перед выполнением проходит две процедуры преобразования. Первой процедурой преобразования является перевод программы с используемого языка программирования на язык машинных команд (процедура компиляции программы). В результате этой процедуры формируются объектные модули. Объектные модули – это программы в машинных кодах, но не настроенные на
"свободные участки адресов физической памяти".
Дальше работают две программы операционной системы: супервизор памяти (программа выделения свободных участков оперативной памяти) и редактор связей (программа, связывающая отдельные участки программы в единую последовательность команд – исполняемый модуль).
Все эти процедуры преобразования программ необходимы и при однопрограммных режимах работы, когда нет проблемы распределения памяти.
Разница заключается в том, что в многопрограммных режимах при каждом запуске (прогоне) программы нужно повторять преобразование объектного модуля в исполняемый модуль.
Построение памяти единого уровня. В современных ЭВМ используется многоуровневая физическая память: оперативная, энергонезависимая память на основе магнитных дисков и архивная память на основе записи на магнитных лентах. В однопрограммных режимах пользователи имеют возможность напрямую контролировать и управлять передачей данных по уровням памяти. В многопрограммных режимах работы программисту подконтрольна только математическая память (набор адресов, которые можно использовать в программах). Если этого достаточно для управления работой процессора, включая подкачку данных из памяти прямого доступа (свопинг), то говорят о реализации виртуальной памяти.
Таким образом, в понятие виртуальной памяти входят два механизма: динамическая переадресация и построение памяти единого уровня.
Кроме программного способа переадресации программ возможны и аппаратные способы. В этих способах исполняемый модуль формируется только один раз под адреса, назначенные программистом (в расчете на то, что вся оперативная память свободна). Настройка программ с учетом выполнения программы в многопрограммном режиме производится чисто аппаратно схемами процессора. Это динамическая переадресация программ.
Простейшая схема динамической переадресации программ представлена на рис. 6.2. В этой схеме программа, написанная для определенного участка адресов математической памяти, может быть помещена в произвольное место адресного пространства оперативной памяти без изменения адресов в командах.
Для корректного выполнения программы в аппаратуру процессора вводятся дополнительный регистр (регистр смещения) и сумматор.
При загрузке исполняемого модуля программы супервизор памяти выделяет для нее определенный участок оперативной памяти. Адреса этого участка могут отличаться от адресов, используемых в программе. Для их согласования в регистр смещения заносится число, компенсирующее разницу адресов в выделенном участке физической памяти и математической памяти:
Рис.6.2. Простейший механизм динамической переадресации программ
Адрес физической памяти := адрес математической памяти + смещение.
Величина смещения может иметь любой знак (отрицательный или положительный).
Для запуска программы на регистр указателя команд (счетчик команд) заносится адрес входа в программу, указанный программистом, т.е. адрес математической памяти.
Работа программы начинается с выборки команды по содержимому регистра указателя команд. Но, так как указатель содержит адрес математической памяти, а не физической, производится аппаратная коррекция этого адреса. Она заключается в сложении содержимого регистра указателя команд и регистра смещения.
После выборки и дешифрации команды, если это команда обращения к оперативной памяти, в команде содержится также адрес не оперативной памяти, а математической. Поэтому любой адрес обращения к оперативной памяти перехватывается и проходит процедуру преобразования адресов.
Этот механизм преобразования адресов имеет ряд недостатков. Он предполагает механизм распределения оперативной памяти массивами произвольной размерности, что приводит к дефрагментации памяти. Кроме этого, он не решает проблему построения памяти единого уровня.
В МП IA используется процедура трансляции сегментов, которая частично решает проблемы виртуальной памяти: разделение адресных пространств задач и автоматическое преобразование математического адреса в линейный адрес оперативной памяти. Но это не считается механизмом виртуальной памяти. В защищенном режиме, кроме трансляции страниц, возможно включение механизма классической виртуальной памяти – "процедуры трансляции страниц".
Вопросы для самопроверки:
1. Динамическая переадресация программ.
2. Память единого уровня.
3. Глобальная переадресация программ.
4. Простейшая схема динамической переадресации программ.
5. Недостатки простейшей схемы переадресации программ.
Дата добавления: 2021-01-26; просмотров: 359;