Lição
A teoria — Substituição de páginas: FIFO, LRU e a política ótima
A memória divide-se em molduras de igual tamanho, e os dados de um programa em páginas desse mesmo tamanho. Assim, qualquer página cabe em qualquer moldura. A sequência de referências regista, por ordem, as páginas a que o programa acede. Um acesso a uma página ausente da memória causa uma falha de página: a página é carregada e, se não houver nenhuma moldura livre, uma política de substituição escolhe a página a retirar. Uma política apresenta a anomalia de Bélády numa sequência quando produz mais falhas com F + 1 molduras do que com F.
O que significa cada símbolo
F- número de molduras
n- número de páginas de um ciclo (exercício resolvido)
r- número de repetições do ciclo
- Pressupõe
- Paginação a pedido: uma página só é carregada quando o programa a pede. A memória começa vazia, pelo que a primeira referência a cada página causa uma falha em qualquer política. Quando várias páginas deixam de ser necessárias, esta implementação de OPT retira a de menor número. Cada referência corresponde a uma página; não se distingue entre leituras e escritas, e retirar uma página não tem qualquer custo. Para implementar LRU de forma exata, seria preciso registar o momento de cada acesso à memória. Esse registo é demasiado dispendioso, por isso os núcleos dos sistemas operativos usam aproximações baseadas num bit de referência por página. A mais conhecida é o algoritmo do relógio.
Problema resolvido na íntegra
-
Quando LRU falha em todas as referências 5 passos
Prima Ciclo, OPT e identifique os passos em que ocorrem as suas 7 falhas. Considere depois um programa que soma os elementos de um vetor de 100 páginas, repetindo a operação 1.000 vezes, com 99 molduras. Quantas falhas produz LRU? E OPT? Quantas haverá com uma 100.ª moldura?
Abrir este problema na ferramenta
-
Na demonstração, as primeiras cinco referências causam falhas: quatro preenchem as molduras vazias e a quinta substitui uma página. As falhas seguintes ocorrem nos passos 9 e 13, com um intervalo de quatro referências: 5 + 2 = 7.
-
O intervalo de quatro referências resulta da escolha de OPT. Com n − 1 molduras e um ciclo de n páginas, há exatamente uma página do ciclo fora da memória. Quando ocorre uma falha, a página cujo próximo acesso está mais distante é a que foi lida imediatamente antes: só voltará a ser pedida daí a n − 1 referências. Na última passagem, algumas páginas já não serão necessárias, e OPT pode retirar uma dessas. Ao retirar aquela página, as próximas n − 2 referências encontram as suas páginas na memória. A falha seguinte ocorre, por isso, n − 1 referências depois.
-
LRU com 99 molduras: quando o acesso à página p causa uma falha, as molduras contêm todas as outras páginas. A que não é usada há mais tempo é p + 1, precisamente a próxima que o ciclo pede. Todas as 100 × 1.000 = 100.000 referências causam falhas, tal como as 15 da demonstração. FIFO retira as mesmas páginas.
-
OPT: as primeiras 99 referências preenchem as molduras. A partir da 100.ª, há uma falha a cada 99 referências, nas referências 100, 199, 298, …: são 1 + ⌊(100.000 − 100) / 99⌋ = 1 + 1.009 = 1.010 falhas. O total é 99 + 1.010 = 1.109, dado pela expressão n + ⌊n(r − 1)/(n − 1)⌋ com n = 100 e r = 1.000.
-
Com uma 100.ª moldura, o vetor inteiro cabe na memória: qualquer uma das três políticas produz 100 falhas, uma por página, e nenhuma após a primeira passagem.
Resposta
LRU: 100.000; OPT: 1.109; com mais uma moldura: 100. Um ciclo com uma página a mais do que cabe na memória é o pior caso para LRU. A moldura que falta reduz o número de falhas para um milésimo.
-
Percurso de aprendizagem
O que custa pouco numa estrutura de dados
Referências (1)
- The first insight's date and attribution: the anomaly, and its formal treatment for FIFO: L. A. Belady, R. A. Nelson and G. S. Shedler, "An anomaly in space-time characteristics of certain programs running in a paging machine," Communications of the ACM 12(6), 349–353, June 1969.