Sistemi Operativi 2017 /18
La deadline della consegna dei progetti per questo anno accademico e' il 29 Settembre 2018. Oltre tale data bisognera' ripetere lo scritto. Entro il 29 Settembre bisognera' aver comunicato che si e' concluso il progetto, la discussione puo' avvenire anche nei giorni successivi.
Abstract
Questo corso ha lo scopo di fornire agli studenti le conoscenze necessarie sull'architettura di moderni sistemi operativi. Il corso copre sia aspetti teorici su problematiche quali architetture, scheduling, gestione della memoria e dei processi e socket TCP/IP, sia aspetti pratici di programmazione e gestione del sistema operativo dal lato utente.
Ufficio
B115 - DIAG
B121 - DIAG
Ricevimento
Appuntamento via email - grisetti [at] diag [dot] uniroma1 [dot] it
Appuntamento via email - ialoise [at] diag [dot] uniroma1 [dot] it
IMPORTANTE: Per tutte le comunicazioni riguardanti il corso e l'esame usare sempre [SO]
come primo elemento dell'oggetto. La mancata osservazione di questa regola riduce la priorita' di risposta alla mail inviata.
Prerequisiti
E' opportuna una buona conoscenza del linguaggio C e dei contenuti del corso di Sistemi Di Calcolo.
Esame (6 cfu)
Modalità di esame: progetto + esame scritto
PROGETTO
- Sviluppare un progetto (individuale o a gruppi).
La consegna di progetto e relativa relazione abilita allo svolgimento della prova scritta.
La prova scritta puo' essere svolta prima della consegna del progetto. Il voto finale verra' deciso alla consegna del progetto.
Gli studenti che sostengono la prova scritta nella sessione di Gennaio-Febbraio possono sono tenuti a consegnare il progetto entro Giugno-Luglio.
Per chi non ha sostenuto l'esame scritto nella sessione di Gennaio-Febbraio-Marzo, il progetto puo' comunque essere consegnato fino alla fine di Luglio. E' possibile sostenere la prova scritta negli appelli di Giugno e Luglio. L'esame si concludera' comunque alla consegna del progetto.
Dalla sessione estiva in poi, il progetto va consegnato prima della prova scritta.
- Modalita' di assegnazione del progetto:
Il progetto va concordato con il docente (Giorgio Grisetti) ed il tutor (Irvin Aloise). La scelta del progetto va comunicata al tutor (ialoise@diag.uniroma1.it) ed in cc al docente mediante email recante oggetto [SO][Assegnazione progetto]. Tutti gli esempi di progetti sono contenuti nel file project_examples.txt della repository di Sistemi Operativi.
- Esposizione del progetto:
Una volta completato il progetto, va consegnato via mail un breve report di carattere generale (rigorosamente PDF) non contenente codice, in cui si risponde alle domande what, how, how-to-run. Infine, gli studenti dovranno concordare con il docente (Giorgio Grisetti) ed il tutor (Irvin Aloise) una data in cui esporre quanto fatto. La mail dovrà avere come oggetto "[SO] Discussione" e contenere anche la matricola dello studente.
ESAME SCRITTO
- Svolgere un esame scritto
[Aggiornamento 26 Ott 2018] Sono disponibili i risultati dell'appello di Ottobre.
Nei risultati, gli studenti la cui matricola è in GIALLO dovranno sostenere un breve esame orale durante la presentazione del progetto per poter raggiungere la sufficienza. Nel caso in cui tali studenti non risultino idonei dopo tale verifica, dovranno risostenere anche la prova scritta.
Chiunque intenda rifiutare il voto dello scritto, dovrà comunicarlo via mail al tutor e al docente entro il prossimo appello.
Gli studenti che appartengono al vecchio ordinamento dell'esame (9CFU) dovranno sostenere un'orale. Nella repository di Sistemi Operativi sara' possibile trovare degli esercizi svolti dell'esame di TDP, i quali potranno essere usati come esercizi per tale prova orale. A titolo di riferimento gli studenti devono saper svolgere tutti gli esercizi che non comportano la ricorsione.
A seguito della valutazione del progetto, il voto dello scritto potrà essere aumentato fino a 4 punti.
Orario e Luogo delle Lezioni
- Periodo: Primo Semestre
- Lunedi' 14:00-16:00, Aula 8
- Venerdi' 16:00-19:00, Aula 24
- Luogo: Facolta' di Ingegneria, Via Eudossiana 18, Roma
Programma Preliminare
Introduzione al Corso
Cenni Storici (sistemi batch, multiprogrammati, in time sharing)
Tipi di architetture computazionali (singolo processore, multi-processore, multi-core, cluster, client-server e distribuiti)
Architettura a Strati (monolitica e microkernel)
Servizi di un OS
Linux/Unix comandi e processi
System Call
Interrupt ed Eccezioni
Vettore delle interruzioni
System Call Tipiche
Polling
Processi e Thread
Context Switch Scheduling
Creazione, Terminazione
IPC
Multithreading
Scheduling di Processi
Metriche
Politiche
Algoritmi
Sincronizzazione di Processi
Sezione Critica
Soluzione di Peterson
Sincornizzazione Hardware
Semafori
Deadlock e Starvation
Inversione delle Priorita'
Problemi tipici: Bounded Buffer, Lettori e Scrittori, Filosofi
Monitor
Deadlock
Caratterizzazione
Grafo di Allocazione delle Risorse
Prevenzione di Deadlock
Tecniche per evitare Deadlock
Rilevamento
Contromisure
Gestione della Memoria
Protezione della Memoria Registri base e Limite
Indirizzi Logici e Fisici
Caricamento e Linking Dinamici
Swapping
Allocazione Contigua, Frammentazione
Partizionamento Dinamico
Paginazione: indirizzamento, frammentazione interna, implementazione, TLB
Segmentazione
Memoria Virtuale
Gerarchie della memoria
Spazio viruale degli indirizzi
Paginazione su richiesta
Page Fault Rate
Sostituzione delle Pagine: algoritmi
Trashing
Localita'
File System
Attributi, file e directory
Operazioni: creazione, apertura, chiusura, cancellazione, riposizionamento, impostazione attributi
Accesso: sequenziale e diretto
Organizzazione di un File System: partizioni, dirtectory, files, struttura ad albero ed a grafo
Mounting
Frammentazione e Journaling
Eventi
Segnali
Stutture Kernel
Gestione sicura dei segnali
The image on this page is by Cushing Memorial Library and Archives, (Flickr: IBM Processing Machine) [CC BY 2.0 (http://creativecommons.org/licenses/by/2.0)], via Wikimedia Commons