Существует ли API для отображения памяти на платформе Windows, так же, как mmap () в Linux? - PullRequest
25 голосов
/ 03 ноября 2010

Есть ли API для отображения памяти, как

mmap()

на Linux?

Ответы [ 2 ]

13 голосов
/ 03 ноября 2010

Зависит от того, для чего именно вы хотите его использовать.Если вы хотите отобразить существующие файлы в память, это поддерживается с отображенными в память файлами .Их также можно использовать для разделения памяти между процессами (используйте именованный объект отображения без основного файла).Если вы хотите отобразить физическую память, это обычно не поддерживается в пользовательском режиме, хотя есть некоторые хитрости.

13 голосов
/ 03 ноября 2010

Отображение файла

Отображение файла - это ассоциация содержимого файла с частью виртуального адресного пространства процесса. Система создает объект сопоставления файлов (также известный как объект секции ) для поддержки этой ассоциации. представление файла - это часть виртуального адресного пространства, которую процесс использует для доступа к содержимому файла. Сопоставление файлов позволяет процессу использовать как случайный ввод и вывод (I / O), так и последовательный ввод / вывод. Это также позволяет процессу эффективно работать с большим файлом данных, таким как база данных, без необходимости отображать весь файл в память. Несколько процессов также могут использовать отображенные в памяти файлы для обмена данными.

Процессы чтения и записи в представление файла с использованием указателей, как если бы они были с динамически распределенной памятью. Использование сопоставления файлов повышает эффективность, поскольку файл находится на диске, а представление файла находится в памяти. Процессы также могут управлять представлением файла с помощью функции VirtualProtect.

...