Как Windows / Linux x64 определить последний раз страница памяти был доступ?

я :

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

Я считаю, что TLB только хранит информацию о его текущем наборе страниц не все из них. Или это просто, что ничего нет в TLB игра для выселению в соответствии с этими критериями?

mightyWOZ:

Алгоритм страничного блока регенерации ( PFRA ) в Linux ядре является acutally довольно сложным , и он использует несколько эвристик , чтобы решить , какую страницу выселить. Фактическое решение зависит от многих факторов, но следующие два выделяются.

1. Наименее Недавно использованные (LRU) Списки

Память Linux делится на различные зоны памяти , каждая зона имеет дескриптор зоны и этот дескриптор наряду с другими вещами хранят ссылки на два очень важные списки , а именно активных и неактивных .

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

2. Page дескрипторные флаги

следующие два флага в дескрипторе страницы позволяет ядру определить, если данная страница включена в один из вышеуказанных списков.

PG_lru - Страница находится в активном или неактивном списке страниц

PG_active -The страница находится в активном списке страниц

Понимание ядра Linux заявляет следующее , когда он описывает , как PFRA фактически использует выше информацию.

Основная идея алгоритма LRU состоит в связывании счетчик, хранящий возраст страницы с каждой страницы в оперативной памяти, то есть интервал времени, прошедшего с момента последнего доступа к странице. Этот счетчик позволяет ПФРЕ вернуть только самую старую страницу любого процесса. Некоторые компьютерные платформы обеспечивают сложную поддержку LRU алгоритмов; †, к сожалению, 80 × 86 процессоров не предлагают такую ​​аппаратную функции, таким образом, ядро ​​Linux не может полагаться на прилавке страницы, которая отслеживает возраст каждой страницы. Чтобы справиться с этим ограничением, Linux использует преимущества Accessed бит, включенные в каждой записи таблицы страниц, которая автоматически устанавливается аппаратно, когда доступ к странице; кроме того, возраст страницы представлен положение дескриптора страницы в одном из двух различных «первых использованных (LRU) списков».

рекомендация

отhttp://10.200.1.11:23101/article/api/json?id=7426&siteId=1