O recurso de memória / paginação virtual permite que um kernel "virtualize" a memória para os processos do espaço do usuário. O kernel pode pegar páginas da memória física e organizá-las através de paginação, para que pareçam contíguas ao processo do espaço do usuário.
Um limite pode ser definido na memória do processo do espaço do usuário e, se o processo for além, ocorre uma "falha de página", que causa uma exceção da CPU que retorna ao kernel. Isso impede que o programa userspace mexa com a memória alocada no kernel ou em outros programas, sem a permissão do kernel.
Normalmente, os programas no espaço do usuário solicitam ao kernel que estenda esse limite por meio de interfaces bem definidas (chamadas pelas funções C malloc()
e, free()
por exemplo). O kernel é responsável por acompanhar quanto e que memória um programa está alocado.
Esse mecanismo de "falha de página" também pode permitir que o kernel troque a página que o processo estava tentando acessar com um disco, se o kernel puder provisionar a memória em excesso (e o Windows e o Linux suportam isso), por isso é chamado de troca. Se o acesso à memória for realmente inválido (ou seja, o processo está tentando acessar a memória que não foi solicitada primeiro), normalmente o processo será interrompido com um SIGSEGV.
Portanto, a "troca" é um recurso adicional (no Linux, você pode desativá-lo completamente, se quiser), que depende da memória / paginação virtual, mas não é necessário apenas porque uma CPU possui memória / paginação virtual. Os conceitos não são os mesmos, mas a troca depende da paginação / memória virtual para existir.
Além disso, depois de ler mais de perto sua pergunta, "paginação" às vezes é usado como sinônimo de "troca" - mas nunca ouvi falar de "troca", o que significa que toda a memória do processo é trocada versus "paginação", que significa apenas parte de é trocado.
Mas por que o linux precisa de uma partição swap então? Se a memória física estiver cheia, alguns processos serão terceirizados para o disco rígido e um novo processo será mapeado da memória virtual para a memória física.
"Memória virtual" é memória física, apenas "remapeada". O hardware da MMU não pode mapear diretamente para nenhum dispositivo de armazenamento. A MMU pode lançar uma falha que informa ao kernel que um processo tentou acessar a memória que não deveria ter - e o kernel pode usar esse mecanismo para verificar se um processo deseja algo de volta do disco que ele pensou estar na memória e, em seguida, faça o " troca". O ponto é que é o sistema operacional que decide salvar as páginas no disco para que elas possam ser usadas em outros processos, não no hardware.