Garbage collecting reactive real-time systems

Sammanfattning: As real-time systems become more complex, the need for more sophisticated runtime kernel features arises. One such feature that substantially lessens the burden of the programmer is automatic memory management, or garbage collection. However, incorporating garbage collection in a real-time kernel is not an easy task. One needs to guarantee, not only that sufficient memory will be reclaimed in order to avoid out of memory errors, but also that the timing properties of the systems real-time tasks are unaffected. The first step towards such a garbage collector is to define the algorithm in a manageable way. It has to be made incremental in such way that induced pause times are small and bounded (preferably constant). The algorithm should not only be correct, but also provably useful. That is, in order to guarantee that sufficient memory is reclaimed each time the garbage collector is invoked, one need to define some measure of usefulness. Furthermore, the garbage collector must also be guaranteed to be schedulable in the system. That is, even though the collector is correct and proved useful, it still has to be able to do its work within the system. In this thesis, we present a model of an incremental copying garbage collector based on process terms in a labeled transition system. Each kind of garbage collector step is captured as an internal transition and each kind of external heap access (read, write, and allocate) is captured as a labeled transition. We prove correctness and usefulness of the algorithm. We also deploy the garbage collector in a real-time system, to wit, the runtime kernel of Timber. Timber is a strongly typed, object-oriented, purely reactive, real-time programming language based on reactive objects. We show how properties of the language can be used in order to accomplish very efficient and predictable garbage collection.

  Denna avhandling är EVENTUELLT nedladdningsbar som PDF. Kolla denna länk för att se om den går att ladda ner.