Veja a diferença entre a memória virtual e física.
Muitos processos podem mapear a mesma memória física. Se 10 processos mapearem o mesmo arquivo, no máximo uma cópia será armazenada em cache na RAM.
Se a memória não for compartilhada, se um processo a alterar, essa página (com a alteração) será duplicada antes de confirmar a gravação. (Portanto, nem toda a memória é copiada. Isso é chamado de copiar na gravação ou COW).
Um arquivo de memória mapeada é quando você pede ao SO para mapear um arquivo na memória. Ele não carrega o arquivo até que você comece a ler / escrever e, em seguida, apenas o que é necessário. O mapeamento de memória é apenas uma interface diferente para leitura / gravação / busca / etc. Você também pode acessar a memória através de leitura / gravação / busca.
Então, como isso é feito?
Isso é feito percebendo que algumas coisas são as mesmas: isso é swap e os arquivos são os mesmos; e o cache de ram e de arquivo são os mesmos. Então, quando você abre um arquivo, ele é mapeado como swap (não se preocupe, ele não será usado para trocar outras coisas). Quando você começa a ler, um seg-fault é gerado e o SO o troca, a partir do arquivo (A exceção (seg-fault) é manipulada pelo sistema operacional, portanto, não é passada para um processo) (na verdade não é uma falha de segmentação) , é uma falha de página). Não importa qual interface você usa memória ou arquivo. Eles são apenas interfaces sobre a mesma funcionalidade.