Qual é a diferença entre memória virtual e memória trocada?

A memória virtual armazena partes do processo que um processo diz que ele poderia potencialmente usar durante a execução (mas armazenado na VM porque a memória principal está cheia)

O espaço de troca armazena partes do processo que não estão em uso. Principalmente para liberar espaço para a liberação da memória principal. O que fazer com o espaço livre, coloque que potencialmente use parte do processo para outro processo ou assim por diante.

Bem, é isso que eu entendi.

Memória virtual é um método para organizar a memória nos computadores, por exemplo, no x86, no Windows, todos os programas são executados na memória virtual, porque existe um mapeamento de páginas (blocos) para o espaço de endereço do processo (onde cada processo tem em 32 bits e tem um endereço de 4gb espaço), mas a memória real é mapeada para vários locais da memória física, que permitem ter um espaço de memória virtual linear ... digamos, para um buffer de 512mb ... mesmo que na memória física esses blocos estejam espalhados por todo o lugar em, digamos, 64kb blocos ou em páginas de 4kb.

esse método permite várias outras vantagens, como você pode ter uma “proteção” por página e alocar apenas memória física para as páginas que foram realmente usadas pelo programa; portanto, mesmo que um programa aloque 20mb, apenas as páginas que o programa acessa termina na memória física… a pilha também possui um comportamento semelhante, onde protege as páginas e só aumenta a pilha se essas páginas forem usadas, da mesma forma, se você carregar um executável de 20mb, o sistema não precisará carregar tudo instantaneamente do disco , ele pode carregar apenas as páginas que o programa está lendo, escrevendo ou executando…

e, assim sendo, esse esquema permite que você finja que tem mais memória do que realmente tem, daí o nome ... memória virtual.

e o termo arquivo de troca / troca… é porque, quando não há mais memória, mas o programa precisa de mais memória, ele pode salvar páginas raramente usadas no disco e, em seguida, usar essa memória ou salvar páginas e carregar outras páginas do disco ( então ... troque as páginas). portanto, mesmo que um programa "vaze" memória ... ou desperdice ... ou tenha um código que basicamente nunca é chamado, mas existe memória RAM ... como essas páginas não são acessadas, elas se tornam os principais candidatos a serem salvos no arquivo de troca e residirão pontualmente lá até que eles sejam descartados porque o processo vazou os que saíram.

Da mesma forma, em vez de um arquivo de troca ... você pode ter memória virtual COMPRIMIDA, onde as páginas raramente usadas são compactadas e salvas na RAM (geralmente economizando 50% do tamanho da página, porque a memória possui muitas coisas que podem ser compactadas como código, texto não processado) , imagens de bitmap cruas, efeitos sonoros brutos e assim por diante… permitindo que você tenha mais memória RAM… e ainda sendo mais rápido para “trocar” do que se trocasse para o disco… (e como os computadores modernos podem compactar / descomprimir mais de 2gb / s, com algoritmos específicos, ainda mais rápidos do que o arquivo de permuta residir em um SSD (para não mencionar que ajudaria a evitar o desgaste do SSD).

As duas funções do sistema operacional, troca e memória virtual (usarei a VM para isso, mesmo que a VM também seja usada para máquina virtual) estão relacionadas.

A memória virtual é uma funcionalidade no sistema operacional que possui muitos componentes, incluindo hardware (a unidade de gerenciamento de memória ou MMU) e software, como vnodes, pmap, vm_map, pager e vm_pages.

Trocar é o termo original e passou a ser substituído pelo termo paginação. Trocar originalmente significava criar uma cópia de todas as páginas sujas (modificadas) de um processo para armazenamento externo e liberar as páginas do processo para uso em outros processos. Como o espaço de endereço do processo é baseado na VM, é a VM de um processo verificado nas páginas que estão sendo modificadas e, se for o caso, copiado para a "área de troca" no armazenamento.

Depois que um processo é trocado, ele ainda pode tentar executar, pois as estruturas de dados do processo continuam participando do planejamento. Se isso acontecer, o processo será "trocado" de volta à VM e iniciará a execução.

É mais eficiente usar paginação em vez de trocar, como fazem os sistemas atuais. Isso significa que o processo retorna à memória uma página por vez, exige paginação, em vez de todas as suas páginas serem movidas de uma só vez.

Espero que isto ajude!!