Having successfully completed the module, students will be able to understand and explain the functions and structures of modern operating systems and how they are embedded in various computer architectures. They will be able to use system-related knowledge to design, develop and implement performant software solutions. In addition, they are able to organize, collaborate on and successfully complete complex programming tasks in a team. They have further developed their technical, social and personal skills as well as their communication skills and self-management.
The course "System Software" covers the fundamental tasks and functionalities of modern operating systems and enables students to apply these techniques independently and systematically in teams to solve system-level development tasks. The course is divided into four main thematic areas:
Fundamentals, Process Management, and Scheduling:
File Systems and Persistence:
Memory Virtualization:
Concurrency: Processes and Threads:
In addition, the specific challenges of each topic are discussed, along with common strategies for addressing them. Practical exercises complement the lectures to facilitate the application of theoretical concepts to realistic scenarios.
Slides, videos, textbooks, and other literature:
The lecture will take the form of seminars with exercises.
In the lab, small groups (typically three people) work on multiple tasks related to system-level programming in C and C++.
The goal is to familiarize students with the interfaces to the Linux operating system and learn how to practically utilize the functionalities they provide.
Topics covered include file systems, processes, communication, memory management, linked data structures, and bit manipulation.
The specific tasks for each exercise vary, encompassing, e.g., accelerating (parallelizing) an existing ray tracer using multiple processes, processing image files to produce mosaics, developing a broadcast server for song lyrics, or compressing image data using run-length encoding.
The implementations in C and C++ deepen students' skills in working with system libraries, dynamic data structures, bit operations, memory management, and pointers. In addition to the main problem, each task includes several preliminary smaller exercises that guide students toward the final solution.
Introductory slides on the topic of each exercise.
In-depth information on the exercise sheets.