Virtual Memory

Virtual memory is the simulation of a storage space so large that programmers do not need to reprogram or recompile their works when the capacity of a local memory or the configuration of a network changes. The name, borrowed from optics, recalls the virtual images formed by mirrors and lenses--images that are not there but behave as if they are. The designers of the Atlas Computer at the University of Manchester invented virtual memory in the 1950s to eliminate a looming programming problem: planning and scheduling data transfers between main and secondary memory and recompiling programs for each change of size of main memory. Virtual memory is even more useful in the computers of the 1990s, which have more things to hide-on-chip caches, separate RAM chips, local disk storage, network file servers (q.v.), large numbers of separately compiled program modules, other computers on the local bus or local network, or the Internet. The story of virtual memory from then to now is a story about machines helping programmers solve problems in storage allocation, protection of information, sharing and reuse of objects, and linking of program components. Virtual memory, common in all computers and operating systems from the smallest microprocessor to the largest supercomputer, is now invading the Internet.

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

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

[3]  David C. Wood,et al.  Measurements of segment size , 1970, CACM.

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

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

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

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

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

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

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

[11]  Bruce W. Arden,et al.  Measurement and performance of a multiprogramming system , 1969, SOSP '69.

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

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

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

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

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

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

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

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

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

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

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

[23]  Edward G. Coffman,et al.  Organizing matrices and matrix operations for paged memory systems , 1969, Commun. ACM.

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

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

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

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

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

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

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

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

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

[33]  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.

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

[35]  Donald Ervin Knuth,et al.  The Art of Computer Programming , 1968 .

[36]  Maurice V. Wilkes,et al.  Time-sharing computer systems , 1968 .

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

[38]  J. K. Iliffe,et al.  Basic machine principles , 1968 .

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

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

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

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

[43]  John L. Smith Microprogamming under a page on demand strategy , 1967, CACM.

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

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

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

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

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

[49]  Allen Weingarten,et al.  The Eschenbach drum scheme , 1966, CACM.

[50]  C. V. Ramamoorthy The analytic design of a dynamic look-ahead and program segmenting system for multiprogrammed computers , 1966 .

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

[52]  G. H. Fine,et al.  Dynamic program behavior under paging , 1966, CACM.

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

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

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

[56]  J. B. Dennis PROGRAM STRUCTURE IN A MULTI-ACCESS COMPUTER , 1964 .

[57]  F. J. Corbató,et al.  The linking segment subprogram language and linking loader , 1963, CACM.

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

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

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

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

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

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

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

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

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

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