Алгоритм замены тактовой страницы и FIFO
Я написал программу симуляции замены страницы, где алгоритм Clock (использовать бит 1 бит) работает точно так же, как FIFO, что меня очень смущает.
Здесь у меня есть простой случай, чтобы повторить мою трудность:
Say I have page 1 3 5 7 in memory, and initially memory is like:
1 use=1 <- handle
3 use=1
5 use=1
7 use=1
When 2 needs to be inserted, clock handle travels through all the pages and
at last substitute 1:
1 use=0 <- handle
3 use=0
5 use=0
7 use=0
To:
2 use=1
3 use=0 <- handle
5 use=0
7 use=0
Then I need to insert 4:
2 use=1
4 use=1
5 use=0 <- handle
7 use=0
Then after 6 and 8:
2 use=1 <- handle
4 use=1
6 use=1
8 use=1
Предположим, что FIFO высвобождает первую страницу и вставляет ее до конца. В этом примере Clock точно такой же, как FIFO, который всегда выталкивает самую старую (переднюю) страницу.
Я не знаю, что я сделал неправильно, кто-то может указать на это?
Lingyuan
1 ответ
Вы не сделали ничего плохого. Алгоритм синхронизации / второго шанса будет вести себя так же, как FIFO, пока страница, уже находящаяся в памяти, будет запрошена снова. В этот момент бит ссылки устанавливается в 1, и при следующей замене этой страницы вместо ее замены бит ссылки устанавливается в ноль, и следующая страница-кандидат-жертва проверяется таким же образом. Итак, вы могли бы сказать, что страница с перевернутым битом получила... второй шанс.