Lectures: Friday, 9:00, Zoom (Petr Tůma)
Labs:
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: nswi004@d3s.mff.cuni.cz
This course was replaced by NSWI200 (starting 2023/24).
News
Assignment 06 was published via GitLab.
Assignment 05 was published via GitLab.
Assignment 04 was published via GitLab.
Next labs (Friday 20th and Wednesday 25th) we will demonstrate mutexes implementation.
Assignment 03 was published via GitLab. Note that kernel_main
was changed
and no test will pass until you implement rudimentary support for threads.
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 teachers-nswi004@d3s.mff.cuni.cz
. 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).
Show all...
About
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.
Assignments
All assignment deadlines are in AoE. The deadlines for lecture quizzes are always Thursday noon local time.
Date | Title | Downloads |
---|---|---|
2020-09-28 - 2020-10-12 | Assignment 00: Printf and lists | GitLab repository a00 |
2020-10-05 - 2020-10-19 | Assignment 01: Introduction to kernel | GitLab repository a01 |
2020-10-20 - 2020-11-09 | Assignment 02: Heap | GitLab repository team |
2020-11-03 - 2020-11-23 | Assignment 03: Threads and cooperative scheduler | GitLab repository team |
2020-11-18 - 2020-12-07 | Assignment 04: Preemptive scheduler and synchronization | GitLab repository team |
2020-12-01 - 2020-12-21 | Assignment 05: Virtual memory management | GitLab repository team |
2020-12-16 - 2021-01-18 | Assignment 06: Disk driver | GitLab repository team |
Schedule
Support
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 teachers-nswi004@d3s.mff.cuni.cz
or contact either
Petr Tůma, Vojtěch Horký
or Lubomír Bulej directly.
- Lecture slides (PDF)
- Lecture notes (PDF)
- Additional slides
Resources
Books
Our primary course book is Arpaci-Dusseau et al.: Operating Systems: Three Easy Pieces (Version 1.00). If you need more information, there are other excellent books that can help you study. Favorites include:
- Anderson et al.: Operating Systems Principles and Practice
- Silberschatz et al.: Operating System Concepts
- Tanenbaum et al.: Modern Operating Systems
None of these books follows the course exactly, but all contain enough material to suffice as a learning material.
A good book on the computer systems background is Patterson et al.: Computer Organization and Design.
Manuals
- 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)
- GNU/Linux
- Fedora Copr: msim-git (
dnf copr enable d3s/teaching && dnf install msim-git
) - Arch Linux PKGBUILD: msim-1.3.8.5-1.aur, msim-git.aur
- Fedora Copr: msim-git (
If you want to run MSIM on Windows or on other platform, you need to compile it from sources.