Sistemi Operativi (6 CFU) Corso di Laurea in Ingegneria Informatica Universita' di Roma Tor Vergata AA. 2018/2019
Docente: Francesco Quaglia
AVVISI 4/3/2020 - Questa pagina ed i relativi link non verranno piu' aggiornati 4/3/2020 - Tutti gli studenti che hanno avuto valutazioni sufficienti sia alla prova scritta che alla prova pratica in laboratorio nell'anno accademico 2018-2019 dovranno indicare esplicitamente tramite una email spedita al docente ENTRO IL TERMINE DEL 20 MARZO 2020 di accettare la votazione conseguita, indicando anche il numero di matricola, cosi' da poter verbalizzare l'esame sul sistema Delphi. Il termine del 20 Marzo rimane valido anche per coloro che ancora non hanno consegnato il progetto software, ed intendono farlo nell'anno accadamico 2018-2019. 4/3/2020 - I risultati dell'appello del 24/2/2020 sono disponibili a questo link 4/3/2020 - I risultati dell'appello del 25/2/2020 (prova pratica in laboratorio) sono disponibili a questo link 24/2/2020 - La prova pratica in laboratorio del 25/2/2020 verra' svolta in un unico turno che avra' inizio alle ore 10:45 29/1/2020 - I risultati dell'appello del 20/1/2020 sono disponibili a questo link 29/1/2020 - I risultati dell'appello del 21/1/2020 (prova pratica in laboratorio) sono disponibili a questo link 20/1/2020 - La prova pratica in laboratorio del 21/1/2020 verra' svolta in un unico turno che avra' inizio alle ore 11:15 6/12/2019 - I terzi due appelli d'esame (sessione invernale) si svolgeranno secondo il seguente calendario: Quinto appello: Prova scritta il giorno 20/1/2020 - Prova di programmazione il giorno 21/1/2020 Sesto appello: Prova scritta il giorno 24/2/2020 - Prova di programmazione il giorno 25/2/2020 4/11/2019 - I risultati dell'appello del 17/10/2019 (prova pratica in laboratorio) sono disponibili a questo link 16/10/2019 - La prova pratica in laboratorio del 17/10/2019 verra' svolta in un unico turno che avra' inizio alle ore 11:00 28/9/2019 - I risultati dell'appello del 18/9/2019 (prova pratica in laboratorio) sono disponibili a questo link 19/9/2019 - I risultati dell'appello del 16/9/2019 sono disponibili a questo link 17/9/2019 - La prova pratica in laboratorio del 18/9/2019 verra' svolta in un unico turno che avra' inizio alle ore 13:45 10/9/2019 - I risultati dell'appello del 5/9/2019 (prova pratica in laboratorio) sono disponibili a questo link 10/9/2019 - La prova pratica annullata in data 25/7/2019 verra' recuperata il giorno 17/10/2019 6/9/2019 - I risultati dell'appello del 3/9/2019 sono disponibili a questo link 4/9/2019 - Per la prova pratica in laboratorio del 5/9/2019 verra' adottata la seguente organizzazione in turni (studenti non prenotati sul sistema Delphi non potranno essere ammessi alla prova): Cognomi A-F Ore 10:30 Cognomi G-Z Ore 14:00 27/7/2019 - I risultati dell'appello del 24/7/2019 sono disponibili a questo link 25/7/2019 - URGENTE: a causa di una forma influenzale il docente non potra' presenziare allo svolgimento della prova di programmazione in laboratorio prevista in data odierna. Per permetere a tutti gli studenti di usufruire del corretto numero di prove d'esame durante l'anno accademico, tale prova di programmazione verra' recuperata ad Ottobre 2019 a debita distanza dalle due prove di programmazione previste per Settembre 2019. Per necessita' particolari a riguardo di questo annullamento, gli studenti possono contattare il docente tramite email. 24/7/2019 - Per la prova pratica in laboratorio del 25/7/2019 verra' adottata la seguente organizzazione in turni (studenti non prenotati sul sistema Delphi non potranno essere ammessi alla prova): Cognomi A-L Ore 10:00 Cognomi M-Z Ore 13:30 23/7/2019 - L'appello d'esame del 24/7/2019 si svolgera' alle ore 9:30 in aula B1 19/7/2019 - I secondi due appelli d'esame (sessione autunnale) si svolgeranno secondo il seguente calendario: Terzo appello: Prova scritta il giorno 3/9/2019 - Prova di programmazione il giorno 5/9/2019 Quarto appello: Prova scritta il giorno 16/9/2019 - Prova di programmazione il giorno 18/9/2019 2/7/2018 - I risultati dell'appello del 25/6/2019 sono disponibili a questo link 2/7/2018 - I risultati dell'appello del 26/6/2019 (prova pratica in laboratorio) sono disponibili a questo link 25/6/2019 - Per la prova pratica in laboratorio del 26/6/2019 verra' adottata la seguente organizzazione in turni (studenti non prenotati sul sistema Delphi non potranno essere ammessi alla prova): Cognomi A-L Ore 10:00 Cognomi M-Z Ore 13:30 24/6/2019 - L'appello d'esame del 25/6/2019 si svolgera' alle ore 9:30 in aula B1 16/6/2018 - I risultati del pre-appello del 5/6/2019 sono disponibili a questo link 4/6/2019 - Per il preappello del 5/6/2019, che si svolgera' alle ore 16:00, la ripartizione degli studenti prenotati sulle aule sara' la seguente: Cognomi A-L - Aula A4 Cognomi M-Z - Aula A2 24/5/2019 - A causa della sospensione della didattica in tutto l'ateneo la lezione ed il tutoraggio di Sistemi Operativi del 27/5/2019 non verranno svolti. Inoltre, la lezione di Sistemi Operativi del 30/5/2019 verra' sostituita da attivita' di tutoraggio. 23/5/2019 - Le slides con gli esercizi d'esame oggetto del tutoraggio odierno sono disponibili a questo link. 20/5/2018 - Il tutoraggio odierno non verra' svolto. 19/5/2018 - In previsione del preappello del giorno 5/6/2019, il docente svolgera' in data 23/5/2019 (alle ore 16:00 in aula A2) un tutoraggio addizionale che vertera' sulla discussione di alcune tipiche tracce d'esame. 11/5/2018 - Le assegnazioni delle tesine per l'anno accademico 2018/2019 sono state attivate, seguire questo link per accedere al sistema di assegnazione delle tesine via Web. Si prega chiuque usi tale sistema di verificare che i relativi messaggi di posta elettronica non vengano erroneamente classificati come spam. 9/5/2019 - Si rammenta che non potranno essere ammessi allo svolgimento delle prove d'esame (sia scritte in aula che pratiche in laboratorio) studenti che non hanno effettuato la corrispettiva prenotazione tramite il sistema Delphi. 9/5/2019 - Il pre-appello d'esame di sistemi operativi si svolgera' il giorno 5/6/2019 alle ore 16:00. 3/4/2019 - I prossimi due tutoraggi NON avranno luogo Lunedi' 8 e Lunedi' 15 Aprile 2019, bensi' Mercoledi 10 e Mercoledi' 17 Aprile 2019. In entrambi i casi, i tutoraggi verranno svolti all'orario solito (16:00-18:00) sempre in aula A2. 13/3/2019 - I primi due appelli d'esame (sessione estiva) si svolgeranno secondo il seguente calendario: Primo appello: Prova scritta il giorno 25/6/2019 - Prova di programmazione il giorno 26/6/2019 Secondo appello: Prova scritta il giorno 24/7/2018 - Prova di programmazione il giorno 25/7/2018 1/3/2019 - Il corso avra' inizio il giorno 4/3/2019 1/3/2019 - Questa pagina e' stata pubblicata Orario delle lezioni Lunedi' 11:30-13.30 Aula A4 Giovedi' 11.30-13.30 Aula A4 Tutoraggio (attivo durante il periodo delle lezioni) Lunedi' 16:00-18.00 Aula A2 Il tutoraggio verra' tenuto dall'Ing. Emiliano Silvestri Il materiale che verra' utilizzato durante le ore di tutoraggio e' accessibile a questo link 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 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 effettuarla) 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, settima edizione (o superiori) [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 1.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. 2018-2019 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 Gesitone delle utenze e dei permessi di accesso Virtual file system ed I/O 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 Supporti 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 Argomento Slides Esempi Software Ultimo Aggiornamento Introduzione ai sistemi operativi download link download link 17/3/2019 Processi e thread download link download link 17/3/2019 Scheduling della CPU download link download link 3/4/2019 Virtual file system download link download link 10/4/2019 Gestione della memoria download link download link 1/5/2019 Sincronizzazione download link download link 12/5/2019 Eventi download link download link 2/6/2019 Sockets download link download link 5/6/2019 Precedenti prove d'esame AA. 2017-2018: prove scritte: 4-6-2018 - 27-6-2018 - 17-7-2018 - 7-9-2018 - 18-9-2018 - 7-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
4/3/2020 - Questa pagina ed i relativi link non verranno piu' aggiornati
4/3/2020 - Tutti gli studenti che hanno avuto valutazioni sufficienti sia alla prova scritta che alla prova pratica in laboratorio nell'anno accademico 2018-2019 dovranno indicare esplicitamente tramite una email spedita al docente ENTRO IL TERMINE DEL 20 MARZO 2020 di accettare la votazione conseguita, indicando anche il numero di matricola, cosi' da poter verbalizzare l'esame sul sistema Delphi. Il termine del 20 Marzo rimane valido anche per coloro che ancora non hanno consegnato il progetto software, ed intendono farlo nell'anno accadamico 2018-2019.
4/3/2020 - I risultati dell'appello del 24/2/2020 sono disponibili a questo link
4/3/2020 - I risultati dell'appello del 25/2/2020 (prova pratica in laboratorio) sono disponibili a questo link
24/2/2020 - La prova pratica in laboratorio del 25/2/2020 verra' svolta in un unico turno che avra' inizio alle ore 10:45
29/1/2020 - I risultati dell'appello del 20/1/2020 sono disponibili a questo link
29/1/2020 - I risultati dell'appello del 21/1/2020 (prova pratica in laboratorio) sono disponibili a questo link
20/1/2020 - La prova pratica in laboratorio del 21/1/2020 verra' svolta in un unico turno che avra' inizio alle ore 11:15
6/12/2019 - I terzi due appelli d'esame (sessione invernale) si svolgeranno secondo il seguente calendario:
4/11/2019 - I risultati dell'appello del 17/10/2019 (prova pratica in laboratorio) sono disponibili a questo link
16/10/2019 - La prova pratica in laboratorio del 17/10/2019 verra' svolta in un unico turno che avra' inizio alle ore 11:00
28/9/2019 - I risultati dell'appello del 18/9/2019 (prova pratica in laboratorio) sono disponibili a questo link
19/9/2019 - I risultati dell'appello del 16/9/2019 sono disponibili a questo link
17/9/2019 - La prova pratica in laboratorio del 18/9/2019 verra' svolta in un unico turno che avra' inizio alle ore 13:45
10/9/2019 - I risultati dell'appello del 5/9/2019 (prova pratica in laboratorio) sono disponibili a questo link
10/9/2019 - La prova pratica annullata in data 25/7/2019 verra' recuperata il giorno 17/10/2019
6/9/2019 - I risultati dell'appello del 3/9/2019 sono disponibili a questo link
4/9/2019 - Per la prova pratica in laboratorio del 5/9/2019 verra' adottata la seguente organizzazione in turni (studenti non prenotati sul sistema Delphi non potranno essere ammessi alla prova):
27/7/2019 - I risultati dell'appello del 24/7/2019 sono disponibili a questo link
25/7/2019 - URGENTE: a causa di una forma influenzale il docente non potra' presenziare allo svolgimento della prova di programmazione in laboratorio prevista in data odierna. Per permetere a tutti gli studenti di usufruire del corretto numero di prove d'esame durante l'anno accademico, tale prova di programmazione verra' recuperata ad Ottobre 2019 a debita distanza dalle due prove di programmazione previste per Settembre 2019. Per necessita' particolari a riguardo di questo annullamento, gli studenti possono contattare il docente tramite email.
24/7/2019 - Per la prova pratica in laboratorio del 25/7/2019 verra' adottata la seguente organizzazione in turni (studenti non prenotati sul sistema Delphi non potranno essere ammessi alla prova):
23/7/2019 - L'appello d'esame del 24/7/2019 si svolgera' alle ore 9:30 in aula B1
19/7/2019 - I secondi due appelli d'esame (sessione autunnale) si svolgeranno secondo il seguente calendario:
2/7/2018 - I risultati dell'appello del 25/6/2019 sono disponibili a questo link
2/7/2018 - I risultati dell'appello del 26/6/2019 (prova pratica in laboratorio) sono disponibili a questo link
25/6/2019 - Per la prova pratica in laboratorio del 26/6/2019 verra' adottata la seguente organizzazione in turni (studenti non prenotati sul sistema Delphi non potranno essere ammessi alla prova):
24/6/2019 - L'appello d'esame del 25/6/2019 si svolgera' alle ore 9:30 in aula B1
16/6/2018 - I risultati del pre-appello del 5/6/2019 sono disponibili a questo link
4/6/2019 - Per il preappello del 5/6/2019, che si svolgera' alle ore 16:00, la ripartizione degli studenti prenotati sulle aule sara' la seguente:
24/5/2019 - A causa della sospensione della didattica in tutto l'ateneo la lezione ed il tutoraggio di Sistemi Operativi del 27/5/2019 non verranno svolti. Inoltre, la lezione di Sistemi Operativi del 30/5/2019 verra' sostituita da attivita' di tutoraggio.
23/5/2019 - Le slides con gli esercizi d'esame oggetto del tutoraggio odierno sono disponibili a questo link.
20/5/2018 - Il tutoraggio odierno non verra' svolto.
19/5/2018 - In previsione del preappello del giorno 5/6/2019, il docente svolgera' in data 23/5/2019 (alle ore 16:00 in aula A2) un tutoraggio addizionale che vertera' sulla discussione di alcune tipiche tracce d'esame.
11/5/2018 - Le assegnazioni delle tesine per l'anno accademico 2018/2019 sono state attivate, seguire questo link per accedere al sistema di assegnazione delle tesine via Web. Si prega chiuque usi tale sistema di verificare che i relativi messaggi di posta elettronica non vengano erroneamente classificati come spam.
9/5/2019 - Si rammenta che non potranno essere ammessi allo svolgimento delle prove d'esame (sia scritte in aula che pratiche in laboratorio) studenti che non hanno effettuato la corrispettiva prenotazione tramite il sistema Delphi.
9/5/2019 - Il pre-appello d'esame di sistemi operativi si svolgera' il giorno 5/6/2019 alle ore 16:00.
3/4/2019 - I prossimi due tutoraggi NON avranno luogo Lunedi' 8 e Lunedi' 15 Aprile 2019, bensi' Mercoledi 10 e Mercoledi' 17 Aprile 2019. In entrambi i casi, i tutoraggi verranno svolti all'orario solito (16:00-18:00) sempre in aula A2.
13/3/2019 - I primi due appelli d'esame (sessione estiva) si svolgeranno secondo il seguente calendario:
1/3/2019 - Il corso avra' inizio il giorno 4/3/2019
1/3/2019 - Questa pagina e' stata pubblicata
Il tutoraggio verra' tenuto dall'Ing. Emiliano Silvestri
Il materiale che verra' utilizzato durante le ore di tutoraggio e' accessibile a questo link
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 effettuarla) 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.