previous | contents | next

Section 2

Memory Hierarchies and Multiple Processes

During the 1950s, computers were used primarily in a single-user, stand-alone environment. Starting in the late 1950s, a number of parallel developments in computer architecture and software evolved, all seeking to make more efficient use of expensive hardware installations. These developments sought not only to increase the number of tasks completed per unit of time but also to increase the efficiency of hardware usage on single tasks. An equally significant motivation for these developments was to make computers easier to use.

At least four major system-level concepts served as a focal point for these developments: multiprogramming, timesharing, virtual memory, and virtual machines.


In multiprogramming, portions of different programs concurrently reside in memory. A program is run either to completion or to a natural breakpoint, such as a request for I/O. A software monitor then switches control to another program. Switching to another program instead of idling the Pc while waiting for an I/O request allows for concurrent operation of Pc and I/O hardware, thus increasing the efficiency of the Pc. The software monitor, however, represents a source of overhead, since it requires Pc and Mp resources to execute.


Timesharing systems allow multiple users to simultaneously interact with the hardware, In addition to the capabilities of a multiprogramming system, other functionalities must be added to the software for sharing programs, sharing facilities, and protecting users from each other, including command language interpreters for terminal inputs, editors for program preparation, and a scheduler that assures each user of periodically receiving the attention of the Pc.

Virtual Memory

Early computer users had to explicitly handle storage allocation if their program was larger than Mp. The user had to divide the program into modules, specify what modules were to be initially loaded, and dynamically specify what module was to replace (or overlay) which Mp resident module. Virtual memory provides the user with a memory that can be larger than physical Mp. The virtual memory system handles overlays in a user-transparent manner by deferring the binding between user and physical addresses until instruction execution time.

Virtual Machines

Multiprogramming and timesharing systems provide an "abstract" machine to the user. This "machine" has to be different from the actual hardware, since certain shared activities, such as I/O, and certain functions, such as execution of a Halt instruction, can affect other users. Thus the concept of a virtual machine was evolved (see Buzen and Gagliardi [1973] for a historical treatment of virtual machines). A virtual machine is an abstract machine that responds exactly as does the physical machine (see Fig. 1). Hence each user has what appears to be a separate "copy" of the physical machine. Protection is provided by a virtual machine monitor. With a virtual machine, users can coexist running under different operating systems. Programs executing under different run-time systems interfaced to different operating systems can co-operate. Functions that previously required a dedicated machine (e.g., operating system modification, I/O, and diagnostics) can execute on their own virtual machine.

Rather than attempt to trace the intertwined development of each of these four concepts, we will discuss the regions of memory


previous | contents | next