[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