The course provides an introduction to the structure and organization on modern operating systems.
Students will be able to identify and describe the main functionalities of modern operating systems.
Ability to write and analyse programs, including familiarity with the C programming language
Knowledge of the components and structure of Computers
Lectures will be complemented with hands-on sessions
Introduction to the structure of operating systems.
Processes and Threads
Inter-process communications (signal, pipe, socket, shared memory, ...). Mutual exclusion and synchronization. Dekker's algorithm, Peterson's Algorithm. Hardware support to mutual exlcusion. The Producer-Consumer Problem. Sempahors. Monitors. Message Passing. The Readers-Writers Problem.
Deadlock and Starvation. Dealing with deadlocks: Detection, Prevention and Avoidance. Resourse Allocation Graphs. The Dining Philosophers' Problem.
Memory Management. Physical Memory vs Virtual Memory. Paging vs Segmentation.
Uniprocessor Scheduling. Lont-term. medium-term and short-term scheduling: FCFC, Round Robin, SPN, SRT, HRRN, Feedback.
I/O Management. DMA, Disk Scheduling.
The file system. Structure and attributes of files and directories.
Access Control. Models, policies and mechanisms for access control. Access control in in Linux (ACL in Unix, setuid)
Operating Systems: Internals and Design Principles. 8th edition di W. Stallings, Pearson
Ricevimento: Meetings (either in person or remotely) can be arranged by sending an email to alessandro.armando@unige.it
ALESSANDRO ARMANDO (President)
PIERPAOLO BAGLIETTO
ALESSIO MERLO
MASSIMO MARESCA (President Substitute)
https://corsi.unige.it/8719/p/studenti-orario
Written exam