Организация виртуальной памяти.
Страничное распределение.
Виртуальное адресное пространство каждого процесса делится на части одинаково, частями фиксированного размера, называемыми страницами. Вся реальная ОП так же делится на части такого же размера, называемыми физическими страницами, или рамками. И в том и в другом случае размер страницы выбирается кратным двойке с целью упрощения механизма преобразования адресов виртуальные в реальные. Смежные виртуальные страницы процесса могут находиться в несмежных областях реальной памяти, поэтому ОС для каждого процесса создает так называемую таблицу страниц. Каждая строка таблицы называется дескриптором страницы. Дескриптор страницы содержит следующую информацию: номер виртуальной страницы РВС в виртуальной памяти процесса, номер страницы в реальной ОП, куда загружена данная виртуальная страница процесса (NФС), признак присутствия – виртуальная страница выполнила страничный обмен и загружена в реальную ОП – 1, признак модификации – в данную страницу реальной ОП были занесены данные (запись), признак обращения – к странице реальной ОП было обращение (чтение). Признаки используются для выработки решения о перемещении страницы между реальной памятью и виртуальной (диском). Адрес таблицы известен процессу и включается в его дескриптор. При активации процесса, адрес таблицы, как правило, загружается в один из регистров процессора. Таблица располагается в реальной ОП. Механизм функционирования следующий: при активации процесса и в дальнейшем при каждом обращении к ОП определяется местонахождения требуемой виртуальной страницы процесса в реальной ОП. По номеру виртуальной страницы в таблицы определяется дескриптор, описывающий её, по элементам дескриптора определяется где и в каком состоянии находится данная виртуальная страница. Если признак присутствия равен 1, страница находится в реальной ОП. Происходит преобразование виртуального адреса в реальный, то есть физический. Если виртуальной страницы нет в реальной ОП (выгружена на диск, находится на диске), происходит прерывание по отсутствию страницы, процесс переводится в состояние ожидания, ОС находит на диске требуемую виртуальную страницу и пытается загрузить ее в реальную ОП. В течение этого выполняются другие процессы, готовые к выполнению. Если в реальной ОП имеется свободная рамка, виртуальная страница с диска загружается в нее; если свободной рамки нет, то, в соответствии с алгоритмом замещения страниц решается какую рамку освободить, то есть выгрузить из нее имеющуюся информацию на диск. После того, как страница выбрана к замещению, её бит присутствия становится равным нулю. И анализируется признак модификации. Если он равен 1 (в данной рамке имеется модификация данных), она вытесняется на диск. Если бит модификации 0 (информация в рамке не менялась), рамка объявляется свободной и запись на диск не производится. В эту рамку происходит загрузка очередной виртуальной страницы и осуществляется корректировка таблицы страниц процесса.
ВП П1
ТС П1
N ячейки | Признаки | |
ВП | ||
РОП
ВП П2
ТС П2
N ячейки | Признаки | |
ВП | ||
ВП | ||
ВП | ||
Преобразование адресов осуществляется следующим образом: виртуальный адрес при страничном распределении может быть представлен парой P и DВ, где P – порядковый номер виртуальной страницы процесса в его виртуальной памяти, DВ – его смещение в пределах страницы. Физический адрес может быть представлен парой N, Dф, где N – номер рамки, Dф – смещение в пределах рамки. Задача ОС состоит в отображении виртуального адреса в физический. Так как размер страницы кратен 2^k, смещение DВ может быть получено отделением k младших разрядов в двоичной записи виртуального адреса. Оставшиеся старшие разряды представляют собой номер страницы.
Примечание: это справедливо как для виртуальной памяти, так и для реальной.
Пример:
23 10 9 0
Тогда номер страницы N=11 0110 1101 1110 – (3 6 D E)16
10 0011 1001 – (2 3 9)16
ОП
0 р. | 00 0000 0000 |
11 1111 1111 | |
1 р. | 00 0000 0000 |
11 1111 1111 | |
36DE | . . . |
23916 | 00 0000 0000 |
Начальный адрес страницы в реальной ОП называется базовым адресом. В пределах рамки, непрерывная последовательность адресов однозначно отображается в последовательность виртуальных адресов. Старшие разряды адреса в реальной ОП виртуальной страницы определяются из таблицы страниц. Младшие разряды соответствуют смещению.
Сегментное распределение.
При страничном распределении память делится на страницы без учета смыслового содержания процесса, что может быть причиной увеличения страничного обмена. Кроме того, сегментное распределение позволяет с наименьшими системными издержками использовать одно и то же приложение.
Виртуальное пространство процесса делится на сегменты. Деление на сегменты осуществляется компилятором или ассемблером по указанию программиста, в ассемблере – директивами(-segment). Максимальный размер сегмента определяется размером виртуального адресного пространства, при 32 разрядном – 4 Гб, таким образом, виртуальное адресное пространство процесса может содержать N сегментов по 4 Гб каждый. Виртуальный адрес задается номером сегмента и адресом внутри сегмента.
Пример:
При загрузке процесса в реальную ОП помещается только часть его сегментов. Полная копия виртуального адресного пространства находится на диске. Если во время выполнения процесса сегмент отсутствует, прерывание по отсутствию сегмента, подкачка. При отсутствии места - вытеснение. При загрузке процесса на выполнение формируется таблица сегментов (аналог таблицы страниц). Для каждого сегмента указывается базовый физический адрес сегмента в реальной ОП, размер сегмента, правила доступа к сегменту, признаки модификации сегмента.
Если виртуальное адресное пространство нескольких процесс указывает на одинаковые сегменты в реальной ОП, то в таблице сегментов делается ссылка на один и тот же сегмент реальной ОП, чтобы он был в единственном экземпляре. Механизм преобразования адресов следующий: виртуальный адрес представляется парой G,S, где G - номер сегмента, S - смещение в сегменте. Физический адрес получается путем сложения базового адреса сегмента (адреса реальной ОП, с которой он начинается) и смещения S.
Недостатки сегментного распределения:
1. Сегмент, как правило, больше страницы и не всегда необходимо загружать весь сегмент в реальную ОП, достаточно только его части.
2. При сегментном распределении появляется фрагментация, которая возникает из-за непредсказуемости размера сегментов. В процессе работы могут образовываться участки реальной ОП, куда не помещается ни один сегмент.