Lectures: Friday, 9:00, Zoom (Petr Tůma)
Wednesday, 14:00, Zoom (consultations, primarily in English) (Lubomír Bulej, Vojtě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: firstname.lastname@example.org
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
email@example.com. 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 cesnet.zoom.us (Sign in with eduID.cz) 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).
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.
|2019-09-28 - 2019-10-12||Assignment 00: Printf and lists||GitLab repository
|2019-10-05 - 2019-10-19||Assignment 01: Introduction to kernel||GitLab repository
|2019-10-20 - 2020-11-09||Assignment 02: Heap||GitLab repository
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,
firstname.lastname@example.org or contact either
Petr Tůma, Vojtěch Horký
or Lubomír Bulej directly.
- Lecture slides (PDF)
- Lecture notes (PDF)
- Additional slides
- 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 R4000 Processor Manuals
- MIPS R4000 Microprocessor User’s Manual, 2nd edition, 1994
- Additional MIPS Processor Manuals (not necessarily limited to MIPS R4000)
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:
- toolchain-dynamic.sh (with dynamically linked binaries)
- toolchain-static.sh (with statically linked binaries)
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
- Git repository
- Reference Manual
- Tutorial (incomplete)
If you want to run MSIM on Windows or on other platform, you need to compile it from sources.