Operating Systems

Degree course: 
Corso di First cycle degree in COMPUTER SCIENCE
Academic year when starting the degree: 
2019/2020
Year: 
2
Academic year in which the course will be held: 
2020/2021
Course type: 
Compulsory subjects, characteristic of the class
Credits: 
8
Period: 
First Semester
Standard lectures hours: 
72
Detail of lecture’s hours: 
Lesson (48 hours), Exercise (24 hours)
Requirements: 

It is required the ability to write code in some imperative high level programming language: the student should properly use the main constructs of high level programming languages, and has perfectly clear in mind the notions of compiler, interpreter, static error and runtime error. Moreover, it is required the knowledge of the main components of the hardware, in particular the role of CPU, RAM, Unit Control and ALU; the student must know the notion of instruction set and be able to write down simple programs in assembly, possibly with recursive procedures. The knowledge and abilities needed for successfully attending this course are delivered in the fundamental courses of Programmazione and Architetture degli Elaboratori, which, therefore, are mandatory prerequisites.

The scope of the exam is to certify that student have all knowledge and ability explained above, by evaluating the knowledge skill and, mainly, the ability to use and integrate the techniques to organise the code in properly synchronised processes and threads.
The exam consists in a written test in a classroom. This is, normally, a 2 hours test requiring, normally, to solve 3 exercises, each checking the knowledge of one or several of the arguments discussed in class; in particular students will be asked to solve three exercises, which require a deep skill on all arguments presented in the lectures. In particular, the ability of recognising problems in the context of process synchronisation, the ability to describe the features of a particular operating system function and the ability to develop code organised in properly synchronised processes and threads are always checked.
The knowledge of the technical terminology is implicitly checked, since the questions and specifications of problems use such a terminology.

Assessment: 
Voto Finale

The aim of the course is to allow students to know the role, the purpose and the main functionalities and features of operating systems, making them able to understand and develop elementary software functions employable in the context of the operating system.
At the end of the course, the student will be able to:
1. Know the historical evolution of operating systems, having the ability to understand the motivations and necessities behind such an evolution.
2. Know the main functionalities of operating systems, having the ability to recognize, among possible implementations of a given functionality, the one that fits better in a given applicative context.
3. Know the principles of process environment and of concurrency, having the ability to deeply understand their detailed implementation.
4. Know the criticisms of process synchronization, having the ability to develop code requiring to dealing with such problems. This ability will be refined by solving and discussing exercises.
5. Understand the principles of the organization of a program in thread, having the ability of developing software organised in concurrent threads. This ability will be refined by solving and discussing exercises.
The student will be also required to develop an autonomy of judgement in recognising the main challenges of the organisation of code in processes or threads and the choice of the techniques needed to get the sound behaviour from a system.
Finally, the student will get a proper knowledge of (possibly standard) technical terminology used in the context of Operating Systems.

The course is organised as follows:
Introduction to operative systems (4 h)
• Role and purpose of the operating system (2 h)
• Typical functionalities of the operating systems (2 h)
Operating System Principles (8 h)
• Hardware and operating systems evolution (2 h)
• Device organization (2 h)
• Interrupt and implementation (2 h)
• Kernel/User modes and transitions (2 h)
Concurrency (12 h)
• The role of interrupt (4 h)
• Process Control Block (2 h)
• Context switch (6 h)
Scheduling and dispatch (10 h)
• Processes (4 h)
• Preemptive and non preemptive scheduling (2 h)
• Threads (4 h)
Memory Management (6 h)
• MMU (2 h)
• Memory Layout (4 h)
Virtual Machines (8 h)
• Paging (4h)
• Virtual Memory (4 h)
Exercises on process synchronization (24 h)
• Exercises on synchronizations through semaphores.

The suggested textbooks are the following:
• A. Tanenbaum: Modern Operating Systems. McGraw Hill.
• A. Silberschatz, G. Gagne, G.P. Baer: Sistemi Operativi – concetti ed esempi. Paerson – McGraw Hill.
• D.M. Dhamdhere: Operating Systems – A concept based approach. McGraw Hill.

However, due to the generality of the arguments, there are several textbooks that can be used in place of those that are suggested.
The slides, in pdf format, are available in the e-learning platform, where also the text and the solutions of the problems treated in class can be found.

The course is organised in frontal lessons (48 h) and exercises (24 h)
Lessons are dedicated to show the items characterising the operating systems, the typical challenges of operating systems and the technicalities suitable to organise programs in processes and threads properly synchronised.
The discussed arguments are subject of exercises where active participation of students is encouraged and that require a critical evaluation of the proposed solutions.

The lecturer will meet students upon appointment, proviso a request via e-mail to simone.tini@uninsubria.it. The lecturer will answer only to e-mail that are signed and sent from domain studenti.uninsubria.it

Professors