Practical Course - Operating Systems - L4-Microkernels (IN0012, IN2106, IN4258)
Lecturer (assistant) | |
---|---|
Number | 0000002780 |
Type | Practical course |
Duration | 6 SWS |
Term | Wintersemester 2019/20 |
Language of instruction | English |
Position within curricula | See TUMonline |
Dates | See TUMonline |
Dates
Admission information
Objectives
- Development of embedded systems
- Better understanding of the components utilized in modern operating systems (OS)
- OS Porting
- Driver development
- Teamwork in projects
Description
This course introduces the basic tasks of a modern operating system. These tasks target aspects like system calls, device drivers, I/O management, processing and memory management. The mentioned categories base the central theme of the course.
The first part of the course will cover the basic aspects required for embedded computing, providing an introduction to fundamental hardware aspects like (ARM) architecture, ISA, system on a chip (SoC), single-board computer (SBC) and emulation environments (e.g. QEMU).
The second part will address the basics regarding bootstrapping and interacting with the given hardware platform, providing the foundation for operating system utilization. Relevant aspects include working with technical reference manuals (TRMs) as well as the utilization of firmware and bootloader components.
The third part will introduce a specific type of operating system on top of such an embedded hardware platform: the L4-microkernel family, especially focusing on the two most modern derivates L4 Fiasco.OC [1] and seL4 [2]. After the introduction and the overview of the differences to the original L4 design principles, the most important operating system concepts will be addressed. Inter-process communication as well as the core concept of capabilities will be presented in more detail in the following.
The last part of this course will then cover the the Genode Operating System Framework [3], in order to provide a suitable userland environment for the kernels mentioned above. This part will serve as detailed introduction about the core concepts of Genode and will provide an overview about its basic software modules. Additional topics covered will target Genode application and driver development.
The practical part of this course will focus on the aspect of porting a L4-based operating system to an embedded hardware platform (represented by a SBC, e.g. a Raspberry Pi). Relevant porting tasks will address in general SoC (e.g. CPU), timer and I/O communication like UART, USB and NIC. Besides the kernel, also the userland will have to be addressed (e.g. driver porting/development).
Prerequisites
- IN0009 or IN0034 or comparable courses with focus on operating systems
- Be proficient in the C or C++ programming language
- Be familiar with basic Linux (Unix) utilities such as ls, rm, grep, tar
- Be comfortable using any of the available text editors (e.g. emacs, vi, atom)
- Experience with any major Linux distribution is helpful but not strictly required
Examination
- Individual Part
-- Lightning Talks (Paper Review)
-- Final Report
- Team Part
-- Source Code
-- Documentation
-- Final Presentation
Recommended literature
[1] L4 Fiasco.OC: https://os.inf.tu-dresden.de/fiasco/ [2] seL4: https://sel4.systems/ [3] Genode Book: https://genode.org/documentation/genode-foundations-18-05.pdf - D. Bovet, M. Cesati: Understanding the Linux kernel 3rd Edition, O'Reilly 2006 - J. Corbert, A. Rubini, G Kroah-Hartman: Linux Device Drivers 3rd Edition, O'Reilly 2009