В этом уроке разберемся с так называемыми Mapped File. Это файлы, например .exe или .dll, которые были прикреплены к памяти какого либо процесса.
Mapped File
Мы уже встречались с Mapped File, когда разбирались с информацией о памяти в Process Explorer. Если забыли, то там был такой параметр, как Mapped File Write Delta. Этот параметр показывает число помещения в оперативную память таких файлов в единицу времени.
В Windows существует механизм совместного использования памяти между процессами. Этот механизм можно назвать Shared Memory (общая память). Общую память можно определить как память, которая видна более чем одному процессу. Например, если два процесса используют одну DLL-библиотеку, то будет разумно загрузить её в физическую память только один раз. А затем использовать эту библиотеку во всех процессах.
Каждый процесс поддерживает собственные области памяти для хранения закрытых данных, но код DLL и неизменяемые страницы данных могут находиться в общем доступе без какого-либо вреда.
Смотрим на список файлов в Process Explorer
Посмотреть на файлы отображенные в памяти каким-то процессом можно с помощью Process Explorer. Настройте нижнюю панель для вывода представления DLL. Здесь вы можете увидеть все замапленные файлы (Mapped File), в числе которых могут быть:
- DLL-библиотеки;
- исполняемые файлы, например файлы с расширением .exe;
- файлы данных, то есть дополнительные файлы необходимые процессу.
На рисунке ниже вы можете увидеть часть замапленных файлов для одного из процессов chrome.exe:
То что такие файлы помещаются в память один раз, а используются многими процессами, очень хорошо экономит оперативную память в системе.
Дополнительно про сопоставленные в памяти файлы вы можете почитать в документации MicroSoft, или на Wikipedia.