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.