Operating Systems
To attend the course of Operating Systems it is required that the student is already able to write code in some imperative high level programming language and known the main features of the hardware.
It is needed that the student properly uses the main constructs of the high level programming languages, and has perfectly clear in mind the notions of compiler, interpreter, static error and runtime error.
The student must know the main components of the hardware, in particular the role of CPU, RAM, Unit Control and ALU. The student must know the notion of instruction set and is able to write down simple programs in assembly, possibly with recursive procedure.
For this reason it is necessary to have already attended the courses of Architetture degli Elaboratori and Programmazione.
A final exam is needed.
It is a written examination.
Students will be asked to salve some exercises, which require a deep skill on all arguments presented in the lectures.
In particular, esercises aim to testing that the student knows operating system functionalities and is able to implement simple funcionalities.
The exam will usually take two hours.
Esercises should be solved without the help of the slides or any kind of material.
After having attended the course of Operating Systems, the student will be familiar with the historical evolution of operating systems and their main functionalities. The student will have a clear picture about how some of these functionalities can be implemented and with which difficulties. Interactions between the operating system and the underlying hardware will be also clear.
The student will be able to understand portions of code implementing existing operating system functionalities and to handle updates or extensions. The student will be able to compare different proposals for the implementation of an operating system functionality and to judge which is more tailored for a given purpose.
- Historical evolution of operating systems (4 h).
- Interrupt, I/O devices and DMA, system calls (8 h).
- Processes, program memory layout, parallelismo and concurrency, process states, process descriptors, context switch, process creation and terminato (12 h).
- Threads (4 h).
- Interactions between processor, race conditions, critical sections, algoritmic approach, semaphores (12 h).
- Memory management, memory allocation, memory hierarchy, memory reuse, paging and segmentazione, virtual memory, page replacement (6 h).
Exercises (24 h)
The official material consists in the slides, which will be available on the e-learning website. Also the text of the exercises and their solutions will be available on the website.
Suggested textbooks:
A. Tanenbaum: Modern Operating Systems. McGraw Hill.
A. Silberschatz, G. Gagne, G.P. Baer: Sistemi Operativi – concetti ed esempi. Paerson – McGraw Hill.
D.M. Dhamdhere: Operating Systems – A concept based approach. McGraw Hill.
48 hours over 72 will be dedicated to teaching and 24 to exercises.
Lessons will be delivered by the lecturer with the help of slides which will be available on the website.
Esercisse will be propose by the letture and solide interactively as a cooperation between the students and between the students and the lecturer.