<<
>>

Вызов страниц по требованию и рабочее множество

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

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

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

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

Вопрос о том, стоит вызывать страницы по требованию или нет, имеет смысл только при запуске программы.

Когда программа проработает некоторое время, нужные страницы уже окажутся в основной памяти. Однако если это компьютер с разделением времени и процессы выгружаются, проработав примерно 100 миллисекунд, то каждая программа будет запускаться многократно. Для каждой программы распределение памяти уникально и при переключении с одной программы на другую меняется, поэтому в системах с разделением времени такой подход не годится.

Альтернативный подход основан на наблюдении, что многие программы обращаются к адресному пространству неравномерно. Обычно большинство обращений относятся к небольшому числу страниц. Это называется принципом локальности. При обращении к памяти можно вызвать команду, вызвать данные или сохранить данные. В каждый момент времени t существует набор страниц, которые использовались при последних k обращениях. В [54] этот набор страниц назван рабочим множеством.

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

<< | >>
Источник: Таненбаум Э.. Архитектура компьютера. 5-е изд. 2007

Еще по теме Вызов страниц по требованию и рабочее множество:

  1. 1.2.1.1. Общая продолжительность рабочего времени. Неполный и сокращенный рабочий день.
  2. Первая страница
  3. § 24 Замена одного требования другим противоположным (компенсация). – Основания сей замены и законные для нее условия. – Однородность требований. – Отношение их по количеству. – Действие несостоятельности на замену. – Требования несоизмеримые. – Необязательность замены.
  4. II. 1. 1. Множества.
  5. II. 2. 2. От единого к множеству.
  6. Вариантов множество.
  7. II. 2. 7. Тетрады и дальнейшее разбиение множеств.
  8. 4. Кондикционное требование и требование стороны в обязательстве о возврате исполненного
  9. Великое множество «я»
  10. 2. Кондикционное требование и требование о возврате исполненного по недействительной сделке
  11. Обида порождает множество болезней