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.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.mkfifo dm510_fifo
): np-producer.c, np-consumer.cgcc -fopenmp
) openmp.c