ING-INF/05 - 6 CFU - 1° Semester

Teaching Staff


Learning Objectives

The students shall acquire knowledge and skills about:

- Operating system design and programming in Linux/UNIX environments.

- Resource virtualization and management (CPU, central memory, secondary memory, peripherals).

- The concept of process and thread and how to handle both.

- Concurrency control on mutual exclusive resources.

- Linux shell commands.


The student will develop programming skills with the system calls for:

-process creation and management, signal generation and handling, interprocess communication;

- concurrency control;

- creating and managing multithread applications.

Detailed Course Content

Operating Systems Introduction

Operating systems concepts. Kernel. (*)

History and classification of operating systems.

GNU/Linux. (*)

Operating systems structures: monolythic, microkernel, hybrid, client/server.

The POSIX standard. (*)

System calls. (*)

Operating systems structure. Multiprocessor OS structure. (*)

Virtualization. Virtual machines. Hypervisors: level 1 and 2. WMware and Virtual Box.

Linux shell commands. (*)

Shell programming.

Processes and Threads

Processes, Threads. (*)

Signals and signal handling.(*)

Thread implementation. POSIX threads. The pthread.h library. (*)

Scheduling. (*)

Real-time systems scheduling.

Linux scheduling. Completely Fair Scheduler.


Critical regions. Race conditions. Mutual exclusion. Busy waiting. Semaphores and Mutexes. Program examples. (*)

Interprocess Communications

Message queues, Shared memory. (*)

Classical IPC problems. Program examples. (*)

Client/server model. Sockets. (*)


Deadlock characterization, detection, prevention, avoidance. (*)

File Systems.

File. Directories. (*)


Case Studies

Linux (*)

Textbook Information

1) Theory: Abraham Silberschatz, Peter Baer Galvin, Greg Gagne, “Sistemi Operativi, Concetti e esempi”, Nona Edizione, Pearson, ISBN 9788865183717.

Alternative option for theory: Andrew S. Tanenbaum, “I moderni sistemi operativi 4/Ed.", 2016, ISBN 9788891901019.

2) Programming part: R. Stones, N. Matthew, “Beginning Linux Programming”, 4th edition, Wrox Press, 2007. Disponibile in rete

Open in PDF format Versione in italiano