Il corso si articola in due parti: la prima affronta gli aspetti interni ("internals") di un sistema operativo, illustrandone l'architettura e la progettazione dei sotto-sistemi, nella seconda si trattano le interfacce di programmazione per l'utilizzo delle risorse di sistema e per la programmazione concorrente.
La parte I (internals) affronta i moduli di un sistema operativo, e si approfondiscono i concetti e le tecniche di gestione efficiente delle risorse di un sistema di elaborazione (processori, memorie, dispositivi periferici, file, ecc.).
Nella parte II (interfaccia al sistema e programmazione concorrente) si presentano le tecniche di programmazione di sistema mediante l'analisi e l'utilizzo delle chiamate di sistema, per sistemi operativi quali Unix/Linux e Windows. Vengono introdotte ed utilizzate tecniche avanzate di programmazione concorrente.
This course is organiszd in two parts: the first one ("internals") introduces the architecture and the design principles of an operating system, the second part describes programming interfaces for system programming and resource management, as well as concurrent programming.
Part I (internals) deals with internal operating system modules, together with the main techniques and strategies for efficient management of resources
such as processors, memories, peripheral devices, files, etc.
Part II (system and concurrent programming) introduces system programming techniques, within the framework of state-of-the-art operating systems, such as Unix/Linux and Windows. Advances concurrend programming techniques are introduced and used.
Parte I
- Conoscenza dell'architettura dei sistemi operativi come insieme di gestori di risorse
- Conoscenza dei moduli del nucleo del sistema operativo, e capacità di implementare nuovi moduli
- Capacità di usare system call per la creazione, sincronizzazione e terminazione di processi e thread
- Conoscenza del meccanismo della memoria virtuale
- Capacità di analizzare e implementare algoritmi di gestione della memoria virtuale
- Conoscenza delle tecniche di gestione dei dispositivi periferici
- Capacità di analizzare ed implementare device drivers
- Conoscenza dell'organizzazione dei moderni file system e capacità di gestione degli stessi
Parte II
- Conoscenza di interface (API) per programmazione di sistema (system calls)
- Capacità di analizzare e realizzare programmi basati su system call
- Capacità di analizzare e realizzare programmi con tecniche avanzate di interazione con un file system, quali accesso sequenziale, diretto e condiviso a file, e uso dei direttori
- Capacità di analizzare e realizzare programmi con tecniche di gestione di eccezioni e segnali
- Capacità di analizzare e realizzare programmi con tecniche di gestione avanzata della memoria, quali allocatori, mamory mapping di file, librerie dinamiche.
- Capacità di analizzare e realizzare programmi basati su processi e/o thread concorrenti
- Capacità di analizzare e realizzare programmi concorrenti con tecniche avanzate di sincronizzazione, scambio di messaggi, andivisione di dati
Part I
- Knowledge of the operating systems architecture as a collection of resource managers
- Knowledge of operating system kernel modules, and new module implementation skills
- Skill to use system calls for creation, synchronization and termination of processes and threads
- Knowledge of virtual memory mechanisms
- Skill to understand and implement virtual memory management algorithms
- Knowledge of peripheral device management techniques
- Skill to understand and implement device drivers
Part II
- Knowledge of modern file system organizations and skill to manage file systems and file locking
- Knowledge of system programming APIs (system calls)
- Skill to understand and implement programs based on system calls
- Skill to understand and implement programs with advanced file system interactions, such as sequential, random and/or shared file access, and directory manipulation
- Skill to understand and implement reliable/robust programs exploiting exception and signal handling
- Skill to understand and implement programs with advanced memory management tachniques, such as dynamic allocation, memory mapping of files, dynamic libraries
- Skill to understand and implement concurrent programs based on processes/threads
- Skill to understand and implement concurrent programs exploiging
- advanced synchronization, message passing, and data sharing techniques
- Conoscenza dell'architettura dei sistemi di elaborazione: in particolare struttura del processore e organizzazione della memoria
- Conoscenza del meccanismo delle interruzioni e dei fondamenti di un linguaggio assembler
- Conoscenza dei fondamentali tipi di strutture dati ed algoritmi
- Capacità di sviluppare programmi in linguaggio C
- Conoscenza delle tecniche di base per la programmazione concorrente.
- Knowledge of a computer system architecture, with a specific emphasys on the structure of the CPU and memory subsystem
- Knowledge of the interrupt mechanism and basics of an assembly language
- Knowledge of the foundations of data structures and algorithms
- Good programming skill in C language
- Knowledge of base concurrent programming techniques
Parte I
Richiami di Architettura del Sistema Operativo (3 ore)
- moduli di gestione delle risorse di un sistema di elaborazione
- gestione di processi e thread (richiami)
Gestione della memoria (9 ore)
- indirizzi fisici e logici, MMU, TLB
- paginazione
- memoria virtuale e paginazione a richiesta
Gestione delle unità periferiche (3 ore)
- driver e gestione dispositivi
- gestione degli accessi a disco
Gestione dei file (6 ore)
- organizzazione di un file system,
- organizzazione e operazioni su file e direttori
Sistema operativo didattico OS161 (9 ore)
- architettura del sistema, struttura dei sogenti, compilazione,
esecuzione, debug
- creazione si semplici system calls per input/output
- gestione di thread e processi user
- implementazione di primitive di sincronizzazione
- implementazione di semplice supporto per I/O su file
- gestione di semplici operazioni di IO per dispositivo a caratteri
Parte II
Introduzione al linguaggio Rust: (12 ore) - Fondamenti del linguaggio
- Tipi dati composti
- Ciclo di vita, possesso e presa in prestito di un dato
Programmazione di sistema e concorrente in Linux e Win32: (20 ore)
- Rappresentazione interna dei dati
- Uso della memoria
- File e persistenza - Gestione del tempo
- Processi, thread e contenitori - Segnali, interruzioni ed eccezioni
- Comunicazioni di rete
Part I
Review of Operating System Architecture (3 hours)
- modules for the management of the resources of a computer system
- process and thread management synchronization (recalls)
Memory management (9 hours)
- phisical and logical address spaces, MMU, TLB
- Paging
- Virtual memory and demand paging
Peripheral Device management (3 hours)
- drivers and IO device management
- disk management
File system management (6 hours)
- file system organization and protection
- management an operations on files and directories
Teaching operating system OS161 (9 hours)
- system level architecture, source files, compilation, execution, debug
- implementation of simple system calls for standard I/O
- thread and user process management
- implementation of synchronization primitives
- implementation of simple support for file I/O
- device driver for a character device
Part II
Introduction to the C++ language and to concurrent programming in C11 (12 hours)
- classes, inheritance and polymorphism
- exception handling and runtime support
- generic programming
- concurrent programming
Win32 and Linux system programming and concurrent programming: (12 hours)
- file and directory management
- process and thread management,
- synchronization
- exception and signal handling
- memory management
- synchronous and asynchronous I/O
- interprocess communication
Examoles of Win32 and/or Linux Application development: (5 hours)
- reactive programming
- graphical user interface design and implementation and user interaction handling
Virtual Machines: (3 hours)
- general principles
- the .NET framework
A) Lezioni/esercitazioni in aula (64 ore)
B) Esercitazioni in laboratorio (36 ore)
Parte I
- Modificare e installare il kernel OS161 (sistema operativo didattico
ispirato a Unix)
- Il bootstrap di un Sistema Operativo
- Creare una system call
- Supporto per gestione di processi e thread
- Primitive di sincronizzazione
- Creazione e terminazione di un processo
- Supporto per file system e struttura dei device driver
Parte II
- Chiamate di sistema relativi a un file system, gestione di file e direttori
- Programmazione concorrente basata su thread e processi
- Primitive di sincronizzazione e schemi di programmazione concorrente
- Programmi con gestione di eccezioni e/o segnali
- Programmi con gestione avanzata di memoria dinamica, tecniche di
memory mapping per file, librerie dinamiche, inter-process communication.
C) Progetto: opzionale, realizzato in gruppi di lavoro, su
approfondimenti relativi alla prima o alla seconda perte del corso
A) Class lectures (64 hours)
B) Laboratory practice (36 hours)
Part I
- Customizing and installing the OS161 (Unix-like teaching operating system) kernel
- OS booting
- Writing a system call
- OS support for process and thread management
- Synchronization primitives
- creating and terminating a user process
- Support for file system management and structure of a device driver
Part II (system call interface and concurrent programming)
- System calls for file system interface, file and directory management
- Concurrent programming based on thread and processes
- Synchronization primitives and concurrent programming templates
- Programs with exception and/or signal handling
- Programs with advanced dynamic memory management, memory mapping of
files, dynamic libraries, inter-process communication
C) Course project: optional, achieved in working groups, on advanced topics
from either of the two partr of the course
I testi, scelti tra quelli elencati, saranno comunicati a lezione dal docente titolare dell'insegnamento
Silberschatz, Galvin, Gagne: 'Operating System Concepts', 7th Edition, John Wiley & son, 2003, ISBN: 0-471-69466-5
W.R. Stevens
"Advanced programming in the UNIX Environment", Addison-Wesley Publishing Company
Johnson M. Hart,
'Windows System Programming', Addison-Wesley Publishing Company
- Materiale didattico a disposizione su Web
- Trasparenze proiettate in aula
- Esercizi e soluzioni
Silberschatz, Galvin, Gagne: 'Operating System Concepts', 7th Edition, John Wiley & son, 2003, ISBN: 0-471-69466-5
W.R. Stevens
"Advanced programming in the UNIX Environment", Addison-Wesley Publishing Company
Johnson M. Hart,
'Windows System Programming', Addison-Wesley Publishing Company
- teaching resouses available on Web
- class slides
- Exercises and solutions
Modalità di esame: Prova scritta (in aula); Elaborato progettuale in gruppo; Prova scritta in aula tramite PC con l'utilizzo della piattaforma di ateneo;
Exam: Written test; Group project; Computer-based written test in class using POLITO platform;
...
L'esame è costituito da una prova scritta, della durata complessiva di 150 minuti, suddiviso in due parti, ognuna di circa 75 minuti, con esercizi e/o domande sugli argomenti svolti a lezione, relativi a:
• realizzazione e moduli interni di un sistema operative
• chiamate di sistema e programmazione concorrente
Entrambe le parti dell'esame si propongono di accertare tutti i relativi obiettivi formativi, sia in termini di conoscenze che di capacità acquisite.
L'esame viene svolto si PC con l'utilizzo della piattaforma di ateneo. Nel caso di problemi tecnici si passa all'esame scritto su carta, con schema e contenuti immutati.
Durante lo svolgimento dell’esame non è possibile consultare testi o appunti. Le due parti possono essere sostenute in appelli diversi, all'interno di una finestra temporale di 4 appelli, che corrispondono a circa un anno solare. Il punteggio finale si ottiene sommando quello delle due parti, che ricevono ognuna un punteggio massimo di 15. Gli scritti possono quindi ottenere un punteggio massimo di 30.
L'esame non è superato se il punteggio relativo ad una delle due parti è inferiore a 7, oppure se la somma non raggiunge 18.
Allo scritto si aggiunge un progetto (lavoro di gruppo) facoltativo su una delle due parti del corso, con punteggio fino a un massimo di 6.
Un voto complessivo di 31 o 32 porta a 30 con Lode. Il progetto accerta prevalentemente gli obiettivi formativi in termini di capacità acquisite. Modalità e scadenze per l'assegnazione dei progetti sono indicate dai docenti nell'ambito del corso.
Gli studenti e le studentesse con disabilità o con Disturbi Specifici di Apprendimento (DSA), oltre alla segnalazione tramite procedura informatizzata, sono invitati a comunicare anche direttamente al/la docente titolare dell'insegnamento, con un preavviso non inferiore ad una settimana dall'avvio della sessione d'esame, gli strumenti compensativi concordati con l'Unità Special Needs, al fine di permettere al/la docente la declinazione più idonea in riferimento alla specifica tipologia di esame.
Exam: Written test; Group project; Computer-based written test in class using POLITO platform;
The exam consists in a written (150 min) part with exercises/questions
on theoretical and practical aspects of the course.
The exam is split in two parts (that can be taken at different dates):
- operating system internals
- system calls and concurrent programming
Both parts of the exam verify the related expected learning outcomes in terms of knowledge as well as skills.
A sufficient grade is required in both parts. The final grade is
obtained by summing the grades of the two parts (maximun grade for
each part: 13, maximun total grade: 26).
A final optional (group) project, on either of the two course parts,
can ad an extra (up to 6) grade. A final total grade of 31 or 32 is
converted to 30 cum laude.
The optional project mainly verifies the expected learning outcomes in terms of skills.
In addition to the message sent by the online system, students with disabilities or Specific Learning Disorders (SLD) are invited to directly inform the professor in charge of the course about the special arrangements for the exam that have been agreed with the Special Needs Unit. The professor has to be informed at least one week before the beginning of the examination session in order to provide students with the most suitable arrangements for each specific type of exam.