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 contents summary
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 Managements. Basic policies. Deadlock: definition, avoidance, prevention, detection, removal. Classical Examples.
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.
Silberschatz, Galvin, Gagne: Sistemi operativi. 8th edition, Pearson