Saat mensimulasikan algoritma penggantian halaman jam, ketika referensi masuk yang sudah ada dalam memori, apakah jarum jam masih bertambah?
Berikut ini sebuah contoh:
Dengan 4 slot, gunakan algoritma penggantian halaman jam
Daftar referensi: 1 2 3 4 1 2 5 1 3 2 4 5
Daftar awal akan terlihat seperti ini:
-> [1][1]
[2][1]
[3][1]
[4][1]
Referensi berikutnya untuk memasukkan adalah 1, lalu 2. Apakah tangan masih menunjuk 1 setelah 1, dan setelah 2? Dengan kata lain, setelah memasukkan angka 5, apakah jam akan terlihat seperti ini:
-> [5][1]
[2][0]
[3][0]
[4][0]
?
algorithms
paging
virtual-memory
menyembelih
sumber
sumber
Jika referensi tiba untuk halaman yang sudah ada dalam memori, maka algoritma penggantian tidak dipanggil sama sekali.
The algoritma penggantian jam mencoba untuk mencapai beberapa manfaat penggantian LRU, tetapi tanpa overhead besar memanipulasi LRU bit pada setiap halaman hit.
Satu halaman bisa dalam satu dari tiga negara:
recently-used
bittrue
. Dalam hal ini tidak akan ada kesalahan halaman ketika akses terjadi ke halaman, jadi tidak ada bit yang akan berubah.recently-used
sedikitfalse
. Dalam hal ini halaman juga ditandai dalam tabel halaman sedemikian rupa sehingga jika halaman diakses kesalahan halaman akan terjadi. (Dan jika kesalahan halaman terjadi dalam kasus ini, satu-satunya hal yang dilakukan penangan kesalahan halaman adalah mengubah status kerecently-used
.)clock-hand
. Sementaraclock-hand
menunjuk ke halaman denganrecently-used
bit yang diaturtrue
kita membalikkanrecently-used
bit kefalse
, dan kemudianclock-hand
naik untuk menunjuk ke halaman berikutnya. Ketika kami menemukan halaman dengan yangrecently-used
sudah dihapus, itu adalah halaman yang kami ganti. Lalu kami menandai halaman baru sebagairecently-used
dan menambahclock-hand
ke halaman berikutnya .Clock, pada dasarnya, adalah algoritma probabilistik untuk mendekati LRU. Jika tingkat di mana halaman sedang diakses jauh lebih tinggi daripada tingkat di mana
clock-hand
kembali ke halaman yang sama maka halaman tersebut memiliki kemungkinan tinggi untuk ditandairecently-used
. Jika tingkat di mana halaman sedang diakses rendah dibandingkan dengan tingkat di manaclock-hand
kembali sekitar, maka halaman lebih mungkin dalam keadaan tidakrecently-used
. Halaman yang paling terakhir digunakan tidak akan pernah diganti. (Mengapa?)sumber