Dynamic Program Monitoring and Transformation
Using the OMOS Object Server
Douglas B. Orr, Robert W. Mecklenburg, Peter J. Hoogenboom and Jay Lepreau
Department of Computer Science
University of Utah, Salt Lake City, UT 84112
In traditional monolithic operating systems the constraints of working
within the kernel have limited the sophistication of the schemes used
to manage executable program images. By implementing an executable
image loader as a persistent user-space program, we can extend system
program loading capabilities. In this paper we present OMOS, an
Object/Meta-Object Server which provides program loading facilities as
a special case of generic object instantiation. We discuss the
architecture of OMOS, the extensible nature of that architecture, and
its transparent application to the problem of dynamic program monitoring
and optimization, in particular, code reordering to improve locality of
reference. We describe five reordering strategies, one using the
static call graph and four based on analysis of the dynamic call graph.
One large application was studied under varied amounts of available
memory. The best dynamic strategy gave speed improvements ranging from
23 to 66%, while the static method gave speedups ranging from 19 to 52%.
Full paper appears in the book
The Interaction of Compilation Technology and Computer Architecture,
edited by Lilja and Bird.
Last modified on Tue Aug 8 1995.