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.

Settore scientifico-disciplinare:

ING-INF/05.

Crediti:

12.

Modulo:

Unico.

Durata:

Annuale, 120 ore (72 di lezione teorica + 48 di esercitazione guidata).

Frequenza:

Consigliata, ma non obbligatoria.

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 Criteri di scheduling.
      04.03 Algoritmi di scheduling.
      04.04 Scheduling dei thread.

05. Scheduling in Linux:
      05.01 Process descriptor.
      05.02 Caratteristiche principali.
      05.03 Lo scheduler 2.4.x.
      05.04 Lo scheduler 2.6.x.
      05.05 Lo scheduler SMP.

06. Memoria principale:
      06.01 Organizzazione della memoria principale.
      06.02 Paginazione.
      06.03 Struttura della tabella delle pagine.
      06.04 Segmentazione.
      06.05 Esempi: Pentium Intel, Linux.

07. Memoria virtuale:
      07.01 Paginazione su richiesta.
      07.02 Sostituzione delle pagine.
      07.03 Allocazione dei frame.
      07.04 File mappati in memoria.

08. File system:
      08.01 Concetto di file system.
      08.02 Montaggio, condivisione e protezione.
      08.03 Implementazione.
      08.04 Metodi di allocazione.
      08.05 Gestione dello spazio libero.

09. Dischi magnetici:
      09.01 Struttura del disco.
      09.02 Performance dei dischi.
      09.03 Algoritmi di scheduling.

10. Sistemi di input/output:
      10.01 Polling, interrupt e DMA.
      10.02 Dispositivi a caratteri, a blocchi e di rete.
      10.03 Interfaccia del kernel per l'I/O.

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. Il sistema operativo Android:
      12.01 Struttura.
      12.02 La Virtual Machine Dalvik.
      12.03 Applicazioni.
      12.04 Message passing: Intents.

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, Boari, "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 Procedurale e Logica, Architettura degli Elaboratori, Algoritmi e Strutture Dati.

    Modalità didattiche:

    Lezioni teoriche ed esercitazioni guidate in 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'anno accademico 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'anno accademico 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: 09/10/2012 Approvato da: Presidente CCdL