Supporting the Design of Adaptable Operating Systems Using Aspect-Oriented Frameworks

Supporting separation of concerns in the design of operating systems can provide a number of benefits such as reusability, extensibility and reconfigurability. However, in order to maximize these benefits, such a support is difficult to accomplish. Some aspects in operating systems such as synchronization, scheduling, and fault tolerance cut across the basic functionalities of the system. In every layer these aspects might need to be modified. By separating the different aspects of operating system in every layer, we can provide a better generic design model of operating systems. Aspect-Oriented Programming is a paradigm proposal that aims at separating components and aspects from the early stages of the software life cycle, and combining them together at the implementation phase. However, aspect-oriented software engineering can be better supported if the underlying operating system is built based on this approach as well. Treating aspects, components, and layers in a two dimensional model is not adequate. Two-dimensional models lead to inflexibility, limit the possibilities for reuse, and make it hard to understand and modify. In this paper we discuss a language-neutral aspectoriented design framework that can simplify system design by expressing it at a higher level of abstraction. Our work concentrates on how to maximize separation of aspects, components, and layers from each other. Our goal is to achieve a better design model for operating systems in terms of flexibility and reuse. Keywords Adaptability, Aspect-Oriented Programming, Framework, Reusability, Operating Systems. 1. Operating System Design Issues The commercialization of operating systems has resulted in their design gaining more importance. Operating systems are constantly extended for improvements as well as to support new features and hardware. In order to support this, reusability and adaptability [8] of system software during design is crucial. Extensibility provides the capability to either change current features or support new features. Reliability is the ability of the system to providing the correct service over a period of time. Stability is the capability of the system maintaining the correct service in every same state Operating system design issues can be divided into hardware-oriented and software-oriented. Hardware–oriented issues include physical networks and communications protocol design, hardware measures, physical clock synchronization, storage, and system components. On the other hand, software-oriented issues include distributed algorithms, naming, resource allocation, distributed operating systems, system integration, reliability, tools and languages, real-time systems and performance measurement. The decisions involved in the design and implementation of operating systems address such issues as stability, reusability, adaptability, and reconfigurability. 2. The Problem: Cross-Cutting of Design Issues The principle of separation of concerns lies at the heart of software development as it introduces a number of benefits, originally addressed by [19, 7]. These include better understanding, modifiability, extensibility, debugging of the system, and better reuse of the concerns. Although these benefits have been well established, there is still no universally accepted methodology in order to guide a programmer to achieve it. The system designer has to consider how a number of aspects in the system can be captured, and how a separation of concerns [19, 12] will be addressed. Functional decomposition has so far been achieved along one dimension, based on the underlying paradigm. In OOP, this dimension is a comConcurrent Programming Research Group Computer Science Department Illinois Institute of Technology Chicago, IL, U.S.A.