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 method builds the conceptual foundations of this course, while the EPOS System yields a platform for the practical exercises carried along the course.

Requisites

The formal requisite for this course is Operating System I. However, basic knowledge about Computer Architecture, Object-Oriented Design and Programming, and the C++ Programming Language is also desirable.

Program (72 hours)

Topic Notes Hours
1 - Introduction
1.1 - Motivation
PDF HTML 2
1.2 - Computer Architecture Overview
PDF 2
2 - Operating System Design
2.1 - Operating System Boot
PDF 4
2.2 - Operating System Initialization
PDF 4
2.3 - Thread joining
HTML HTML 4
3 - Operating Systems Implementation
3.1 - Thread synchronization
HTML HTML 4
3.2 - Memory management
HTML HTML 4
3.3 - Scheduling and timing
HTML HTML HTML 4
4 - Case studies
4.1 - Special Topic: Aspect-Oriented Programming
PDF SRC 2
4.2 - Special Topic: Static Metaprogramming
PDF SRC 2
4 - Development of an operating system component and related aspects 36
5 - Discussion 4

Evaluation

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 of results.

Exercises

  1. E1: idle-waiting thread joining
  2. E2: idle-waiting thread synchronization
  3. E3: system object destruction
  4. E4: idle thread
  5. E5: timing mechanisms

Literature

  1. Thomas Anderson, The Case for Application-Specific Operating Systems, in Proceedings of the Third Workshop on Workstation Operating Systems, pages 92-94, 1992.
  2. Antônio Augusto Fröhlich, Application-Oriented Operating Systems, GMD - Forschungszentrum Informationstechnik, 2001.
  3. Krysztof Czarnecki and Ulrich Eisenecker, Generative Programming: Methods, Tools, and Applications, Addison-Wesley, 2000.
  4. Maurice J. Bach, The Design of the UNIX Operating System, Prentice-Hall, 1987.
  5. Samuel J. Leffler, Marshall Kirk McKusick, and Michael J. Karels, The Desing and Implementation of The 4.3 BSD UNIX Operating System, Addison-Wesley, 1989.
  6. Robert Love, Linux Kernel Development, 3rd ed., Addison-Wesley, 2010.
  7. Abraham Silberschatz, Peter Galvin and Greg Gagne, Operating Systems Concepts, 8th ed., John Wiley and Sons, 2009.
  8. Andrew S. Tanenbaum and Albert S. Woodhull, Operating Systems Design and Implementation, 3rd ed., Prentice-Hall, 2006.
  9. Jerome H. Saltzer, M. Frans Kaashoek, Principles of Computer System Design: An Introduction, Morgan Kaufmann, 2009.
  10. Bjarne Stroustrup, The C++ Programming Language, Addison-Wesley, 2000.

Links

Editions