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.