Менеджер виртуальных машин
VMM - это программа, выполняющаяся в 32-битном защищенном режиме. Ее основная задача заключается в создании и поддержке рабочей среды виртуальных машин. Она ответственна за создание, выполнение и прерывание виртуальных машин. VMM является одной из многих системных VxD и находится в файле VMM32.VXD в вашей системной директории. Давайте проанализируем порядок загрузки Windows 95.
- io.sys загружается в память.
- обрабатывается config.sys и autoexec.bat
- вызывается win.com
- win.com запускает VMM32.VXD, которая фактически является простым DOS EXE-файлом.
- VMM32.VXD загружает VMM в расширенную память, используя драйвер XMS.
- VMM инициализирует сам себя и другие стандартные драйвера виртуальных устройств.
- VMM переключает машину в защищенный режим и создает системную виртуальную машину.
- Виртуальное устройство оболочки, которое загружается последним, запускает Windows на системной виртуальной машине путем запуска krnl386.exe.
- krnl386.exe загружает все другие файлы, заканчивая оболочкой Windows 95.
Как вы можете видеть, VMM - это первый VxD, загружаемый в память. Он создает системную виртуальную машину и инициализирует другие VxD. Он также предоставляет этим VxD различные сервисы.
Поведение VMM и VxD сильно отличается от обычных программ. Они, по большей части, находятся в спящем состоянии. Пока приложения выполняются в системе, эти VxD не активны. Они будут пробуждаться, когда произойдут прерывания/ошибки/события, которые потребуют их участия.
VxD должны синхронизировать свои доступы к сервисам VMM. Есть некоторые ситуации, в которых небезопасно вызывать сервисы VMM, например, когда обрабатывается какое-то хардварное прерывание. В это время, VMM не может гарантировать ответ на ваш запрос. Вы как создатель VxD должны быть предельно осторожны в том, что вы делаете. Помните это, нет никого, кто будет обрабатывать вашу ошибку. Вы абсолютно одни в ring 0.