Main Content
Operating Systems
In this module, students will learn the basics of operating system design and programming. We will focus on UNIX operating systems in general, and Linux in particular.
The lecture will contain the following content:
- Hardware Basic
- Process/Thread Management
- Synchronization
- Scheduling
- Deadlocks
- Memory Management
- I/O Management
- File Systems
- Security & Protection
Furthermore, the module will contain both a theoretical component, as well as a practical lab, wherein students will implement the learned concepts as part of a custom kernel for the Raspberry Pi.
Prerequisites
There are no formal requirements for this course. We advise students to complete the following courses before this one:
- Technical Computer Science
- System Software and Computer Communication
- Object-oriented Programming
- Algorithms and Data Structures
The practical component will require programming in C. We will offer a crash-course for students who have not previously programmed in C.
Some familiarity with UNIX operating systems (Linux, BSD, Mac OS) and command-line interfaces (bash, etc) would be beneficial.
Recommended reading
- Andrew Tanenbaum, Herbert Bos: Modern Operating Systems, Pearson 2014.
- Abraham Silberschatz, Greg Gagne, Peter B. Galvin: Operating System Concepts, Wiley 2018
- William Stallings: Operating Systems: Internals and Design Principles, Pearson 2018
- Jonathan Corbet, Alessandro Rubini, Greg Kroah-Hartman: Linux Device Drivers, O'Reilly 2005
Teaching during COVID
We are currently planning to for both the lecture and lab to take place in person rather than online.
In order to ensure the safety of all participants, students will be required to show proof of vaccination, recovery, or a negative COVID test ("3G Regel").
At time of writing, the university requires all persons to wear a medical-grade mask while inside a building.