Operating Systems

Degree course: 
Corso di First cycle degree in COMPUTER SCIENCE
Academic year when starting the degree: 
Academic year in which the course will be held: 
Course type: 
Compulsory subjects, characteristic of the class
First Semester
Standard lectures hours: 
Detail of lecture’s hours: 
Lesson (48 hours), Exercise (24 hours)

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, and to have already passed the respective exams.

Final Examination: 

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.

Voto Finale

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.

- Overview of Operating Systems: Role and purpose of the operating system (2h)
- Overview of Operating Systems: Typical functionalities of the operating systems (2h)
- Operating System Principles: Hardware and operating systems evolution (2h)
- Operating System Principles: Device organization (2h)
- Operating System Principles: Interrupt and implementation (2h)
- Operating System Principles: Kernel/User modes and transitions (2h)
- Concurrency: The role of interrupt (4h)
- Scheduling and Dispatch: Processes (4h)
- Scheduling and Dispatch: Preemptive and non preemptive scheduling (2h)
- Concurrency: Process Control Block (2h)
- Concurrency: Context switch (6h)
- Scheduling and Dispatch: Threads (4h)
- Memory Management: MMU (2h)
- Memory Management: Memory Layout (4h)
- Virtual Machines: Paging and virtual memory (8h)
- Exercises on synchronisation (24h)

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.