Posted: Sat Jul 21, 2007 12:20 pm
I have some time now so I can finish off my discussion of old Windows versions. I know this is somewhat OT now, but this thread started with a lot of old wives' tales about pre-95 versions of Windows being flung around (which happens all the time, as it turns out).
DOS + real-mode Windows (Windows 1.0)
This is the closest Windows ever was to just "running on top of DOS". As we all know, DOS is a real-mode OS. The first versions of Windows also ran in real-mode, and relied on DOS for many device drivers and for file system access. However, Windows was more than just a GUI, as it provided support for co-operative multitasking, which DOS lacks.
DOS + 16-bit protected-mode Windows (Windows 2.0 a.k.a. Windows/286, Windows 3.x in "Standard Mode")
This required at least a 286 to run. Windows apps now ran in 16-bit protected mode, but they all ran in the same address space. I think to run DOS apps Windows had to temporarily quit to get back into real-mode.
DOS + 16-bit protected-mode Windows + 32-bit protected-mode kernel (Windows 2.03 a.k.a. Windows/386, Windows 3.x in "386 Enhanced Mode")
Yes, before Windows 95 there was actually a 32-bit protected-mode kernel called the VMM (which is the kernel for 95, 98, and ME as well). It runs separate "virtual machines" in V8086 mode using pre-emptive multitasking, so you could actually run multiple DOS apps simultaneously. This was the introduction of 32-bit VXDs (virtual device drivers) that allows the VMM to share devices among the different DOS VMs. One of the VMs was designated as the "Windows VM". It ran in 16-bit protected mode and ran all the Windows apps in one address space, still using co-operative multitasking.
DOS + 16-bit & 32-bit protected-mode Windows + 32-bit protected-mode kernel (Windows 95, 98, ME)
Windows 95 added support for 32-bit Windows apps. This was the debut of Win32 in the consumer OS line. It still used the VMM to multitask DOS VMs using V8086 mode, and there was still one VM designated as the "Windows VM". However, the Windows VM now ran in 32-bit protected mode and was further sub-divided into separate address spaces, one per Win32 process, and added an extra level of scheduling so that Win32 processes could be pre-emptively multitasked. However, they left a large chunk of each address space mapped to the Win16 area so that old Windows apps could still run using co-operative multitasking in a shared memory space. Also, a lot of the USER and GDI code in the "new" GUI was still 16-bit code, which caused performance and stability problems. It was very hacky.
One notable thing about Windows 95 was that if you installed all 32-bit protected-mode drivers (VXDs), then Windows was no longer "running on top of DOS" in any real sense after starting up, although it still needed DOS to boot. From the user's point of view, DOS was no longer a separate product, but it was still there (DOS 7.0).
There's a lot of good background info here.
DOS + real-mode Windows (Windows 1.0)
This is the closest Windows ever was to just "running on top of DOS". As we all know, DOS is a real-mode OS. The first versions of Windows also ran in real-mode, and relied on DOS for many device drivers and for file system access. However, Windows was more than just a GUI, as it provided support for co-operative multitasking, which DOS lacks.
DOS + 16-bit protected-mode Windows (Windows 2.0 a.k.a. Windows/286, Windows 3.x in "Standard Mode")
This required at least a 286 to run. Windows apps now ran in 16-bit protected mode, but they all ran in the same address space. I think to run DOS apps Windows had to temporarily quit to get back into real-mode.
DOS + 16-bit protected-mode Windows + 32-bit protected-mode kernel (Windows 2.03 a.k.a. Windows/386, Windows 3.x in "386 Enhanced Mode")
Yes, before Windows 95 there was actually a 32-bit protected-mode kernel called the VMM (which is the kernel for 95, 98, and ME as well). It runs separate "virtual machines" in V8086 mode using pre-emptive multitasking, so you could actually run multiple DOS apps simultaneously. This was the introduction of 32-bit VXDs (virtual device drivers) that allows the VMM to share devices among the different DOS VMs. One of the VMs was designated as the "Windows VM". It ran in 16-bit protected mode and ran all the Windows apps in one address space, still using co-operative multitasking.
DOS + 16-bit & 32-bit protected-mode Windows + 32-bit protected-mode kernel (Windows 95, 98, ME)
Windows 95 added support for 32-bit Windows apps. This was the debut of Win32 in the consumer OS line. It still used the VMM to multitask DOS VMs using V8086 mode, and there was still one VM designated as the "Windows VM". However, the Windows VM now ran in 32-bit protected mode and was further sub-divided into separate address spaces, one per Win32 process, and added an extra level of scheduling so that Win32 processes could be pre-emptively multitasked. However, they left a large chunk of each address space mapped to the Win16 area so that old Windows apps could still run using co-operative multitasking in a shared memory space. Also, a lot of the USER and GDI code in the "new" GUI was still 16-bit code, which caused performance and stability problems. It was very hacky.
One notable thing about Windows 95 was that if you installed all 32-bit protected-mode drivers (VXDs), then Windows was no longer "running on top of DOS" in any real sense after starting up, although it still needed DOS to boot. From the user's point of view, DOS was no longer a separate product, but it was still there (DOS 7.0).
There's a lot of good background info here.