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

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

Учитывая страничную организацию виртуальной памяти — физический и виртуальный адреса имеют форматы, которые показаны на рис. 20.2.

организация виртуальной памяти - student2.ru

Рис. 20.2. Форматы реального и виртуального адресов

Фактически в этом случае адрес делится на две части: старшую и младшую. Старшая часть адреса рассматривается как номер страницы в реальной или виртуальной памяти, а его младшая часть — как смещение внутри этой страницы. Например, если адрес имеет длину 32 бита, а длина страницы равна 4 Кбайт, то младшие 12 бит рассматриваются как смещение внутри страницы, старшие 20 бит — как номер страницы. Это разбиение обусловлено тем, что 212 = 4096 байт. Единственное различие между виртуальным и реальным адресами состоит в том, что виртуальный адрес имеет большую длину поля, отведенного на номер виртуальной страницы.

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

организация виртуальной памяти - student2.ru

Рис. 20.3. Формат строки таблицы страниц процесса

организация виртуальной памяти - student2.ru

Рис. 20.4. Схема преобразования виртуального адреса в реальный адрес

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

1. Находится строка в таблице страниц, соответствующая номеру виртуальной страницы. Индекс этой строки равен b + v.

2. Если f = 1, то виртуальная страница находится в реальной памяти. Если же f = 0, то виртуальная страница находится на диске. В этом случае выполняется загрузка виртуальной страницы в реальную память. После чего значение столбца f устанавливается в 1, а столбец r указывает на адрес виртуальной страницы в реальной памяти.

3. Вычисляется реальный адрес, который формируется из адреса реальной страницы, заданного значением r, и смещения в виртуальной странице, заданного значением d.

Повторим, что все эти действия выполняются аппаратным образом, а именно, процессором.

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

Существует также комбинированный подход, который заключается в том, что виртуальная память разбивается на страницы, которые потом объединяются в сегменты. Эти подходы к организации виртуальной памяти нами рассматриваться не будут, т. к. в операционных системах Windows используется страничная организация виртуальной памяти. Сегментная организация виртуальной памяти использовалась в старой операционной системе Windows 3.1.

Наши рекомендации