Sistemi Operativi (9 CFU) Corso di Laurea in Ingegneria Informatica Universita' di Roma Tor Vergata AA. 2020/2021
Docente: Francesco Quaglia
AVVISI 31/5/2022 - Questa pagina ed i relativi link non verranno piu' aggiornati 5/5/2022 - I risultati dell'appello d'esame (prova di laboratorio) svoltosi il giorno 4/5/2022 sono disponibili a questo link. 3/5/2022 - L'appello speciale del 4/5/2022 verra' svolto (sia prova di programmazione che prova scritta) in laboratorio alle ore 15:00 5/4/2022 - L'appello speciale riservato agli studenti iscritti in cautelativa' verra' svolto nelle seguenti date: Prova scritta il giorno 4/5/2022 - Prova di programmazione il giorno 4/5/2022 27/2/2022 - Gli studenti che per l'AA 2020-2021 hanno ottenuto valutazione sufficiente sia alla prova scritta che alla prova di laboratorio e vogliono verbalizzare il voto devono mandare una email al docente indicando i CFU, la matricola e che accettano il voto conseguito 27/2/2022 - I risultati dell'appello d'esame (prova di laboratorio) svoltosi il giorno 22/2/2022 sono disponibili a questo link. 27/2/2022 - I risultati dell'appello d'esame (prova scritta) svoltosi il giorno 21/2/2022 sono disponibili a questo link. 19/2/2022 - La prova in laboratorio del 22/2/2022 avra' luogo alle ore 11:00 18/2/2022 - La prova scritta del 21/2/2022 avra' luogo in aula 7 alle ore 10:30 28/1/2022 - I risultati dell'appello d'esame (prova di laboratorio) svoltosi il giorno 25/1/2022 sono disponibili a questo link. 28/1/2022 - I risultati dell'appello d'esame (prova scritta) svoltosi il giorno 24/1/2022 sono disponibili a questo link. 22/1/2022 - La prova in laboratorio del 25/1/2022 avra' luogo alle ore 11:00 22/1/2022 - La prova scritta del 24/1/2022 avra' luogo in aula 6 alle ore 10:00 25/11/2021 - A causa di un conflitto con la data d'esame di un altro corso, il primo appello della sessione invernale verra' svolto secondo il seguente calendario: Primo appello: Prova scritta il giorno 24/1/2022 - Prova di programmazione il giorno 25/1/2022 18/11/2021 - I terzi due appelli d'esame (sessione invernale) si svolgeranno secondo il seguente calendario e le seguenti modalita' (a meno di variazioni dovute allo sviluppo della pandemia COVID-19): Primo appello: Prova scritta il giorno 18/1/2022 - Prova di programmazione il giorno 20/1/2022 Secondo appello: Prova scritta il giorno 21/2/2022 - Prova di programmazione il giorno 22/2/2022 25/9/2021 - I risultati dell'appello d'esame (prova di laboratorio) svoltosi il giorno 17/9/2021 sono disponibili a questo link. 25/9/2021 - I risultati dell'appello d'esame (prova scritta) svoltosi il giorno 16/9/2021 sono disponibili a questo link. 16/9/2021 - La prova in laboratorio del 17/9/2021 avra' luogo alle ore 11:00 15/9/2021 - La prova scritta del 16/9/2021 avra' luogo in aula C6 alle ore 10:30 10/9/2021 - I risultati dell'appello d'esame (prova di laboratorio) svoltosi il giorno 7/9/2021 sono disponibili a questo link. 10/9/2021 - I risultati dell'appello d'esame (prova scritta) svoltosi il giorno 6/9/2021 sono disponibili a questo link. 6/9/2021 - La prova in laboratorio del 7/9/2021 avra' luogo alle ore 11:00 4/9/2021 - La prova scritta del 6/9/2021 avra' luogo in aula C1 alle ore 10:00 26/7/2021 - Gli studenti che hanno ricevuto una valutazione sufficiente ed intendono verbalizzare il voto devono mandare una richiesta via email al docente indicando l'accettazione della valutazione conseguita 26/7/2021 - I risultati dell'appello d'esame (prova di laboratorio) svoltosi il giorno 21/7/2021 sono disponibili a questo link. 26/7/2021 - I risultati dell'appello d'esame (prova scritta) svoltosi il giorno 19/7/2021 sono disponibili a questo link. 20/7/2021 - Per la prova in laboratorio del 21/7/2021 verra' adottata la seguente organizzazione in turni (studenti non prenotati sul sistema Delphi non potranno essere ammessi alla prova): Esame da 6CFU - ore 10:00 Esame da 9CFU - Cognomi A-L ore 13:30 - Cognomi M-Z ore 16:00 16/7/2021 - La prova scritta del 19/7/2021 avra' luogo in aula A4 alle ore 10:00 8/7/2021 - I secondi due appelli d'esame (sessione autunnale) si svolgeranno secondo il seguente calendario e le seguenti modalita' (a meno di variazioni dovute allo sviluppo della pandemia COVID-19): Terzo appello: Prova scritta il giorno 6/9/2021 - Prova di programmazione il giorno 7/9/2021 Quarto appello: Prova scritta il giorno 16/9/2021 - Prova di programmazione il giorno 17/9/2021 2/7/2021 - Le prenotazoni su Delphi per il secondo appello estivo sono state aperte, studenti che non si saranno prenotati entro la chiusura delle prenotazioni o che avranno sbagliato la loro prenotazione (6CFu vs 9CFU) non saranno ammessi alla prova d'esame. 25/6/2021 - Gli studenti che hanno ricevuto una valutazione sufficiente ed intendono verbalizzare il voto devono mandare una richiesta via email al docente indicando l'accettazione della valutazione conseguita 25/6/2021 - I risultati dell'appello d'esame (prova di laboratorio) svoltosi il giorno 23/6/2021 sono disponibili a questo link. 25/6/2021 - I risultati dell'appello d'esame (prova scritta) svoltosi il giorno 21/6/2021 sono disponibili a questo link. 18/6/2021 - Per la prova in laboratorio del 23/6/2021 verra' adottata la seguente organizzazione in turni (studenti non prenotati sul sistema Delphi non potranno essere ammessi alla prova): Esame da 6CFU - ore 10:00 Esame da 9CFU - Cognomi A-M ore 13:30 - Cognomi N-Z ore 16:00 18/6/2021 - A questo link e' disponibile il modulo di autocertificazione relativa al Covid-19 che ogni studente deve compilare e consegnare all'atto della sua partecipazione ad una qualsiasi prova d'esame. Non verranno ammessi alle prove d'esame studenti che non abbiano preparato e firmato tale modulo. 17/6/2021 - Per la prova scritta del 21/6/2021 verra' adottata la seguente organizzazione in turni (studenti non prenotati sul sistema Delphi non potranno essere ammessi alla prova): Esame da 6CFU - ore 9:00 aula A3 Esame da 9CFU - ore 11:30 aula A4 3/6/2021 - A questo link e disponibile un set di esercizi d'esame risolti 15/5/2021 - Le assegnazioni delle tesine sono state attivate, seguire questo link per accedere al sistema di assegnazione delle tesine via Web. 13/4/2021 - I primi due appelli d'esame (sessione estiva) si svolgeranno secondo il seguente calendario e le seguenti modalita' (a meno di variazioni dovute allo sviluppo della pandemia COVID-19): Primo appello: Prova scritta il giorno 21/6/2021 - Prova di programmazione il giorno 23/6/2021 Secondo appello: Prova scritta il giorno 19/7/2021 - Prova di programmazione il giorno 21/7/2021 16/3/2021 - Il codice per accedere all'aula virtuale su Teams dove viene svolto il tutoraggio del corso e' g416uyb 15/3/2021 - Il tutoraggio del corso di Sistemi Operativi avra' inizio il giorno 17/3/2021 25/2/2021 - Il codice per accedere all'aula virtuale su Teams dove vengono svolte le lezioni del corso e' qyk6tp8 25/2/2021 - Questa pagina e' stata pubblicata Orario delle lezioni Lunedi' 11:30-13.15 Aula B2 aula virtuale in Teams Mercoledi' 11:30-13.15 Aula B2 aula virtuale in Teams Giovedi' 11.30-13.15 Aula B2 aula virtuale in Teams Tutoraggio (attivo a partire da meta' Marzo durante il periodo delle lezioni) Mercoledi' 16:00-18.00 Aula A4 aula virtuale in Teams Obiettivi del corso Il corso ha l'obbiettivo di presentare allo studente concetti basici riguardanti la strutturazione dei moderni sistemi operativi, unitamente alle funzionalita' che essi offrono sia all'utenza che agli sviluppatori di applicazioni software. Particolare attenzione verra' dedicata ai supporti che i sistemi operativi offrono per lo sviluppo del software in linguaggio C. I concetti introdotti verrano calati su due studi di caso, riguardanti la famiglia dei sistemi Unix e quella dei sistemi Windows. Prerequisiti Conoscenza di base del linguaggio C Conoscenza di base di tool-chain di compilazione (e.g. gcc) Conoscenza dell'architettura di massima di un sistema di calcolo Nozioni di programmazione e strutturazione del software di livello assembler (ASM) Modalita' d'esame (queste potranno subire modifiche in relazione allo sviluppo della pandemia legata al COVID-19) L'esame richiede il superamento di una prova scritta e di una prova pratica di programmazione in linguaggio C (in tecnologia Posix o Win-API a scelta dello studente) da svolgersi in laboratorio. La prova scritta vale un massimo di 21 punti, con 12 come soglia per la sufficienza. La prova pratica in laboratorio vale un massimo di 11 punti, con 6 come soglia per la sufficienza. Il voto d'esame risultera' pari alla somma dei punteggi conseguiti alle due prove. Per la lode e' richiesto un punteggio complessivo di almeno 31. Nel caso in cui lo studente consegua la sufficienza solo ad una delle due prove, nell'ambito dello stesso anno accademico egli sara' esonerato dal dover rieseguire la prova in cui e' risultato gia' sufficiente. Potra' quindi risostenere la prova (scritta o di programmazione) dove non ha riportato la sufficienza ad un appello successivo dello stesso anno accademico. Allo studente e' data la possibilita' di sviluppare una tesina (un piccolo progetto) in linguaggio C, da svolgersi individualmente o in gruppo formato da al piu' 2 persone, che vale fino ad un massimo di ulteriori 5 punti, i quali si sommeranno alla valutazione ottenuta come somma dei punteggi della prova scritta e della prova di programmazione in laboratorio. Si potra' usufruire dei punti addizionali dati dalla tesina solo nel caso in cui si sia gia' conseguita una valutazione di almeno 18 alla prova d'esame. L'assegnazione della tesina ha validita' per l'anno accademico corrente. La consegna della tesina (se si e' scelto di svilupparla) dovra' quindi avvenire nello stesso anno accademico in cui viene svolta la prova d'esame. Per consegnare la tesina basta richiedere un appuntamento al docente via email. Seguire questo link per accedere al sistema di assegnazione delle tesine via Web. Testi consigliati [T1] Sistemi operativi - Silberschatz Abraham, Galvin Peter Baer, Gagne Greg - Addison Wesley, decima edizione [T2] Operating Systems: Internals and Design Principles - William Stallings - Prentice Hall, fifth edition (o superiori) [T3] Francesco Quaglia, Camil Demetrescu, "Programmazione in Ambiente UNIX". Disponibile in formato pdf [T4] C/ANSI-C, Principi di Programmazione e Manuale di Riferimento - Brian W.Kernighan, Dennis M.Ritchie - Pearson, Prentice Hall Link utili Link alla pagina dell'ambiente Microsoft Visual Studio (Express Edition - Now Community) per lo sviluppo di applicazioni software in tecnologia C/Windows (Win-API) Link alla pagina MSDN (Microsoft Development Network) Link alla pagina dell'ambiente VirtualBox per la virtualizzazione delle macchine - NOTA: per utilizzare correttamente il software di virtualizzazione attivare nel BIOS il relativo supporto hardware (VT-x/AMD-v) Link per il dowload di una immagine di sistema Linux/Suse/x86-64 (VDI virtual disk) - formato compresso da 2.5 GB - credenziali dell'utente amministratore: username="so" - password="sistemioperativi" Link alla pagina dell'ambiente Wine per lo sviluppo e l'esecuzione di applicazioni Windows su sistemi Linux/MacOS. Link alla pagina di login per il download di prodotti software (sistemi operativi ed applicazioni) nell'ambito del Microsoft Campus Agreement dell'Universita' di Roma Tor Vergata. Link al portale per il download di prodotti software in ambito Microsoft Dream Spark. Programma previsto per l'a.a. 2020-2021 (NOTA IMPORTANTE: per coloro che devono sostenere l'esame da 6CFU le parti del programma in rosso sono escluse sia dalla prova scritta che dalla prova di programmazione in laboratorio) Introduzione ai sistemi operativi Richiami sull'organizzazione di un sistema di calcolo Obiettivi dei sistemi operativi Sistemi batch uniprogrammati Sistemi batch multiprogrammati Sistemi time-sharing Architettura di massima dei sistemi UNIX/Windows Ambienti di esecuzione Aspetti basici sulla sicurezza del software Processi e thread Esecuzione e stati di processi Multiprogrammazione e Swapping Strutture di controllo di processi Immagine di un processo Liste di processi e scheduling Processi in sistemi UNIX/Windows Supporti per il multi-threading Threads in sistemi UNIX/Windows Scheduling della CPU Metriche di riferimento Algorithmi di scheduling classici Scheduling in sistemi UNIX/Windows Virtual File System ed I/O Concetti basici Metodi di accesso e di allocazione dei file Implementazione del virtual file system Gestione dei buffer di I/O Schedulazione di I/O Gestione delle utenze e dei permessi di accesso Concetti basici di crittografia ed autenticazione Virtual file system ed I/O in sistemi UNIX/Windows Comunicazione Pipe Pipe con nome Scambio di messaggi Comunicazione in sistemi UNIX/Windows Gestione della memoria Binding degli indirizzi Partizioni fisse e variabili Paginazione e segmentazione Memoria virtuale Memoria condivisa e file-mapping Gestione della memoria in sistemi UNIX/Windows Sincronizzazione Spinlocks, mutex e semafori Variabili di condizione (argomento rimosso dal programma) Caratterizzazione e gestione del deadlock (argomento rimosso dal programma) Supporti per la sincronizzazione in sistemi UNIX/Windows Eventi Meccanismi di segnalazione e gestione di eventi sincroni ed asincroni Supporti in sistemi UNIX/Windows Servizi di sistema per la programmazione di rete Stack di protocolli di comunicazione Sockets in sistemi UNIX/Windows Materiale didattico (NOTA IMPORTANTE: le slides non sono un libro di testo, sono solo il canovaccio per lo svolgimento delle lezioni) Argomento Slides Esempi Software Ultimo Aggiornamento Introduzione ai sistemi operativi download link download link 25/2/2021 Processi e thread download link download link 9/3/2021 Scheduling della CPU download link download link 27/3/2021 Virtual file system download link download link 6/4/2021 Comunicazione download link download link 20/4/2021 Gestione della memoria download link download link 27/4/2021 Sincronizzazione download link download link 8/5/2021 Eventi download link download link 16/5/2021 Sockets download link download link 21/5/2021 Precedenti prove d'esame AA. 2019-2020 (6/9CFU): prove uniche: 16-6-2020 - 18-6-2020 - 17-9-2020 - 18-9-2020- 20-1-2021 - 18-2-2021 AA. 2018-2019 (6CFU): prove scritte: 25-6-2019 - 24-7-2019 - 3-9-2019 - 16-9-2019 - 20-1-2020 - 24-2-2020 prove di programmazione (e soluzioni): 18-9-2019 - 17-10-2019 - 21-1-2020 AA. 2017-2018 (6CFU): prove scritte: 4-6-2018 - 27-6-2018 - 17-7-2018 - 7-9-2018 - 18-9-2018 - 22-1-2019 - 18-2-2019 prove di programmazione (e soluzioni): 26-6-2018 - 18-7-2018 - 7-9-2018 - 19-9-2018 - 23-1-2019
31/5/2022 - Questa pagina ed i relativi link non verranno piu' aggiornati
5/5/2022 - I risultati dell'appello d'esame (prova di laboratorio) svoltosi il giorno 4/5/2022 sono disponibili a questo link.
3/5/2022 - L'appello speciale del 4/5/2022 verra' svolto (sia prova di programmazione che prova scritta) in laboratorio alle ore 15:00
5/4/2022 - L'appello speciale riservato agli studenti iscritti in cautelativa' verra' svolto nelle seguenti date:
27/2/2022 - Gli studenti che per l'AA 2020-2021 hanno ottenuto valutazione sufficiente sia alla prova scritta che alla prova di laboratorio e vogliono verbalizzare il voto devono mandare una email al docente indicando i CFU, la matricola e che accettano il voto conseguito
27/2/2022 - I risultati dell'appello d'esame (prova di laboratorio) svoltosi il giorno 22/2/2022 sono disponibili a questo link.
27/2/2022 - I risultati dell'appello d'esame (prova scritta) svoltosi il giorno 21/2/2022 sono disponibili a questo link.
19/2/2022 - La prova in laboratorio del 22/2/2022 avra' luogo alle ore 11:00
18/2/2022 - La prova scritta del 21/2/2022 avra' luogo in aula 7 alle ore 10:30
28/1/2022 - I risultati dell'appello d'esame (prova di laboratorio) svoltosi il giorno 25/1/2022 sono disponibili a questo link.
28/1/2022 - I risultati dell'appello d'esame (prova scritta) svoltosi il giorno 24/1/2022 sono disponibili a questo link.
22/1/2022 - La prova in laboratorio del 25/1/2022 avra' luogo alle ore 11:00
22/1/2022 - La prova scritta del 24/1/2022 avra' luogo in aula 6 alle ore 10:00
25/11/2021 - A causa di un conflitto con la data d'esame di un altro corso, il primo appello della sessione invernale verra' svolto secondo il seguente calendario:
18/11/2021 - I terzi due appelli d'esame (sessione invernale) si svolgeranno secondo il seguente calendario e le seguenti modalita' (a meno di variazioni dovute allo sviluppo della pandemia COVID-19):
25/9/2021 - I risultati dell'appello d'esame (prova di laboratorio) svoltosi il giorno 17/9/2021 sono disponibili a questo link.
25/9/2021 - I risultati dell'appello d'esame (prova scritta) svoltosi il giorno 16/9/2021 sono disponibili a questo link.
16/9/2021 - La prova in laboratorio del 17/9/2021 avra' luogo alle ore 11:00
15/9/2021 - La prova scritta del 16/9/2021 avra' luogo in aula C6 alle ore 10:30
10/9/2021 - I risultati dell'appello d'esame (prova di laboratorio) svoltosi il giorno 7/9/2021 sono disponibili a questo link.
10/9/2021 - I risultati dell'appello d'esame (prova scritta) svoltosi il giorno 6/9/2021 sono disponibili a questo link.
6/9/2021 - La prova in laboratorio del 7/9/2021 avra' luogo alle ore 11:00
4/9/2021 - La prova scritta del 6/9/2021 avra' luogo in aula C1 alle ore 10:00
26/7/2021 - Gli studenti che hanno ricevuto una valutazione sufficiente ed intendono verbalizzare il voto devono mandare una richiesta via email al docente indicando l'accettazione della valutazione conseguita
26/7/2021 - I risultati dell'appello d'esame (prova di laboratorio) svoltosi il giorno 21/7/2021 sono disponibili a questo link.
26/7/2021 - I risultati dell'appello d'esame (prova scritta) svoltosi il giorno 19/7/2021 sono disponibili a questo link.
20/7/2021 - Per la prova in laboratorio del 21/7/2021 verra' adottata la seguente organizzazione in turni (studenti non prenotati sul sistema Delphi non potranno essere ammessi alla prova):
16/7/2021 - La prova scritta del 19/7/2021 avra' luogo in aula A4 alle ore 10:00
8/7/2021 - I secondi due appelli d'esame (sessione autunnale) si svolgeranno secondo il seguente calendario e le seguenti modalita' (a meno di variazioni dovute allo sviluppo della pandemia COVID-19):
2/7/2021 - Le prenotazoni su Delphi per il secondo appello estivo sono state aperte, studenti che non si saranno prenotati entro la chiusura delle prenotazioni o che avranno sbagliato la loro prenotazione (6CFu vs 9CFU) non saranno ammessi alla prova d'esame.
25/6/2021 - Gli studenti che hanno ricevuto una valutazione sufficiente ed intendono verbalizzare il voto devono mandare una richiesta via email al docente indicando l'accettazione della valutazione conseguita
25/6/2021 - I risultati dell'appello d'esame (prova di laboratorio) svoltosi il giorno 23/6/2021 sono disponibili a questo link.
25/6/2021 - I risultati dell'appello d'esame (prova scritta) svoltosi il giorno 21/6/2021 sono disponibili a questo link.
18/6/2021 - Per la prova in laboratorio del 23/6/2021 verra' adottata la seguente organizzazione in turni (studenti non prenotati sul sistema Delphi non potranno essere ammessi alla prova):
18/6/2021 - A questo link e' disponibile il modulo di autocertificazione relativa al Covid-19 che ogni studente deve compilare e consegnare all'atto della sua partecipazione ad una qualsiasi prova d'esame. Non verranno ammessi alle prove d'esame studenti che non abbiano preparato e firmato tale modulo.
17/6/2021 - Per la prova scritta del 21/6/2021 verra' adottata la seguente organizzazione in turni (studenti non prenotati sul sistema Delphi non potranno essere ammessi alla prova):
3/6/2021 - A questo link e disponibile un set di esercizi d'esame risolti
15/5/2021 - Le assegnazioni delle tesine sono state attivate, seguire questo link per accedere al sistema di assegnazione delle tesine via Web.
13/4/2021 - I primi due appelli d'esame (sessione estiva) si svolgeranno secondo il seguente calendario e le seguenti modalita' (a meno di variazioni dovute allo sviluppo della pandemia COVID-19):
16/3/2021 - Il codice per accedere all'aula virtuale su Teams dove viene svolto il tutoraggio del corso e' g416uyb
15/3/2021 - Il tutoraggio del corso di Sistemi Operativi avra' inizio il giorno 17/3/2021
25/2/2021 - Il codice per accedere all'aula virtuale su Teams dove vengono svolte le lezioni del corso e' qyk6tp8
25/2/2021 - Questa pagina e' stata pubblicata
Il corso ha l'obbiettivo di presentare allo studente concetti basici riguardanti la strutturazione dei moderni sistemi operativi, unitamente alle funzionalita' che essi offrono sia all'utenza che agli sviluppatori di applicazioni software. Particolare attenzione verra' dedicata ai supporti che i sistemi operativi offrono per lo sviluppo del software in linguaggio C. I concetti introdotti verrano calati su due studi di caso, riguardanti la famiglia dei sistemi Unix e quella dei sistemi Windows.
L'esame richiede il superamento di una prova scritta e di una prova pratica di programmazione in linguaggio C (in tecnologia Posix o Win-API a scelta dello studente) da svolgersi in laboratorio. La prova scritta vale un massimo di 21 punti, con 12 come soglia per la sufficienza. La prova pratica in laboratorio vale un massimo di 11 punti, con 6 come soglia per la sufficienza. Il voto d'esame risultera' pari alla somma dei punteggi conseguiti alle due prove. Per la lode e' richiesto un punteggio complessivo di almeno 31.
Nel caso in cui lo studente consegua la sufficienza solo ad una delle due prove, nell'ambito dello stesso anno accademico egli sara' esonerato dal dover rieseguire la prova in cui e' risultato gia' sufficiente. Potra' quindi risostenere la prova (scritta o di programmazione) dove non ha riportato la sufficienza ad un appello successivo dello stesso anno accademico.
Allo studente e' data la possibilita' di sviluppare una tesina (un piccolo progetto) in linguaggio C, da svolgersi individualmente o in gruppo formato da al piu' 2 persone, che vale fino ad un massimo di ulteriori 5 punti, i quali si sommeranno alla valutazione ottenuta come somma dei punteggi della prova scritta e della prova di programmazione in laboratorio. Si potra' usufruire dei punti addizionali dati dalla tesina solo nel caso in cui si sia gia' conseguita una valutazione di almeno 18 alla prova d'esame. L'assegnazione della tesina ha validita' per l'anno accademico corrente. La consegna della tesina (se si e' scelto di svilupparla) dovra' quindi avvenire nello stesso anno accademico in cui viene svolta la prova d'esame. Per consegnare la tesina basta richiedere un appuntamento al docente via email.