O que são arquivos mapeados na memória? descrever com um exemplo simples?

-1

Na verdade, não estou conseguindo o que os arquivos de memória mapeada são e por que os usamos e também em qual seção do sistema operacional eles se encaixam. por favor, explique com um exemplo simples.

Obrigado

    
por Ahtisham Chishti 11.01.2017 / 09:18

1 resposta

2

"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 .

    
por 11.01.2017 / 09:44