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.
Multiprogramming
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
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
227