SISTEMI OPERATIVI

Obiettivi formativi:

Questo insegnamento ha lo scopo di illustrare la struttura di un sistema operativo multiprogrammato e le relative politiche di amministrazione delle risorse computazionali, con particolare riferimento alla schedulazione della CPU e alla gestione della memoria centrale, del file system e dei dispositivi di input/output.

Settori scientifico-disciplinari:

INF/01, ING-INF/05.

Crediti:

12.

Modulo:

Unico.

Durata:

Annuale, 112 ore (80 di lezione frontale + 32 di esercitazione guidata).

Frequenza:

Non sono previsti obblighi di frequenza.

Docente:

Dott. Emanuele Lattanzi.

Programma:

01. Introduzione:
      01.01 Introduzione ai sistemi operativi.
      01.02 Strutture dei sistemi operativi.
      01.03 Principali funzioni di un sistema operativo.
      01.04 Chiamate di sistema.

02. Processi:
      02.01 Gestione dei processi.
      02.02 Context switch.
      02.03 Thread vs. processi.
      02.04 Comunicazione tra processi.

03. Sincronizzazione:
      03.01 Il problema della sezione critica.
      03.02 Strumenti per la sincronizzazione e loro uso.
      03.03 Problemi di sincronizzazione e deadlock.

04. Scheduling:
      04.01 Concetti fondamentali.
      04.02 Politiche di scheduling.
      04.02 Scheduling in Linux.

05. Memoria principale:
      05.01 Organizzazione della memoria principale.
      05.02 Paginazione.
      05.03 Struttura della tabella delle pagine.
      05.04 Segmentazione.
      05.05 Esempi: Pentium Intel, Linux.

06. Memoria virtuale:
      06.01 Paginazione su richiesta.
      06.02 Sostituzione delle pagine.
      06.03 Allocazione dei frame.
      06.04 File mappati in memoria.

07. File system:
      07.01 Concetto di file system.
      07.02 Montaggio, condivisione e protezione.
      07.03 Implementazione.
      07.04 Metodi di allocazione.
      07.04 Gestione dello spazio libero.

08. Sistemi di input/output:
      08.01 Polling, interrupt e DMA.
      08.02 Dispositivi a caratteri, a blocchi e di rete.
      08.03 Interfaccia del kernel per l'I/O.

09. Sistemi distribuiti:
      09.01 Sistemi operativi distribuiti.
      09.02 Coordinazione distribuita.

10. Protezione e sicurezza:
      10.01 Tipi di protezione, domini di protezione e accessi.
      10.02 Controllo dell'accesso.
      10.03 Protezione basata sul linguaggio.

11. Macchine virtuali:
      11.01 Macchine virtuali astratte.
      11.02 Macchine virtuali reali.
      11.03 Struttura delle macchine virtuali.
      11.04 JVM - Java Virtual Machine.

12. Elementi di sistemi real-time:
      12.01 Sistemi hard e soft real-time.
      12.02 Il kernel dei sistemi operativi real-time.
      12.03 Algoritmi di scheduling.

13. Attività di laboratorio:
      13.01 Gestione dei processi nei sistemi UNIX-like.
      13.02 Gestione dei thread nei sistemi UNIX-like.
      13.03 Introduzione alla programmazione Java.
      13.04 Gestione dei thread in Java.
      13.05 Strumenti per la sincronizzazione dei thread in Java.

Testi di riferimento:

  • Silbershatz, Galvin, Gagne, "Sistemi Operativi Concetti ed Esempi", Pearson, 2009.
  • Tanenbaum, "I Moderni Sistemi Operativi", Pearson, 2009.
  • Ancilotti, Boarsi, "Programmazione Concorrente e Distribuita", McGraw-Hill, 2007.
  • Bovet, Cesati, "Understanding the Linux Kernel", O'Reilly, 2005.
  • Goetz, Peierls, Bloch, Bowbeer, Holmes, Lea, "Java Concurrency in Practice", Addison-Wesley, 2006.
  • Propedeuticità:

    Programmazione degli Elaboratori, Architettura degli Elaboratori, Algoritmi e Strutture Dati.

    Modalità didattiche:

    Lezioni frontali ed esercitazioni di laboratorio.

    Modalità di accertamento:

    Prova scritta, progetto individuale e prova orale.

    Commissione d'esame:

    Dott. Emanuele Lattanzi e Prof. Alessandro Bogliolo (supplente: Prof. Marco Bernardo).

    Note:

    La prova scritta viene valutata in trentesimi ed è ritenuta sufficiente se il relativo voto, che rimane valido per tutti gli appelli dell'a.a. in cui la prova viene sostenuta, è di almeno 18/30.
    Il progetto, da svolgere individualmente su un tema concordato con il docente, deve essere consegnato almeno una settimana prima della prova orale e il relativo esito rimane valido per tutti gli appelli dell'a.a. in cui il progetto viene consegnato.
    La prova orale può essere sostenuta solo previo superamento delle altre due prove e comprende una discussione del progetto. Se sufficiente, l'esito della prova orale, assieme a quello del progetto, comporta un aggiustamento per eccesso o per difetto di al più 10/30 del voto della prova scritta, determinando così il voto finale.

    Ultima modifica: 04/06/2010 Approvato da: Presidente CCdL