The students shall acquire knowledge and skills about:
- Operating system design and programming in Linux/UNIX environments.
- Resource virtualization and management (CPU, central memory, secondary memory, peripherals).
- The concept of process and thread and how to handle both.
- Concurrency control on mutual exclusive resources.
- Linux shell commands.
The student will develop programming skills with the system calls for:
-process creation and management, signal generation and handling, interprocess communication;
- concurrency control;
- creating and managing multithread applications.
Operating Systems Introduction
Operating systems concepts. Kernel. (*)
History and classification of operating systems.
GNU/Linux. (*)
Operating systems structures: monolythic, microkernel, hybrid, client/server.
The POSIX standard. (*)
System calls. (*)
Operating systems structure. Multiprocessor OS structure. (*)
Virtualization. Virtual machines. Hypervisors: level 1 and 2. WMware and Virtual Box.
Linux shell commands. (*)
Shell programming.
Processes and Threads
Processes, Threads. (*)
Signals and signal handling.(*)
Thread implementation. POSIX threads. The pthread.h library. (*)
Scheduling. (*)
Real-time systems scheduling.
Linux scheduling. Completely Fair Scheduler.
Concurrency.
Critical regions. Race conditions. Mutual exclusion. Busy waiting. Semaphores and Mutexes. Program examples. (*)
Interprocess Communications
Message queues, Shared memory. (*)
Classical IPC problems. Program examples. (*)
Client/server model. Sockets. (*)
Deadlocks
Deadlock characterization, detection, prevention, avoidance. (*)
File Systems.
File. Directories. (*)
Case Studies
Linux (*)
1) Theory: Abraham Silberschatz, Peter Baer Galvin, Greg Gagne, “Sistemi Operativi, Concetti e esempi”, Nona Edizione, Pearson, ISBN 9788865183717.
Alternative option for theory: Andrew S. Tanenbaum, “I moderni sistemi operativi 4/Ed.", 2016, ISBN 9788891901019.
2) Programming part: R. Stones, N. Matthew, “Beginning Linux Programming”, 4th edition, Wrox Press, 2007. Disponibile in rete