ABSTRACT
Layered architecture in operating system code is often compromised by execution path-specific customizations such as prefetching, page replacement and scheduling strategies. Path-specific customizations are difficult to modularize in a layered architecture because they involve dynamic context passing and layer violations. Effectively they are vertically integrated slices through the layers. An initial experiment using an aspect-oriented programming language to refactor prefetching in the FreeBSD operating system kernal shows significant benefits, including easy (un)pluggability of prefetching modes, independent development of prefetching modes, and overall improved comprehensibility.
- 1.M. Aksit and B. Tekinerdogan. Solving the modeling problems of object-oriented languages by composing multiple aspects using composition filters. In OOPSLA AOP'98 workshop position paper, 1998.Google Scholar
- 2.E.W. Dijkstra. The structure of THE-multiprogramming system. Communications of the ACM, 11(5), 1968. Google ScholarDigital Library
- 3.Dawson Engler, Benjamin Chelf, Andy Chou, and Seth Hallem. Checking system rules using system-specific, programmer-written compiler extensions. In Proceedings of the Symposium on Operating Systems Design and Implementation (OSDI), 2000. Google ScholarDigital Library
- 4.Martin Fowler. Addison-Wesley Object Technology Series, 1999.Google Scholar
- 5.David Garlan and Mary Shaw. An introduction to software architecture. Technical report, CMU, 1994. CS-94-166. Google ScholarDigital Library
- 6.Martin Griss. Implementing product-line features by composing component aspects. In Proceedings of First International Software Product Line Conference, August 2000. Google ScholarDigital Library
- 7.R. Johnson and B. Foote. Designing reusable classes. Journal of Object-Oriented Programming, 1, June 1998.Google Scholar
- 8.Gregor Kiczales, Erik Hilsdale, Jim Hugunin, Mik Kersten, Jeffrey Palm, and William G. Griswold. AspectJ home page. www.aspectj.org.Google Scholar
- 9.Gregor Kiczales, Erik Hilsdale, Jim Hugunin, Mik Kersten, Jeffrey Palm, and William G. Griswold. AspectJ primer. www.aspectj.org/doc/primer/index.html.Google Scholar
- 10.Gregor Kiczales, Erik Hilsdale, Jim Hugunin, Mik Kersten, Jeffrey Palm, and William G. Griswold. An overview of AspectJ. In Proceedings of the European Conference on Object-Oriented Programming (ECOOP), June 2001. Google ScholarDigital Library
- 11.Gregor Kiczales, John Lamping, Anurag Mendhekar, Chris Maeda, Cristina Videira Lopes, Jean-Marc Loingtier, and John Irwin. Aspect-oriented programming. In European Conference on Object-Oriented Programming (ECOOP), 1997.Google ScholarCross Ref
- 12.L.L. Lehman and L.A. Belady. Program evolution. APIC Studies in Data Processing, (27), 1985.Google Scholar
- 13.J. Lewis, M. Shields, E. Meijer, and J. Launchbury. Implicit parameters: Dynamic scoping with static types. In Symposium on Principles of Programming Languages, January 2000. Google ScholarDigital Library
- 14.K.J. Lieberherr. Adaptive Object-Oriented Software: the Demeter Method with Propagation Patterns. Boston: PWS Publishing Company, 1996. Google ScholarDigital Library
- 15.Allen B Montz, David Mosberger, Sean W. O'Malley, Larry L. Peterson, Todd A. Proebstign, and John H. Hartman. Scout: A communications-oriented operating system. Technical report, University of Arizona, 1994. TR 94-20.Google Scholar
- 16.H. Ossher and P. Tarr. Multi-dimensional separation of concerns and the Hyperspace approach. In Proceedings of the Symposium on Software Architectures and Component Technology: The State of the Art in Software Development, 2000. Google ScholarDigital Library
- 17.Harold Ossher, William Harrison, Frank Budinsky, and Ian Simmonds. Subject-oriented programming: Supporting decentralized development of objects. In Proceedings of the 7th IBM Conference on Object-Oriented Technology, 1994.Google Scholar
- 18.J. Ousterhout. Tcl and the Tk Toolkit. Addison-Wesley, 1994. Google ScholarDigital Library
- 19.D.L. Parnas. On the criteria to be used in decomposing systems into modules. Communications of the ACM, 15(12), 1972. Google ScholarDigital Library
- 20.Calton Pu, Tito Autrey, Andrew Black, Charles Consel, Crispin Cowan, Jon Inouye, Lakshmi Kethana, Jonathan Walpole, and Ke Zhang. Optimistic incremental specialization: Streamlining a commercial operating system. In Proceedings of the 15th ACM Symposium on Operating System Principles (SOSP), 1995. Google ScholarDigital Library
- 21.D.P. Reed, J.H. Saltzer, and D.D. Clark. Active networking and end-to-end arguments. In IEEE Network, June 1998.Google Scholar
- 22.J.H. Saltzer, D.P. Reed, and D.D. Clark. End-to-end arguments in system design. In ACM Transactions on Computer Systems (TOCS), November 1984. Google ScholarDigital Library
- 23.Mary Shaw and David Garlan. Software Architecture: Perspectives on an Emerging Discipline. Prentice Hall, 1996. Google ScholarDigital Library
- 24.W.P. Stevens, G.J. Meyers, and L.L. Constantine. Structured design. IBM Systems Journal, 13, 1974.Google Scholar
- 25.Werner Vogels. File system usage in Windows NT 4.0. In Proceedings of the 17th ACM Symposium on Operating System Principles (SOSP), 1999. Google ScholarDigital Library
- 26.Rob Walker and Gail Murphy. Implicit context: Easing software evolution and reuse. In Proceedings of the Proceedings of the ACM SIGSOFT Eighth International Symposium on the Foundations of Software Engineering (FSE-8), November 2000. Google ScholarDigital Library
- 27.L. Wall, T. Christiansen, and R. Schwartz. Programming Perl.O'Reilly and Associates, 2nd edition, 1996. Google ScholarDigital Library
Index Terms
- Using aspectC to improve the modularity of path-specific customization in operating system code
Recommendations
Using aspectC to improve the modularity of path-specific customization in operating system code
Layered architecture in operating system code is often compromised by execution path-specific customizations such as prefetching, page replacement and scheduling strategies. Path-specific customizations are difficult to modularize in a layered ...
Modularity analysis of use case implementations
A component-based decomposition can result in implementations having use cases code tangled with other concerns and scattered across components. Modularity mechanisms such as aspects, mixins, and virtual classes have been proposed to address this kind ...
Comments