Arquivo mapeado em memória

Origem: Wikipédia, a enciclopédia livre.

Um arquivo mapeado em memória é um segmento de memória virtual que foi assinalado para uma correlação direta, byte a byte, com um arquivo físico no disco ou outro recurso de comportamento semelhante. Tal recurso é tipicamente um arquivo fisicamente representado no disco, mas também pode ser um periférico, um objeto compartilhado em memória, ou qualquer outro recurso do sistema operacional que possa ser referenciada através de um descritor de arquivo. Uma vez presente, esta correlação entre o arquivo e o espaço de memória permite ao programa manipular a porção mapeada como se fosse seu espaço primário de memória.

Benefícios[editar | editar código-fonte]

O maior benefício de um arquivo mapeado em memória é o ganho de performance em operações de leitura e escrita, especialmente quando utilizado em arquivos pequenos. O acesso a arquivos mapeados em memória é mais rápido do que utilizar operações diretas de leitura e escrita por duas razões: primeiro, porque uma chamada de sistema é ordens de magnitude mais lenta do que uma simples mudança de mapeamento da memória local do programa; segundo, na maioria dos sistemas operacionais, a região de memória mapeada é o próprio cache de página do kernel, o que significa que nenhuma cópia é feita na criação do espaço de memória do usuário.

Algumas operações de arquivo funcionam melhor em arquivos mapeados em memória do que em suas operações físicas equivalentes. Os programas podem acessar e modificar dados no arquivo diretamente e byte a byte, ao invés de ler do início do arquivo ou reescrevê-lo por inteiro e editando os dados em uma cópia temporária. Uma vez que os arquivos mapeados em memória são manipulados internamente em páginas, o acesso linear — como em arquivos de configuração — requer acesso ao disco somente quando um limite de página é alcançado, e é capaz de escrever grandes seções no arquivo numa operação de um único passo.

Um possível benefício no uso de arquivos mapeados em memória é o chamado "lazy loading", que carrega o conteúdo em memória apenas quando ele está prestes a ser utilizado, desta forma utilizando uma menor quantidade de RAM mesmo para um arquivo muito grande. Tentar carregar em memória, todo de uma vez, um arquivo cujo tamanho é maior que a memória disponível pode causar thrashing do sistema operacional, uma vez que conteúdo do disco é lido em memória e simultaneamente páginas são escritas no disco. O mapeamento do arquivo em memória não só evita por completo o paginamento de memória como permite ao sistema carregar somente seções menores do arquivo à medida que os dados são editados, similar ao paginamento sob demanda utilizado em programas.

Ver também[editar | editar código-fonte]

Ligações externas[editar | editar código-fonte]

Ícone de esboço Este artigo sobre programação de computadores é um esboço. Você pode ajudar a Wikipédia expandindo-o.