Якщо посилання надходить на сторінку, яка вже є в пам'яті, алгоритм заміни взагалі не викликається.
Алгоритм заміни тактових годин намагається досягти деяких переваг заміни 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 . Сторінку, яку нещодавно використовували, ніколи не буде замінено. (Чому?)