CiAO (CiAO is Aspect-Oriented)
Aim of the CiAO project is the
development of a fine-grained operating system product-line for embedded and deeply
embedded systems. By using aspect-oriented programming techniques (namely AspectC++), a so far unreached level of granularity
and variability should be achieved.
Motivation
Operating systems for embedded and deeply embedded devices have to scale with a very
broad variety of requirements, coming both from the hardware and application level.
Different hardware architectures and configurations have to be supported, while
resources (in terms of memory, power consumption and CPU speed) are often strictly
constrained. Applications typically have very different requirements to the services
and strategies implemented by the underlying OS.This leads to a product-line
approach, where the variability and commonality among OS family members is expressed
by feature models. A variant management tool (namely pure::variants
by pure-systems GmbH)
is used to extract and statically configure the concrete
operating system based on an application-specific feature selection.
The overall quality of an OS product-line depends mostly on the offered levels of
variability and granularity. A crucial point is the mapping of all selectable and
configurable features to their corresponding, well encapsulated implementation
components. Especially the encapsulation of non-functional properties is often
limited, due to their crosscutting character. Fundamental system policies, like
synchronization or activation points for the scheduler, have typically to be
reflected in many points of the OS component code. This makes it almost impossible to
implement them as independent encapsulated entities and thereby restricts variability
and granularity. Aspect-oriented programming (AOP) has proven to be a promising way
to deal with crosscutting concerns. It allows encapsulating the implementations of
crosscutting concerns in entities called as-pects, which are then woven into the OS
component code (e.g. classes) at build time. A well-directed application of AOP
principles in the development of OS product lines can therefore lead to a higher
variability and granularity of the selectable OS features, as their implementations
can not only be encapsulated by classes, but also by aspects. This potentially
results in very flexible systems that offer configurability of even fundamental
architectural properties.
Major Goals and Questions
Major goal of the CiAO project
is the evaluation of AOP in the context of: operating systems, software
product-lines, and the domain of deeply embedded devices.
-
Is AOP suitable for the goal of higher variability and granularity in system
software product lines?
-
What are the costs (in terms of system resources such as memory or CPU speed)
induced by AOP in this context? Is AOP affordable in a domain that is strongly
driven by hardware cost pressure?
-
What are the principal limitations of configurability? Is it even possible to
implement fundamental architectural properties of operating systems, such as
isolation, interaction, or synchronization strategies in a configurable way?
Related Projects
- KESO is a Java run-time environment providing software-based memory protection, targeting deeply embedded systems. By deploying KESO on CiAO, configurable hardware-based and software-based memory protection techniques are to be evaluated thoroughly.
- The I4Copter project is to be used as a demonstrator for the CiAO OS platform.
Supporters
CiAO is partly supported by
the DFG (German Research Council) under grant no. SCHR
603/4.