Learning objectives
This class introduces the fundamental principles and concepts that constitute the Operating Systems. We analyze the techniques for handling and for the coordination of system resources, in order to model a physical machine as an abstract device, for user convenience.
The Lab class offers an introduction to Operating Systems, with a particular focus on linux and unix based systems. The goal is to provide a method and the tools to program the shell and control the system (C).
Course unit content
Introduction.
Summary of Computer Architectures
Processes and Thread.
Modelization of a process: state, generation and termination. Thread model: use and implementation. Interaction paradigms: sharing, synchronization and communication. Scheduling.
Resources.
Resources Managements. Basic policies. Deadlock: definition, avoidance, prevention, detection, removal. Classical Examples.
Memory management.
Problem definition. Swapping. Paging. Segmentation.
I/O devices management.
Devices and controllers. I/O software. Management: interrupt, drivers, device independent software. Devices: character based devices, magnetic disks.
Unix/Linux OS. History, structure and user interface.
Unix shell. Bash shell, shell scripting, filters.
System Programming in C. Syscalls and system libraries, process control, interprocess communication, threads and multithreading, file-system access and I/O.
Bibliography
Silberschatz, Galvin, Gagne: Sistemi operativi. 8th edition, Pearson
Teaching methods
Oral lesson and laboratory