Сегментно-страничный способ организации виртуальной памяти
Как и в сегментном способе распределения
памяти, программа разбивается на
логически законченные части — сегменты
— и виртуальный адрес содержит указание
на номер соответствующего сегмента.
Вторая составляющая виртуального адреса
— смещение относительно начала сегмента
— в свою очередь может быть представлено
состоящим из двух полей: виртуальной
страницы и индекса. Другими словами,
получается, что виртуальный адрес теперь
состоит из трех компонентов: сегмента,
страницы и индекса.
Оценим достоинства сегментно-страничного
способа. Разбиение программы на сегменты
позволяет размещать сегменты в памяти
целиком. Сегменты разбиты на страницы,
все страницы сегмента загружаются в
память. Это позволяет сократить число
обращений к отсутствующим страницам,
поскольку вероятность выхода за пределы
сегмента меньше вероятности выхода за
пределы страницы. Страницы исполняемого
сегмента находятся в памяти, но при этом
они могут находиться не рядом друг с
другом, а «россыпью», поскольку диспетчер
памяти манипулирует страницами. Наличие
сегментов облегчает разделение
программных модулей между параллельными
процессами. Возможна и динамическая
компоновка задачи. А выделение памяти
страницами позволяет минимизировать
фрагментацию.
Однако поскольку этот способ распределения
памяти требует очень значительных
затрат вычислительных ресурсов и его
не так просто реализовать, используется
он редко, причем в дорогих мощных
вычислительных системах.