Semester: winter 2020/21
Lectures: Friday, 9:00, Zoom (Petr Tůma)
  Wednesday, 14:00, Zoom (consultations, primarily in English) (Lubomír BulejVojtěch Horký)
  Friday, 10:40, Zoom (consultations, primarily in Czech) (Vojtěch HorkýLubomír Bulej)
Page in SIS: NSWI004
Grading: Graded credit
Mailing list:


Assignment 02 was published via GitLab. Please, check that all team members have access to it. If you do not have a team yet, please, form it as soon as possible.

Please, send your questions/complaints about grading to Thank you.

Please, form your teams.

Assignment 01 was published via GitLab.

If you enrolled later, please, ensure that you are subscribed to the mailing-list.

If you login to your Zoom account via (Sign in with before joining the lecture/lab, you will not be put into the Waiting room. Note that Zoom links for the lectures and labs are in your grading repository.

Assignment 00 was published via GitLab.

Zoom links for lectures and labs were sent over e-mail.

Enrolled students should have access to their repository.

Please, ensure your MFF GitLab account is active (use your SIS credentials).

Show all...


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.


All assignment deadlines are in AoE. The deadlines for lecture quizzes are always Thursday noon local time.

Date Title Downloads
2019-09-28 - 2019-10-12 Assignment 00: Printf and lists GitLab repository a00
2019-10-05 - 2019-10-19 Assignment 01: Introduction to kernel GitLab repository a01
2019-10-20 - 2020-11-09 Assignment 02: Heap GitLab repository team


Alternative links: HTML, iCal


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, use or contact either Petr Tůma, Vojtěch Horký or Lubomír Bulej directly.



  • Thomas Anderson, Michael Dahlin: Operating Systems, Principles and Practice, 2nd edition, 2014
  • Andrew S. Tanenbaum, Herbert Bos: Modern Operating Systems, 4th edition, 2015
  • David A. Patterson, John L. Hennessy: Computer Organization and Design, The Hardware / Software Interface, 5th edition, 2014


MIPS Cross Compiler Toolchain

The cross-compiler toolchain (and MSIM too) is available in the Rotunda lab.

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.

You can also compile/run your code inside Docker/Podman, using the same environment as in GitLab CI. If the following command is executed from your clone of a00, it runs both the basic and extended tests. Note that it mounts the current directory in read-write mode and thus object files and executables are stored alongside your source files.

podman run \
    --rm \
    --memory=256m --memory-swap=512m \
    --mount=type=bind,src=.,destination=/root/nswi004,ro=false,bind-propagation=shared \
    mffd3s/nswi004-base:latest \
    /bin/bash -c 'cd /root/nswi004; make distclean; make && make check check2'

MSIM MIPS R4000 Simulator

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