![]() |
Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | |
|
При исполнении функции CreateProcess система обращается к VMM для выполнения следующих действий:
1. Создать адресное пространство процесса (размером 4Gb).
2. Резервировать в адресном пространстве процесса регион размером, достаточным для размещения исполняемого файла. Начальный адрес региона определяется в заголовке EXE-модуля. Обычно он равен 0x00400000, но может быть изменен при построении файла параметром /BASE компоновщика.
3. Отобразить исполняемый файл на зарезервированное адресное пространство. Тем самым VMM распределяет физические страницы не из файла подкачки, а непосредственно из EXE-модуля.
4. Таким же образом отобразить на адресное пространство процесса необходимые ему динамически связываемые библиотеки. Информация о необходимых библиотеках находится в заголовке EXE-модуля. Желательное расположение региона адресов описано внутри библиотеки.
При одновременном запуске нескольких приложений Win32® отображает один и тот же исполняемый файл и библиотеки на адресные пространства различных процессов. При этом возникает проблема независимого использования процессами статических переменных и областей данных.
Кроме того, изменение данных исполняющейся программой не должно приводить к изменению EXE-файла. При этом используется классический механизм отложенного копирования (copy-on-write — копирование при попытке записи). Все страницы адресного пространства процесса получают атрибут защиты PAGE_WRITECOPY. При попытке записи в такую страницу возникает исключение нарушения защиты и VMM копирует страницу для обратившегося процесса. В дальнейшем эта страница будет выгружаться в файл подкачки. После копирования происходит рестарт команды, вызвавшей исключение.
Дата публикования: 2015-10-09; Прочитано: 341 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!