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-used
bit true
. Bu durumda, sayfaya bir erişim gerçekleştiğinde sayfa hatası olmaz, bu nedenle bitler değişmez.
- Bellekte mevcut ama
recently-used
bit 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-hand
içeren bir sayfaya işaret recently-used
bit set true
biz çevirmek recently-used
için biraz false
ve sonra artırmak clock-hand
sonraki sayfaya noktaya. İle bir sayfayı bulduğunuzda recently-used
zaten temizlenmiş, biz yerine sayfası. Sonra yeni sayfayı işaretlemek recently-used
ve artım clock-hand
iç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-hand
sayfanı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-hand
etrafı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?)