Abraham Silberschatz, Peter Baer Galvin, Greg Gagne: Operating System Concepts 10th edition, Wiley, 2018.
Note, that there is an International and a US version of the book. It should not be important if you use the US or the international version.
For the programming projects you need access to a computer or virtual machine running Linux. If you have a computer that runs Linux, you can use that. Other options are to use remote access to the IMADA virtual computer lab or to install a virtual machine on your own computer (running a potentially different operating system).
In the projects we are using User-Mode Linux. A guide on getting started with it can be found below.
For the projects you also need to get familiar with system calls in linux. Below is a guideline on implementing a trivial system call
Below is a (growing) overview of Linux tools (mostly command-line) used throughout the lectures.
cd to change the current directory, ls to list contents of current directory, mv to move a file, mkdir to create a new directory, rm to remove a file or directory.pushd <dir> works like cd, but it saves previous directory and we can go back using popd.ln and soft link with ln -s.cat prints out contents of file, vi (advanced) and nano (simple) are useful command line text editors. > can be used to write into a file, e.g. echo "hello" > samplefile.top monitors resource usage of various processes (CPU, memory, etc.)ps -e lists current processes. pstree displays the parent-child relationships of processes as a tree. cat /proc/<pid>/status displays status information about a process (for example, number of context swithes)| symbol we can forward the output of one process to the input of the other. For example, cat test.txt | grep "42" prints all lines of the file test.txt that contain 42. mkfifo <name> creates a named pipe in the filesystem into which processes can read and writetime <command>: executes command and outputs time used for itcat /proc/cpuinfo outputs various information about CPU architecturerenice -n <niceness> <pid> changes the niceness of a process (which affects directly the scheduling priority). nice -n <niceness> <command> runs <command> with the specified niceness.nc <ipaddress> <port> establishes tcp connection. ifconfig shows network card status, e.g. ip address and MAC address.mkfifo dm510_fifo): np-producer.c, np-consumer.cgcc -fopenmp) openmp.cExam from June 2025, including answers: exam1.pdf