You are here: Home » Study Plan » Subject


Subject: OPERATING SYSTEMS (A.A. 2021/2022)

degree course in COMPUTER SCIENCE

Course year 2
Teaching units Unit Sistemi operativi
Information Technology (lesson)
  • TAF: Compulsory subjects, characteristic of the class SSD: INF/01 CFU: 9
Teachers: Mauro ANDREOLINI
Exam type oral
Evaluation final vote
Teaching language Italiano
Contents download pdf download




This course is an introduction to modern multi-user, multi-tasking, UNIX-based Operating Systems. At the end of the course the student will be able to:
- understand the motivations behind the design choices of a modern operating system;
- use the graphical user interface of a modern UNIX-like operating system (Debian GNU/Linux) knowingly;
- use the command line user interface of a modern UNIX-like operating system (Debian GNU/Linux) knowingly;
- design, debug, execute complex commands by combining easier ones;
- diagnose and solve basic administration tasks.

Admission requirements

Programming I.

Course contents

The course is taught in the first semester of the second year and lasts 72 hours, split into theory (main concepts are introduced and shown) and practice (exercises are introduced and solved). Training sessions are not formally split from theory; they rather complement each other.
The proposed hour split is purely indicative; it can change based on student participation and feedback.

Introduction to operating systems (8 hours).
Introduction to the course. Definition of an operating system. Roles of an operating system. Historic perspective.

User interfaces (8 hours).
Introduction to user itnerfaces (CLI, TUI, GUI). User interfaces in Debian GNU/Linux: GNOME desktop, terminals.

The BASH command interpreter (12 hours).
Syntax and basic constructs. Variable manipulation. Terminal I/O. Escaping and quoting. Arithmetic operations. Conditional and logical operators. Flow control. Conditional execution. Scripts. Alias and functions. Command history. Command types. Searching for documentation.

Files and the file system (16 hours).
Definition of file and directory. Definition of a file system. File system creation. File system mount and unmount. High level organization of a UNIX file system. File metadata. Creation and deletion. Copy and movement. Text manipulation. File search by metadata or content. Links. Archives. File I/O in BASH.

Authentication and authorization (4 hours).
User management. Groups management. File access control algorithm.

Process management (8 hours).
Definition of a process. Process vs. executable program. Interleaved execution. Process descriptor. Process isolation. Threads. Identification. Forking. Process tree. Signals-based communication. Pipe-based composition. Job control. Process management in BASH. Fork bomb.

Elevation of privileges (4 hours).
Process privilege. Privilege change. Principle of least privilege. Real and effective users and groups. SETUID and SETGID bit. Capabilities. Elevation through su. Elevation through sudo.

Software distributions (8 hours).
Introduction to Debian. Repository management. Installing and removing binary packages. Search and analysis of binary packages. Visualizing direct and inverse dependencies of a binary package. Metapackages. Virtual packages.

Operating system structure (4 hours).
Stratification. Library functions. System calls. Source code analysis tools.

Teaching methods

Teaching activities are usually performed through class lectures, using presentations in electronic format that introduce and discuss the main topics. At the end of every topic described in the "Course contents" section, the teacher proposes a set of guided exercises to allow students to assess their knowledge. Questions and comments are always welcome and encouraged. In order to encourage in-depth analysis, every week the teacher provides optional, more complex exercises that require individual research. Attendance is strongly recommended, although not obligatory. The course is taught in Italian. Course-related information (syllabus, teaching material, class schedule, announcements) is provided by the course Web site, which is reachable through the Dolly platform by a Web link. Students are strongly encouraged to consult the Web site frequently. (*) Due to the ongoing COVID19 pandemic, this year teaching activities could be performed online with the Google Meet platform, by means of live sessions which will be recorded and made available to studentes.

Assessment methods

Assessment is performed through a 30 minutes long exam aimed at evaluating, on one hand, the practical and theoretical aspects covered in the course and, on the other hand, a student's attitude to problem solving. Each student is asked three questions in sequence. The first question acts as a pass/fail barrier; in case of failure, the student is failed immediately. For each question a student obtains at most 10 points; each mistake costs a point. The final grade is the sum of the grades obtained over the three questions plus bonus points obtained during class or by solving the optional weekly exercises. The exams might be performed online through the Google Meet platform depending on the evolution of the COVID19 pandemic. The final grade is communicated to the students right after the exam.

Learning outcomes

1) Knowledge and understanding.
- Comprehend the historic evolution of operating systems and explain the design choices behind a modern operating system.
- Comprehend the high level architecture of a modern operating system.
- Comprehend the main UNIX graphical and command line tools.

2) Applied knowledge and understanding.
- Find documentation (command, function, configuration).
- Combine complex commands from basic ones.
- Use correctly library functions and system calls in own programs.
- Analyze and solve failures (troubleshooting is limited to the examples discussed in class).
- Download and study free software source code.

3) Making judgements.
- Identify independently the different approaches and techniques to address typical problems in modern operating systems.
- Express critical judgement on the correctness and efficacy of a solution procedure.

4) Communicating skills.
- Discuss own findings (obtained through the work on the optional exercises) in the appropriate jargon.
- Express (through the final exam) the concepts learned in class with an appropriate language and sustain a technical discussion on the related topics.

5) Learning skills.
- Develop independent learning abilities through the study of literature, discussions with the teacher, aimed exercises.


* A. Silberschatz, P. Galvin, G. Gagne
Sistemi Operativi (Decima Edizione)
Pearson Education Italia, 2019.
ISBN-13: 978-8891904553.
* Presentazioni in formato elettronico, pubblicate dal docente durante lo svolgimento della didattica.