Проецирование в память exe и dll файлов.

Чтобы запустить ехе файл CreateProcess(…), где имя файла – это один из параметров.

1. Отыскивается ехе файл, вызванный функцией.

2. Создаётся объект ядра процесс.

3. Создаётся адресное пространство нового процесса размером 4Гб.

4. Выполнение проецируемого файла на адресное пространство процесса. В самом ехе файле указы-вается регион адресного пространства, в которое спроецирован файл.

5. Отмечается, что физическая память, связанная с выделенным регионом – это файл на диске, а не страничный файл.

6. Спроецировав ехе файл ОС читает несколько первых страниц в файл, чтобы получить список dll, необходимых данному ехе файлу. Затем ОС с помощью функции LoadLibrary(…) поочерёдно загружает указанные dll в адресное пространство процесса. Точно также выделяется регион в адресном пространстве и на него проецируется dll. Начальный адрес региона адресного простраства, на который желательно спроецировать dll указывается компоновщиком при создании dll. У всех системных dll (kernel32.dll и user32.dll).

7. После увязки ехе и dll файлов с адресным пространством процесса начинает выполняться стартовый код ехе файла. Подкачку страниц берёт на себя ОС.