The computer industry is filled to the brim with myths. One such myth -- a myth that just won't seem to die -- goes something like this:
"Windows 3.1 was not really an operating system. It was just a shell on top of DOS."
Let's just put this to bed right now. To consider Windows 3.1 to simply be simply a shell on top of DOS is wildly -- wildly -- incorrect.
When Windows 3.1 is launched, DOS is unloaded.
While Windows 3.1 does, most certainly, take advantage of DOS to provide some DOS-specific features... DOS is, in reality, mostly used as a boot loader to get Windows 3.1 running. In many ways -- in this scenario -- DOS is acting a great deal like GRUB does on a Linux system... acting as a boot loader that then launches the kernel.
To showcase just how powerful (and misunderstood) Windows 3.1 really is... let's also dispel another myth:
"Windows 3.1 did not have real multitasking"
Did Windows 3.1 have "real" multitasking? You bet your bottom it did!
Before we go further, for those not in the know, here is a super fast (super high level) primer on the two types of multitasking we'll be talking about:
Cooperative Multitasking -- Each application is responsible for giving up time to the other software running on the computer. This is typically viewed as less powerful as it relies on each application being "well behaved" in order for the entire system to work efficiently.
Preemptive Multitasking -- The operating system itself is responsible for allocating CPU time to each application. Which means the individual pieces of software didn't even need to be designed with multitasking in mind (in many cases).
This is a wild simplification. But for the sake of this topic, it'll do.
Windows 3.1 actually consists of two different "kernels" -- two virtual machines that run different types of software:
- Win386 : A protected mode hypervisor
- System VM : aka "The Windows 3.1 kernel" that ran individual Win16 applications
Win386 ran individual "V8086" processes -- which was a key feature of the Intel 386 processor running in Protected Mode -- in a completely preemptive multitasking way.
This is key: All DOS applications ran as independent "V8086'' processes.
Which means that, if you were running DOS software under Windows 3.1... every single DOS application was preemptively multitasked. Seriously. Those DOS applications were designed to run in a single-tasking system (DOS) and, thanks to Windows 3.1's powerful Win386 hypervisor, were now running in a modern, preemptive multitasking system.
Then that "System VM" was running, as one of those "V8086" processes, which is a cooperative multitasking kernel. Within that kernel is where each of the Windows 3.1 applications were run. These pieces of "Win16" software (aka "16 bit Windows") were cooperatively sharing one V8086.
And all of this was happening with DOS acting -- more or less -- as a boot loader.
So.
Was Windows 3.1 merely a "Shell on top of DOS"?
Heck, no. If that's the case, that means "Linux" is nothing more than a "Shell on top of GRUB".
And did Windows 3.1 have "real multitasking"?
You be your sweet bippy. In fact... it had both of the two types of multitasking: preemptive and cooperative. Which is a heck of a lot more than classic MacOS could say...
Windows 3.1 had a lot of flaws. In fact, you could write an entire book about all of the problems with that system. But, just the same, it was an incredibly powerful OS... that was most certainly not just a "shell on top of DOS".
The next time you run across someone trying to sell that tired, busted myth... send them here.