Abstract
Many important parallel applications require multiple flows of
control to run on a single processor. In this paper, we present a
study of four flow-of-control mechanisms: processes, kernel
threads, user-level threads and event-driven objects. Through
experiments, we demonstrate the practical performance and
limitations of these techniques on a variety of platforms. We also
examine migration of these flows-of-control with focus on thread
migration, which is critical for application-independent dynamic
load balancing in parallel computing applications. Thread
migration, however, is challenging due to the complexity of both
user and system state involved. In this paper, we present several
techniques to support migratable threads and compare the
performance of these techniques.