Lectures: Tuesday, 9:00-10:30, S4 (Petr Tůma)
Labs: Wednesday, 12:20-13:50, SU2 (biweekly, consult schedule below) (Vojtěch Horký)
Page in SIS: NSWI004
Grading: Graded credit


Behind every application software, there is an operating system. It is responsible for providing the applications with safe access to the computer hardware, and for implementing standard interfaces and abstractions such as files, windows, or processes. This course provides opportunity to learn about the operating system internals through standard lectures and practical assignments, where the students implement their own working operating system kernel.


Date Content Materials
2019-10-01 Operating Systems Architecture - Process Memory - Code Layout Review: Anderson & Dahlin: 1.1, 2.1, 2.2, Tanenbaum & Bos: 1.1, 1.7, 3.1, 3.2, Patterson & Hennessy: 2.12.
After class: Self assessment
2019-10-08 Process Memory - Code Layout - Executable Formats - Stack Review: Anderson & Dahlin: none, Tanenbaum & Bos: 3.1, 3.2, Patterson & Hennessy: 2.13.
After class: Self assessment
2019-10-15 Process Memory - Heap - Garbage Collection Review: Anderson & Dahlin: 2.1, Tanenbaum & Bos: 10.4, Patterson & Hennessy: 2.8.
After class: Self assessment
2019-10-22 Processes and Threads - Process Context - Context Switching - Scheduling Review: Anderson & Dahlin: 4.4, 4.5, 4.6, 7.1, Tanenbaum & Bos: 2.1, 2.2, 2.4, Patterson & Hennessy: none.
After class: Learning approach quiz
2019-10-29 Synchronization - Race Conditions - Synchronization Tools Review: Anderson & Dahlin: 5.1, 5.2, 5.3, Tanenbaum & Bos: 2.3, Patterson & Hennessy: 2.11.
After class: Self assessment
2019-11-05 Synchronization - Memory Models - Non Blocking Synchronization


Date Title Downloads
2019-10-02, 2019-10-07 Optional. Attend if you need individual consultations.
2019-10-15, 2019-10-23 Canceled.
2019-10-30, 2019-11-06 Presentations (assignments 00 and 01).
2019-11-13, 2019-11-20 Optional. Attend if you need individual consultations.


Date Title Downloads
2019-10-01 - 2019-10-15 Assignment 00: Language Introduction Assigned via GitLab
2019-10-08 - 2019-10-24 Assignment 01: Introduction to the Kernel Assigned via GitLab
2019-10-23 - 2019-11-12 Assignment 02: Heap for the Kernel Assigned via GitLab
2019-11-07 - 2019-11-26 Assignment 03: Threads and Scheduling Assigned via GitLab


We encourage you to use our mailing list as the primary means of communication, both between the lecturers and the students, and among the students themselves. There are also list archives. For subject matter where the mailing list is not suitable, contact either Petr Tůma or Vojtěch Horký.




MIPS Cross Compiler Toolchain

The cross-compiler toolchain (and MSIM too) is available either in the Rotunda lab or on machine lab.d3s.mff.cuni.cz (SSH port 22004) where each student should have access.

If you want to develop on your own machine, we recommend to use the precompiled packages for Fedora that are available via COPR.

dnf copr enable d3s/teaching
dnf install mff-nswi004-binutils-mipsel-linux-gnu mff-nswi004-gcc-mipsel-linux-gnu
dnf install mff-nswi004-gdb-mipsel-linux-gnu

For other distributions, we offer only a shell scripts to build the whole toolchain from scratch:

We do not support Windows: if you want to develop in Windows, we recommend to install Fedora in VirtualBox and use file-sharing and PuTTy to compile in the VM but develop on Windows.

Note that GitLab runners that run tests on your solutions use Docker images based on Fedora with the following packages.

MSIM MIPS R4000 Simulator

If you want to run MSIM on Windows or on other platform, you need to compile it from sources.