"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
open
do arquivo (obtendo um "descritor de arquivo"), -
seek
para a posição desejada (se necessário), -
read
uma certa quantidade de bytes (que os copia do arquivo para a RAM), - …
seek
,read
,read
,seek
,write
,read
e 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 .