Визуальное программирование и MFC

       

Отображаемые в память файлы и разделяемая память


Что такое отображаемые файлы? Обычно механизм виртуальной памяти позволяет операционной системе отображать несуществующую память в дисковый файл, называемый страничным файлом. Можно посмотреть на это с другой стороны и рассмотреть механизм виртуальной памяти как метод ссылок на содержимое файла, называемого страничным файлом, через указатели так, как будто страничный файл является объектом памяти. Другими словами, этот механизм отображает содержимое страничного файла в адреса памяти. Если это можно сделать со страничным файлом, то почему нельзя с другими файлами? Отображаемые в память файлы представляют естественное расширение механизма управления виртуальной памятью.

Файловое отображение можно создать с помощью функции CreateFileMapping. Для открытия существующего отображения с определенным именем приложения могут использовать функцию OpenFileMapping. Функция MapViewOfFile отображает часть файла в блок виртуальной памяти.

Особенностью отображаемых в память файлов является их совместное использование разными приложениями, т.е., если два приложения открыли файловое отображение с одним и тем же именем, то они, по сути, создали блок разделяемой памяти.

Не излишне ли использовать дисковый файл, если необходимо лишь передать несколько байт между приложениями? В действительности нет необходимости явно открывать и использовать дисковый файл для получения отображения в памяти. Приложения могут передать специальное значение дескриптору 0хFFFFFFFF в функцию CreateFileMapping для получения отображения непосредственно в системный страничный файл. Это, по сути, создает блок разделяемой памяти.



Содержание раздела