OPERATING SYSTEMS
cod. 05613

Academic year 2022/23
2° year of course - Second semester
Professor
Francesco ZANICHELLI
Academic discipline
Sistemi di elaborazione delle informazioni (ING-INF/05)
Field
Ingegneria informatica
Type of training activity
Characterising
72 hours
of face-to-face activities
9 credits
hub: PARMA
course unit
in ITALIAN

Learning objectives

The aim of the course is to provide students with the ability to understand how the
operating systems manages and controls computing system resources with the
objectives of efficiency and ease of use, and in particular:
- the role of the operating system as an intermediary between applications and
hardware
- the need to overlap CPU and I/O activities to increase system efficiency
- the concept of process and the main models of process interaction
- the criteria and CPU scheduling algorithms for interactive systems
- the basic use of UNIX / Linux OSes and command usage
- the main system calls offered by UNIX / Linux to applications.
The main abilities to apply the knowledge and understanding listed above are:
- the analysis and evaluation of the characteristics of general-purpose operating
systems
- the analysis of a simple interaction among processes in the global environment
and the identification of simple forms of synchronization using semaphores
- the performance evaluation (on a given workload) of the main CPU scheduling
algorithms for interactive systems

Prerequisites

Programming skills obtained in previous courses.

Course unit content

Part I (28 hrs)
Introduction to Operating Systems. Batch, time-sharing and spooling systems. (2 hrs)
Processing and I/O parallelization. The interrupt systems: device and timer interrupts.
Interrupt handling. Modelling of a simple OS and techniques for increasing
system performance. (2 hrs)
Multitasking and process model. Protection system and OS security. CPU operating modes.
Systems calls.
I/O handling. (4 hrs)
Layered structure of OSs. Virtualization. OS level virtualization with cointaners (4 hrs)
The process concept. Process state and descriptor. Concurrent processes and programming with threads and Java. (4 hrs)
Cooperation and competition among processes. Shared memory interaction. Mutual
exclusion and critical sections. Semaphores and synchronization primitives. (3 hrs)
Message passing interaction. Send/receive primitives, designation and
synchronization. (3 hrs)
Deadlock management. (2 hrs)
CPU scheduling and main related algorithms. (3 hrs)


Part II (44 hrs)
Introduction to UNIX and LINUX.
UNIX File System. File access rights. (2 hrs)
Main system commands. I/O redirection and
piping. Command shell. Foreground and background command execution. (2 hrs)
Physical organization of the file system. Process image. (2 hrs) Software development in UNIX/Linux. (2 hrs)
File and I/O primitives. (2hrs) System calls for process management: creation, execution
and exit.(4 hrs)
Interprocess communication facilities: unreliable and reliable signals, pipes, FIFOs
(4 hrs)
Introduction to the ISO OSI model and to the TCP/IP suite and main protocols. IPv6. (2 hrs)
IPC with sockets. Concurrent servers. Client-server examples.
Other system calls: select, epoll.
Lab exercises on Linux usage and system programming. (18 hrs)

Full programme

Part 1 - Theory
Course introduction. Course contents and student evaluation methods. Introduction
to the Linux OS and installation methods. The OS as a resource manager. OS
activities for resource management. OS types and users. Proprietary and standard
OSes. Brief history of computing systems and OS evolution. Batch and Time-
Sharing systems. Spooling. I/O management. Polling. Overlap between I/O
activities. Interrupt management.
Multiprogramming. Concept of process and process states. Process management.
PCB. Process switching. OS protection and security. Context switching. System
calls. OS structure with examples (UNIX, MS-DOS, Windows NT / 7). Virtualization
concepts and techniques. OS-level virtualization with containers. OS kernel.
Models of process interaction. Global environment model. Tools for concurrent
programming: threads and Java. Background on threads. Type of interaction among processes.
Examples of interference. Mutual exclusion. Critical sections. Semaphores. Wait
and signal primitives. Atomicity of wait / signal. Use of semaphores for producer /
consumer interaction. Local environment model. Classification of designation and
synchronization alternatives. Direct and indirect designation. Synchronization for
send and receive. Remote procedure calls.
Deadlock and deadlock management techniques.
Levels of scheduling. Criteria for evaluating scheduling algorithms. Basic CPU
scheduling algorithms (FCFS, SJF, Priority, Round-robin, Multilevel feedback
queues). Methods for evaluation. Scheduling in UNIX and Linux.
An introduction to cybersecurity
Part 2: UNIX
Introduction to UNIX. File system. Access rights to files / directories. Basic UNIX
commands. Filters. I/O redirection and command piping. Running shell commands.
Execution mode of commands. Wildcards. Expansion control in the command line.
Scripts: syntax and examples. Laboratory practice on UNIX file system and
commands.
UNIX development tools. Physical organization of the File System. Process image. Command line arguments and
environment. System calls for I/O (open, close, read, write, lseek, etc.). Laboratory
practice on I/O primitives.
System calls for process management (fork, wait, exec). Examples. Laboratory
practice on primitives for process management. Optional assignment on I/O and process management.
UNIX signals. Systems calls for unreliable signals. Issues with unreliable
signals. Primitives for reliable signals. Examples. Interprocess communication with
pipes. Examples. Exercises on signals and pipes. Communication with FIFOs.
Laboratory practice on signals and pipes.
Socket communication. Socket types. Notes on TCP and UDP protocols. Socket
systems calls. Connected sockets. Concurrent servers. Datagram sockets.
Examples. The select system call. Laboratory practice on socket communication.
Other system calls: select and epoll.
Sample final exams.

Bibliography

Recommended textbooks:
Lecture notes and exercises with solutions are made available on the course web
site to registered students.
Textbooks:
*Operating Systems Concepts - 8/ed, A. Silberschatz, P. B. Galvin, G. Gagne. Wiley
2008,ISBN-13: 978-0470128725
* Advanced Linux Programming, http://www.advancedlinuxprogramming.com

Teaching methods

- Teaching methods -
Class lectures on OS theory and UNIX/Linux usage and programming.
Lab practice on Linux PCs in the lab. Exercises on UNIX/Linux commands
and shells. Programming exercises on process interaction in UNIX/Linux.

Assessment methods and criteria

The exam consists of two parts.
Part 1 - Theory: Written test with multiple open quizzes and exercises focused on
basic concepts of operating systems (also administered as midterm).
Part 2 - Practice: Computer exercise on UNIX/LINUX programming and multiple
process interaction. Working solution is required.
Before doing the Practice test on Unix programming, students are required to pass an online test on Unix programming on the Elly platform.
The test is mandatory but the result will not prevent the student from doing the Practice test.

During the course an optional assignment on UNIX process management is
administered, whose evaluation may be considered to increase the mark of the
practice part.
Both exam parts must be passed. The final mark is obtained as average of the two
partial marks. Further detailed information on the grading system will be provided
during lectures.

Other information

Course web site available on http://elly.dia.unipr.it for registered students.
Teaching material is published on the web site as course progresses.

2030 agenda goals for sustainable development