"Memória mapeada" não é um tipo de arquivo, é uma maneira de acessá-lo. O mesmo tipo de arquivo pode ser lido normalmente pelo programa A, mas mapeado pela memória pelo programa B.
Normalmente (na maioria das linguagens de programação), cada acesso a arquivos precisa de uma chamada separada:
- você primeiro
opendo arquivo (obtendo um "descritor de arquivo"), -
seekpara a posição desejada (se necessário), -
readuma certa quantidade de bytes (que os copia do arquivo para a RAM), - …
seek,read,read,seek,write,reade assim por diante.
Então, se você trabalha com, por exemplo um arquivo de banco de dados, há uma boa quantidade de syscalls envolvidos, sem mencionar todos os dados copiados em & Fora. (Geralmente há conveniência em procurar + ler e procurar + gravar chamadas, por exemplo, pread e pwrite no Linux, mas elas não ajudam muito.)
Memória-mapeamento, enquanto isso, deixa o programa acessar um arquivo como se fosse RAM . Depois de open o arquivo, um programa só precisa de uma chamada mmap para configurar uma área de memória, após o que pode acessar imediatamente o conteúdo do arquivo através dessa "janela" - usando uma variável lê o arquivo, alterando uma variável escreve no arquivo.
Isso simplifica muito o código, além de acelerar o carregamento e a salvaguarda de arquivos, pois o programa sabe que os dados estarão , mas o SO não precisa carregá-los até que seja realmente necessário .