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

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

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

Классы сегментов.

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

Регистр процессоров архитектуры IA-32 (Intel Architect).Содержит специальные регистры для хранения начальных адресов сегментов (CS – регистр сегмента кода, DS - регистр сегмента данных, SS – регистр сегмента стека). Имеются также дополнительные сегменты: ES, FS, GS – группа регистров для дополнительных сегментов. Смещение внутри сегмента кода задает программный счетчик. Операционная система одновременно поддерживает несколько таблиц дескрипторов данных равных количеству загруженных в настоящий момент программ. Переключение между процессорами осуществляется через регистр LDTR (Local Descript Table Register), который содержит адрес дескрипторной таблицы текущего выполняемого процесса.

Типы сегментов.

Все сегменты делятся на 3 типа:

  1. Закрепленные – сегмент не может быть перемещен по физической памяти.
  2. Перемещаемые - сегмент может быть перемещен по физической памяти, если в ОС не хватает непрерывного адресного пространства для загрузки других приложений. Большинство сегментов перемещаемые.
  3. Снимаемые – при нехватке реальной памяти ОС может занять память, ранее отводимую под данный сегмент, для загрузки других процессов, при этом сегмент перемещается на диск. Снимаемыми могут быть только перемещаемые сегменты. Если для продолжения выполнения процесса нет необходимого сегмента, то происходит: его поиск во внешней памяти, нахождение для него подходящего места в реальной памяти, если необходимо, то перемещение или выгрузка на диск ранее загруженных сегментов, загрузка нового сегмента.

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

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

Недостатки этого способа: Сегменты – большие участки программы, поэтому возможна фрагментация на уровне сегмента

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

Виртуальное адресное пространство каждого процесса делится на фиксированные одинакового размера части, называемые виртуальными страницами. Для Windows размер виртуальной страницы 4 Кбайта. Реальная и дисковая память также делится на части такого же размера, которые называются физическими страницами. При загрузке процесса часть его виртуальных страниц помещается в реальную память, а остальные на диск. Смежные виртуальные страницы не обязательно располагаются в смежных физических страницах. ОС для каждого процесса создает таблицу страниц, в которой устанавливается соответствие между номерами виртуальных и физических страниц, а также указывается другая управляющая информация: признак модификации, признак выгруженности (находится ли страница на диске) и т.д. Виртуальный адрес может быть представлен в виде пары P, I (P - № виртуальной страницы, I – смещение внутри виртуальной страницы). Таблица страниц используется для определения по № виртуальной страницы – физической страницы. Адрес в реальной памяти получается путем выполнения операции присоединения № физической страницы и смещения внутри страницы.При каждом обращении к памяти из таблицы страниц происходит определение физической страницы. Если данная страница находится в реальной памяти, то происходит преобразование виртуального адреса в физический. Если же страница находится на диске, то ОС находит страницу на диске и пытается загрузить ее в память. Если в памяти есть свободная физическая страница, требуемая страница загружается немедленно, если нет – одна из ранее загруженных страниц выгружается на диск, а на ее место загружается новая страница. Достоинства этого способа:Минимально возможная фрагментация.Более высокая скорость преобразования виртуального адреса в физический, т.к. операция присоединения выполняется быстрее, чем операция сложения. Недостатки этого способа:

Т.к. размер страниц маленький, размер таблиц страниц становится очень большим. 4 Мбайта при максимально возможной загрузке отводится на содержание таблиц

Сегментно-страничная организация виртуальной памяти.

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

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

  1. Дайте определение виртуальной памяти компьютера. Каким образом она организована?

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

Современные способы управления реальной памятью основаны на использовании жесткого магнитного диска, когда образы некоторых программ или их частей выгружаются на диск. Теоретически доступная память, объем которой определяется разрядностью шины адреса компьютера, называется виртуальной памятью. Объем виртуальной памяти современных 32-разрядных компьютеров: 232 = 4 Гбайта.

Виртуальная память решает задачи:

-Размещает процессы в ЗУ различного типа. Часть процессов размещается в реальной памяти, другая часть – на диске.

-перемещает по мере необходимости данные между ЗУ разного типа. Например, подгружает необходимую часть процесса с диска в реальную память.

-Преобразует виртуальные адреса откомпилированной программы в физические.

Все это делается без участия человека, операционной системой.

Принципы: страничный, сегментный, сегментно-страничный.