Dedicated Operating Systems
Dedicated Operating Systems is an advanced course on
Operating Systems offered within the context of our Computer
Science Degree Program. It is a practical course that targets the
engineering of dedicated operating systems as arrangements of
customizable software components. The Application-driven Embedded
System Design methodology lays the conceptual foundations of
this course, while the EPOS
System yields a platform for the practical exercises carried
along the course.
The formal requisite for this course is Operating
System I. However, basic knowledge about Object-Oriented Design
and Programming and about the C++ Programming Language is also
Program (72 hours)
|1 - Introduction
|2 - Operating Systems Engineering
2.1 - Fundamentals
2.2 - Aspect-oriented Programming
2.3 - Static Metaprogramming
2.4 - Application Driven Embedded System Design
2.5 - Case Study: EPOS Domain Engineering
|3 - Operating Systems Implementation
3.1 - System programming with C++
3.2 - Case Study: EPOS Implementation
|4 - Development of an operating system component and related aspects
|5 - Discussion
|6 - Optimization topics
Students will have their skills to engineer an operating system
evaluated through practical work that consists in designing and
implementing an operating system component utilizing the software
engineering techniques discussed during the course. This will be
evaluated in three phases: design, implementation, and presentation
The following exercises have been devised as an introduction to
OS kernel development. They are based on a didactic version
of EPOS. For the exercises bellow, this version has been striped down
to an even simpler version that will be incrementally enriched step by step.
branch will be used on this track up to a point in which the differences
between the didactic version of EPOS and OpenEPOS will be basically added
functionality. Before starting, you might want to read OpenEPOS
Documentation (which largely applies to the didactic version
too) or this specific Quick Start
- E1: blocking thread synchronization
- E2: blocking thread joining
- E3: idle thread
- E4: timing
- E5: system object destruction
- E6: multiple, specialized heaps
- E7: scheduler isolation
- E8: real-time task scheduling
- E9: on OS software architecture
- Thomas Anderson,
The Case for Application-Specific Operating Systems,
in Proceedings of the Third Workshop on Workstation Operating Systems, pages 92-94, 1992.
- Maurice J. Bach,
The Design of the UNIX Operating System,
- Moshe Bar,
Osborne McGraw-Hill, 2000.
- Danilo Beuche at al.,
The PURE Family of Object-Oriented Operating Systems for Deeply Embedded Systems,
in Proceedings of the 2nd IEEE International Symposium on Object-Oriented Real-Time Distributed Computing, 1999.
- Roy H. Campbell, Gary M. Johnston and Vincent F. Russo,
Choices (Class Hierarchical Open Interface for Custom Embedded Systems),
Operating Systems Review, 21(3):9-17, 1987.
- Krysztof Czarnecki and Ulrich Eisenecker,
Generative Programming: Methods, Tools, and Applications,
- Dawson R. Engler, M. Frans Kaashoek, James O'Toole,
Exokernel: An Operating System Architecture for Application-level Resource Management,
in Proceedings of the Fifteenth ACM Symposium on Operating Systems Principles, pages 251-266, 1995.
- Bryan Ford at al.,
The Flux OS Toolkit: Reusable Components for OS Implementation,
in Proceedings of the Sixth Workshop on Hot Topics in Operating Systems, pages 14-19, 1997.
- Antônio Augusto Fröhlich,
Application-Oriented Operating Systems,
GMD - Forschungszentrum Informationstechnik, 2001.
- Samuel J. Leffler, Marshall Kirk McKusick, and Michael J. Karels,
The Desing and Implementation of The 4.3 BSD UNIX Operating System,
- David Lorge Parnas,
On the Design and Development of Program Families,
IEEE Transactions on Software Engineering, SE-2(1):1-9, 1976.
- Abraham Silberschatz, Peter Galvin and James Peterson,
Operating Systems Concepts,
5th ed., John Wiley and Sons, 1998.
- Wolfgang Schröder-Preikschat,
The Logical Design of Parallel Operating Systems,
- Bjarne Stroustrup,
The C++ Programming Language,
- Andrew S. Tanenbaum,
Modern Operating Systems,