Abstract
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%.1
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Preview
Unable to display preview. Download preview PDF.
References
Mike Accetta, Robert Baron, William Bolosky, David Golub, Richard Rashid, Avadis Tevanian, and Michael Young. Mach: A new kernel foundation for UNIX development. In Proceedings of the Summer 1986 USENIX Conference, pages 93–112, Atlanta, GA, June 9-13, 1986. Usenix Association.
J.Y. Babonneau, M.S. Achard, G. Morisset, and M.B. Mounajjed. Automatic and general solution to the adaptation of programs in a paging environment. In Proceedings of the Sixth ACM Symposium on Operating Systems Principles, pages 109–116, November 1971.
Gilad Bracha and Gary Lindstrom. Modularity meets inheritance. In Proc. International Conference on Computer Languages, pages 282–290, San Francisco, CA, April 20-23 1992. IEEE Computer Society.
J. Cargille and Miller B. P. Binary wrapping: A technique for instrumenting object code. ACM SIGPLAN Notices, 27(6), June 1992.
L. W. Comeau. A study of the effect of user program optimization in a paging system. In Proceedings of the ACM Symposium on Operating Systems Principles, Gatlinburg, Tenn., October 1967.
Digital Equipment Corporation, Maynard, MA. CHORD, CH0RD2, 1993.
Domenico Ferrari. Improving locality by critical working sets. Communications of the ACM, 17(l):614–620, November 1974.
Susan L. Graham, Peter B. Kessler, and Marshall K. McKusick. An execution profiler for modular programs. Software Practice and Experience, 13:671–685, 1983.
S. J. Hartley. Compile-time program restructuring in multiprogrammed virtual memory systems. IEEE Trans on Software Engineering, SE-14(11):1640–1644, 1988.
D. J. Hatfield and J. Gerald. Program restructuring for virtual memory. IBM Systems Journal, 10(3):168–192, 1971.
J. L. Hennessy and Thomas R. Gross. Postpass code optimization of pipeline constraints. ACM Transactions on Programming Languages and Systems, 5(3):342, July 1983.
Amir Kishon, Paul Hudak, and Charles Counsel. Monitoring semantics: A formal framework for specifying, implementing, and reasoning about execution monitors. In Proceedings of the SIGPLAN’ 91 Conference on Programming Language Design and Implementation, pages 338–352, June 1991.
James R. Laurus and Thomas Ball. Rewriting executable files to measure program behavior. Technical Report Technical Report 1083, The University of Wisconsin, March 1992.
T. C. Lowe. Automatic segmentation of cyclic program structures based on connectivity and processor timing. Communications of the ACM, 13(1):3–9, January 1970.
Scott McFarling. Program optimization for instruction caches. In Third International Conference on Architectural Support for Programming Languages and Operating Systems, pages 183–191, April 1989.
D. Orr and R. Mecklenburg. OMOS — an object server for program execution. In Proc. Second International Workshop on Object Orientation in Operating Systems, Paris, France, September 1992. IEEE Computer Society.
K. Pettis and R. C. Hansen. Profile guided code positioning. SIGPLAN Notices, 25(6):16–27, June 1990.
D. M. Ritchie and K. Thompson. The UNIX time-sharing system. The Bell System Technical Journal, 57(6):1905–1930, July/August 1978.
M. Rozier, V. Abrossimov, F. Armand, I. Boule, M. Gien, M. Guillemont, F. Herrmann, C. Kaiser, S. Langlois, P. Léonard, and W. Neuhauser. The Chorus distributed operating system. Computing Systems, l(4):287–338, December 1989.
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 1994 Springer Science+Business Media New York
About this chapter
Cite this chapter
Orr, D.B., Mecklenburg, R.W., Hoogenboom, P.J., Lepreau, J. (1994). Dynamic Program Monitoring and Transformation using the OMOS Object Server. In: Lilja, D.J., Bird, P.L. (eds) The Interaction of Compilation Technology and Computer Architecture. Springer, Boston, MA. https://doi.org/10.1007/978-1-4615-2684-1_6
Download citation
DOI: https://doi.org/10.1007/978-1-4615-2684-1_6
Publisher Name: Springer, Boston, MA
Print ISBN: 978-1-4613-6154-1
Online ISBN: 978-1-4615-2684-1
eBook Packages: Springer Book Archive