Алгоритмы подкачки Windows NT

379
user3494322

Я пытался выяснить, как пейджинг работает в операционных системах Windows. Я нашел сообщение в блоге от Марка Руссовича еще в 1998 году о таком управлении памятью. Он обсуждает алгоритм «Наименее недавно использованный».

Статья немного сбивает с толку, поскольку его объяснение не совсем совпадает с его обзором. Например, его обзор:

LRU заменяет в первую очередь те страницы, к которым процессы не обращались в течение самого длительного периода времени

Тем не менее, в объяснении говорится, что он определяется исключительно по тому, установлен ли флаг доступа:

На однопроцессорном устройстве, если диспетчер памяти находит страницу с установленным флагом «Доступ», диспетчер памяти очищает этот флаг и переходит к следующим страницам, выбирая для замены следующую страницу, найденную с очищенным флагом «Доступ»

Конечно, по этой логике нет дат для сравнения, и поэтому, если существует несколько страниц без флага доступа, MMU выберет первую найденную (которая может не обязательно быть «НАИМЕНОВАННОЙ»)?

РЕДАКТИРОВАТЬ: http://windowsitpro.com/systems-management/inside-memory-management-part-2

0
Я не думаю, что вопросы по внутренним компонентам Windows здесь имеют отношение к теме. При этом алгоритм явно оптимизирован. Сканирование всего списка каждый раз, чтобы найти самую старую неиспользованную страницу, очевидно, слишком дорого. Daniel B 9 лет назад 2

1 ответ на вопрос

0
Jamie Hanrahan

Well, first, that article is quite old - it predates Windows 2000.

Second, Mark's description of the "clock" algorithm is incomplete. When the Mm finds an Accessed bit set in a PTE, it clears it. Fine so far. But if it finds the bit is already clear, it increments a counter in that page's working set list entry (WSLE). Thus higher counter values correspond to pages that were accessed longer ago.

There is no need to be so precise as to record timestamps.