Você está na página 1de 3

Algoritmos de substituio de pginas:

Alguns algoritmos foram desenvolvidos com o objetivo de otimizar a substituio de pginas


quando ocorre falta de pginas e alguma deve ser removida. Pois escolhendo uma pgina aleatria para
ser removida pode aumentar o esforo da mquina, j que ela pode ser uma usada com grande frequncia
tendo que ser trazida de volta rapidamente. Os tipos de algoritmos esto caracterizados abaixo:
Algoritmo timo
Se uma pgina ser referenciada depois de 10000 instrues e outra aps 5000 instrues, o ideal
seria que, numa falta de pgina, a primeira fosse substituda. Porm impossvel o SO saber quando uma
pgina ser acessada novamente, logo no h como implementar um algoritmo que se baseie nessa ideia.
Em simulaes possvel utilizar esse algoritmo, j que executando uma vez o programa,
possvel guardar todas as referncias de pginas e assim, aplicar o algoritmo em uma segunda execuo.
Algoritmo de substituio de pgina no usada recentemente (NRU)
A maioria dos SOs possuem 2 bits associados a cada pgina: bit R que indica se uma pgina foi
referenciada ou no e o bit M que indica se uma pgina foi modificada. Com base nesses bits criado um
algoritmo de substituio.
Pode-se formar uma tabela como demonstrado na tabela1 separando as pginas em 4 categorias,
assim, na falta de pgina, o SO remove aleatoriamente uma pgina da categoria de ordem mais baixa.
Tabela 1 - grupos de pginas

R
0
0
1
1

M
0
1
0
1

Grupo
Grupo 0
Grupo 1
Grupo 2
Grupo 3

Descrio
No referenciada e no modificada
No referenciada e modificada
Referenciada e no modificada
Referenciada e modificada

O grupo 1 a primeira vista parece ser impossvel de acontecer, mas ocorre pelo fato de que
periodicamente o bit R zerado para diferenciar as pginas que foram usadas recentemente, mas o estado
de M deve ser mantido para saber se a informao deve ou no ser reescrita em disco. Portanto, quando
ocorre isso com alguma pgina do grupo 3, ela mandada para o grupo 1.
Esse algoritmo possui como principal vantagem o fato de ser fcil
implementado, alm do que possui um desempenho satisfatrio.

de ser entendido e

Algoritmo Primeiro a entrar, primeiro a sair (FIFO)


Esse algoritmo funciona da seguinte maneira: o SO mantm uma lista encadeada de todas as
pginas utilizadas na memria da mais antiga para a mais recente, assim, quando h falta de pgina,
retirada a pgina do comeo da lista.
um algoritmo de baixo custo, porm no eficiente, j que uma pgina antiga muito utilizada
pode ser retirada da lista.
Algoritmo da segunda chance (SC)
Esse algoritmo serve para evitar a retirada constante de pginas muito utilizadas do algoritmo
anterior. Diferencia-se do FIFO apenas pelo fato de antes de eliminar uma pgina, o SO analisa o estado
do bit R. Se o bit R estiver em 0, ento a pgina retirada. Se o bit R estiver em 1, ele zerado e dado
uma segunda chance para esta pgina, enviando-a para o final da lista.

Algoritmo de pgina do relgio


Esse algoritmo basicamente uma forma diferente da aplicao do algoritmo de segunda chance,
j que o SC desnecessariamente eficaz por ficar colocando constantemente pginas ao final de uma lista.
Diferente da SC, as pginas so colocadas em uma lista circular com um ponteiro apontando
para a pgina mais antiga (primeiro da lista no algoritmo anterior), e toda vez que h falta de pgina,
analisada a pgina apontada pelo ponteiro e analisado o estado de R. Se o bit for 0, a pgina retirada e o
ponteiro vai para a prxima posio, seno ele zera o R e pula pra prxima posio at encontrar alguma
pgina com um R zerado.
Algoritmo de pgina usada menos recentemente (LRU)
Esse algoritmo se baseia na seguinte ideia: Uma pgina muito utilizada em instrues recentes,
provavelmente ser utilizada em instrues futuras, logo no deve ser retirada numa falta de pginas.
o algoritmo que mais se aproxima do timo, porm sua aplicao cara, j que criada uma
lista encadeada da pgina mais utilizada at a menos utilizada e cada vez que uma pgina referenciada, a
lista deve ser atualizada.
Esse tipo de algoritmo pode ser aplicado tanto por software como por hardware, porm nem
sempre as mquinas possuem suporte para realiz-lo por hardware.
H duas maneiras de implementao por hardware, porm nesse estudo ser analisado apenas o
modelo mais simples. Neste, deve ser incrementado um contador de 64 bits C, no qual a cada atualizao
de pgina esse contador incrementado e o valor armazenado numa tabela de pginas, assim, cada vez
que houver falta de pginas, o SO analisa essa tabela e a com o menor valor ser a pgina retirada.
Por software existem 2 maneiras que sero analisadas: NFU (no usada frequentemente) e Aging
(envelhecimento). As duas esto caracterizadas abaixo.

NFU: Para aplicar esse algoritmo deve-se criar um contador para cada pgina. Assim, a cada
atualizao no relgio da mquina so analisadas as pginas para saber se foram referenciadas
ou no para ir incrementando o seu contador de referncias e ir atualizando a lista de pginas.
O problema com esse algoritmo que ele nunca esquece nada, assim se em uma pgina foi
muito utilizada em uma determinada funo, ela sempre estar na frente da lista, mesmo que no
esteja sendo utilizada mais e pginas com contador baixo podem ser retiradas, mesmo se ainda
estiverem sendo usadas.
Aging: Para resolver o problema existente no algoritmo anterior este foi criado. Nesse, alm de
analisar quantas vezes a pgina foi utilizada, tambm analisada quando ela foi utilizada.
Ele se consiste nos seguintes passos: A cada interrupo do relgio o bit R rotacionado para a
direita e o novo estado de R colocado a sua esquerda, assim, se aps vrias interrupes uma
pgina no for referenciada, ela ter em seus bits mais significativos o valor 0 e ser retirada em
caso de uma falta de pgina. Um exemplo dessa aplicao est demonstrado na figura..., no qual
mostra o valor do contador de 6 pginas aps algumas interrupes de relgio.

Figura 1 - exemplo de Aging