Mapeamento de arquivos

O mapeamento de arquivo é a associação do conteúdo de um arquivo com uma parte do espaço de endereço virtual de um processo. O sistema cria um objeto de mapeamento de arquivo (também conhecido como objeto de seção) para manter essa associação. Uma exibição de arquivo é a parte do espaço de endereço virtual que um processo usa para acessar o conteúdo do arquivo. O mapeamento de arquivo permite que o processo use E/S (entrada e saída) aleatórias e E/S sequencial. Ele também permite que o processo funcione com eficiência com um arquivo de dados grande, como um banco de dados, sem precisar mapear todo o arquivo para a memória. Vários processos também podem usar arquivos mapeados em memória para compartilhar dados.

Processos de leitura e gravação no modo de exibição de arquivo usando ponteiros, assim como fariam com memória alocada dinamicamente. O uso do mapeamento de arquivos melhora a eficiência porque o arquivo reside no disco, mas a exibição de arquivo reside na memória. Os processos também podem manipular a exibição de arquivo com a função VirtualProtect .

A ilustração a seguir mostra a relação entre o arquivo em disco, um objeto de mapeamento de arquivo e uma exibição de arquivo.

relação entre o arquivo no disco, um objeto de mapeamento de arquivo e uma exibição de arquivo.

O arquivo no disco pode ser qualquer arquivo que você deseja mapear para a memória ou pode ser o arquivo de página do sistema. O objeto de mapeamento de arquivo pode consistir em toda ou apenas parte do arquivo. Ele é apoiado pelo arquivo no disco. Isso significa que, quando o sistema troca páginas do objeto de mapeamento de arquivo, todas as alterações feitas no objeto de mapeamento de arquivo são gravadas no arquivo. Quando as páginas do objeto de mapeamento de arquivo são trocadas novamente, elas são restauradas do arquivo.

Uma exibição de arquivo pode consistir em toda ou apenas parte do objeto de mapeamento de arquivo. Um processo manipula o arquivo por meio das exibições de arquivo. Um processo pode criar várias exibições para um objeto de mapeamento de arquivo. As exibições de arquivo criadas por cada processo residem no espaço de endereço virtual desse processo. Quando o processo precisa de dados de uma parte do arquivo diferente do que está no modo de exibição de arquivo atual, ele pode cancelar o mapa da exibição de arquivo atual e, em seguida, criar uma nova exibição de arquivo.

Quando vários processos usam o mesmo objeto de mapeamento de arquivo para criar exibições para um arquivo local, os dados são coerentes. Ou seja, as exibições contêm cópias idênticas do arquivo no disco. O arquivo não poderá residir em um computador remoto se você quiser compartilhar memória entre vários processos.

Para obter mais informações, consulte estes tópicos: