Page 1 of 1

NT VDM questions

Posted: Thu Jan 22, 2009 8:15 pm
by Troy Martin
I hope someone out there can help me with these questions about the NT Virtual DOS Machine.

1. a) Does each VDM instance have it's own IVT?
b) Can a VDM instance modify the IVT it uses for the duration of the instance?

2. Would the BIOS be able to be accessed via the interrupts like if the program was booted off a floppy etc.?

Re: NT VDM questions

Posted: Fri Jan 23, 2009 8:13 am
by Colonel Kernel
I don't have definite answers for your questions, but I can offer some educated guesses:
  1. Shared IVT: I assume each VDM would need its own IVT so as not to interfere with other VDMs. Each VDM lives in its own address space.
  2. Modify IVT: Not sure, but probably yes, since some DOS software would depend on this.
  3. BIOS: Interesting question... NT VDM probably emulates the BIOS. In fact, I forget whether NT VDM uses V8086 mode or not. I don't think so, which means there would be a lot of emulation going on.

Re: NT VDM questions

Posted: Mon Mar 02, 2009 6:06 am
by jal
Colonel Kernel wrote:In fact, I forget whether NT VDM uses V8086 mode or not. I don't think so, which means there would be a lot of emulation going on.[/list]
Of course it does. What makes you think otherwise?


JAL

Re: NT VDM questions

Posted: Mon Mar 02, 2009 6:09 am
by jal
Troy Martin wrote:1. a) Does each VDM instance have it's own IVT?
Yes. Basically its own instance of the entire 1MB memory space, or you'd get one instance messing up another.
b) Can a VDM instance modify the IVT it uses for the duration of the instance?
Of course. Or many DOS programs would not run at all.
2. Would the BIOS be able to be accessed via the interrupts like if the program was booted off a floppy etc.?
Of course. DOS programs rely heavily on the BIOS. Of course, much is emulated, either at BIOS or hardware level (or both).

Wikipedia has a decent overview.


JAL

Re: NT VDM questions

Posted: Mon Mar 02, 2009 9:00 am
by Colonel Kernel
jal wrote:
Colonel Kernel wrote:In fact, I forget whether NT VDM uses V8086 mode or not. I don't think so, which means there would be a lot of emulation going on.[/list]
Of course it does. What makes you think otherwise?


JAL
Something I thought I had read a long time ago. As I get older my memory is becoming faulty. :P

Re: NT VDM questions

Posted: Mon Mar 02, 2009 9:41 am
by jal
Colonel Kernel wrote:Something I thought I had read a long time ago. As I get older my memory is becoming faulty. :P
It's not just about memory: real mode code can be run in v86 only. Or did you think the VDM uses emulation? Think of the performance on the 386s of lore, and remember that half of the kernel time of Win 3.11 (and to a lesser extent 95) was spend in (real mode) DOS...


JAL

Re: NT VDM questions

Posted: Mon Mar 02, 2009 7:58 pm
by Colonel Kernel
There is no question that the Win9x kernel and its predecessors used v86 mode, but NTVDM came much later and is not based on that code AFAIK. Yes, I was under the impression that it used emulation, but the latest info says it does not, so either it changed or I misremembered something I read over ten years ago. The principle of Occam's razor leads me to believe the latter. ;)