Сегментная и сегментно-страничная организация виртуальной памяти
7.
Все виртуальное адресное пространство памяти машины делится на сегменты. Размер сегментов может определиться размером программы. Сегменты могут иметь переменную длину. Деление на сегменты может осуществляться компилятором или программистом. Каждая программа или процесс может содержать множество сегментов. При загрузке в память загружается только часть программы, полная копия находится на диске. Виртуально адресное пространство определяется двумя полями в адресе.
Виртуальный адрес
№ сегмента
Смещение в сегменте
Каждая программа имеет свою сегментную таблицу, в которой хранятся базовые адреса сегментов.
Если в системе действует множество процессов, то каждый процесс должен содержать свою сегментную таблицу.
Недостатки:
· фрагментация памяти
· поскольку сегменты могут иметь большую длину и могут занимать физическую память, то базовый сегмент полноценный. Для суммирования адресов требуется применение сумматора.
· Подкачка и откачка сегментов занимает значительное время.
Наиболее сложный способ организации памяти. Обычно применяется в суперкомпьютерах. При сегментной организации памяти виртуальная память представляет собой массив с непрерывной адресацией байт программы или данных. Зачастую программы делятся на более мелкие части и модули. Заранее длины этих модулей неизвестны, поэтому желательно чтобы каждый модуль имел свою нумерацию байт, начинающуюся с нуля. Таким образом программа может занимать несколько разделов памяти разной длины.
Программа разбивается на сегменты, страницы, байты. Сегменты помещаются в подходящие свободные секции памяти. Виртуальный адрес будет состоять из трёх полей:
Недостатки:
· увеличивается время формирования физического адреса
· для преобразования требуется два полноценных сумматора
Достоинства:
· здесь можно избежать постоянного содержания в памяти всех страничных таблиц
· те части задач, которые выдаются на диск могут выгружаться вместе со своими страничными таблицами, что позволяет значительно экономить объём памяти, выделяемый под страничную организацию.
Рассмотрим более подробно структуру страничной таблицы. Страничная таблица состоит из записей. Каждой записи соответствует информация
Т
R
M
Биты защиты
Р
№ страницы (начальный адрес)
Запись 0
Запись 1
…
…
Т – вид блокировки кэш
R – бит присутствия, показывает где находится страница в ОП или ВП (1 – ОП, 0 – ВП). Если программа обнаружит 1, то произойдёт страничное прерывание.
М – бит модификации, отслеживает использованные страницы, когда производится запись в страницу устанавливается 1, говорят что страница стала «грязной». При удалении этой страницы в случае замещения она полностью передаётся на диск, таким образом организуется обращение к памяти ВЗУ - потребность данных во всех адресных страницах. При удалении не модифицированной страницы убирается только её адрес из страничной таблицы, копия на диске является действительной.
Р – тип памяти
Биты защиты определяют какие виды доступа установлены для этой страницы (0 – чтение/запись, 1 – чтение)