O recurso de memória virtual / paginação permite que um kernel "virtualize" a memória para processos de espaço do usuário. O kernel pode pegar páginas da memória física e organizá-las por meio de paginação, de modo que pareçam contíguas a um processo de espaço do usuário.
Um limite pode ser definido na memória de um processo de espaço de usuário e, se o processo for além, ocorrerá uma "falha de página", que causa uma exceção de CPU que retorna ao kernel. Isso evita que o programa userspace atrapalhe a memória alocada para o kernel ou outros programas, sem a permissão do kernel.
Normalmente, os programas userspace pedem 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 rastrear quanto e qual memória um programa é alocado.
Esse mecanismo de "falha de página" também permite que o kernel troque a página que o processo estava tentando acessar com um do disco, se o kernel for capaz de provisionar a memória (e tanto o Windows quanto o Linux suportam isso). troca. Se o acesso à memória foi de fato inválido (ou seja, o processo está tentando acessar a memória que não pediu primeiro), então normalmente o processo será eliminado com um SIGSEGV.
Então, "trocar" é um recurso adicional (no Linux, você pode desabilitá-lo totalmente, se quiser) que depende da memória / paginação virtual, mas não é necessário apenas porque uma CPU tem memória / paginação virtual. Os conceitos não são os mesmos, mas a troca depende da existência de paginação / memória virtual.
Além disso, depois de ler mais atentamente a sua pergunta, "paging" às vezes é usado como um sinônimo de "troca" - mas nunca ouvi falar de "swapping" significando que a memória do processo inteiro foi trocada por "paging" apenas parte dela é trocada.
But why does linux need a swap partition then? If the physical memory
is full, some processes will be outsourced to the hard drive and a new
process will be mapped from virtual memory to physical memory.
"Memória virtual" é memória física, apenas "remapeada". O hardware da MMU não pode mapear diretamente para qualquer dispositivo de armazenamento. A MMU pode lançar uma falha que diz ao kernel que um processo tentou acessar a memória que ele não deveria ter - e o kernel pode usar esse mecanismo para ver que um processo quer algo do disco que ele pensou estar na memória e depois fazer o " troca". O ponto é que é o sistema operacional que decide salvar páginas em disco para que ele possa usar essas páginas para outros processos, não para o hardware.