How many virtual machines run inside MS Windows? In my Computer Systems (first year) module as part of my EE degree I'm studying virtual machines, memory management, hardware abstraction etc. I have come across the information that the OS creates and uses a few virtual machines to provide hardware and I/O abstraction.

I assume that there are multiple VMs doing different tasks, but how are they organised?

Are they one VM per task, e.g. one for disk I/O and the filesystem, one for human interface devices, etc; or are they all general purpose and are one VM per process?

Many thanks,
Ben Adamson
The NT kernel does have sub-systems or did for DOS, Win32, POSIX, and OS/2. You might consider them to be a VM layer in that they are instantiated per process and provides a compatible binary API to the process so that it may run. Each of these sub-systems only maps the binary API for the process to the API of the kernel and as such they don't do much other than that. State pertaining to a sub-system is kept in the process's context.

See chapter 5 in Inside Windows NT (Helen Custer, 1993) for more.