Виртуальная память: различия между версиями

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску
[непроверенная версия][непроверенная версия]
Содержимое удалено Содержимое добавлено
Строка 23: Строка 23:


== Алгоритмы определения устаревших страниц ==
== Алгоритмы определения устаревших страниц ==

<!--orphaned pages-->
При выделении места для новой страницы необходимо удалить какую-либо страницу, в данный момент находящуюся в памяти. Правила замещения страниц служат для принятия решения о том, какую именно страницу следует удалить из памяти. Идеальным кандидатом является «мертвая» страница, которая больше не потребуется кому-либо (например, относится к завершенному процессу). Если же таких страниц нет в памяти (или их количества недостаточно), используется правило локального или глобального замещения страниц:
* Правило локального замещения выделяет каждому процессу или группе взаимосвязанных процессов определённое количество страниц. Если процессу нужна новая страница, он должен заменить одну из собственных.
* Правило глобального замещения страниц позволяет брать страницы любого процесса, используя глобальные критерии выбора. Для реализации данного подхода необходимо выбрать критерий, по которому будет приниматься решение о страницах, хранимых в памяти.

Наиболее часто используемые критерии поиска:
* Less Recently Used. Удаляются те страницы, доступ к которым производился наиболее давно. Считается, что в последующем к таким страницам будет происходить минимум обращений.
* Last Recently Used. Удаляются недавно освободившиеся страницы. Подразумеваются страницы только что завершившихся процессов.


== Невыгружаемые страницы ==
== Невыгружаемые страницы ==

Версия от 18:59, 1 мая 2007

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

Система подкачки

Объём виртуальной памяти на некоторых ОС может в несколько раз превышать объём физической оперативной памяти компьютера. На таких ОС при нехватке физической оперативной памяти начинается процесс подка́чки: на жёстком диске отводится область, которая начинает исполнять функции оперативной памяти (с гораздо меньшей эффективностью, конечно, чем специальная физическая оперативная память).

Фрагментация виртуальной памяти

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

Фрагментация адресного пространства

Адресное пространство любого процесса имеет размер около 2 Гб. Оно непрерывно. Эти адреса не соответствуют физическим. Предположим, программа выделила память тремя порциями: 1 Гб, 500 Мб и ещё 500 Мб. Далее, программа высвободила первую и третью порцию. Они стали свободны. Однако программа не сможет выделить непрерывный объём памяти размером 1,5 Гб.

Фрагментация физической памяти

Страницы памяти процессов находятся вперемежку в физической памяти. Эта фрагментация ни на что не влияет — доступ к памяти почти мгновенный. Поиск участка организован аппаратно — в процессоре с использованием специальных страничных регистров.

Фрагментация файла подкачки

Место на жёстком диске для хранения страниц оперативной памяти может быть оформлено в виде файла на файловой системе, либо для этого отводится целый раздел. Файл, содержащий выгруженные страницы оперативной памяти называется фа́йлом подка́чки. В связи со спецификой использования этого файла, его расположение на жёстком диске может стать крайне фрагментированным. Это сильно затормаживает работу, так как при чтении такого файла жёсткому диску необходимо производить множество операций перепозиционирования считывающих головок!

Механизм работы аппаратных исключений

Аппаратные исключения

Двойные исключения

Возникновение прерывания

MMU

Алгоритмы определения устаревших страниц

При выделении места для новой страницы необходимо удалить какую-либо страницу, в данный момент находящуюся в памяти. Правила замещения страниц служат для принятия решения о том, какую именно страницу следует удалить из памяти. Идеальным кандидатом является «мертвая» страница, которая больше не потребуется кому-либо (например, относится к завершенному процессу). Если же таких страниц нет в памяти (или их количества недостаточно), используется правило локального или глобального замещения страниц:

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

Наиболее часто используемые критерии поиска:

  • Less Recently Used. Удаляются те страницы, доступ к которым производился наиболее давно. Считается, что в последующем к таким страницам будет происходить минимум обращений.
  • Last Recently Used. Удаляются недавно освободившиеся страницы. Подразумеваются страницы только что завершившихся процессов.

Невыгружаемые страницы

См. также

Ссылки