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 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]  Harold Ossher,et al.  Multi-Dimensional Separation of Concerns and the Hyperspace Approach , 2002 .

[2]  John K. Ousterhout,et al.  Tcl and the Tk Toolkit , 1994 .

[3]  Mary Shaw,et al.  An Introduction to Software Architecture , 1993, Advances in Software Engineering and Knowledge Engineering.

[4]  Calton Pu,et al.  Optimistic incremental specialization: streamlining a commercial operating system , 1995, SOSP.

[5]  Larry Wall,et al.  Programming Perl - covers Perl 5, 2nd Edition , 1996, A nutshell handbook.

[6]  Larry Wall,et al.  Programming Perl (2nd ed.) , 1996 .

[7]  D. L. Parnas,et al.  On the criteria to be used in decomposing systems into modules , 1972, Software Pioneers.

[8]  Dawson R. Engler,et al.  Checking system rules using system-specific, programmer-written compiler extensions , 2000, OSDI.

[9]  Cristina V. Lopes,et al.  Aspect-oriented programming , 1999, ECOOP Workshops.

[10]  Mary Shaw,et al.  Software architecture - perspectives on an emerging discipline , 1996 .

[11]  John Launchbury,et al.  Implicit parameters: dynamic scoping with static types , 2000, POPL '00.

[12]  Bedir Tekinerdogan,et al.  Solving the modeling problems of object-oriented languages by composing multiple aspects using composition filters , 1998 .

[13]  Cristina V. Lopes,et al.  Aspect-oriented programming , 1999, ECOOP Workshops.

[14]  Harold Ossher,et al.  Subject-Oriented Programming: Supporting Decentralized Development of Objects , 2002 .

[15]  Glenford J. Myers,et al.  Structured Design , 1999, IBM Syst. J..

[16]  Jerome H. Saltzer,et al.  End-to-end arguments in system design , 1984, TOCS.

[17]  Martin L. Griss Implementing Product-Line Features By Composing Component Aspects , 2000 .

[18]  William G. Griswold,et al.  An Overview of AspectJ , 2001, ECOOP.

[19]  William G. Griswold,et al.  Getting started with ASPECTJ , 2001, CACM.

[20]  Harold Ossher,et al.  Hyper/J/sup TM/: multi-dimensional separation of concerns for Java/sup TM/ , 2000, Proceedings of the 2000 International Conference on Software Engineering. ICSE 2000 the New Millennium.

[21]  Edsger W. Dijkstra,et al.  The structure of the “THE”-multiprogramming system , 1968, CACM.

[22]  Karl Lieberherr,et al.  Adaptive Object-Oriented Software: The Demeter Method with Propagation Patterns , 1995 .

[23]  Brian Foote,et al.  Designing Reusable Classes , 2001 .

[24]  Meir M. Lehman,et al.  Program evolution: processes of software change , 1985 .

[25]  Robert J. Walker,et al.  Implicit context: easing software evolution and reuse , 2000, SIGSOFT '00/FSE-8.

[26]  W. Vogels File system usage in Windows NT 4.0 , 2000, OPSR.

[27]  Larry L. Peterson,et al.  Scout: a communications-oriented operating system , 1995, Proceedings 5th Workshop on Hot Topics in Operating Systems (HotOS-V).