Anno accademico 2020-2021


Marina Lenisa
Ivan Scagnetto
Anno di corso: 2
Totale crediti: 12
Tipologia: Caratterizzante
Periodo didattico: Annualità
Prerequisiti. Computer Systems Architecture

Programming and laboratory

Metodi didattici. Laboratory classes are taught in the computer laboratory.

Hence, students have the possibility to immediately put into practice the notions introduced by the teacher.

Modalità di verifica. written exam + laboratory exam (written) + oral exam (optional)


Sector-specific skills

Knowledge and understanding: the student will acquire specific knowledge about the architecture, the operation and the underlying design principles of a modern operating system. She/He will also learn how to evaluate and how to choose among several operating systems, depending on the purpose of the implementation and on the hardware features.

Applying knowledge and understanding: thanks to the lab activities, the student will get specific skills in the application of the acquired knowledge of operating systems to real case-studies.

Cross-sectoral skills/soft skills

Making judgements: the student will acquire a critical appraisal skill in appropriately selecting technologies, algorithms and solutions according to their outcome on the performance and on the correct operation of an operating system in different application contexts.

Communication skills: the student will learn how to describe an operating system using a technically correct and appropriate terminology.

Learning skills: the student will learn how to be autonomous in expanding his knowledge of operating systems beyond the notions and examples learned and analyzed during the course, discovering and exploiting connections with other courses such as computer architecture, computer networks, and distributed systems.


Theory 1. Introduction 2. Processes and Threads 3. Concurrent Programming 4. Memory management 5. Input/Output 6. The file system

Laboratory: the UNIX Operating System: structure, user interface, variants (Solaris, Linux). The UNIX shell: – role and variants, – login procedure, – file system organization, – online manual, – the bash shell: pathname expansion, I/O redirection, pipes, background jobs, the history command, command line editing, command completion, – vi and (X)Emacs, – the make command. Main shell commands: – files handling, – processes handling, – mmemory monitoring, – filter commands: searching, sorting, editing. Shell scripts: – variables, – parameter passing, – flow of control structures, – login scripts. C language fundamentals. System Programming: – processes control, – file system, – processes communication, – threads and multithreading.



Lecture slides

A. Silberschatz, P.B. Galvin, G. Gagne, Sistemi operativi (ottava ed.). Pearson, 2009.

A. Tanenbaum, I moderni sistemi operativi (fourth ed.). Pearson (Prentice Hall), 2016.


R. Blum, C. Bresnahan. Linux Command Line and Shell Scripting Bible, 2nd Edition, Wiley, 2011.

I G. Glass, K. Ables. UNIX for Programmers and Users, Prentice Hall, second edition, 1999.

I B.W. Kernighan, D.M. Ritchie. Linguaggio C, second edition, 1989.

I K. Haviland, D. Gray, B. Salama. UNIX System Programming, Addison Wesley, second edition, 1989.