При моделировании алгоритма замены страницы часов, когда появляется ссылка, которая уже находится в памяти, стрелка часов все еще увеличивается?
Вот пример:
С 4 слотами, используя алгоритм замены страницы часов
Список литературы: 1 2 3 4 1 2 5 1 3 2 4 5
Начальный список будет выглядеть так:
-> [1][1]
[2][1]
[3][1]
[4][1]
Следующая ссылка для вставки будет 1, затем 2. Будет ли стрелка по-прежнему указывать на 1 после 1 и после 2? Другими словами, после вставки 5 часы будут выглядеть так:
-> [5][1]
[2][0]
[3][0]
[4][0]
?
algorithms
paging
virtual-memory
slaughterize
источник
источник
Если поступает ссылка на страницу, уже находящуюся в памяти, алгоритм замены вообще не вызывается.
Алгоритм замены часов пытается достичь некоторых из преимуществ замены LRU, но без массивных накладных манипулирования бит LRU на каждой странице хите.
Страница может находиться в одном из трех состояний:
recently-used
бит естьtrue
. В этом случае при доступе к странице не будет ошибки страницы, поэтому биты не изменятся.recently-used
немного естьfalse
. В этом случае страница также помечается в таблице страниц таким образом, что при обращении к странице произойдет сбой страницы. (И если в этом случае возникает ошибка страницы, единственное, что делает обработчик ошибки страницы, это изменяет состояние наrecently-used
.)clock-hand
. Покаclock-hand
указатель указывает на страницу с установленнымrecently-used
битом,true
мы переворачиваемrecently-used
бит наfalse
, а затем увеличиваем,clock-hand
чтобы указать на следующую страницу. Когда мы находим страницу сrecently-used
уже очищенной, это страница, которую мы заменяем. Затем мы помечаем новую страницу какrecently-used
и увеличиваемclock-hand
на следующую страницу.В основе часов лежит вероятностный алгоритм аппроксимации LRU. Если скорость, с которой осуществляется доступ к странице, намного выше, чем скорость, с которой
clock-hand
они возвращаются на ту же страницу, вероятность того, что страница будет отмечена, высокаrecently-used
. Если скорость , при которой страницы осуществляется доступ мала по сравнению со скоростью , с которойclock-hand
возвращается вокруг, то страница, скорее всего, будет в состоянии неrecently-used
. Последняя использованная страница никогда не будет заменена. (Почему?)источник