×

A fine-grained parallel memory compaction algorithm. (English) Zbl 0805.68051

Summary: Memory compaction is a technique for reclaiming cells containing garbage that are scattered over the memory space. More specifically, the memory cells are rearranged, so that all usable cells appear in one compact mass at one end of the area, and the remaining space at the other end can be recycled by the program. During this process, references are updated to point to the new locations. This process happens in place; no extra memory is needed. In addition to this, a sliding compaction algorithm preserves the relative order of the useful memory calls. Morris’s algorithm is such a well-known sequential algorithm. In this paper, we present a program scheme that is a generalization of Morris’s algorithm, and that allows for parallel execution. Our scheme can be fine tuned for a particular implementation, taking into account the characteristics of the memory area and the hardware. The algorithm is space efficient, and runs in a time linear to the size of the memory area (the actual parameters are determined by the properties of the data to be compacted). As the algorithm is very fine grained, it has a nearly linear speedup, except in some uncommon cases. The memory area need not be contiguous, but must be globally accessible.

MSC:

68W15 Distributed algorithms
68P05 Data structures
68N20 Theory of compilers and interpreters
PDFBibTeX XMLCite
Full Text: DOI Link