ING-INF/05 Sistemi Operativi Operating Systems

A.A.
CFU Durata (ore)
Periodo Sede
2014/2015 12 96 ore primo e secondo Collegio Raffaello, Piazza della Repubblica 13, Urbino

Assegnato ai Corsi di Studio

Docente


Emanuele Lattanzi

emanuele.lattanzi@uniurb.it

Obiettivi Formativi
Il Corso 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 I/O.

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.

Eventuali Propedeuticità
Non vi sono propedeuticità obbligatorie.
Si suggerisce di sostenere l'esame di Sistemi Operativi dopo aver sostenuto gli esami di Programmazione Procedurale e Logica, Architettura degli Elaboratori, Algoritmi e Strutture Dati e prima di sostenere l'esame di Reti di Calcolatori.

Modalità Didattiche, Obblighi di Frequenza, Testi di Studio e Modalità di Accertamento
Modalità Didattiche
Lezioni frontali ed esercitazioni di laboratorio,
 
Obblighi di Frequenza
Sebbene fortemente consigliata, la frequenza delle lezioni non è obbligatoria.
Testi di Studio
  • Silbershatz, Galvin, Gagne, "Sistemi Operativi Concetti ed Esempi", Pearson
  • Tanenbaum, "I Moderni Sistemi Operativi", Pearson
  • Ancilotti, Boari, "Programmazione Concorrente e Distribuita", McGraw-Hill.
  • Bovet, Cesati, "Understanding the Linux Kernel", O'Reilly
  • Goetz, Peierls, Bloch, Bowbeer, Holmes, Lea, "Java Concurrency in Practice", Addison-Wesley
  • Modalità di Accertamento
    Prova di programmazione concorrente al calcolatore e prova orale.
    La prova di programmazione viene valutata in trentesimi ed è ritenuta sufficiente se il relativo voto è di almeno 18/30.
    La prova orale può essere sostenuta solo previo superamento della prova di programmazione.

    Note
    Il corso è erogato sia nel "percorso in presenza" che nel "percorso online" del Corso di Laurea di Informatica Applicata.
    Per materiale didattico e informazioni aggiuntive visitare http://www.sti.uniurb.it/lattanzi/OS.html