Learning outcomes of the course unit
The course introduces the main methodological tools for the analysis of system software, in particular for the UNIX/LINUX Operating System.
In the first part the process model of an OS is presented, together with the management of hardware resources. In the second part the main features of UNIX/LINUX are described both at user level and the system programming level.
Course contents summary
Introduction to Operating Systems. Batch, time-sharing and spooling systems.
Processing and I/O parallelization. The interrupt systems: device and timer interrupts.
Interrupt handling. Modelling of a simple OS and technique for increasing the performance.
Multitasking e process model. Protection system. CPU operating modes. Systems calls.
I/O handling. Layered structure of OSs. Virtualization.
Concept of process. Process state and descriptor. Concurrent processes. Cooperation and competition among processes. Shared memory interaction. Mutual exclusion and critical sections. Semaphores e synchronization primitives.
Message passing interaction. Send/receive primitives, designation and synchronization.
CPU scheduling and main algorithms.
Introduction to UNIX and LINUX.
UNIX File System. File access rights. Main system commands. I/O redirection and piping. Command shell. Foreground and background command execution.
Physical organization of the file system. Process image. Program development in UNIX.
File and I/O primitives. System calls for process management: creation, execution and exit.
Interprocess communication facilities: unreliable and reliable signals, pipes, FIFOs and sockets.
Lectures and computing laboratory activities.
Assessment methods and criteria
Written examination on the theory of Operating Systems (Part I of the course).
Computer exercise on UNIX/LINUX system programming.
Final grade is weighted on theory (40%) and UNIX (60%) grades.