Уроки Iczelion'а

       

Менеджер виртуальных машин


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.



Содержание раздела