Alguém pode me deixar claro qual é a diferença entre memória virtual e espaço de troca ?
E por que dizemos que, para uma máquina de 32 bits, a memória virtual máxima acessível é de apenas 4 GB?
operating-system
terminology
algo-geeks
fonte
fonte
Respostas:
Há uma excelente explicação de memória virtual no superusuário .
Simplificando, a memória virtual é uma combinação de RAM e espaço em disco que os processos em execução podem usar.
O espaço de troca é a parte da memória virtual que está no disco rígido, usada quando a RAM está cheia.
Quanto ao motivo de a CPU de 32 bits ser limitada a 4 GB de memória virtual, é bem abordado aqui :
fonte
Existe alguma confusão em relação ao termo Memória Virtual e, na verdade, ele se refere aos dois conceitos muito diferentes a seguir
Espaço de troca, OTOH, é o nome da parte do disco usada para armazenar páginas RAM adicionais quando não estiver em uso.
Uma percepção importante a se fazer é que o primeiro é possível de forma transparente devido ao hardware e ao suporte do sistema operacional do último.
Para entender melhor tudo isso, você deve considerar como a "Memória Virtual" (como na definição 2) é suportada pela CPU e pelo sistema operacional.
Suponha que você tenha um ponteiro de 32 bits (os pontos de 64 bits são semelhantes, mas usam mecanismos ligeiramente diferentes). Uma vez que a "Memória Virtual" tenha sido habilitada, o processador considera este ponteiro como composto por três partes.
Agora, quando a CPU tenta acessar o conteúdo de um ponteiro, ela primeiro consulta a tabela do Diretório da Página - uma tabela que consiste em 1024 entradas (na arquitetura X86 cuja localização é apontada pelo registrador CR3). A entrada do diretório da página de 10 bits é um índice nesta tabela, que aponta para a localização física da tabela da página . Esta, por sua vez, é outra tabela de 1.024 entradas, cada uma das quais é um ponteiro na memória física e vários bits de controle importantes. (Voltaremos a isso mais tarde). Depois que uma página é encontrada, os últimos 12 bits são usados para encontrar um endereço dentro dessa página.
Existem muitos mais detalhes (TLBs, páginas grandes, PAE, seletores, proteção de página), mas a breve explicação acima captura a essência das coisas.
Usando esse mecanismo de tradução, um sistema operacional pode usar um conjunto diferente de páginas físicas para cada processo, dando a cada processo a ilusão de ter toda a memória para si (já que cada processo obtém seu próprio diretório de páginas)
Além dessa memória virtual, o sistema operacional também pode adicionar o conceito de paginação . Um dos bits de controle discutidos anteriormente permite especificar se uma entrada está "Presente". Se não estiver presente, uma tentativa de acessar essa entrada resultará em uma exceção de falha de página . O sistema operacional pode capturar essa exceção e agir de acordo. Os sistemas operacionais que suportam troca / paginação podem, portanto, decidir carregar uma página do Espaço de troca , corrigir as tabelas de tradução e, então, emitir o acesso à memória novamente.
É aqui que os dois termos se combinam, um sistema operacional com suporte para memória virtual e paginação pode dar aos processos a ilusão de ter mais memória do que a atual, paginando (trocando) páginas dentro e fora da área de troca.
Quanto à sua última pergunta (por que se diz que a CPU de 32 bits está limitada a 4 GB de memória virtual). Isso se refere à "Memória Virtual" da definição 2 e é um resultado imediato do tamanho do ponteiro. Se a CPU só puder usar ponteiros de 32 bits, você terá apenas 32 bits para expressar endereços diferentes, isso lhe dará 2 ^ 32 = 4 GB de memória endereçável.
Espero que isso torne as coisas um pouco mais claras.
fonte
IMHO é terrivelmente enganador usar o conceito de espaço de troca como equivalente à memória virtual. VM é um conceito muito mais geral do que espaço de troca. Entre outras coisas, a VM permite que os processos façam referência a endereços virtuais durante a execução, que são traduzidos em endereços físicos com o suporte de hardware e tabelas de páginas. Assim, os processos não se preocupam com a quantidade de memória física que o sistema possui ou onde a instrução ou os dados residem de fato na hierarquia da memória física. VM permite esse mapeamento. O item referenciado (instrução ou dados) pode ser residente em L1, ou L2, ou RAM, ou finalmente no disco, caso em que é carregado na memória principal.
Espaço de troca é apenas um local na memória secundária onde as páginas são armazenadas quando estão inativas. Se não houver RAM suficiente, o SO pode decidir trocar as páginas de um processo para abrir espaço para outras páginas do processo. O processador nunca executa instruções ou lê / grava dados diretamente do espaço de troca.
Observe que seria possível ter espaço de troca em um sistema sem VM. Ou seja, processos que acessam endereços físicos diretamente, ainda podem ter partes deles no disco.
fonte
Embora o tópico seja bastante antigo e já tenha sido respondido. Ainda gostaria de compartilhar este link, pois esta é a explicação mais simples que encontrei até agora. Abaixo o link possui diagramas para melhor visualização.
diferença-entre-memória-virtual-e-memória-swap
fonte
"Memória virtual" é um termo genérico. No Windows, é chamado de Paginação ou paginação. No Linux, é denominado como Swap.
fonte