vm86 monitor inside vm
Posted: Sat Feb 08, 2025 1:47 am
I've been studying how software like neTraverse merge/win4lin worked in hope to implement smilar vm in an os. The outline, so far what I understand, is as follows:
The software requires modified host kernel which can handle 'MKI' (merge kernel interface?) branded tasks specially. The GPF handler call the added merge hooks on encountering such task.
The program 'boots' by starting a vm86 DOS machine. I believe it to be vm86 cause PE is set and it is running standard real mode from windows 95. win.com is executed which in turn loads . (virtual machine manager), along other things like setting a host sets up a vm86 monitor. I think these along with other PL0 operations are handled by the fault handlers in host kernel, the kernel essentially runs in PL3.
But when I open a DOS prompt inside windows 95, it is running under windows, triggering non existing int triggers specific behaviour (ax is cleared). So the program in DOS is running under ? So the 'real' vm monitor (ie the handlers in host kernel) gets the interrupt and somehow forwards to vmm32, and then uses its results?
Is there a better possible explanation for this?
The software requires modified host kernel which can handle 'MKI' (merge kernel interface?) branded tasks specially. The GPF handler call the added merge hooks on encountering such task.
The program 'boots' by starting a vm86 DOS machine. I believe it to be vm86 cause PE is set and it is running standard real mode
Code: Select all
command.comCode: Select all
vmm32.vxdCode: Select all
vmm32Code: Select all
dpmiCode: Select all
vmm32But when I open a DOS prompt inside windows 95, it is running under windows, triggering non existing int triggers
Code: Select all
vmm32Code: Select all
vmmCode: Select all
GPFIs there a better possible explanation for this?