Select Academic Year:     2016/2017 2017/2018 2018/2019 2019/2020 2020/2021 2021/2022
First Semester 
Teaching style
Lingua Insegnamento

Informazioni aggiuntive

Course Curriculum CFU Length(h)


The subject of Operating Systems aims at providing the knowledge of the organization of modern operating systems in different application scenarios, such as: desktop and notebook computers, servers, mobile and IoT devices, embedded systems, and real-time systems. The course will comprise both standard lectures, and labs, the latter devoted to learn how to use some UNIX/Linux primitives for creating concurrent processes using the C language.
The learning outcomes of this subject, expressed in terms of the Dublin Descriptors, are the following:

Knowledge and understanding.
After the completion of this teaching activity, the student should know and understand:
- the architecture of the different types of operating systems in terms of their components, and the related functionalities, related to the different devices where they are deployed;.
- the main characteristics of the UNIX/Linux operating system families;
- the main characteristics of mobile, embedded and IoT operating system, and, in particular, of the Android operating system;
- the basic concepts behind virtualization technologies and cloud computing.
- the main issues that need to be analyzed for designing and managing an operating system.
Applying knowledge and understanding
After the completion of this teaching activity, the student should be able to:
- use the basic operating system library functions used in application programming for managing processes and threads;
- use the techniques to correctly configure an operating system, not only from the point of view of the performances, but also from the point of view of security and privacy, according to the device and the application scenario at hand.

Making judgements
The student will be able to choose the most apt operating system given the set of requirements related to the application scenario at hand.

Communication skills
After the completion of this teaching activity, the student should be able to explain in an organic way the dependences among the different modules of an operating systems, and the dependences of these modules on the device where they have been deployed.

Lifelong learning skills
The evolution of operating systems, that is driven on one hand by the development of ubiquitous devices (mobile devices, wearables, internet of things, etc.), requires a good capability for lifelong learning. This teaching activity will empower students to understand the technical documentation that is published by developers and producers of operating systems, especially the one related to open source projects.


The student should have a deep knowledge of the organization of modern computer architectures, as well as good programming capabilities using the C language.


Main components of modern operating systems with examples of Linux/Unix operating systems (4hrs theory - 2hrs exercises)
Processes and threads (8hrs theory - 6hrs exercises)
Process Scheduling (2hrs theory - 2hr exercises)
Mutual exclusion, process synchronization and deadlock (6hrs theory - 4hrs exercises).
Memory management (6hrs theory - 2hrs exercises)
File system (3hrs theory - 1hr exercises)
Input/Output systems, and disk management (2hrs theory - 1hr exercises)
Operating System security (3hrs theory - 1 hour exercises)
Virtualization and cloud computing (4 hrs theory - 2 hrs exercises)
Embedded and Real Time Operating Systems (3hrs theory)
Main concepts of mobile and IoT operating systems (4 hrs theory)
Case Study: the Android Operating System (4 hrs exercises)

Teaching Methods

This teaching unit is organized with
- lectures with electronic presentations (PowerPoint or similar);
- lab exercises using Linux operating systems;
- lab exercises on virtualization system;
- lab exercises on the Android operating system;
- a seminar or a site visit;

The teaching material is available at the following web address:

The teacher is available to answer questions either by email, or during the contact hours, or directly in class, during the lecture or during the break between consecutive teaching hours.

Verification of learning

The exam consists in two parts: one part that will be carried out as a test in writing, while the other part will be made up of a number of practical exercises distributed during the semester.

The test will contain:
- open questions
- numerical exercises
- programming exercises (pseudocode)
that cover all the topics of this teaching activity. In particular the exam aims to test the student’s:
- knowledge and understanding of processes and threads;
- knowledge of the techniques and classic problems for processes and threads mutual exclusion and synchronization;
- knowledge of the organization and management of main memory, and ability to solve some numerical problems on memory management;
- knowledge of the organization and management of storage devices (hard disks), and ability to solve some numerical problems on disk management;
- knowledge of file system organization and structure;
- knowledge of input/output organization and structure;
- knowledge of virtualization techniques;
- knowledge of the architecture of the Android Operating System;
- capability do describe the main differences among operating system deployed in different application scenarios;
- knowledge of the security and privacy issues in operating systems.

A number of practical lab exercises will be proposed throughout the period of lectures. One set of exercises will require to write small fragments of C code using the primitives for creating processes and enabling communication between processes in UNIX/Linux. Another set of exercises will be focused on the configuration of operating systems and virtualization platforms from the point of view of security and performances.

For each exercise/question in the test, a maximum score is assigned. The answer provided for each exercise/question is evaluated with a score from 0 to the max assigned score. The maximum score is assigned in the case of a correct answer, while a smaller score is assigned according to the severity of the errors. In particular, conceptual errors, and errors caused by lack of knowledge have a larger weight than errors due to misunderstandings or inaccuracies.

The lab sessions will be evaluated with a maximum of 12 points, that will be distributed among the different exercises.

The final mark is given by the sum of the points assigned to each exercise/question of the test and to the points related to the participation to the lab sessions. The total number of points will be equal to 32, so that students attaining 32 points will be assigned the '30 cum laude' mark.

It is possible to increase the final mark of the written test with a short oral test.


William Stallings
Operating Systems: Internals and Design Principles, 9/E
Pearson - ©2018
ISBN 9781292214290

More Information

Copies of the slides as well as all the material used for the labs will be available at the following link

More Information

Copies of the slides as well as all the material used for the labs will be available at the following link

More Information

Copies of the slides as well as all the material used for the labs will be available at the following linkh

Questionnaire and social

Share on: