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

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

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

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

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

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

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

1 ответ1

0

Ну, во-первых, эта статья довольно старая - она предшествует Windows 2000.

Во-вторых, описание Марком алгоритма "часов" является неполным. Когда Mm находит бит доступа, установленный в PTE, он очищает его. Хорошо пока. Но если он находит, что бит уже очищен, он увеличивает счетчик в записи списка рабочих наборов этой страницы (WSLE). Таким образом, более высокие значения счетчика соответствуют страницам, к которым обращались более давно.

Нет необходимости быть настолько точным, чтобы записывать метки времени.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .