Halihazırda bellekte olan bir sayfa için bir başvuru gelirse, değiştirme algoritması hiç çağrılmaz.
Saat yerleştirme algoritmasına LRU değiştirme avantajlarından bazıları başarmak için çalışıyorum, ama her sayfa isabet LRU bitlerini manipüle kitlesel yükü olmadan edilir.
Bir sayfa üç durumdan birinde olabilir:
- Hafızada mevcut ve
recently-usedbit true. Bu durumda, sayfaya bir erişim gerçekleştiğinde sayfa hatası olmaz, bu nedenle bitler değişmez.
- Bellekte mevcut ama
recently-usedbit false. Bu durumda sayfa, sayfaya erişilirse sayfa hatası oluşacak şekilde sayfa tablosunda da işaretlenir. (Ve bu durumda sayfa hatası oluşursa, sayfa hatası işleyicisinin yaptığı tek şey durumu olarak değiştirmektir recently-used.)
- Sayfa bellekte yok. Bu durumda
clock-hand. İken clock-handiçeren bir sayfaya işaret recently-usedbit set truebiz çevirmek recently-usediçin biraz falseve sonra artırmak clock-handsonraki sayfaya noktaya. İle bir sayfayı bulduğunuzda recently-usedzaten temizlenmiş, biz yerine sayfası. Sonra yeni sayfayı işaretlemek recently-usedve artım clock-handiçin bir sonraki sayfaya.
Saat, kalbinde, LRU'yu tahmin etmek için olasılıklı bir algoritmadır. Sayfanın erişildiği oran, clock-handsayfanın aynı sayfaya geri dönme oranından çok daha yüksekse , sayfanın işaretlenme olasılığı yüksektir recently-used. Sayfa erişildiğini hızdır düşük orana kıyasla ise clock-handetrafında geri geliyor, sonra sayfa halde olması daha olasıdır değil recently-used . En son kullanılan sayfa hiçbir zaman değiştirilmez. (Neden?)