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.
The course is organized in three exercises, covering compiler construction and interprocess communication. Starting with a scanner, the students consolidate their skills in handling large dynamic data structures, pointers, and doing low level IO. The second exercise focuses on the development of a recursive descendent parser and a short introduction to semantic analysis and code generation. The third exercise is an introduction to the field of interprocess communication. Within the exercise, elementary techniques and concepts are trained:
Slides and textbooks:
Attended teamwork and three lectures.