Virtual memory

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 the memory 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 costs associated 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.

[1]  D. Sayre,et al.  Is automatic “folding” of programs efficient enough to displace manual? , 1969, CACM.

[2]  Alfred V. Aho,et al.  Principles of Optimal Page Replacement , 1971, J. ACM.

[3]  Jack E. Shemer,et al.  Statistical Analysis of Paged and Segmented Computer Systems , 1966, IEEE Trans. Electron. Comput..

[4]  C. Ramamoorthy,et al.  The analytic design of a dynamic look ahead and program segmenting system for multiprogrammed computers , 1966, ACM '66.

[5]  Hugh C. Lauer,et al.  Bulk core in a 360/67 time-sharing system , 1967, AFIPS '67 (Fall).

[6]  Maurice V. Wilkes,et al.  A model for core space allocation in a time-sharing system , 1899, AFIPS '69 (Spring).

[7]  John McCarthy,et al.  Programming languages , 1963, CACM.

[8]  John B. Johnston,et al.  Structure of multiple activity algorithms , 1969, SOSP '69.

[9]  G. H. Fine,et al.  Dynamic program behavior under paging , 1966, ACM '66.

[10]  Hugh C. Lauer,et al.  Steps toward a general-purpose time-sharing system using large capacity core storage and TSS/360 , 1968, ACM National Conference.

[11]  W. M. De Meis,et al.  Measurement and analysis of a demand paging Time Sharing System , 1969, ACM '69.

[12]  Laszlo A. Belady,et al.  Dynamic space-sharing in computer systems , 1969, Commun. ACM.

[13]  John A. Fotheringham,et al.  Dynamic storage allocation in the Atlas computer, including an automatic use of a backing store , 1961, Commun. ACM.

[14]  Laszlo A. Belady,et al.  A Study of Replacement Algorithms for Virtual-Storage Computer , 1966, IBM Syst. J..

[15]  Jack B. Dennis,et al.  Virtual memory, processes, and sharing in Multics , 1967, CACM.

[16]  William M. Waite,et al.  Machine independent software , 1969, SOSP '69.

[17]  L. W. Comeau,et al.  A study of the effect of user program optimization in a paging system , 1967, SOSP.

[18]  J. L. Smith,et al.  Comment on multiprogramming under a page on demand strategy , 1970, CACM.

[19]  Brian Randell,et al.  Dynamic storage allocation systems , 1968, CACM.

[20]  D. J. Kuck,et al.  The Use and Performance of Memory Hierarchies: A Survey , 1970 .

[21]  Tom Kilburn,et al.  One-Level Storage System , 1962, IRE Trans. Electron. Comput..

[22]  Jack B. Dennis,et al.  Segmentation and the Design of Multiprogrammed Computer Systems , 1965, JACM.

[23]  I. F. Freibergs,et al.  The dynamic behavior of programs , 1968, AFIPS '68 (Fall, part II).

[24]  Michael M. Gold,et al.  Strategies for structuring two level memories in a paging environment , 1969, SOSP '69.

[25]  Elliott I. Organick,et al.  The multics system: an examination of its structure , 1972 .

[26]  George O. Collins,et al.  Experience in automatic storage allocation , 1961, Commun. ACM.

[27]  Peter J. Denning,et al.  Effects of scheduling on file memory operations , 1899, AFIPS '67 (Spring).

[28]  Bernard A. Galler,et al.  Program and Addressing Structure in a Time-Sharing Environment , 1966, JACM.

[29]  Wilhelm Anacker,et al.  Performance Evaluation of Computing Systems with Memory Hierarchies , 1967, IEEE Trans. Electron. Comput..

[30]  Tad B. Pinkerton,et al.  Program behavior and control in virtual storage computer systems , 1968 .

[31]  Laszlo A. Belady,et al.  An anomaly in space-time characteristics of certain programs running in a paging machine , 1969, CACM.

[32]  Robert W. O'Neill,et al.  A preplanned approach to a storage allocating compiler , 1961, Commun. ACM.

[33]  H. Hellerman,et al.  Complementary replacement: a meta scheduling principle , 1969, SOSP '69.

[34]  James C. Browne,et al.  The management of a multi-level non-paged memory system , 1899, AFIPS '70 (Spring).

[35]  Robert W. O'Neill,et al.  Experience using a time-shared multi-programming system with dynamic address relocation hardware , 1967, AFIPS '67 (Spring).

[36]  Norman Weizer,et al.  Resource management for a medium scale time-sharing operating system , 1968, CACM.

[37]  Harvey Dubner,et al.  Optimizing the Performance of a Drum-Like Storage , 1969, IEEE Transactions on Computers.

[38]  Irving L. Traiger,et al.  Evaluation Techniques for Storage Hierarchies , 1970, IBM Syst. J..

[39]  Burnett H. Sams,et al.  The case for dynamic storage allocation , 1961, Commun. ACM.

[40]  Barbara S. Brawn,et al.  Program behavior in a paging environment , 1899, AFIPS '68 (Fall, part II).

[41]  Leo J. Cohen,et al.  Stochastic evaluation of a static storage allocation , 1961, Commun. ACM.

[42]  Jack E. Shemer,et al.  On the Design of Bayesian Storage Allocation Algorithms for Paging and Segmentation , 1969, IEEE Transactions on Computers.

[43]  Eric Wolman,et al.  A Fixed Optimum Cell-Size for Records of Various Lengths , 1965, JACM.

[44]  A. C. McKellar,et al.  The organization of matrices and matrix operations in a paged multiprogramming environment , 1968 .

[45]  Peter J. Denning,et al.  On the management of multilevel memories , 1969 .

[46]  Jack B. Dennis,et al.  Programming generality, parallelism and computer architecture , 1968, IFIP Congress.

[47]  Brian Randell,et al.  A note on storage fragmentation and program segmentation , 1969, CACM.

[48]  Norman Weizer,et al.  Virtual memory management in a paging environment , 1899, AFIPS '69 (Spring).

[49]  Peter J. Denning,et al.  Thrashing: its causes and prevention , 1968, AFIPS Fall Joint Computing Conference.

[50]  Daniel G. Bobrow,et al.  Structure of a LISP system using two-level storage , 1967, CACM.

[51]  J. E. Kelley Techniques for storage allocation algorithms , 1961, Commun. ACM.

[52]  Brian W. Kernighan,et al.  Optimal segmentation points for programs , 1969, SOSP '69.

[53]  Maurice V. Wilkes,et al.  Computers Then and Now , 1968, JACM.

[54]  Maurice V. Wilkes,et al.  Slave Memories and Dynamic Storage Allocation , 1965, IEEE Trans. Electron. Comput..

[55]  Robert M. Jones,et al.  Factors Affecting the Efficiency of A Virtual Memory , 1969, IEEE Transactions on Computers.

[56]  Peter J. Denning,et al.  Equipment Configuration in Balanced Computer Systems , 1969, IEEE Transactions on Computers.

[57]  Edward G. Coffman,et al.  Further experimental data on the behavior of programs in a paging environment , 1968, CACM.

[58]  Jacques Cohen,et al.  A use of fast and slow memories in list-processing languages , 1967, CACM.

[59]  Robert C. Daley,et al.  The multics virtual memory , 1969, SOSP '69.

[60]  Kurt Fuchel,et al.  Considerations in the design of a multiple computer system with extended core storage , 1968, CACM.

[61]  Jack B. Dennis,et al.  Programming semantics for multiprogrammed computations , 1966, CACM.

[62]  Anatol W. Holt,et al.  Program organization and record keeping for dynamic storage allocation , 1961, IFIP Congress.

[63]  J. K. Iliffe,et al.  A Dynamic Storage Allocation Scheme , 1962, Comput. J..

[64]  Edward G. Coffman,et al.  Analysis of a Drum Input/Output Queue Under Scheduled Operation in a Paged Computer System , 1969, JACM.

[65]  Brian Randell,et al.  Demand paging in perspective , 1968, AFIPS '68 (Fall, part II).

[66]  Bernard N. Riskin Core allocation based on probability , 1961, Commun. ACM.

[67]  David A. Patterson,et al.  Computer Architecture: A Quantitative Approach , 1969 .

[68]  Harold S. Stone,et al.  A Logic-in-Memory Computer , 1970, IEEE Transactions on Computers.