[ros-dev] DOS Subsystem.

Royce Mitchell III royce3 at ev1.net
Tue Nov 29 07:18:48 CET 2005


KJKHyperion wrote:

> TwoTailedFox wrote:
>
>> If NTVDM/VDM is neither a service, nor a Subsystem, then what 
>> precisely is it?
>>  
>>
> a hack. A hack we don't have to support, since the VDM concept sucks, 
> it has been used as a backdoor in the past and it remains a backdoor 
> by design (direct hardware access for VGA, standard system calls 
> bypassed in certain cases, own fault handling and other such niceties).
>
> And intelligent emulation has worked much better despite theory would 
> suggest a VDM to perform better - for one, most DOS applications are 
> busy-waiting and when run in a VDM will continuously cause expensive 
> context switches in a tight loop, as they raise interrupts, faulting 
> into the kernel, bounced back to user mode, handled by the emulation 
> layer which finally resumes the DOS code with another call into the 
> kernel which switches back the CPU into V86 mode, give or take a 
> context switch... this usually kills both the DOS application and the 
> host system making both unusable. As opposed to an emulator that can 
> simply recompile the DOS code into native code and execute it 
> directly, with interrupts not being much more expensive than regular 
> function calls, and with the chance to behave a lot more like real 
> hardware, unlike V86 mode.
>
> And this doesn't even take VGA emulation in account - Windows support 
> for full-screen DOS applications is especially gruesome, adding a 
> couple more context switches of the ugliest kind (TSS switching) to 
> call into the real-mode 16-bit VGA BIOS. Again, emulation would be not 
> only simpler, but also much faster, as the VGA BIOS virtually is dead 
> code with performance that cannot even remotely be compared with what 
> today's GPUs can do (more or less easily available through DirectX), 
> and it's real-mode 16-bit code on top of that.
>
> Also, Windows has successfully employed software emulation for DOS 
> support, and the actual implementation of the user-mode VDM doesn't 
> affect Win32 components relying on it, but it has a huge impact on 
> kernel complexity and even security - software emulation is painless, 
> has no special kernel requirements and is perfectly compatible. And 
> makes for a self-contained implementation that can be easily 
> customized, or completely removed from an installation or distribution 
> without the need of a separate kernel build.
>
> Finally, V86 support in the Windows kernel is virtually unused outside 
> of the VDM, and completely inadequate for any kind of serious work if 
> compared with V86 support on other operating systems.
>
> In short, it's just ballast 

It seems to me another benefit of going the emulation route is easy 
16-bit support in x64 version of ReactOS - something MS isn't offering.



More information about the Ros-dev mailing list