-----------------------------------------------------------
New Message on BDOTNET
-----------------------------------------------------------
From: Sitaraman
Message 7 in Discussion
Hi NTVDM is running under a protected mode environment, which is the Intel x86
Virtual 8086 emulation mode. This is emulated, not by a software, but by the hardware,
i.e., the processor.
When i said that an environment is provided by the VDM, wat i basically meant was to
highlight the difference btwn a NT3.5 and NT3.51+ OS feature. Whereas in NT3.5 each
16 bit app ran in a separate VM, starting from 3.51 onwards, multiple 16bit apps
could run in the same VM.
NTVDM executes native instruction set, of the underlying microprocessor and
that is what is also contained in the executing application. This is in contrast with
a VES where in the executing application contains the instruction set for the VES,
which translates it to the instruction set of the underlying microprocessor.
would like to digress on the point that "NTVDM executes the native instruction set of
the underlying microprocesor". Wont it be accurate to say that, watever the
underlying processor, NT will emulate a I383 Intel processor instruction set. coz
when NT runs on a RISC based system, if "NTVDM executes native instruction set, of
the underlying microprocessor ", as you say, then 16 bit apps wont run on such
systems. Isnt it?? If i remember right, in RISC based systems, an instruction
execution unit (IEU) works with the NTDVM to emulate I383 Intel processor instruction
sets.
A VES provides a lot of facilities to the executing application: type
checking, memory management, security (execution and role), code isolation (execution
perspective). NTVDM does no such stuff.
Agreed. was a wrong phrase that i used. Never intended to say VDM provides featues to
a 16 bit app, just like the VES provides to the launched app inside it. just meant
to say that it is a layer on top of the OS which abstracts the underlying OS from the
running app. Isnt that true
In NTVDM, no thunking occurs since the applications that execute undre it are
actually written for real mode x86 architecture. Thunking is specific to Windows OS,
while real mode x86 is DOS based architecture (no, am not referring to the console
like looks, but the architecture of the OS). Thunking is used by Windows to make calls
to 16bit protected mode code from 32 bit protected mode code and vice-versa.
When i say NTVDM, im talking about both 16 bit DOS and 16 bit windows applications
which can run inside it. Both of these do run under the NTVDM. In the case of 16 bit
windows applications, thunking does happen. In fact the Win16 on Win32 (WOW) subsystem
is the one that allows 16 bit Windows applications that run on Windows 3.1 and Windows
for Workgroups to run on Windows NT 32 bit architecture. This is because the WOW uses
a process called thunking to intercept and translate 16 bit system calls to 32 bit
system calls. So isnt it true that in the case of an application running on a NTVDM
AND it is a 16 bit win app, the WOW subsystem does get involved for thunking the
calls.
V86 mode doesnt need to know about the OS since it runs even below the OS: at
the microprocessor level. The consuming OS simply toggles a processor bit to
enable/disable it.
By processor bit setting if u are referring to the the VM bit in the EFLAGS CPU
register set by the NtVdmControl, then i think i didnt get my point across correctly.
I was basically giving the example of NTVDM in the context below NTVDM is
basicaly a adult process Win32 process The NTVDM itself runs inside the
Client/Server Runtime (CSR) subsystem It uses its separate address space to create a
VM that runs alongside regular Win32 processes and each running instance of NTVDM.EXE
constitutes a separate VM. Programs for MS-DOS and 16-bit Windows are like children
belonging to this adult NTVDM process If the running application is a 16-bit
Windows windows app, then the WOW subsystem does come into picture for thunking
So what i meant was that given the explanation of yours that "A Virtual Execution
System is basically a virtualized envrionment, it exists but not physically . Code is
executed within the confines of this VES and for the code executing within it, this
VES is the actual OS. The executing code has no notion or knowledge of the actual OS
under which the VES runs, under which it is executing",isnt this similar to a VDM, in
the sense that it provides a envelope for a 16 bit application and abstracts it from
the underlying OS.
"A Virtual Execution System is basically a virtualized envrionment, it exists but not
physically ": Isnt this same in the NTVDM also
"Code is executed within the confines of this VES ": 16bit app code is again executed
within the confines of the VM provided by the NTVDM( but agree that there the
comparison ends)
"for the code executing within it, this VES is the actual OS" : for a 16 bit app the
VM provided by the NTVDM is again the actual OS
"The executing code has no notion or knowledge of the actual OS under which the VES
runs, under which it is executing ": Same happens in the case of NTVDM where the
executing app has not notion or knowledge that it that it is running on a NT System
To conclude, i perfectly agree that NTVDM is not a an exact equvalent to the VES, and
obviously can never be.. . The analogy that i gave was in the context that
it is a layer above the OS and
the apps runs in that layer and
the layer itself is virtual
and abstracts the running app from the underlying OS Hope i got my point across
correctly this time regards, sr
-----------------------------------------------------------
To stop getting this e-mail, or change how often it arrives, go to your E-mail
Settings.
http://groups.msn.com/BDotNet/_emailsettings.msnw
Need help? If you've forgotten your password, please go to Passport Member Services.
http://groups.msn.com/_passportredir.msnw?ppmprop=help
For other questions or feedback, go to our Contact Us page.
http://groups.msn.com/contact
If you do not want to receive future e-mail from this MSN group, or if you received
this message by mistake, please click the "Remove" link below. On the pre-addressed
e-mail message that opens, simply click "Send". Your e-mail address will be deleted
from this group's mailing list.
mailto:[EMAIL PROTECTED]