Titel: Going beyond on-the-fly garbage collection and improving self-adaption with enhanced interfaces
Ämne: Data- och informationsvetenskap
Fakultet: Fakulteten för teknik
Datum: Fredagen den 18 oktober 2019 kl 13.00
Plats: Sal Weber, hus K, Växjö
Opponent: Professor Richard Jones, University of Kent, England
Betygsnämnd: Professor Peter Fritzson, Linköpings universitet; professor Uwe Aßman, Technische Universität Dresden, Tyskland; professor Wolf Zimmermann, Martin-Luther-Universität Halle-Wittenberg, Tyskland
Ordförande: Lektor Jesper Andersson, institutionen för datavetenskap och medieteknik, Linnéuniversitetet
Handledare: Professor Welf Löwe, institutionen för datavetenskap och medieteknik, Linnéuniversitetet
Examinator: Professor Andreas Kerren, institutionen för datavetenskap och medieteknik, Linnéuniversitetet
Spikning: Fredagen den 27 september 2019 kl 9.30 på Universitetsbiblioteket i Växjö
Freeing memory of a lock-free data structure is tedious work. There are solutions, but they require lots of manual work and careful thinking. Automatic approaches like garbage collection are therefore desirable, but impede the progress guarantees of the algorithm.
Choosing the right data structure based on time complexity and varying levels of unexpected concurrency, in third party libraies, is also tedious work, and would also benefit from an automatic approach.
A block-free garbage collection (GC) algorithm was invented that automates concurrent memory reclamation, and concurrent memory defragmentation, without impeding the non-blocking progress guarantees of the algorithm. The algorithm builds on a tighter integration between GC and the operating system (OS) as well as just-in-time (JIT) compilers.
A general solution for creating self-adaptive components was created, allowing an automatic selection of appropriate underlying data structure based on operations performed and level of contention exposed to. The algorithm builds on a tighter integration between the library code and managed runtime.
It shows that these solutions benefit from a revision of the otherwise strict boundaries between the tasks of garbage collection, compilers, operating systems (OS), and runtime environment. These boundaries/interfaces are pragmatic engineering decisions that can be adapted for good engineering purposes.