Vou tentar começar devagar e depois juntar tudo isso para você. É tipo isso:
A memória virtual, como comumente usada, refere-se à "paginação". Como o nome sugere, a paginação é como um bloco de notas humano.
Quando você está elaborando somas simples ou aprendendo informações simples, você faz tudo isso em sua mente: basta carregar todas as informações, processá-las e obter a resposta. É como um computador carregando arquivos do disco rígido - ele carrega os programas ou imagens ou outras informações necessárias para trabalhar em sua "memória real" (ou "memória física") e trabalha neles com seu "cérebro" ( seu processador).
No entanto, quando você estiver aprendendo informações complexas ou trabalhando com somas complexas, talvez não consiga encaixar tudo isso na sua cabeça de uma só vez. Você fica confuso, começa a desacelerar, falha em manter tudo lá de uma vez e precisa esquecer algo para se lembrar de outra coisa.
A solução humana é usar um bloco de notas. Anotamos nas páginas todas as coisas que não conseguimos lembrar ao mesmo tempo, mas nos referimos a elas enquanto fazemos as somas. Talvez não consigamos lembrar uma lista enorme de números de vendas para o mês, mas podemos olhar as páginas, obter as informações um pouco de cada vez e processar cada bit. É como o computador "paginando" sua memória - escrevendo páginas cheias de informações e colocando-as na "memória virtual" para referência posterior, e percebendo que precisa de uma página e carregando-a da memória virtual na memória real. No linux e no unix, o local em que essas páginas são armazenadas é literalmente chamado de "arquivo de paginação", e as páginas de dados na memória são literalmente chamadas de "páginas". Sistemas diferentes têm nomes diferentes para essas coisas, mas o conceito geral é o mesmo.
Então, realmente, a paginação é muito simples. Todas as páginas de informações não cabem na memória; portanto, algumas páginas são colocadas em disco e carregadas novamente mais tarde.
Agora, onde fica mais complicado, os sistemas modernos apresentam mapeamento de memória e proteção de memória, que geralmente são gerenciados pelo mesmo sistema de hardware no computador: a unidade de gerenciamento de memória ou MMU.
Em um computador multitarefa (moderno), que pode executar muitos programas ao mesmo tempo e possui proteção de memória, cada programa geralmente é separado de outros programas em execução no mesmo sistema. Dessa forma, um programa não pode alterar outro programa simplesmente acessando sua memória - a MMU separa fisicamente o espaço de endereço de um programa do de outros. Em outras palavras, os programas do usuário não veem os programas de outros usuários nem mesmo outros programas. Eles não veem "memória real" - eles veem sua própria "memória virtual".
Agora, esse conceito de isolamento de memória e o arquivo de paginação são duas coisas conceitualmente diferentes, e é provavelmente por isso que você está confuso. No entanto, a chave é que ambos trabalham usando a MMU - a unidade de gerenciamento de memória, que divide a memória em páginas e mapeia as páginas para um espaço de endereço virtual.
Portanto, quando um programa solicita a memória em um determinado "endereço de memória", o que realmente acontece é que as páginas de memória desse programa e seus endereços correspondentes (o "espaço de endereço" do programa) são consultados e a página que corresponde a esse bloco de memória foi encontrado. Essa página pode ser carregada em algum lugar da memória real, caso em que o programa recebe acesso ou pode ser paginada em um disco. Se for paginado, ele dispara uma "falha de página" - o disco é acessado e a página é carregada na memória. Portanto, o programa funciona mesmo quando não há memória suficiente, mas é executado LENTAMENTE, se for necessário usar o disco para o que normalmente seria um acesso muito rápido à memória.
Agora, se não houver espaço suficiente para carregar essa página na memória, você terá um problema. Nesse caso, alguma página OTHER que já esteja na memória deve ser "trocada" para o disco, para que a primeira página do programa possa ser carregada. Ou, podem igualmente ser páginas do mesmo programa. Você vê isso algumas vezes em programas gráficos, por exemplo, em sistemas muito carregados, quando parte da imagem é carregada lentamente e desenhada rapidamente, a próxima parte é carregada igualmente lentamente e desenhada rapidamente e quando você volta ao trabalho com a primeira parte, é lento novamente. Isso ocorre porque eles estão sendo carregados para serem trabalhados e depois trocados novamente, para que outra coisa possa ser trabalhada. Obviamente, essa é uma maneira muito lenta de trabalhar, e o que você realmente precisa é de mais memória REAL.