In questa pagina viene riportato il diario dettagliato delle lezioni. Per ogni lezione viene riportato, il syllabus tentativo ed effettuato, le slide, il materiale da studiare e di approfondimento e il link zoom.
Le lezioni in streaming su zoom hanno l'accesso automatico con la mail uniroma1, gli altri verranno ammessi nella stanza virtuale manualmente.
Testi del corso:
Silberschatz, Calvin, Gagne. Operating Systems Concepts, tenth edition. (LIBRO PRINCIPALE)
Stallings. Operating Systems: Internals and Design Principles.
John L. Hennessy, David A. Patterson -Computer Organization and Design RISC-V Edition.
Additional Readings:
Sito web del prof. Francesco Quaglia, che ha gentilmente concesso l'uso di parte del suo materiale: https://francescoquaglia.github.io/TEACHING/SISTEMI-OPERATIVI/CURRENT/index.html
Il sito contiene argomenti avanzati che possono essere di interesse per gli studenti che vogliano estendere la loro conoscenza dei sistemi operativi moderni.
Ciciani, Pellegrini. Computing Architectures. (Reperibile sul sito Web del prof. Ciciani).
Demetrescu, Cono, Coppa. Dispenda di Sistemi di Calcolo (https://docs.google.com/document/d/1gNOXw9Iln5ZUpeplYbNvV1yL5WMZWcBJ7009k2fBgKc/edit#heading=h.np7lnsh3f2mi)
Link per la lezione zoom: https://uniroma1.zoom.us/j/7981663898
Foglio presenze: https://forms.gle/JXo7piUGQzF9GUj37
Syllabus effettuato della lezione.
Introduzione al corso tecnica e amministrativa. (slide)
Modulo 1: Concetti di base: introduzione ai sistemi operativi e alle architetture dei calcolatori. (slide)
Concetti chiave: Funzioni di un sistema operativo; principio del layering; cenni sulle architetture dei calcolatori: macchina di von neuman, Program Counter e concetto di control flow, ciclo di vita delle istruzioni; Interrupt, Eccezioni e trap, gerarchia di memoria, multiprocessing e multi tasking.
Materiale da leggere: i concetti sono coperti principalmente dal primo capitolo del libro di testo Operating Systems Concepts.
Link per la lezione zoom: https://uniroma1.zoom.us/j/7981663898
Foglio presenze: https://forms.gle/JXo7piUGQzF9GUj37
Syllabus tentativo della lezione.
Modulo 1: Privilegi del processore, Multiprocessing e multi-tasking (slide)
Modulo 2: Strutture e funzioni di base del sistema operativo: Overview of linux, syscalls, boot, microkernel, monolithic kernels and hybrids, kernel modules (slide)
Concetti chiave: Funzioni di un sistema operativo; principio del layering; cenni sulle architetture dei calcolatori: macchina di von neuman, Program Counter e concetto di control flow, ciclo di vita delle istruzioni; Interrupt, Eccezioni e trap, gerarchia di memoria, multiprocessing e multi tasking.
Struttura a grandi linee di un sistema operativo linux, libc, system call, boot di un sistema operativo, microkernel, kernel monolotici e ibridi.
Materiale da leggere: i concetti sono coperti principalmente dal secondo capitolo del libro di testo Operating Systems Concepts.
Link per la lezione zoom: https://uniroma1.zoom.us/j/7981663898
Foglio presenze: https://forms.gle/JXo7piUGQzF9GUj37
Syllabus tentativo della lezione.
Modulo 3 - Processi (slide)
Concetti chiave: Definizione di processo, Process Control Block, layout di memoria di un processo, ciclo di vita di un processo (ossia il ciclo degli stati di un processo da non confondere con la cpu e lo stato totale del processo), scheduling e context-switch, operazione sui processi: creazione e terminazione. relative syscall unix (fork, exec, wait, ...)
Materiale da leggere: i concetti sono coperti principalmente dal terzo capitolo del libro di testo Operating Systems Concepts e dall'analogo capitolo dello stallings.
Risposte ad alcune domande poste a lezione:
Deschedulazione del kernel durante le syscall. Come detto a lezione le versioni vecchie del kernel linux non lo permettevano. A partire da linux 2.6 il kernel è preemptible, ossia può essere deschedulato dalla CPU durante una syscall. Si veda: https://docs.kernel.org/locking/preempt-locking.html?highlight=preemptible
Sull'heap dopo una exec. L'heap del processo che ha eseguito l'exec viene liberato dal kernel. Pertanto un processo che viene eseguito tramite exec non ha garanzia che un'eventuale malloc sia allocata nell'heap del processo che ha eseguito l'exec. Questo non vuol dire che eventuali informazioni salvate in una malloc non siano visibili al processo avviato con l'exec, l'unico modo per essere sicuro che questo non sia possibile è azzerando la memoria ritornata dalla malloc prima della free. Lo stesso vale per evitare che la memoria sia, per puro caso, visibile ad altri processi dopo la terminazione.
Link per la lezione zoom: https://uniroma1.zoom.us/j/7981663898
Foglio presenze: https://forms.gle/JXo7piUGQzF9GUj37
Syllabus tentativo della lezione.
Concetti chiave: shared memories vs message queue. API posix per shared memory e message queue, esempi. Il problema del produttore e consumatore.
Materiale da leggere: i concetti sono coperti principalmente dal terzo capitolo del libro di testo Operating Systems Concepts e dall'analogo capitolo dello stallings.
Link per la lezione zoom: https://uniroma1.zoom.us/j/7981663898
Foglio presenze: https://forms.gle/JXo7piUGQzF9GUj37
Syllabus tentativo della lezione.
Modulo 3 - Segnali: (slide)
Sincronizzazione: introduzione al problema, race conditions, sezione critica e soluzione di peterson. (slide)
Concetti chiave: Segnali in posix, asincroni vs sincroni. Gestione dei segnali: ignore, default, block or handle. Segnali ed ereditarietà. Sezione critica e il problema della mutua esclusione. La soluzione di peterson.
Materiale da leggere: i segnali sono coperti parzialmente sul libro di testo, si legga lo stallings. La sincronizzazione è sul capitolo 6.
Link per la lezione zoom: https://uniroma1.zoom.us/j/7981663898
Foglio presenze: https://forms.gle/JXo7piUGQzF9GUj37
Syllabus tentativo della lezione.
Sincronizzazione: problemi della soluzione di peterson, supporto hardware: barriere, test & set, cas. Spinlocks (o mutex) , semafori, problemi notevoli di sincronizzazione (slide)
Materiale da leggere: i segnali sono coperti parzialmente sul libro di testo, si legga lo stallings. La sincronizzazione è sul capitolo 6 e 7 del libro di testo.
Link per la lezione zoom: https://uniroma1.zoom.us/j/7981663898
Foglio presenze: https://forms.gle/JXo7piUGQzF9GUj37
Syllabus tentativo della lezione.
Sincronizzazione parte finale: RW locks, Dijkstra solution for dining philosophers.
Memoria: mmu; binding a compile, load and runtime; dynamic loading vs dynamic linking; memory protection with base address and limit address; mmu with binding at runtime, with a relocation register, introduction to paging (slide)
Materiale da leggere: La memoria è coperta dai capitoli 9 e 10 del libro.
Link per la lezione zoom: https://uniroma1.zoom.us/j/7981663898
Foglio presenze: https://forms.gle/JXo7piUGQzF9GUj37
Syllabus tentativo della lezione.
Memoria: paginazione (slide)
Materiale da leggere: La memoria è coperta dai capitoli 9 e 10 del libro.
Link per la lezione zoom: https://uniroma1.zoom.us/j/7981663898
Foglio presenze: https://forms.gle/JXo7piUGQzF9GUj37
Syllabus tentativo della lezione.
Memoria: paginazione (slide)
Materiale da leggere: La memoria è coperta dai capitoli 9 e 10 del libro.