The concept of virtual machines (VMs) is not new. Mainframe architectures have often been divided into virtualized host environments to support multiple, concurrent applications, such as discrete jobs (consider IBM’s Job Control Language) and time-sharing systems (Control Data’s Plato and IBM’s VM and MVS fall into this category).
Early VM mainframe constructions allowed entire environments to coexist and run concurrently, or jobs to be rapidly reloaded and used as "atomic"-system instances.
The sensible goal here is obvious — use expensive hardware assets more efficiently through the use of multiple concurrent operating system and application instances.
Microcomputers (a term once used to describe PCs and microprocessor-based systems), on the other hand, have had a historically strict and dogmatic one-computer-to-one-operating-system relationship. Multitasking and multithreading on microcomputers are capabilities that sat on the IT wish list for decades.
Early PC applications, such as DESQview (popular in the late 1980s and early 1990s), spawned interest in multitasking, the ability to rapidly switch between client applications. Microsoft and Apple eventually adopted, altered and integrated multitasking into Windows and MacOS, additionally taking up the gauntlet of multithreading — the ability to use CPUs to manage individual instances of jobs on the client side.
Novell’s early NetWare servers upped the ante by allowing applications to run along side kernel resources, in a "kernelish" mode (ring 0, rather than ring 3 of the Intel memory model). This measure allowed Novell’s NetWare-hosted applications to run very quickly.