Claims
- 1. In a method of data processing in a processor programmable in a symbolic programming language of the type including LISP and having automatic memory reclamation, wherein the processor repeatedly applies address words to gain memory to write data structures into main memory and read data structures from main memory to perform operations thereon, and the processor allocates previously used portions of main memory for writing data structures by reclaiming same, the improvement wherein the step of reclaiming comprises:
- a. defining address regions in main memory including a main space and a relatively smaller subsidiary space;
- b. writing new data structures into subsidiary space until it is full; and
- c. reclaiming subsidiary space when it is full by
- i. detecting the writing of a data structure into main space having a pointe into subsidiary space;
- ii. adding memory locations of pointer detected in step (i) to a given data structure;
- iii. halting operation of the processor;
- iv. locating all pointers to subsidiary space by referencing the given data structure;
- v. locating useful data structures in subsidiary space from the pointers located in step (iv) and;
- vi. copying the located useful data structures into main space until there are no further pointers into subsidiary space.
- 2. The method according to claim 1, wherein the operation of detecting the writing of a pointer comprises referencing a table of addresses indexed by at least some bits of the location being written to indicate if the address is in main space and referencing a table of addresses indexed by at least some bits of the contents of the pointer being written to indicate if the pointer being written is a pointer to subsidiary space.
- 3. The method according to claim 2, wherein the steps of referencing the tables is performed in parallel with writing into memory.
- 4. The method according to claim 1, wherein the step of adding comprises setting a bit in a table indexed by at least some bits of the address being written.
- 5. The method according to claim 1, further comprising separating main space into pages of memory, writing pages of memory into a secondary storage device, scanning each page of memory when written into the secondary storage device to see if the page contains a pointer to secondary space, updating an associated data structure to indicate for each page when a pointer to subsidiary space is present, thereafter reclaiming subsidiary space by copying the data structures pointed to by the pointers of the indicated pages.
- 6. The method according to claim 1, further comprising:
- defining three address regions in the main space including an old space, a copy space and a new space; and
- reclaiming old space during the repeated reading and writing by the processor by
- determining if an address desired by the processor is in old space by examining the address word in parallel with applying the address word to main memory and producing a trap if the address corresponds to old space and, if the trap is produced, copying the data structure associated with the address into a new address in copy space and writing a pointer into the address in old space indicating the new address in copy space and
- accessing each address in copy space to see if the data structure therein has a pointer to old space and if such pointer is present, moving the data structure from old space to a new address in copy space and updating the data structure of the accessed address in copy space to include a pointer to the new address in copy space.
Parent Case Info
This application is a continuation of application Ser. No. 450,600, filed 12/17/82, now abandoned.
US Referenced Citations (5)
Foreign Referenced Citations (5)
Number |
Date |
Country |
42540 |
Dec 1978 |
ATX |
91-5310 |
Oct 1972 |
CAX |
1017871 |
Aug 1974 |
CAX |
995823 |
Aug 1976 |
CAX |
1023056 |
Dec 1977 |
CAX |
Continuations (1)
|
Number |
Date |
Country |
Parent |
450600 |
Dec 1982 |
|