Показать статистику
0 голосов
от (1.7тыс. баллов)
Изучаю работу Linux с памятью. Тема сложная, но интересная. В литературе и статьях, которые я читаю, часто встречается понятие "Demand Paging" при работе с памятью в Linux. Хотелось бы понять, если можно на пальцах, что это такое. Спасибо!
15 просмотров 1 ответов

1 Ответ

0 голосов
от (7.6тыс. баллов)

Вы затронули интересную тему. Ответ может быть длинным, но я постараюсь быть кратким насколько это возможно. 

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

Смотрите, вот как приблизительно работает виртуальная память. Линукс рассматривает файл подкачки (swap) и физическую память как одно адресное пространство. Работает это примерно так:

В адресном пространстве, с которым проходит вся работа, память разделяется на страницы, которые называются VPNF - Virtual Page Frame Numbers. Реальная физическая память тоже имеет страницы, назыаются они PFN - Physical Frame Numbers. Что бы обратиться к физической памяти, процессор сначала обращается к так называемой "Page Table" - специальной таблице, в которой хранится соответствие виртуальных адресов памяти физическим.

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

  • Адреса нет (то есть процессор обратился к несуществующей странице) и в таком случае процесс просто умирает по причине PAGE FAULT
  • Страницы нет, потому что она не была считана с диска. В таком случае так же выводится PAGE FAULT, процессор переключается на другие задачи, а параллельно ядро считывает с диска недостающие данные
Так вот, такой подход, когда в памяти хранятся не все данные, а только те, которае наиболее часто востребованы и называется Demand Paging.
...