Memória virtual no sistema operacional: o que é, paginação por demanda, vantagens
⚡ Resumo Inteligente
A memória virtual é um mecanismo de armazenamento que dá ao usuário a ilusão de uma grande memória principal, tratando parte do armazenamento secundário como RAM. Ela permite a execução de processos maiores do que a memória física disponível e é implementada com paginação sob demanda.

O que é Memória Virtual?
Memória virtual É um mecanismo de armazenamento que oferece ao usuário a ilusão de ter uma memória principal muito grande. Isso é feito tratando uma parte da memória secundária como se fosse a memória principal. Na memória virtual, o usuário pode armazenar processos com um tamanho maior do que a memória principal disponível.
Portanto, em vez de carregar um processo longo na memória principal, o sistema operacional carrega as diversas partes de mais de um processo na memória principal. A memória virtual é implementada principalmente com paginação e segmentação por demanda.
Por que precisa de memória virtual?
Eis os motivos para usar memória virtual:
- Sempre que o computador não tiver espaço suficiente na memória física, ele grava o que precisa armazenar no disco rígido, em um arquivo de troca (swap), que funciona como memória virtual.
- Se um computador executando Windows Precisa de mais memória/RAM do que a instalada no sistema, utilizando uma pequena parte do disco rígido para essa finalidade.
Como funciona a memória virtual?
No mundo moderno, a memória virtual tornou-se bastante comum. Ela é utilizada sempre que algumas páginas precisam ser carregadas na memória principal para execução, e a memória disponível não comporta todas as páginas necessárias.
Assim, nesse caso, em vez de impedir que as páginas entrem na memória principal, o sistema operacional procura o espaço de RAM que foi minimamente usado recentemente, ou que não foi referenciado, e o move para a memória secundária para liberar espaço para as novas páginas na memória principal.
Vamos entender gerenciamento de memória virtual com a ajuda de um exemplo.
Por exemplo
Vamos supor que um sistema operacional necessite de 300 MB de memória para armazenar todos os programas em execução. No entanto, atualmente existem apenas 50 MB de memória física disponível na RAM.
- O sistema operacional irá então configurar 250 MB de memória virtual e usar um programa chamado Gerenciador de Memória Virtual (VMM) para gerenciar esses 250 MB.
- Nesse caso, o VMM criará um arquivo de 250 MB no disco rígido para armazenar a memória extra necessária.
- O sistema operacional agora procederá ao endereçamento da memória como se considerasse que 300 MB de memória real estivessem armazenados na RAM, mesmo que apenas 50 MB de espaço estejam disponíveis.
- É função do VMM gerenciar 300 MB de memória, mesmo que apenas 50 MB de espaço de memória real estejam disponíveis.
O que é paginação por demanda?
Um mecanismo de paginação por demanda é muito semelhante a um sistema de paginação com trocaping, onde os processos são armazenados na memória secundária e as páginas são carregadas somente sob demanda, não antecipadamente.
Assim, quando ocorre uma troca de contexto, o sistema operacional nunca copia nenhuma página do programa antigo do disco nem nenhuma página do programa novo para a memória principal. Em vez disso, ele inicia a execução do novo programa após carregar a primeira página e busca as páginas do programa que foram referenciadas.
Durante a execução do programa, se o programa fizer referência a uma página que pode não estar disponível na memória principal porque foi trocada para o disco de paginação, o processador a considera uma referência de memória inválida. Isso ocorre porque a falha de página transfere o controle de volta do programa para o sistema operacional, que exige que a página seja armazenada novamente na memória.
Tipos de métodos de substituição de página
Aqui estão alguns métodos importantes de substituição de páginas:
- FIFO
- Algoritmo Ideal
- Substituição de página LRU
Substituição de página FIFO
FIFO (First-in-first-out) é um método de implementação simples. Neste método, a memória seleciona a página para uma substituição que está no endereço virtual da memória há mais tempo.
Diferenciais
- Sempre que uma nova página é carregada, a página que está na memória há mais tempo é removida. Portanto, é fácil decidir qual página remover, pois seu número de identificação está sempre no início da pilha FIFO.
- A página mais antiga na memória principal é a que deve ser selecionada para substituição em primeiro lugar.
Algoritmo Ideal
O método ideal de substituição de página seleciona aquela página para substituição cujo tempo até a próxima referência é mais longo.
Diferenciais
- O algoritmo Ótimo resulta no menor número de falhas de página. Este algoritmo é difícil de implementar.
- Um algoritmo de substituição de páginas ótimo possui a menor taxa de falhas de página dentre todos os algoritmos. Esse algoritmo existe e deve ser chamado de MIN ou OPT.
- Substitui a página que provavelmente não será usada por um longo período de tempo. Ela utiliza apenas o tempo em que a página precisa ser usada.
Substituição de página LRU
A sigla LRU significa "Least Recently Used" (menos recentemente usada). Esse método ajuda o sistema operacional a encontrar o uso de páginas em um curto período de tempo. Esse algoritmo deve ser implementado associando um contador a cada página.
Como funciona?
- A página que não foi usada por mais tempo na memória principal será a selecionada para substituição.
- Fácil de implementar, mantenha uma lista, substitua páginas olhando para trás no tempo.
Diferenciais
- O método de substituição LRU possui a contagem mais alta. Esse contador também é chamado de registro de envelhecimento, que especifica a idade e a frequência com que as páginas associadas devem ser referenciadas.
- A página que não foi usada por mais tempo na memória principal é a que deve ser selecionada para substituição.
- Ele também mantém uma lista e substitui páginas olhando para trás no tempo.
Taxa de falha
A taxa de falhas é a frequência com que um sistema ou componente projetado falha. É expressa em falhas por unidade de tempo e é representada pela letra grega λ (lambda).
Vantagens da memória virtual
Aqui estão as vantagens/benefícios de usar memória virtual:
- A memória virtual ajuda a ganhar velocidade quando apenas um determinado segmento do programa é necessário para a execução do programa.
- É muito útil na implementação de um ambiente de multiprogramação.
- Ele permite que você execute mais aplicativos ao mesmo tempo.
- Ele ajuda você a encaixar muitos programas grandes em programas menores.
- Dados ou códigos comuns podem ser compartilhados entre memórias.
- Um processo pode se tornar ainda maior do que toda a memória física.
- Os dados/código devem ser lidos do disco sempre que necessário.
- O código pode ser colocado em qualquer lugar da memória física sem necessidade de realocação.
- Mais processos devem ser mantidos na memória principal, o que aumenta o uso efetivo da CPU.
- Cada página é armazenada em disco até que seja necessária, após o que será removida.
- Ele permite que mais aplicativos sejam executados ao mesmo tempo.
- Não há limite específico para o grau de multiprogramação.
- Programas grandes devem ser escritos, pois o espaço de endereço virtual disponível é maior em comparação com a memória física.
Desvantagens da memória virtual
Aqui estão as desvantagens/contras do uso de memória virtual:
- Os aplicativos podem ser executados mais lentamente se o sistema estiver usando memória virtual.
- Provavelmente, a troca entre aplicativos leva mais tempo.
- Oferece menos espaço em disco rígido para uso.
- Reduz a estabilidade do sistema.
- Isso permite que aplicativos maiores sejam executados em sistemas que não oferecem memória RAM física suficiente para executá-los.
- Não oferece o mesmo desempenho que a RAM.
- Afeta negativamente o desempenho geral de um sistema.
- Ocupa espaço de armazenamento que poderia ser usado para armazenamento de dados a longo prazo.

