Страничная организация памяти.
В наиболее простом и наиболее часто используемом случае страничной виртуальной памяти виртуальная память и физическая представляются состоящими из наборов блоков или страниц одинакового размера. Виртуальные адреса делятся на страницы (page), соответствующие единицы в физической (оперативной) памяти образуют страничные кадры (page frames), а в целом система поддержки страничной виртуальной памяти называется пейджингом (paging).
Передача информации между памятью и диском всегда осуществляется целыми страницами. Страницы, в отличие от сегментов, имеют фиксированную длину, обычно являющуюся степенью числа 2, и не могут перекрываться.
Виртуальный адрес в страничной системе упорядоченная пара (p,d), где=
p - номер страницы в виртуальной памяти,
d - смещение в рамках страницы p где размещается адресуемый элемент.
Для преобразования адресного пространства каждого процесса используется одна или несколько таблиц страниц, которые обычно хранятся в оперативной памяти.
Для ссылки на таблицу страниц используется специальный регистр процессора.
Рис. 9.1 Связь логического и физического адресов при страничной организации памяти.
Таблицы страниц.
Система отображения виртуальных адресов в физические сводится к системе отображения виртуальных страниц в физические и представляет собой таблицу страниц.
Организация таблицы страниц - один из ключевых элементов механизмов страничного и сегментно-страничного преобразований. Рассмотрим структуру таблицы страниц более детально.
виртуальный адрес состоит из =
виртуального номера страницы (high-order bits)
и смещения (low-order bits) - внутри страницы с заданным номером.
Номер виртуальной страницы используется как индекс в таблице страниц для нахождения записи (entry) о виртуальной странице.
Из этой записи в таблице страниц находится номер кадра (page frame number), затем прибавляется смещение и формируется физический адрес. Помимо этого запись в таблице страниц содержит информацию об атрибутах страницы, в частности биты защиты.
Назначение таблицы страниц заключается в отображении виртуальных стра-
ниц на страничные блоки. Говоря математически, таблица страниц — это функция,
имеющая в качестве аргумента номер виртуальной страницы и получающая в ре-
зультате номер физического блока. Используя результат действия этой функции,
поле виртуальной страницы в виртуальном адресе может быть заменено полем
страничного блока, таким образом, формируется физический адрес.
Несмотря на столь простое описание, нам придется столкнуться с двумя важ-
ными проблемами:
1. Таблица страниц может быть слишком большой.
2. Отображение должно быть быстрым.
Первый пункт следует из того факта, что современные компьютеры исполь-
зуют по крайней мере 32-разрядные виртуальные адреса. При размере страницы,
скажем, 4 Кбайт, 32-разрядное адресное пространство будет состоять из одного
миллиона страниц, а 64-разрядное адресное пространство будет включать в себя
намного больше страниц, чем то количество, с которым вы захотите иметь дело.
При одном миллионе страниц в виртуальном адресном пространстве таблица
страниц должна состоять из одного миллиона записей. И помните, что каждый
процесс нуждается в своей собственной таблице страниц (потому что у него есть
свое собственное виртуальное адресное пространство).
Второй пункт — это вывод из того факта, что преобразование виртуальных адре-
сов в физические должно быть выполнено для каждого обращения к ячейке памя-
ти. Типичная команда процессора включает в себя слово-команду и часто также
операнд памяти. В результате необходимо сделать 1,2 или иногда больше обраще-
ний к таблице страниц за команду. Если выполнение команды занимает, скажем,
4 не, то поиск в таблице страниц должен быть сделан меньше, чем за 1 не, чтобы
преобразование виртуальных адресов не стало главным узким местом системы.
Простейшее конструкторское решение (по крайней мере, концептуально) за-
ключается в поддержании таблицы страниц, состоящей из массива быстрых аппа-
ратных регистров с одной записью для каждой виртуальной страницы, индексиро-
ванного по номерам виртуальных страниц, как показано на рис. 4.11. Когда процесс
запускается, операционная система загружает в регистры таблицу страниц процес-
са, данные берутся из копии, хранящейся в оперативной памяти. Во время выпол-
нения процесса таблице страниц больше не нужно обращаться к памяти. Преиму-
щество этого метода заключается в его простоте и отсутствии необходимости
обращений к памяти во время преобразования адресов. Недостатком является его
потенциально высокая стоимость (если таблица страниц велика). Необходимость
загрузки полной таблицы в регистры при каждом контекстном переключении
наносит ущерб производительности.
Подкачка (swapping).