Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курсовая Вариант 18.docx
Скачиваний:
25
Добавлен:
17.06.2016
Размер:
188.59 Кб
Скачать

2.5. Организация виртуальной памяти

Виртуальная память – способ организации памяти ЭВМ, разработанный для многозадачных операционных систем. При использовании данной технологии для каждой программы используются независимые схемы адресации памяти, отображающиеся тем или иным способом на физические адреса в памяти ЭВМ. Позволяет увеличить эффективность использования памяти несколькими одновременно работающими программами, организовав множество независимых адресных пространств, и обеспечить защиту памяти между различными приложениями. При использовании виртуальной памяти упрощается программирование, так как программисту больше не нужно учитывать ограниченность памяти, или согласовывать использование памяти с другими приложениями, что позволяет использовать больше памяти, чем установлено в компьютере. Для программы выглядит доступным и непрерывным все допустимое адресное пространство, вне зависимости от наличия в ЭВМ соответствующего объёма ОЗУ.

Суть страничной организации виртуальной памяти заключается в том, что все множество адресов разделяются на последовательный блоки, или страницы размерностью 2k и с которыми в дальнейшем происходит работа.

1

2

ОП

2k

2k

Имеется область адресации страниц и область смещения, которая говорит о том, какая ячейка данной страницы.

Виртуальный адрес: Физический адрес:

L Р 1

k А 1

L S 1

k A 1

P, L – адрес страницы;

А, к – адресация внутри страницы.

S – физический адрес страницы;

А – адрес слова в странице.

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

В строке таблицы описания страниц, в соответствующих полях, указываются признаки, характеризующие страницу.

20 3

2

1

0

PgNum

P

W

M

Pgnum – номер страницы кадра;

P – признак размещения описания таблицы в ОЗУ:

1- находится в ОП,

0- находится на внешнем носителе (жесткий диск).

W – признак прав доступа к странице:

1 – страница доступна для записи,

0 – только для чтения.

M – признак модификации страницы

1 – в ходе выполнения программы страница была изменена,

0 – осталась неизменной.

Общий объем памяти необходимый обеспечить для страничной организации виртуальной памяти рассчитан в разделе 1.4.4 и составляет 6.75 Мб

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

Пользовательская sel:смещение

программа

0 ВАП

2 ВАП

  

Физический адрес П_ОЗУ Физическая память

0 страница ВАП

…………

callA

…………

1 страница

2 страница

A-процедура

ret

…………

nстраница

0

1

ХХ

0

ХХ

0

  

Внешнее ЗУ Таблица описания страниц ОЗУ

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

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

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

Процесс динамического преобразования виртуального адреса в физический адрес завершается после установки соответствующих признаков, характеризующих виртуальную страницу.

№ региона

№ страницы

смещение

== 1

Нет

Да

RBGT

RBLT

Адрес таблицы страниц

+

x4

Адрес кадра

признак

+

физ. адрес ОЗУ

Если допустить, что весь наш объем состоит только из виртуальной памяти, то тогда, например, непосредственная адресация команды ADD для адреса 65528 в байтах. При размере страницы памяти в 8 Кбайт (8192 байта) номер кадра можно рассчитать как результат деления 65528 на 8192 равный 7. То есть 7 – это номер кадра/страницы. Смещение же – это остаток от деления, в данном случае равный 8184 байт. Таким образом для адресации необходимо обратиться к 7 кадру и сместиться относительно его начального адреса на 8184 байт.

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

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

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

Выполняется ожидание завершения операции перемещения (чтения) виртуальной страницы.

Обновляется таблица отображения страниц, восстанавливается состояние пользовательского процесса, вызвавшего страничное прерывание, и прерванный процесс переводится в состояние готовности. Процедура обработки страничного прерывания, возникшего при наличии свободных страничных кадров, завершается.

В случае отсутствия свободного страничного кадра при обработке страничного прерывания необходимо выбрать страничный кадр для выталкивания из ОЗУ.

Если выбранный для выталкивания страничный кадр подвергался модификации, то обновляется таблица отображения страниц. Флаг I разрешения прерываний от внешних устройств с помощью команды STI устанавливается в единицу, разрешая все внешние прерывания. Формируется запрос на ввод-вывод для переписывания содержимого страничного кадра во внешнее запоминающее устройство.

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