Object and task reclamation in distributed applicative processing systems

Functional programming has received increased attention in recent years, for reasons related to more effective programming and the potential for highly-parallel implementations. This dissertation is concerned with the general problem of automatic storage reclamation in functional programming systems utilizing distributed heaps. In such "distributed applicative processing systems," the evaluation of a functional program is accomplished by a highly-parallel graph-reduction process, effectively distributed among many processing elements having only local store. This evaluation process creates the potential for unique forms of "garbage," whose detection may be crucial to effective performance. In particular, there may be "dormant" portions of the computation graph (equivalent to deadlock), in addition to "irrelevant tasks" (active processes which are determined to be no longer relevant to the computation). There are three primary contributions of this research. First, the model of distributed applicative processing systems, together with the characterization of irrelevant tasks and dormant subgraphs, is useful in generalizing the standard storage reclamation problem to highly parallel, distributed systems. The deficiencies of existing storage reclamation schemes in such an environment are discussed in detail. Second, the marking-tree collector is presented as the first effectively distributed real-time garbage collector of the mark-sweep variety. This scheme does not require centralized data or control (other than a logical rendezvous between phases of the collector) and operates in parallel with the main computation. A copying version of the scheme is also presented, with improved performance. Lastly, the technique of call-graph reclamation is presented, which demonstrates the feasibility of doing efficient storage reclamation at the block level, by making "dynamic" reclamation decisions based on the types of intermediate results in a computation. All of the schemes presented have the added benefit of being able to detect, and subsequently delete, irrelevant tasks.