
Windows 2.0 was
released in October 1987 and featured several improvements to the user
interface and memory management. Windows
2.0 allowed application windows to overlap each other and also introduced more
sophisticated keyboard-shortcuts. It could also make use of expanded memory.
Windows 2.1 was released in two different versions: Windows/386 employed the 386 virtual 8086 mode to multitask several DOS programs, and
the paged memory model to emulate expanded memory using available extended memory. Windows/286 (which, despite its name,
would run on the 8086) still ran in real
mode, but could make use of the high
memory area.
The early versions of Windows were often thought of as simply
graphical user interfaces, mostly because they ran on top of MS-DOS and used it for file system services. However, even the earliest 16-bit
Windows versions already assumed many typical operating system functions;
notably, having their own executable
file format and providing their
own device drivers (timer, graphics, printer, mouse,
keyboard and sound) for applications. Unlike MS-DOS,
Windows allowed users to execute multiple graphical applications at the same
time, through cooperative multitasking. Windows implemented an elaborate,
segment-based, software virtual memory scheme, which allowed it to run
applications larger than available memory: code segments and resources were swapped in and thrown away when
memory became scarce, and data segments moved in memory when a given
application had relinquished processor control.