A. Implementation view of operating systems (1) Programming languages, runtimes and other implementation tools. The boot process and other features requiring non standard programming techniques. (2) Interfacing and interacting with hardware, firmware and applications. Backwards compatibility. Portability. Representing and abstracting hardware. (3) Debugging and performance tuning. Observability. Post mortem analysis. (4) Interaction with the memory hierarchy, advanced memory management. Modern persistent stores. Supporting direct access to persistent memory devices. (5) Implementation aspects of modern file systems. Storage management, redundancy, backup. (6) Inter-process communication. Synchronous vs asynchronous. Network protocols and interfaces. Near data computing. Support for distributed computing. (7) Advanced synchronization on shared data. Memory consistency models. Methods for effectively exploiting parallelism, highly parallel hardware. (8) Security and reliability. Vulnerabilities in hardware and software. Methods and mechanisms for improving security and reliability. High availability. Certification and verification. (9) Possible other topics: Virtualization, software virtual machines, resource management, service management, patching, real-time etc. B. Architectural view of operating systems (1) Motivation, criteria and requirements impacting system architecture. Build time and run time configuration. (2) Design principles. Relationship between hardware and system structure. Capabilities. Software components. (3) Architectural design patterns and typical representatives (monolithic kernel, microkernel, separation kernel, exokernel, unikernel, hypervisor, disaggregated kernel etc.). User space architecture. The topics are not necessarily discussed in the order listed. Specific content can also change to reflect current trends or accommodate guest lecturers from the industry.
The course extends the topics of the NSWI004 Operating Systems course. It offers a more detailed look at the advanced features and technical implementation of the existing operating systems, together with a broader look at the architectural diversity and requirements imposed on operating systems in various contexts.
The course can include invited lectures of industrial experts.