Сегментно-страничное распределение.
Комбинация сегментного и страничного распределения. Виртуальное адресное пространство делится на сегменты, а сегменты на странички равного размера. Перемещение данных между реальной ОП и виртуальным адресным пространством осуществляется страницами, а не сегментами. Реальная ОП делится на страницы. Все виртуальные сегменты образуют одно непрерывное линейное виртуальное пространство.
Для каждого процесса создается таблица сегментов. В поле базового адреса указывается начальный физический адрес сегмента, отведенный ему в результате загрузки в реальную ОП (как при сегментном распределении). Наличие базового адреса позволяет определить номер сегмента и смещение. Адрес в дальнейшем преобразуется страничным механизмом в адрес в реальной ОП.
Преобразование адресов.
Основные проблемы преобразования:
1. Таблица страниц может быть слишком длинной.
2. Отображение (преобразование) может занять много времени.
В первом случае если размер страницы 4 кб, то 32х разрядное адресное пространство будет состоять из 1 млн страниц, т.е. таблица страниц состоит из одного миллиона записей. Необходимо учитывать также, что каждый процесс имеет свое адресное пространство и следовательно соответствующую таблицу страниц. Во втором случае преобразование адресов должно выполняться при каждом обращении к реальной ОП. Если команда выполняет адресацию к двум операндам, то потребуется 2 обращения к таблице страниц за команду. Как известно, обращение к памяти - достаточно чувствительная штука. Как правило, для устранения указанных недостатков используют аппаратную поддержку:
1. Построение таблицы страниц не в реальной ОП, а в массиве быстрых аппаратных регистров с одной записью для каждой виртуальной страницы. Когда процессу предоставляется процессорное время, ОС загружает регистры с записями таблицы страниц. Таким образом, нет необходимости обращаться к реальной ОП. Недостаток: высокая стоимость, если таблица страниц велика.
2. Многоуровневые таблицы страниц. Отсутствует необходимость хранения в реальной ОП всех таблиц страниц. Те части таблицы страниц, которые не нужны в настоящий момент, в реальной ОП не хранятся. Виртуальный адрес имеет следующую структуру:
Таблицы страниц делятся на таблицы страниц верхнего уровня, первые 10 бит виртуального адреса используются как индекс, который определяет запись, в которой хранится адрес таблицы страниц второго уровня. Поле RT2 используется как индекс для поиска номера рамки реальной ОП, где находится страница. Смещение определяет смещение внутри страницы.
Буферы быстрого преобразования адреса.
В большинстве ОС таблицы страниц хранятся в реальной ОП. При включении механизма страничного обмена на одну команду в виртуальном адресном пространстве требуется по крайнем мере два обращения к таблице страниц (реальная ОП - команда и операнд, что уменьшает производительность системы на 2/3). На практике определено, что в большинстве программного обеспечения большее обращение имеется к небольшому количеству страниц, остальные страницы используются редко. Таким образом, в таблице страниц только малая часть записей читается интенсивно, остальная часть используется редко. В силу этого целесообразно записи таблицы страниц, к которым происходит частое обращение, и последующее преобразование выполнять аппаратно. В разных программно-аппаратных платформах эта часть аппаратуры называется по-разному (TLB Translation Look-aside Buffer, BDAT). Как правильно кол-во записей в TLB 64, значения записей в TLB полностью соответствуют записям в таблице страниц + 1 бит - признак действительности, т.е. актуально ли (действительно ли) данная запись в TLB или нет. Формирование записи в TLB рассмотрим на примере.
Номер виртуальной страницы | Бит изменения (модификации) | Правило доступа (защита) | Номер рамки в реальной ОП |
RW | |||
RX | |||
RW | |||
RW | |||
RX | |||
RX |
Оценка данных говорит о том, что виртуальные страницы с номерами 19, 20, 21 по всей видимости исполнительный код, так как бит модификации 0. 130-129 - область данных, так как бит модификации 1.
Функционирование TLB осуществляется следующим образом:
1. Когда виртуальный адрес представляется для отображения в реальной ОП, аппаратура определяет находится ли номер виртуальной страницы в TLB (поиск, сравнение).
2. Если совпадение найдено и обращение не нарушает биты защиты, адрес страничной рамки берется из TLB без перехода к таблице страниц. Если номер виртуальной страницы присутствует в TLB, но команда пытается записать данные в страницу, доступную только для чтения, формируется прерывание - ошибка защиты.
3. Если номер страницы отсутствует в TLB, осуществляется обычный поиск в таблице страниц. После нахождения записи в таблице страниц одна из записей в TLB заменяется найденной в таблице страниц. Если страница потребуется вторично, её адрес в реальной ОП будет в TLB.
4. Когда запись удаляется из TLB, бит модификации копируется в соответствующую запись таблицы страниц.