Memória virtual é uma área do espaço de armazenamento da memória secundária de um sistema de computador (como um disco rígido ou drive de estado sólido) que age como se fosse parte da RAM ou memória primária do sistema.
Idealmente, os dados necessários para executar aplicações são armazenados na RAM, onde podem ser acessados rapidamente pela CPU. Mas quando grandes aplicações estão sendo executadas, ou quando muitas aplicações estão sendo executadas ao mesmo tempo, a RAM do sistema pode ficar cheia.
Para contornar este problema, alguns dados armazenados na RAM que não estão sendo usados ativamente podem ser temporariamente movidos para a memória virtual (que está fisicamente localizada em um disco rígido ou outro dispositivo de armazenamento). Isto liberta espaço na RAM, que pode então ser usado para acomodar dados que o sistema precisa acessar iminentemente.
Ao trocar dados entre a RAM e a memória virtual quando não é necessário e voltar da memória virtual para a RAM quando é necessário, um sistema pode continuar a funcionar sem problemas com muito menos memória RAM física do que de outra forma exigiria.
A memória virtual permite que um sistema execute aplicações maiores ou execute mais aplicações ao mesmo tempo sem ficar sem memória RAM. Especificamente, o sistema pode operar como se seu total de recursos de RAM fosse igual à quantidade de RAM física, mais a quantidade de RAM virtual.
- Por que há necessidade de memória virtual?
- Memória virtual vs. Memória física
- Como funciona a memória virtual?
- Como aumentar a memória virtual em um sistema
- Tipos de memória virtual: Paging e Segmentação
- Paging de Memória Virtual
- Segmentação de memória virtual
- Vantagens e Desvantagens da Memória Virtual
- Vantagens da Memória Virtual
- Disadvantages of Virtual Memory
Por que há necessidade de memória virtual?
A memória virtual foi desenvolvida quando a RAM física era muito cara, e a RAM ainda é mais cara por Gigabyte do que a mídia de armazenamento, como discos rígidos e unidades de estado sólido. Por essa razão é muito menos dispendioso usar uma combinação de RAM física e memória virtual do que equipar um sistema de computador com mais RAM.
Desde que usar memória virtual (ou aumentar a memória virtual) não tem custo financeiro extra (porque usa o espaço de armazenamento existente) oferece uma forma de um computador usar mais memória do que está fisicamente disponível no sistema.
Outro driver chave para o uso de memória virtual é que todos os sistemas de computador têm um limite (ditado pelo hardware e software) na quantidade de RAM física que pode ser instalada. O uso de memória virtual permite que o sistema continue a operar além desses limites físicos de RAM.
Memória virtual vs. Memória física
P>Posto que a RAM é mais cara que a memória virtual, pareceria – tudo igual – que os computadores deveriam estar equipados com o mínimo de RAM e o máximo de memória virtual possível.
Mas na verdade as características da memória virtual são diferentes daquelas da memória física. A diferença chave entre memória virtual e memória física é que a RAM é muito mais rápida que a memória virtual.
Então um sistema com 2 GB de RAM física e 2 GB de memória virtual não oferecerá o mesmo desempenho que um sistema similar com 4 GB de RAM física. Para entender porquê, é necessário entender como funciona a memória virtual.
Como funciona a memória virtual?
Quando uma aplicação (incluindo o sistema operacional) está em execução, ela armazena a localização dos threads do programa e outros dados em um endereço virtual, enquanto os dados são realmente armazenados em um endereço físico na RAM. Se mais tarde esse espaço na RAM for necessário com mais urgência por outro processo, então os dados podem ser trocados para fora da RAM e para a memória virtual.
A responsabilidade de manter o controle de todos esses dados à medida que são trocados entre a memória física e virtual recai sobre o gerenciador de memória do computador. O gerenciador de memória mantém uma tabela que mapeia os endereços virtuais usados pelo sistema operacional e aplicativos para os endereços físicos nos quais os dados são realmente armazenados. Quando os dados são trocados entre a RAM e a memória virtual, a tabela é atualizada para que um determinado endereço virtual aponte sempre para a localização física correta.
Um computador só pode executar threads e manipular dados que estão armazenados na RAM em vez da memória virtual. E leva um tempo não negligenciável para trocar os dados que são necessários na RAM. Conseqüentemente, segue-se que o uso de memória virtual envolve um golpe de desempenho.
P>Posto de outra forma, um sistema com 4 GB de RAM geralmente oferecerá maior desempenho do que um sistema com 2 GB de RAM e 2 GB de memória virtual por causa do golpe de desempenho causado pela troca, e por essa razão diz-se que a memória virtual é mais lenta do que a RAM.
Um problema potencial com a memória virtual é que se a quantidade de RAM presente é muito pequena em comparação com a quantidade de memória virtual, então um sistema pode acabar gastando uma grande proporção de seus recursos de CPU trocando dados para frente e para trás. Enquanto isso, o desempenho do trabalho útil é quase interrompido – um processo conhecido como thrashing.
Para evitar o thrashing é geralmente necessário reduzir o número de aplicações sendo executadas simultaneamente, ou simplesmente aumentar a quantidade de RAM no sistema.
Sistemas operacionais, como a maioria das versões do Windows, geralmente recomendam que os usuários não aumentem a memória virtual além de 1,5 vezes a quantidade de RAM física presente. Assim, um sistema com 4 GB de RAM deve ter memória virtual não superior a 6 GB.
Para minimizar o impacto de desempenho causado pela troca entre memória física e virtual, é melhor usar o dispositivo de armazenamento mais rápido conectado ao sistema para hospedar a memória virtual, e para localizar a área de armazenamento da memória virtual em sua própria partição.
A memória virtual pode agir em conjunto com a memória principal de um computador para permitir operações mais rápidas e mais fluidas.
Como aumentar a memória virtual em um sistema
Mais sistemas operacionais permitem aos usuários aumentar a memória virtual a partir de uma página de configuração.
- No Windows, os usuários também podem permitir que o sistema gerencie a quantidade de memória virtual fornecida dinamicamente.
- Simplesmente, no Mac OS, os usuários podem usar o painel de preferências para atribuir memória virtual.
Tipos de memória virtual: Paging e Segmentação
Memória virtual pode ser gerenciada de várias maneiras diferentes pelo sistema operacional de um sistema, e as duas abordagens mais comuns são paging e segmentação.
Paging de Memória Virtual
Em um sistema que usa paging, a RAM é dividida em vários blocos – geralmente 4k em tamanho – chamados de páginas. Os processos são então alocados apenas páginas suficientes para atender às suas necessidades de memória. Isso significa que sempre haverá uma pequena quantidade de memória desperdiçada, exceto no caso incomum em que um processo requer exatamente um número inteiro de páginas.
Durante o curso normal das operações, páginas (ou seja, blocos de memória de 4K de tamanho) são trocadas entre a RAM e um arquivo de página, que representa a memória virtual.
Segmentação de memória virtual
Segmentação é uma abordagem alternativa ao gerenciamento de memória, onde ao invés de páginas de tamanho fixo, os processos são alocados segmentos de diferentes comprimentos para atender exatamente às suas necessidades. Isso significa que ao contrário de um sistema paginado, nenhuma memória é desperdiçada em um segmento.
Segmentação também permite que as aplicações sejam divididas em espaços de endereços logicamente independentes, o que pode torná-las mais fáceis de compartilhar, e mais seguras.
Mas um problema com a segmentação é que como cada segmento tem um comprimento diferente, ele pode levar à “fragmentação” da memória. Isto significa que à medida que segmentos são alocados e desalocados, pequenos pedaços de memória podem ser deixados espalhados, que são muito pequenos para serem úteis.
À medida que esses pequenos pedaços se acumulam, menos e menos segmentos de tamanho útil podem ser alocados. E se o SO começar a usar estes pequenos segmentos então há um grande número para acompanhar, e cada processo precisará usar muitos segmentos diferentes, o que é ineficiente e pode reduzir o desempenho.
Vantagens e Desvantagens da Memória Virtual
Even, embora a RAM seja agora relativamente barata em comparação com seu custo quando a memória virtual foi desenvolvida pela primeira vez, ela ainda é extremamente útil e ainda é empregada em muitos, talvez a maioria, dos sistemas de computador. O principal problema com a memória virtual está relacionado ao desempenho.
Vantagens da Memória Virtual
- Permite que mais aplicações sejam executadas ao mesmo tempo.
- Permite que aplicações maiores sejam executadas em sistemas que não possuem memória RAM física suficiente para executá-las.
- li>Permite aumentar a memória, o que é menos dispendioso do que comprar mais memória RAM.
- Provides a way to increase memory in a system which has the maximum amount of RAM that its hardware and operating system can support.
Disadvantages of Virtual Memory
- Does not offer the same performance as RAM.
- Can negatively affect the overall performance of a system.
- Takes up storage space which could otherwise be used for long term data storage.