Найти тему
Миша Воробьев

Методы реализации виртуальной памяти

Все адреса, используемые процессом, управляются только как виртуальные - преобразование в физические адреса выполняется управлением виртуальной памятью.

Каждый процесс запуска получает от операционной системы область хранения программы и данных. Если ему требуется больше оперативной памяти, операционная система может попросить вас выделить больше памяти. Если он не получает его, операционная система перемещает части содержимого ОЗУ на диск и вносит соответствующие изменения в регистры подкачки процесса.

Процессам либо назначается фиксированное количество кадров (не обязательно одинаковое значение для всех процессов, количество выделенных кадров может быть пропорционально размеру программы), либо используется так называемое распределение приоритетов, когда процессам с более высоким приоритетом предоставляется больше кадров.

Существует два основных метода реализации виртуальной памяти - разбиение на страницы и сегментация памяти.

При подкачке память делится на большие разделы одинакового размера, которые называются страницами. Управление виртуальной памятью решает отдельно, какая страница памяти будет загружена во внутреннюю память, а какая будет заменена.
При сегментации память делится на разделы разного размера, называемые сегментами.
Используются две основные политики:

Пейджинг (или сегментация) по запросу , когда страница загружается только в результате прерывания разрыва страницы.
Предварительная подкачка , при которой подсчитано, что процесс, вероятно, скоро будет ссылаться на соседнюю страницу во вторичной памяти (например, с использованием Windows XP).
Отсрочка может быть сделана:

в файл переменной длины (самый медленный вариант),
в файл фиксированной длины (немного быстрее, потому что в файловой системе нет фрагментации, но пространство тратится впустую; с другой стороны, может быть нехватка виртуальной памяти),
непосредственно в выделенный раздел на жестком диске (самый мощный вариант, раздел не содержит файловой системы, регистры подкачки содержат прямые адреса на диске),
комбинированные (зарезервированный раздел на жестком диске при необходимости может быть дополнен файлом подкачки фиксированной или переменной длины).
Ссылка на страницу (или сегмент) за пределами ОЗУ вызывает разрыв страницы, за которым следует что-то вроде этого:

ОС приостанавливает процесс, в котором отсутствует страница.
ОС запускает модуль для загрузки недостающей страницы в ОЗУ и, при необходимости (если ОЗУ заполнена), удаляет страницу из физической памяти в соответствии с одной из следующих стратегий.
Во время передачи запрошенной страницы процесс, в котором отсутствует страница, все еще приостановлен, а другие процессы выполняются.
После загрузки страницы исходный процесс помечается как готовый и ожидающий выделения ЦП.
Некоторые страницы, такие как буферы ввода-вывода или выделенные страницы ОС, нельзя переместить на диск.

Определите оптимальный размер страницы
Выбор небольшого размера страницы уменьшает внутреннюю фрагментацию (меньшую потерю места в выделенных областях) и уменьшает количество выпадений страниц. Однако недостатком является большая таблица страниц (занимает больше оперативной памяти) и более сложный поиск по таблице страниц (при удалении страницы). Для больших сайтов возникают обратные проблемы.