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.
B115 - DIAG
B121 - DIAG
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.
E' opportuna una buona conoscenza del linguaggio C e dei contenuti del corso di Sistemi Di Calcolo.
Modalità di esame: progetto + esame scritto
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.
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.
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.
[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.
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