List processing in real time on a serial computer

A real-time list processing system is one in which the time required by the elementary list operations (e.g. CONS, CAR, CDR, RPLACA, RPLACD, EQ, and ATOM in LISP) is bounded by a (small) constant. Classical implementations of list processing systems lack this property because allocating a list cell from the heap may cause a garbage collection, which process requires time proportional to the heap size to finish. A real-time list processing system is presented which continuously reclaims garbage, including directed cycles, while linearizing and compacting the accessible cells into contiguous locations to avoid fragmenting the free storage pool. The program is small and requires no time-sharing interrupts, making it suitable for microcode. Finally, the system requires the same average time, and not more than twice the space, of a classical implementation, and those space requirements can be reduced to approximately classical proportions by compact list representation. Arrays of different sizes, a program stack, and hash linking are simple extensions to our system, and reference counting is found to be inferior for many applications.

[1]  Stefan Arnborg Optimal memory management in a system with garbage collection , 1974 .

[2]  A. Schonage,et al.  REAL-TIME SIMULATION OF MULTIDIMENSIONAL TURING MACHINES BY STORAGE MODIFICATION MACHINES , 1973 .

[3]  Joseph Weizenbaum Symmetric list processor , 1963, CACM.

[4]  Daniel G. Bobrow,et al.  A model and stack implementation of multiple environments , 1973, CACM.

[5]  Donald E. Knuth,et al.  The art of computer programming: V.1.: Fundamental algorithms , 1997 .

[6]  Daniel G. Bobrow,et al.  An efficient, incremental, automatic garbage collector , 1976, CACM.

[7]  Chris J. Cheney A nonrecursive list compacting algorithm , 1970, Commun. ACM.

[8]  Leslie Lamport,et al.  On-the-fly garbage collection: an exercise in cooperation , 1975, CACM.

[9]  Guy L. Steele,et al.  Multiprocessing compactifying garbage collection , 1975, CACM.

[10]  Stefan Arnborg Storage administration in a virtual memory Simula system , 1972 .

[11]  C. A. R. Hoare,et al.  Optimization of Store Size for Garbage Collection , 1974, Inf. Process. Lett..

[12]  Warren Teitelman,et al.  The interlisp reference manual , 1974 .

[13]  Mario R. Barbacci,et al.  C.ai : a LISP processor for C.ai , 1971 .

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

[15]  George E. Collins,et al.  A method for overlapping and erasure of lists , 1960, CACM.

[16]  Donald E. Knuth,et al.  The Art of Computer Programming, Volume I: Fundamental Algorithms, 2nd Edition , 1997 .

[17]  J. A. Campbell Optimal Use of Storage in a Simple Model of Garbage Collection , 1974, Inf. Process. Lett..

[18]  N. S. Barnett,et al.  Private communication , 1969 .

[19]  John McCarthy,et al.  LISP 1.5 Programmer's Manual , 1962 .

[20]  Marvin Minsky,et al.  A LISP Garbage Collector Algorithm Using Serial Secondary Storage , 1963 .

[21]  K.A.G. Müller,et al.  On the feasibility of concurrent garbage collection , 1976 .

[22]  Richard D. Greenblatt,et al.  A LISP machine , 1974, CAW '80.

[23]  Douglas W. Clark,et al.  An empirical study of list structure in Lisp , 1977, CACM.

[24]  Kristen Nygaard,et al.  SIMULA: an ALGOL-based simulation language , 1966, CACM.

[25]  Peter B. Bishop,et al.  Garbage Collection in a Very Large Address Space , 1975 .

[26]  Daniel G. Bobrow,et al.  A note on hash linking , 1975, CACM.

[27]  Peter Boehler Bishop,et al.  Computer systems with a very large address space and garbage collection , 1977 .

[28]  S. L. Graham,et al.  List Processing in Real Time on a Serial Computer , 1978 .

[29]  O. J. Dahl,et al.  Simula Begin , 1979 .

[30]  Charles H. Bennett,et al.  Logical reversibility of computation , 1973 .

[31]  Philip Wadler,et al.  Analysis of an algorithm for real time garbage collection , 1976, CACM.

[32]  Robert Fenichel,et al.  A LISP garbage-collector for virtual-memory computer systems , 1969, CACM.