Отображение файла в памяти
Отображение файла в память (File mapping ) - это соединение содержания файла с частью виртуального адресного пространства процесса. Система создает объект "проекция файла" (file mapping object), чтобы обслужить эту ассоциацию. Представление данных файла (file view) - это часть виртуального адресного пространства, которое процесс использует, чтобы получить доступ к содержанию файла. Процессы читают из и записывают в представление данных файла, используя указатели, также, как если бы они были с динамически распределенной памятью. Процессы могут также обрабатывать представление данных файла функцией VirtualProtect. Отображение файла в память обеспечивает два главных преимущества:
Отображение файла в память дает возможность процессу получить доступ к файлу более легко и быстро, используя указатель на представление данных файла. Использование указателя улучшает эффективность, потому что файл постоянно находится на диске, но представление данных файла постоянно находится в памяти. Отображение файла в память дает возможность процессу, использовать и произвольный ввод и вывод данных (I/O), и последовательный ввод - вывод (I/O). Это также дает возможность процессу эффективно работать с большим файлом данных, типа базы данных, не проецируя весь файл в память. Когда процесс нуждается в данных от части файла, а не в тех, что находится в текущем представлении данных, он может отменить отображение текущего представления данных файла, а затем создать новое представление данных файла.
Функции отображения файла в память дают возможность процессу создавать объекты "проекция файла" и представления данных файла, чтобы легко получить доступ и совместно использовать данные. Ниже следует иллюстрация, которая показывает зависимость между файлом на диске, объектом "проекция файла" и представлением данных файла.
Файл на диске может быть любым файлом, который Вы хотите отобразить в память, или это может быть файл системной страницы.
Объект "проекция файла" может состоять из всего или только из части файла. Он резервируется файлом на диске. Это означает, что когда система производит обмен вне страницы объекта "проекция файла", любые изменения, сделанные в "проецируемом " объекте, записываются в файл. Когда страницы объекта "проекция файла" меняются местами, они восстанавливаются из файла.
Представление данных файла может состоять из всего или только части объекта "проекция файла". Процесс обрабатывает файл через посредство представления данных файла. Процесс может создать несколько представлений для объекта "проекция файла". Представления данных файла, созданные каждым процессом постоянно находятся в виртуальном адресном пространстве этого процесса.
Windows Me/98/95: Все представления данных файла находятся в совместно используемом адресном пространстве. Совместно используемое адресное пространство существует в интервале между 2 и 3 гигабайтами виртуального адресного пространства для каждого процесса. Оно содержит 16-разрядную кучу и совместно используемую систему DLLs, так же как представления данных файла.
Когда несколько процессов используют один и тот же объект "проекция файла", чтобы создать представления для локального файла, данные согласуются. То есть представления содержат идентичные копии файла на диске. Файл не может находиться на удаленном компьютере, если Вы хотите совместно использовать память между несколькими процессами.
Информацию об операциях отображения файла в память, см. ниже перечисленные темы: