Memória virtual no sistema operacional: o que é, paginação por demanda, vantagens

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 memória principal. Na memória virtual, o usuário pode armazenar processos com tamanho maior 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?

Aqui estão os motivos para usar memória virtual:

  • Sempre que seu computador não tem espaço na memória física ele grava o que precisa lembrar no disco rígido em um arquivo de troca como memória virtual.
  • Se um computador executando Windows precisa de mais memória/RAM, então instalado no sistema, utiliza uma pequena porção do disco rígido para essa finalidade.

Como funciona a memória virtual?

No mundo moderno, a memória virtual tornou-se bastante comum atualmente. É utilizado sempre que algumas páginas precisam ser carregadas na memória principal para execução e a memória não está disponível para essas muitas páginas.

Então, nesse caso, ao invés de impedir a entrada de páginas na memória principal, o SO busca o espaço de RAM que está sendo menos utilizado nos últimos tempos ou que não está referenciado na memória secundária para liberar espaço para as novas páginas em a memória principal.

Vamos entender gerenciamento de memória virtual com a ajuda de um exemplo.

Por exemplo

Vamos supor que um sistema operacional exija 300 MB de memória para armazenar todos os programas em execução. No entanto, atualmente há apenas 50 MB de memória física disponível armazenada na RAM.

  • O sistema operacional configurará então 250 MB de memória virtual e usará um programa chamado Virtual Memory Manager (VMM) para gerenciar esses 250 MB.
  • Portanto, neste caso, o VMM criará um arquivo no disco rígido com 250 MB para armazenar a memória extra necessária.
  • O SO irá agora proceder ao endereçamento da memória, pois considera 300 MB de memória real armazenada 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?

Paginação por demanda

Um mecanismo de paginação por demanda é muito semelhante a um sistema de paginação com troca onde os processos armazenados na memória secundária e as páginas são carregados apenas sob demanda, não antecipadamente.

Portanto, quando ocorre uma mudança de contexto, o sistema operacional nunca copia nenhuma das páginas do programa antigo do disco ou qualquer uma das páginas do novo programa para a memória principal. Em vez disso, ele começará a executar o novo programa após carregar a primeira página e buscar as páginas do programa, que são 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, o processador a considera uma referência de memória inválida. Isso ocorre porque a falha de página e as transferências enviam o controle de volta do programa para o sistema operacional, que exige o armazenamento da página de volta 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ágina

  • 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.

Funcionalidades

  • Sempre que uma nova página é carregada, a página que chegou recentemente na memória é removida. Assim, é fácil decidir qual página deve ser removida, pois seu número de identificação está sempre na pilha FIFO.
  • A página mais antiga na memória principal é aquela que deve ser selecionada primeiro para substituição.

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.

Funcionalidades

  • O algoritmo ideal resulta no menor número de falhas de página. Este algoritmo é difícil de implementar.
  • Um método de algoritmo de substituição de página ideal tem a menor taxa de falha de página de todos os algoritmos. Este algoritmo existe e deve ser denominado MIN ou OPT.
  • Substitua a página que não será usada por um longo período de tempo. Ele usa apenas o tempo em que uma página precisa ser usada.

Substituição de página LRU

O formato completo do LRU é a página menos usada recentemente. Este método ajuda o sistema operacional a encontrar o uso da página em um curto período de tempo. Este algoritmo deve ser implementado associando um contador a uma página par.

Como funciona?

  • A página que não é utilizada há mais tempo na memória principal é aquela que será selecionada para substituição.
  • Fácil de implementar, mantenha uma lista, substitua páginas olhando para trás no tempo.

Funcionalidades

  • O método de substituição LRU tem a contagem mais alta. Esse contador também é chamado de registros de envelhecimento, que especificam sua idade e quanto suas páginas associadas também devem ser referenciadas.
  • A página que não é utilizada há mais tempo na memória principal é aquela 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 falha é a frequência com que um sistema ou componente projetado falha. É expresso em falhas por unidade de tempo. É denotado pela letra grega? (lambda).

Vantagens da memória virtual

Aqui estão os prós/benefícios do uso da 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.
  • O 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 um disco até que seja necessária e depois será excluída.
  • 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 do que 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 leva mais tempo para alternar entre os aplicativos.
  • Oferece menos espaço no disco rígido para seu uso.
  • Reduz a estabilidade do sistema.
  • Ele permite que aplicativos maiores sejam executados em sistemas que não oferecem apenas RAM física suficiente para executá-los.
  • Não oferece o mesmo desempenho da RAM.
  • Afeta negativamente o desempenho geral de um sistema.
  • Ocupar o espaço de armazenamento, que pode ser usado de outra forma para armazenamento de dados de longo prazo.

Resumo

  • A Memória Virtual é um mecanismo de armazenamento que oferece ao usuário a ilusão de ter uma memória principal muito grande.
  • A memória virtual é necessária sempre que o seu computador não tem espaço na memória física
  • Um mecanismo de paginação por demanda é muito semelhante a um sistema de paginação com troca, onde os processos armazenados na memória secundária e as páginas são carregadas apenas sob demanda, não antecipadamente.
  • Os métodos importantes de substituição de página são 1) FIFO 2) Algoritmo ideal 3) Substituição de página LRU.
  • No método FIFO (First-in-first-out), a memória seleciona a página para uma substituição que está no endereço virtual da memória há mais tempo.
  • 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.
  • O método LRU ajuda o sistema operacional a encontrar o uso da página em um curto período de tempo.
  • A memória virtual ajuda a ganhar velocidade quando apenas um determinado segmento do programa é necessário para a execução do programa.
  • Os aplicativos podem ser executados mais lentamente se o sistema estiver usando memória virtual.