Please enable JavaScript.
Coggle requires JavaScript to display documents.
Capítulo 17 Paginação em disco - Coggle Diagram
Capítulo 17
Paginação em disco
17.1 Estendendo a memória RAM
Swapping:
consiste em mover um processo ocioso da memória RAM para um disco
(swap-out)
, liberando a memória para outros processos
Paging
: consiste em mover páginas individuais, conjuntos de páginas ou mesmo segmentos da memória para o disco
(page-out).
Overlays
: o programador organiza seu programa em módulos que serão carregados em uma mesma região de memória em momentos distintos
17.2 A paginação em disco
: consiste em transferir páginas ociosas da memória RAM para uma área em disco, liberando memória para outras páginas
17.2.1 Mecanismo básico
: A transferência de páginas entre a memória e o disco é realizada pelo núcleo do SO. As páginas são retiradas e, quando um processo tentar acessar uma página que está em disco, o núcleo é alertado pela MMU e traz a página de volta à memória.
17.2.2 Eficiência:
faltas de página muito frequentes irão gerar muitos acessos ao disco, aumentando o tempo médio de acesso à memória e, em consequência, diminuindo o desempenho geral do sistema.
17.2.3 Critérios de seleção:
vários critérios podem ser usados para escolher páginas a transferir da memória RAM para o armazenamento secundário:
Data do último acesso
: páginas há mais tempo sem acessar possivelmente serão pouco acessadas
Prioridade do processo proprietário
: processos de alta prioridade podem precisar de suas páginas rapidamente
Frequência de acessos à página:
páginas muito acessadas em um passado recente possivelmente ainda o serão em um futuro próximo
Conteúdo da página:
páginas cujo conteúdo seja código executável exigem menos esforço do mecanismo de paginação
Idade da página
: há quanto tempo a página está na memória
Páginas especiais
: páginas contendo buffers de operações de entrada/saída podem ocasionar dificuldades ao núcleo caso não estejam na memória no momento certo
17.3 Algoritmos clássicos
17.3.1 Cadeia de referências
: indica a sequência de páginas acessadas por um processo ao longo de sua execução, considerando todos os endereços acessados pelo processo nas várias áreas de memória
17.3.2 Algoritmo FIFO:
páginas mais antigas podem ser removidas para dar lugar a novas páginas. Organiza as páginas em uma fila de números de páginas com política FIFO (First In, First Out). Os números das páginas recém carregadas na memória são registrados no final da lista, enquanto os números das próximas páginas a substituir na memória são obtidos no início da lista.
17.3.3 Algoritmo Ótimo:
consiste em remover da memória em um dado instante a página que ficará mais tempo sem ser usada pelos processos. (impossível de implementar)
17.3.4 Algoritmo LRU:
a escolha recai sobre as páginas que estão na memória há mais tempo sem ser acessadas.
17.3.5 Algoritmo RANDOM:
consiste em escolher aleatoriamente as páginas a retirar da memória
17.4 Aproximações do algoritmo LRU
17.4.1 Algoritmo da segunda chance
: melhoria simples FIFO. Consiste em analisar o bit de referência de cada página, para saber se ela foi acessada recentemente. Caso tenha sido, essa página recebe uma “segunda chance”, voltando para o fim da fila com seu bit de referência ajustado para zero. Dessa forma, evita-se substituir páginas antigas mas muito acessadas.
17.4.2 Algoritmo NRU:
melhoria do algoritmo acima, que considera também o bit de modificação, que indica se o conteúdo de uma página foi modificado após ela ter sido carregada na memória. Tenta substituir primeiro páginas do nível 0; caso não encontre, procura candidatas no nível 1 e assim sucessivamente
17.4.3 Algoritmo do envelhecimento:
consiste em usar os bits de referência das páginas para construir contadores de acesso. A cada página é associado um contador inteiro com N bits, onde o algoritmo varre as tabelas de páginas, lê os bits de referência e agrega seus valores aos contadores de acessos das respectivas páginas. Uma vez lidos, os bits de referência são ajustados para zero, para registrar as referências de páginas que ocorrerão durante próximo período
17.5 Conjunto de trabalho
: conjunto de páginas acessadas na história recente de um processo.
WSClock:
as páginas carregadas na memória são organizadas em uma lista circular, por ordem de instante de carga na memória. Cada página
P
dessa lista tem uma data de último acesso
Ta(p)
.
17.6 A anomalia de Belady
: Em alguns algoritmos, ao aumentar o número de quadros de memória, o número de faltas de página geradas pelo algoritmo aumenta, ao invés de diminuir
17.7 Thrashing
: caso a soma de todos os conjuntos de trabalho dos processos prontos para execução seja maior que a memória RAM disponível no sistema
A memória RAM não é suficiente para todos os processos ativos, portanto muitos processos não conseguem ter seus conjuntos de trabalho totalmente carregados na memória.
Formas de evitar seriam: aumentar a quantidade de memória RAM do sistema, limitar a quantidade máxima de processos ativos, ou mudar a política de escalonamento dos processos durante o thrashing, para evitar a competição pela memória disponível