PhD Dissertation

A Portable Mechanism for Thread Persistence and Migration


Previous research efforts for building thread persistence or migration systems have concentrated on the development of frameworks dealing with a small local environment controlled by a single user. In these systems, threads can only migrate between homogeneous platforms, therefore the portability of these systems is compromised. The recent explosive growth of the Internet generates the need of applications on large scale distributed systems. Many of these applications require certain levels of support of computational persistence or mobility. The new paradigm of distributed computing inspires the research of thread persistence and migration throughout large scale networks of heterogeneous platforms.

In this dissertation we propose a portable mechanism to support thread persistence and migration. Neither the programming language nor the
underlying system on which the threads execute is modified. This is a general strategy to be used with different systems and applications to
facilitate their support of thread persistence or migration. The experiment was conducted on the Java programming language, a language
designed with mobile code features to be used on heterogeneous platforms. Although it has become more and more widely used in
modern database and distributed systems, Java lacks the capability to externalize a program's execution state at run time, which is essential  for thread persistence and mobility.

Our system provides a way to capture, collapse and restore the execution state of a Java thread. The saved thread can be restarted from exactly the same state at a later time, perhaps after migration to a new host. A mechanism to correctly save and restore a program's synchronization state is also described. To ensure both compiler and platform independence, the state saving code is introduced into Java class files via byte code rewriting. The semantics of the externalized threads are discussed, including object sharing, boundaries of object graphs, interactions with related objects, and the circumstances under which a state saving event can be initiated. We demonstrate the viability of our approach by describing a prototype implementation, JThread, which includes applying the technique on several different persistent or
mobility mechanisms to demonstrate adaptability. The performance measures are also reported, notably in terms of code size expansion and run time overhead introduced by byte code rewriting to support state saving.

The full dissertation is available in both pdf format and postscript format .
My dissertation defense slides are available in powerpoint format .
My thesis proposal is available in pdf format .
The JThread package is available in a separate page .

Go back to Wei's home page.