Ao simular o algoritmo de substituição da página de relógio, quando chega uma referência que já está na memória, o ponteiro do relógio ainda aumenta?
Aqui está um exemplo:
Com 4 slots, usando o algoritmo de substituição da página de relógio
Lista de referência: 1 2 3 4 1 2 5 1 3 2 4 5
A lista inicial ficaria assim:
-> [1][1]
[2][1]
[3][1]
[4][1]
A próxima referência a inserir seria 1, depois 2. O ponteiro ainda apontaria para 1 após 1 e após 2? Em outras palavras, depois de inserir o 5, o relógio ficaria assim:
-> [5][1]
[2][0]
[3][0]
[4][0]
?
algorithms
paging
virtual-memory
massacrar
fonte
fonte
Se chegar uma referência para uma página que já está na memória, o algoritmo de substituição não será chamado.
O algoritmo de substituição de clock está tentando obter alguns dos benefícios da substituição de LRU, mas sem a sobrecarga maciça de manipular os bits de LRU em cada página acessada.
Uma página pode estar em um dos três estados:
recently-used
bit étrue
. Nesse caso, não haverá falha na página quando um acesso ocorrer, portanto nenhum bit será alterado.recently-used
éfalse
. Nesse caso, a página também é marcada na tabela de páginas de forma que, se a página for acessada, ocorrerá uma falha na página. (E se a falha da página ocorrer neste caso, a única coisa que o manipulador de falhas da página faz é alterar o estado pararecently-used
.)clock-hand
. Enquanto oclock-hand
está apontando para uma página com orecently-used
bit definidotrue
, alternamos orecently-used
bit parafalse
e, em seguida, aumentamosclock-hand
para apontar para a próxima página. Quando encontramos uma páginarecently-used
já limpa, é a página que substituímos. Em seguida, marcamos a nova página comorecently-used
e aumentamosclock-hand
para a próxima página.O relógio é, no fundo, um algoritmo probabilístico para aproximar a LRU. Se a taxa na qual a página está sendo acessada for muito maior que a taxa na qual a página
clock-hand
voltará para a mesma página, a página terá uma alta probabilidade de ser marcadarecently-used
. Se a taxa na qual a página está sendo acessada for baixa em comparação com a taxa em que elaclock-hand
voltará, é mais provável que a página esteja no estado nãorecently-used
. A página usada mais recentemente nunca será substituída. (Por quê?)fonte