PETER J. DENNING
Princeton University,* Princeton, New Jersey \
The need for automatic storage allocation arises from desires for program modularity, machine independence, and resource sharing. Virtual memory is an elegant way of achieving these objectives. In a virtual memory, the addresses a program may use to identify information are distinguished from the addresses thememory system uses to identify physical storage sites, and program-generated addresses are translated automatically to the corresponding machine addresses. Two principal methods for implementing virtual memory, segmentation and paging, are compared and contrasted. Many contemporary implementations have experienced one or more of these problems: poor utilization of storage, thrashing, and high costsassociated with loading information into memory. These and subsidiary problems are studied from a theoretic view, and are shown to be controllable by a proper combination of hardware and memory management policies.
Key words and phrases: virtual memory, one-level store, memory allocation, storage allocation, dynamic storage allocation, segmentation, paging, replacement algorithms, storagefragmentation, thrashing, working set CR categories: 4.3, 6.2
F r o m the earliest days of electronic computing it has been recognized that, because fast-access storage is so expensive, computer memories of very large overall capacity must be organized hierarchically, comprising at least two levels, " m a i n m e m o r y " and "auxiliary m e m o r y . " A program's information (i.e.instruction code and data) can be referenced only when it resides in main m e m o r y ; thus, information having immediate likelihood of being referenced must reside in main memory, and all other information in auxiliary memory. The storage allocation problem is t h a t of determining, at each m o m e n t of time, how information shall be distributed among the levels of memory. During the earlyyears of computing, each p r o g r a m m e r had to incorporate storage * Department of Electrical Engineering. This work was supported in part by National Aeronautics and Space Administration Grant NGR-31-001-170.
allocation procedures into his program whenever the totality of its information was expected to exceed the size of main memory. These procedures were relatively straightforward,amounting to dividing the program into a sequence of " s e g m e n t s " which would " o v e r l a y " (i.e. replace) one another in main memory. Since the p r o g r a m m e r was intimately familiar with the details of b o t h the machine and his algorithm, it was possible for him to devise efficient "overlay sequences" with relative ease. The picture began to c h a n g e m a r k e d l y after theintroduction of higher level programming languages in the mid-1950s. Programmers were encouraged to be more concerned with problem-solving and less concerned with machine details. As the complexity of their programs grew, so grew the magnitude of the storage overlay problem. Indeed, b y the late 1950s it was clear t h a t program operating efficiency could suffer greatly under poor overlaystrategies,
Computing Surveys, Vol. 2, No. 3, September 1970
Peter J. Denning
Introduction 153-157 Basic System Hardware 157 Definition of Virtual Memory 157-159 Manual Versus Automatic Memory Management 159160 Implementation of Virtual Memory 16O-165 Segmentation Paging Segmentation and Paging Storage Utilization 165-172 Placement Policies Overflow and CompactionFragmentation Page Size Compression Factor Comparison of Paged and Nonpaged Memories 172 Demand Paging 173-177 Paging Drum Cost
Program Behaviorand Memory Management 177-183 Replacement Algorithms Optimal Paging Algorithms The Principle of Locality and the Working Set Model Multiprogramming and Thrashing
Program Structure 183-184 Hardware Support 184-186 Conclusions 186-187 References 187-189