Sistemi operativi (2009/2010)

Codice insegnamento
4S00019
Crediti
12
Coordinatore
Graziano Pravadelli
Altri corsi di studio in cui è offerto
Altri corsi di studio in cui è offerto
Altri corsi di studio in cui è offerto
    Settore disciplinare
    ING-INF/05 - SISTEMI DI ELABORAZIONE DELLE INFORMAZIONI
    Lingua di erogazione
    Italiano
    L'insegnamento è organizzato come segue:
    Attività Crediti Periodo Docenti Orario
    Teoria 9 II semestre, I semestre Graziano Pravadelli
    Laboratorio [indirizzo generale] 3 II semestre, I semestre Damiano Carra
    Laboratorio [indirizzo multimediale] 3 II semestre, I semestre Nicola Bombieri

    Orario lezioni

    I semestre
    Attività Giorno Ora Tipo Luogo Note
    Teoria giovedì 15.30 - 18.30 lezione Aula A  
    Teoria venerdì 11.30 - 13.30 lezione Aula A  
    II semestre
    Attività Giorno Ora Tipo Luogo Note
    Teoria mercoledì 15.30 - 18.30 lezione Aula A  
    Laboratorio [indirizzo generale] giovedì 15.30 - 18.30 laboratorio Laboratorio didattico Delta  
    Laboratorio [indirizzo multimediale] venerdì 13.30 - 16.30 laboratorio Laboratorio didattico Delta  

    Obiettivi formativi

    Il corso si propone di fornire un'introduzione ai principi e al progetto dei sistemi operativi, con particolare riguardo ai concetti relativi alle architetture software di un sistema operativo, alla gestione e sincronizzazione dei processi e alla gestione delle risorse del sistema.

    Programma

    Teoria:
    -------
    * Introduzione: Ruolo del sistema operativo e sua evoluzione. Elementi architetturali. Struttura e funzioni di un sistema operativo.

    * Gestione dei Processi: Processi. Stati dei processi. Cambiamento di contesto. Creazione e terminazione di processi. Thread: thread a livello utente e a livello kernel. Cooperazione e comunicazione fra processi: memoria condivisa, messaggi. Comunicazione diretta ed indiretta.

    * Scheduling: Modello a ciclo di burst di CPU-I/O. Scheduling a lungo, medio, breve termine. Scheduling con prelazione e cooperativo. Criteri di scheduling. Algoritmi di scheduling: FCFS, SJF, a priorità, RR, a code multiple con e senza feedback. Valutazione degli algoritmi: modelli deterministici e probabilistici, simulazione.

    * Sincronizzazione fra processi: Coerenza di dati condivisi, operazioni atomiche. Sezioni critiche. Approccio software alla mutua esclusione: algoritmi di Peterson e Dekker, algoritmo del panettiere. Supporto hardware per la mutua esclusione: test and set, swap. Costrutti per sincronizzazione: semafori, mutex, monitor. Deadlock, starvation. Alcuni problemi tipici di sincronizzazione: produttore/consumatore, lettori/scrittore, problema dei filosofi.

    * Deadlock: Condizioni per l'innesco di un deadlock. Rappresentazione dello stato di un sistema con grafi di allocazione. Tecniche di prevenzione, rilevazione e ripristino. Algoritmo del banchiere.

    * Gestione della memoria: Memoria primaria. Indirizzamento logico e fisico. Rilocazione, binding degli indirizzi. Swapping. Allocazione contigua della memoria. Frammentazione interna ed esterna. Paginazione. Supporti hardware alla paginazione: TLB. Tabella delle pagine. Paginazione a piu' livelli. Segmentazione. Tabella dei segmenti. Segmentazione con paginazione.

    * Memoria Virtuale: Paginazione su richiesta. Gestione di page fault. Algoritmi di sostituzione delle pagine: FIFO, ottimale, LRU, approssimazioni LRU. Buffering di pagine. Allocazione di frame in memoria fisica, allocazione locale o globale. Thrashing. Località dei riferimenti. Modello del working set. Controllo della frequenza di page fault. Blocco di pagine in memoria.

    * Memoria secondaria Struttura logica e fisica dei dischi. Tempo di latenza. Scheduling del disco: algoritmi FCFS, SSTF, SCAN, C-SCAN, LOOK, C-LOOK. Gestione della memoria di paginazione.
    Sistema di I/O: Sistemi di Input/Output, Hardware per I/O. Tecniche di I/O: programmato, con interrupt, con DMA. Device driver e interfaccia verso le applicazioni. Servizi del kernel per I/O: scheduling, buffering, caching, spooling.

    * File System: Concetto di file, attributi e operazioni relative. Tipi di file. Accesso sequenziale e diretto. Concetto di directory. Struttura di directory. Protezioni nell'accesso a file. Attributi e modalità di accesso. Semantica della consistenza. Struttura di un file system. Montaggio di un file system. Metodi di allocazione dello spazio su disco: contiguo, concatenato, indicizzato. Gestione dello spazio libero su disco: tramite vettore di bit, tramite liste. Realizzazione delle directory: liste lineari, tabelle hash.

    Laboratorio:
    ------------
    * Programmazione della shell in ambiente Unix/Linux.
    * Introduzione alla programmazione di sistema in ambiente
    Unix/Linux.
    * Chiamate di sistema per la gestione dell'I/O.
    * Chiamate di sistema per la gestione dei processi.
    * Chiamate di sistema e tecniche di comunicazione e sincronizzazione inter-processo (pipe, fifo, code di messaggi, memoria condivisa, semafori, ...).
    * Programmazione tramite thread.

    Modalità d'esame

    Teoria:
    -------
    L'esame consiste in una prova scritta, contenente domande a risposta multipla, domande a risposta aperta ed esercizi.

    Laboratorio:
    ------------
    L'esame può essere superato in due modi: orale o scritto.

    Modalità orale:
    Durante il corso lo studente dovrà consegnare alcuni elaborati rispettando le scadenze elencate nel calendario delle lezioni. Quindi, al termine del corso, nella seconda metà di giugno, lo studente sosterrà una prova orale in cui verranno discussi gli elaborati.
    Chi non consegna tutti gli elaborati non può fare l'orale e deve sostenere l'esame come indicato nella modalità "scritto".

    Modalità scritto:
    L'esame consiste nel risolvere alcuni problemi di programmazione di sistema (tramite programmi C o script di shell) durante uno degli appelli ufficiali.

    Voto finale
    -----------
    Il voto finale si ottiene dalla seguente media pesata:
    Voto = Voto_teoria*0,5 + Voto_laboratorio*0,5.

    Materiale didattico
    Titolo Formato (Lingua, Dimensione, Data pubblicazione)
    Calendario lezioni  pdfpdf (it, 22 KB, 14/12/09)
    Calendario lezioni II semestre  pdfpdf (it, 32 KB, 01/03/10)
    Laboratorio: Testo Elaborato 1  pdfpdf (it, 28 KB, 12/04/10)
    Laboratorio: Testo Elaborato 2  pdfpdf (it, 15 KB, 18/05/10)
    Laboratorio: Testo Elaborato 3  pdfpdf (it, 150 KB, 07/06/10)
    Materiale didattico html html (it, 47 KB, 05/10/09)
    Materiale didattico (laboratorio) html html (it, 35 KB, 10/03/10)

    Statistiche per i requisiti di trasparenza (Attuazione Art. 2 del D.M. 31/10/2007, n. 544)

    Statistiche esiti
    Esiti Esami Esiti Percentuali Media voti Deviazione Standard
    Positivi 22.38% 25 2
    Respinti 10.83%
    Assenti 65.34%
    Ritirati 0.72%
    Annullati 0.72%
    Distribuzione degli esiti positivi
    18 19 20 21 22 23 24 25 26 27 28 29 30 30 e Lode
    0.0% 3.2% 4.8% 6.4% 17.7% 8.0% 9.6% 9.6% 14.5% 6.4% 8.0% 6.4% 1.6% 3.2%

    Valori relativi all'AA 2009/2010 calcolati su un totale di 277 iscritti. I valori in percentuale sono arrotondati al numero intero più vicino.