Paginação por demanda - Demand paging

Em sistemas operacionais de computador , a paginação por demanda (em oposição à paginação antecipada ) é um método de gerenciamento de memória virtual . Em um sistema que usa paginação por demanda, o sistema operacional copia uma página do disco para a memória física apenas se for feita uma tentativa de acessá-la e essa página ainda não estiver na memória ( ou seja , se ocorrer uma falha de página ). Segue-se que um processo começa a ser executado sem nenhuma de suas páginas na memória física, e muitas falhas de página ocorrerão até que a maior parte do conjunto de páginas de trabalho de um processo esteja localizada na memória física. Este é um exemplo de técnica de carregamento lento .

Conceito básico

A paginação por demanda segue que as páginas só devem ser trazidas para a memória se o processo de execução as exigir. Isso geralmente é conhecido como avaliação lenta, pois apenas as páginas exigidas pelo processo são trocadas do armazenamento secundário para a memória principal . Compare isso com a troca pura, em que toda a memória de um processo é trocada do armazenamento secundário para a memória principal durante a inicialização do processo.

Normalmente, para atingir esse processo, uma implementação de tabela de página é usada. A tabela de páginas mapeia a memória lógica para a memória física . A tabela de páginas usa um operador bit a bit para marcar se uma página é válida ou inválida. Uma página válida é aquela que atualmente reside na memória principal. Uma página inválida é aquela que atualmente reside na memória secundária. Quando um processo tenta acessar uma página, geralmente as seguintes etapas são seguidas:

  • Tente acessar a página.
  • Se a página for válida (na memória), continue processando as instruções normalmente.
  • Se a página for inválida, ocorrerá um trap de falha de página .
  • Verifique se a referência de memória é uma referência válida para um local na memória secundária. Caso contrário, o processo é encerrado ( acesso ilegal à memória ). Caso contrário, temos que paginar na página necessária.
  • Agende a operação do disco para ler a página desejada na memória principal.
  • Reinicie a instrução que foi interrompida pelo trap do sistema operacional.

Vantagens

Paginação por demanda, em oposição ao carregamento de todas as páginas imediatamente:

  • Carrega apenas as páginas exigidas pelo processo de execução.
  • Como há mais espaço na memória principal, mais processos podem ser carregados, reduzindo o tempo de troca de contexto , que utiliza grande quantidade de recursos.
  • Ocorre menos latência de carregamento na inicialização do programa, pois menos informações são acessadas do armazenamento secundário e menos informações são trazidas para a memória principal.
  • Como a memória principal é cara em comparação com a memória secundária, essa técnica ajuda a reduzir significativamente o custo da lista de materiais (BOM) em smartphones, por exemplo. Symbian OS tinha esse recurso.

Desvantagens

  • Programas individuais enfrentam latência extra quando acessam uma página pela primeira vez.
  • Os sistemas incorporados de baixo custo e baixo consumo de energia podem não ter uma unidade de gerenciamento de memória que ofereça suporte à substituição de páginas.
  • O gerenciamento de memória com algoritmos de substituição de página torna-se um pouco mais complexo.
  • Possíveis riscos de segurança, incluindo vulnerabilidade a ataques temporais ; veja Percival, Colin (2005-05-13). "Cache ausente para diversão e lucro" (PDF) . BSDCan 2005 . (especificamente o ataque à memória virtual na seção 2).
  • Thrashing que pode ocorrer devido a falhas de página repetidas.

Veja também

Referências

  • Tanenbaum, Andrew S. Sistemas operacionais: Design e implementação (segunda edição) . New Jersey: Prentice-Hall 1997.