Salta ai contenuti. | Salta alla navigazione

Strumenti personali


Academic year and teacher
If you can't find the course description that you're looking for in the above list, please see the following instructions >>
Versione italiana
Academic year
Didactic period
Secondo Semestre

Training objectives

The course provides the students with an understanding of the basic components of a general-purpose operating system, presenting both the theory and the programming aspects.

The course provides knowledge about:
- structure of operating systems
- multi process operating systems organization
- process, virtual processor and context switch
- virtual memory
- IO devices

The course provides the following skills:
- concurrent and multi-tasking programming
- performance analysis of operating systems
- use of Linux OS
- multi-thread and multi-process programming


Prerequisite for this course is the course of "Computer Architectures". It is suggested also to be able to use the C and Java programming languages and to have basic knowledge of Algorithms and Data Structures.

Course programme

- Introduction to Operating Systems: structure, evolution and functions of operating systems.
- Processes, Threads and Scheduling: process and thread concepts. Management of processes, context switch, scheduling algorithms, processes synchronization, creation and termination of processes, processes communication. Classical IPC problems. Management of processes and threads in Unix and Linux.
- Memory Management: memory management techniques (fixed vs variable partitions, paging and segmentation), virtual spaces, multi-level addressing, management of memory in Unix and Linux, replacement strategies.
- Structure of File System: file and directory concepts, implementation of file and directory, file operations, access control, files and directories management in Unix and Linux.

Didactic methods

The course comprises 80 hours (10 CFU) of teaching divided in 50 hours of theory and 30 hours of hands-on. The course is structured with lectures and practical exercises and training on computers.

Learning assessment procedures

The final exam is divided in:
- programming, requiring the development of exercises on Unix programming in C, multi-thread in Java, and the Bourne shell;
- oral exam.

Each part of the programming can be done in different sessions. The final mark of the programming part is the average of the three exercise: Unix Programming in C (50%), Java (25%), shell (25%). Students can use slides and books only for the Unix programming test, not for Java and shell.

Once passed the written test (at least 18/30 at each exercise), the student can attend the oral exam.

Reference texts

1- Sistemi operativi 2/ed - Paolo Ancilotti, Maurelio Boari, Anna Ciampolini, Giuseppe Lipari - McGraw-Hill
2- I moderni Sistemi Operativi 3/ed - Andrew S. Tanenbaum - Pearson Prentice Hall