O que é memória virtual? Significado, Arquitetura, Benefícios e Desafios

A memória virtual acelera a execução de aplicativos mais pesados ​​sem esgotar a memória.

  • A memória virtual é definida como um método de gerenciamento de memória onde os computadores usam memória secundária para compensar a escassez de memória física.
  • A memória virtual oferece benefícios em termos de custos, espaço físico, recursos de multitarefa e segurança de dados.
  • Este artigo explica os fundamentos da memória virtual, sua arquitetura principal, benefícios e desafios.

O que é memória virtual?

A memória virtual refere-se a um método de gerenciamento de memória onde os computadores usam memória secundária para compensar a escassez de memória física. A técnica é explorada pelo sistema operacional (SO) de um computador em situações em que o sistema não tem RAM suficiente para executar as instruções. Com a memória virtual, os computadores podem executar programas complexos e sofisticados, pois as demandas conflitantes de memória de vários programas são atendidas em um espaço de memória fixo.

Antes da memória virtual, os sistemas usavam RAM e memória secundária. No início dos anos 1940 e 1950, a memória do computador era muito cara. No entanto, com o tempo, os softwares tornaram-se mais complexos e os desenvolvedores temiam que esses programas grandes pudessem consumir toda a memória principal de um computador e, eventualmente, ficar sem ela.

Isso levou ao desenvolvimento da memória virtual no final dos anos 1950. Em 1959, pesquisadores da Universidade de Manchester, na Inglaterra, desenvolveram o primeiro sistema de memória virtual para um computador chamado ‘Atlas’. Isso foi seguido pelo desenvolvimento da Burroughs Corp do primeiro computador comercial em 1961 com memória virtual integrada. Mais tarde, em 1982, a Intel incorporou um componente de memória virtual no processador 80286.

Avançando para hoje, temos sistemas com pelo menos 8 GB ou 16 GB de RAM. No entanto, é necessário mais quando você executa vários programas simultaneamente. É aí que a memória virtual se torna vital. A memória virtual transfere dados da RAM para o armazenamento em disco, mapeando a memória para os arquivos do disco. A memória virtual troca dados não utilizados da RAM para um dispositivo de armazenamento como um disco rígido ou unidade de estado sólido (SSD) e libera RAM para outras tarefas. Como resultado, os computadores tendem a considerar a memória primária e secundária como uma só.

A memória virtual é crucial para multitarefa. Ele melhora o desempenho geral do sistema, pois os computadores não precisam se preocupar com restrições de memória em torno de programas mais pesados. Apesar de suas vantagens, a memória virtual também tem um lado negativo. Foi observado que a memória virtual opera em velocidades muito mais lentas do que a RAM do computador. Se o sistema operacional manipular dados entre a memória virtual e a RAM continuamente, isso pode tornar o computador consideravelmente lento. Isso pode levar a um fenômeno chamado ‘surra’. Os usuários, portanto, não podem confiar totalmente na memória virtual, pois o uso excessivo de recursos de memória virtual pode inibir o processamento no nível do aplicativo.

No nível fundamental, a memória virtual mapeia os endereços do programa para a RAM. Nos casos em que não há espaço suficiente na RAM, os programas são mapeados para o disco.

Tipos de memória virtual

O sistema operacional usa duas técnicas para gerenciar a memória virtual, paginação e segmentação. Vejamos cada um em detalhes.

1. Página

Sob a abordagem de paginação, a RAM é segregada em blocos de tamanhos de 4k. Esses blocos são chamados de páginas. Os processos de computação são então alocados para essas páginas com base em suas necessidades de memória. Cada processo pode utilizar menos de 4k de memória, portanto, uma parte da memória é desperdiçada. Em casos raros, algumas operações podem usar inúmeras páginas.

Em circunstâncias normais, essas páginas são trocadas entre a RAM e os arquivos de página que representam a memória virtual.

2. Segmentação

Outra abordagem para o gerenciamento de memória eficiente é a segmentação. Em vez de alocar páginas de tamanho fixo para processos, segmentos de memória de comprimentos variados são atribuídos a operações de computação com base em suas necessidades de memória. Ao contrário da paginação, a segmentação não desperdiça segmentos de memória.

Com a segmentação, os aplicativos podem ser divididos em diferentes espaços de endereço lógico. Como resultado, os aplicativos se tornam compartilháveis ​​e mais seguros. No entanto, a segmentação geralmente leva à ‘fragmentação da memória’. Os segmentos de memória têm comprimentos diferentes e a alocação e desalocação desses segmentos resulta em muitos espaços de memória não utilizados. Como seu comprimento não é definido, a memória é deixada de lado pelos processos devido ao seu tamanho variável.

Assim, partes não utilizadas de segmentos se acumulam e o sistema operacional pode alocá-las aos processos. No entanto, se eles estiverem espalhados, pode ser problemático para o sistema operacional acompanhar todos esses blocos de memória. Além disso, se os processos forem forçados a usar porções de segmentos diferentes, isso pode degradar o desempenho do sistema devido a abordagens de alocação de memória ineficientes.

Arquitetura de memória virtual

A memória virtual é um componente essencial da arquitetura do computador que usa armazenamento secundário, como discos, para atingir o tamanho de memória acessível, que estende a memória física. A memória virtual depende de uma unidade de gerenciamento de memória (MMU) para converter endereços lógicos em endereços físicos. O componente MMU está posicionado entre a CPU e a memória física. Ele executa as traduções de endereço necessárias conforme indicado pelo sistema operacional.

A MMU usa tabelas de páginas para realizar traduções e operações de mapeamento onde as tabelas de páginas se referem a estruturas de dados que mantêm ‘entradas da tabela de páginas (PTE)’ para mapear endereços virtuais para físicos.

Proponho entendermos o funcionamento da arquitetura de memória virtual.

Um ambiente de computação executa um processo dividindo-o em várias páginas. As páginas representam blocos de memória virtual contínuos de comprimentos predefinidos. Todo o processo reside na memória secundária. No entanto, para acelerar a execução do processo, deve-se mover as páginas para a memória principal do sistema. Mas, às vezes, a memória principal pode não ser suficiente para executar o processo devido ao tamanho maior do processo. É aí que entra a memória virtual.

Quando os programas são maiores que a memória principal, a memória virtual permite que você carregue páginas importantes em vez de todo o conjunto de páginas. Geralmente, a execução do programa não exige o carregamento de todas as páginas na memória principal, pois apenas pequenas porções do programa são executadas naquele momento.

Por exemplo, considere o ‘erro de manipulação de arquivos’ de um programa. Esses arquivos são carregados apenas quando ocorrem erros. Outras vezes, esses arquivos não são buscados na memória principal para evitar o preenchimento desnecessário do espaço da memória. O sistema operacional, portanto, carrega páginas críticas e usadas com frequência necessárias para o programa. Acelera significativamente a execução do processo. Nesta fase, as outras páginas residem na memória secundária. Quando a CPU recebe uma solicitação de uma página que não faz parte da memória principal, é gerada uma interrupção que indica falta de página ou falha de página. Isso faz com que o processo entre em um estado bloqueado/em espera. Posteriormente, a página desejada é procurada na memória secundária. Após a identificação da página, o endereço lógico da página é convertido em um endereço físico pela MMU para chegar à página de destino.

Em seguida, os algoritmos de substituição de página, como FIFO (primeiro a entrar, primeiro a sair) e LRU (último usado recentemente), são usados ​​para trocar páginas entre a memória primária e a secundária. Após a troca de páginas, a tabela de páginas é atualizada à medida que novos endereços são associados às respectivas páginas. À medida que a página solicitada é buscada, a CPU a fornece ao processo, movido para o estado de execução do estado bloqueado/aguardando.

O fluxo de trabalho garante que apenas as páginas necessárias sejam trocadas entre a memória principal e a secundária. Uma solicitação para essas páginas é endereçada diretamente se for encontrada na memória principal. Caso contrário, ocorre o evento de falha de página e a página necessária é selecionada da memória secundária para concluir a execução do programa.

Benefícios e desafios da memória virtual

Sistemas operacionais modernos, dispositivos de computação, dispositivos móveis e IoT estão adotando cada vez mais memórias virtuais para atender às crescentes necessidades de armazenamento de dados que mantêm os sistemas em execução. Vejamos alguns dos principais motivos que levaram às vantagens da memória virtual.

1. Equilibre a escassez de espaço físico

A memória virtual ganhou popularidade ao longo dos anos devido à sua capacidade de compensar a RAM física. Os métodos de paginação e segmentação garantem que a memória principal seja liberada para operações necessárias e críticas.

2. Memória virtual barata

A memória virtual não replica necessariamente o verdadeiro poder da memória física. No entanto, sua natureza barata o torna uma alternativa viável para complementar a RAM. Se você possui um sistema compatível, adicionar memória virtual é possível sem conhecimento técnico, solda física ou espaço físico. Ele se acomoda no limite de hardware do sistema e aumenta o desempenho dos aparelhos, principalmente em celulares, sem gerar nenhum ônus financeiro.

3. Suporta multitarefa e colaboração

A memória virtual permite que os usuários utilizem mais espaço RAM do que o hardware permite. O espaço de memória lógica ultrapassa os limites físicos que auxiliam a execução de processos que demandam mais memória do que o sistema pode administrar. Como resultado, o tempo de retorno do sistema melhora consideravelmente. Além disso, a memória virtual permite a multiprogramação em que vários usuários ou processos podem acessar a memória compartilhada, aprimorando a utilização da CPU e da RAM.

4. Evite a fragmentação da memória

O fluxo de trabalho da memória virtual não exige contato com a MMU física. Os usuários podem executar segmentos residentes na RAM virtual necessária para um programa baseado no mapeamento de memória individual. Ele permite o gerenciamento fácil de dados do programa, pois os processos podem utilizar segmentos de memória não utilizados que geralmente causam ‘fragmentação de memória’. Consequentemente, a necessidade de dispositivos externos de E/S (entrada/saída) para gerenciamento de memória eficiente também é reduzida.

5. Aumente a segurança dos dados

O sistema de gerenciamento de memória do computador usa tabelas de páginas para registrar endereços de memória física e virtual. Isso reduz a possibilidade de perda de dados que pode ocorrer durante a troca de espaço. As tabelas de segmentos seguem um procedimento semelhante. Além disso, a memória virtual é caracterizada pelo recurso de ‘isolamento de memória’, onde a memória do processo permanece isolada do kernel e de outros processos durante a execução. Isso reduz as chances de manipulação de dados e espionagem.

Desafios da memória virtual

Embora a memória virtual seja mais fácil de obter quando comparada à memória física, ela tem sua parcela de desafios que precisa enfrentar a longo prazo. Daremos uma olhada em algumas das desvantagens da memória virtual.

1. Possui espaço de armazenamento vital

Embora os usuários prefiram um desempenho aprimorado do sistema, a memória virtual às vezes pode ocupar um espaço de armazenamento precioso, levando a uma perda de capacidade de armazenamento. Essas situações podem não ocorrer algumas vezes, pois os dispositivos modernos são fornecidos com unidades de armazenamento duráveis ​​e rápidas. Além disso, eles possuem capacidade suficiente para gerenciar procedimentos complexos de mapeamento de endereços. Portanto, o problema de capturar espaço de armazenamento vital foi observado anteriormente, mas desapareceu gradualmente com o avanço tecnológico.

2. Velocidade mais lenta que a memória física

Independentemente do tipo de configuração, a RAM física revela velocidades mais altas que a memória virtual quando operada no armazenamento interno do sistema. Quando a memória virtual é usada no armazenamento externo, a leitura e a gravação constantes podem afetar a vida útil geral do dispositivo externo. Não se pode evitar tais consequências, pois é a natureza fundamental das memórias virtuais. Resumindo, os aplicativos demoram mais para serem executados na memória virtual, graças à troca de páginas.

3. A troca de contexto requer tempo extra

A memória física é equipada com componentes de hardware e software necessários que equilibram simultaneamente vários processos. Isso torna a RAM rápida e versátil. No entanto, a memória virtual executa a alternância de contexto entre processos de alta e baixa prioridade para elevar o desempenho. O processo de comutação causa atrasos quantificáveis. Além disso, se o armazenamento de baixa velocidade for usado para paginação e segmentação, essa situação pode piorar ainda mais.

4. Problemas de estabilidade

Com a memória virtual, a execução do programa depende dos recursos de memória que excedem o que o hardware subjacente pode suportar. Às vezes, isso pode levar à instabilidade do sistema, lentidão ou até travamento. Além disso, com eventos de perda de página, a troca de página pode consumir mais tempo. Isso afeta significativamente a velocidade de execução do programa, resultando em desempenho lento.

5. Propenso a truques de marketing

Como as vantagens da memória virtual são amplamente conhecidas, vários fabricantes tendem a usar estratégias de palavras inteligentes para atrair clientes. Os dispositivos são apresentados para que os clientes às vezes sejam levados a acreditar nos truques de marketing. Por exemplo, uma RAM de 8 GB pode ser vendida ao preço de 4 GB. A diferença de custo é ajustada fornecendo 4 GB de RAM física e 4 GB de memória virtual.

Os detalhes são mencionados na folha de especificações do RAM, mas os clientes tendem a ignorá-los. Como os consumidores finais podem facilmente comprar 8 GB de RAM pelo preço de 4 GB, eles se sentem satisfeitos. No entanto, quando os usuários analisam o desempenho do sistema em tempo real, eles percebem que a velocidade de RAM prometida não cumpre o esperado.

Conclusão

A memória virtual é inevitável nos sistemas operacionais atuais, como Windows 10, Win XP, Win 7, Android, Linux , etc. Os usuários podem combinar memória física e virtual para acelerar o desempenho da RAM. Ele permite que o sistema operacional do sistema execute vários programas, como navegar na Web, escrever um artigo de pesquisa e executar código de software simultaneamente sem esgotar a memória.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

12 − um =

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.