Jürgen Assfalg's Homepage - Teaching

Overview| Operating Systems| Internet Engineering
Teaching

Sistemi Operativi: Programma a.a. 2002-2003

  1. Introduzione: cos'è un sistema operativo, diversi tipi di s.o. (batch, multiprogrammato, time-sharing, ...);
  2. Struttura di un calcolatore: funzionalità, I/O, dispositivi di memoria, sistemi RAID, meccanisimi di protezione hardware;
  3. Struttura di un s.o.: componenti, servizi, system calls, programmi di sistema, struttura, macchine virtuali (JVM e VMware);
  4. Introduzione alla programmazione Java;
  5. Multitasking: processi e threads;
  6. Processi cooperanti: il problema Produttore-Consumatore; IPC con memoria condivisa e scambio di messagi;
  7. Comunicazione in ambienti distribuiti: sockets in TCP/IP e RPC;
  8. Sincronizzazione di processi: primitive java per attendere completamento threads e processi, semafori, regioni critiche e monitor; problema produttore/consumatore con buffer di memoria limitato, problema lettori/scrittori, problema dei 5 filosofi; esempi applicativi in Java; monitor, mutex lock e variabili di condizione in Java;
  9. I/O asincrono: un esempio applicativo per multi-threading e sincronizzazione;
  10. Multi Programming Modules (MPM) in Apache httpd;
  11. CPU scheduling: concetti di base (CPU e I/O burst, scheduler, preemption, dispatcher), criteri di scheduling, algoritmi (first come first served, shortest job first, round robin, coda multilivello, coda multilivello con feedback, sistemi real-time); thread scheduling nella macchina virtuale Java (green threads e threads nativi sotto Windows);
  12. Il problema dello stallo;
  13. File system: file ed operazioni su di essi; struttura logica/fisica e modalità di accesso; organizzione dei files directory e operazioni su di esse; meccanismi di protezione; metodi di allocazione; gestione dello spazio libero; cache del disco (algoritmi di rimpiazzamento FIFO e LRU); i file systems di BSD Unix; i file system di Linux (ext2, dev, proc); file systems avanzati (ext3, JFS, XFS, ReiserFS); file systems distribuiti (NFS).

Materiale didattico

  • Sistemi RAID [ documento PDF (Adaptec) ]
  • J.Sugerman, G.Venkitachalam, B.-H.Lim, “Virtualizing I/O Devices on VMware Workstation's Hosted Virtual Machine Monitor”, in proc. of USENIX Annual Technical Conference, 2001 [ documento PDF ] (gli argomenti trattati nel corso sono trattati in particolare nelle prime due sezioni)
  • Specifica della Java Virtual Machine [ documento HTML (Sun) ]
  • Introduzione a Java [ documento PDF ], [ sorgenti Java ]
  • Scheletro di un'implementazione Java di una generica VM [ sorgenti Java ]
  • Gestione di processi in C (Linux/UNIX) [ documento PDF ]
  • Esempi su processi [ sorgenti C per UNIX/Linux ], [ sorgenti Java ]
  • Esempi su threads [ sorgenti Java ]
  • Produttore-consumatore; ad oggi il pacchetto Java comprende le realizzazioni mediante [ sorgenti Java ]:
    • memoria condivisa,
    • mailbox (code di messaggi)
    L'esempio in C (UNIX/Linux) è una realizzazione basata su due processi che comunicano mediante una memoria condivisa [ sorgenti C ]
  • Comunicazione tramite socket TCP: server TCP multithreaded [ documento PDF ], [ sorgenti Java ]
  • Sincronizzazazione tra processi/thread [ sorgenti Java ]
    • elementare, mediante Thread.join()
    • regione critica, mediante costrutto synchronized(object) { ... }
    • monitor, mediante metodi sincronizzati e wait() / notify()
    • variabili di condizione (applicazione al problema del buffer limitato)
  • altri esempi [ sorgenti Java ]
    • lettura asincrona mediante bufferizzazione
  • B.Gröne, A.Knöpfel, R.Kugel, O.Schmidt, “The Apache Modelling Project”, [ documento HTML (Università di Potsdam) ]. Di particolare interesse per il corso, le sezioni:
    • 2.2 Compiti di un server HTTP
    • 2.3 Protocolli e standards
    • 4.3 L'architettura multitasking di Apache
  • Approfondimenti sui file systems per Linux:

Nota sul diritto d'autore: il materiale pubblicato su questa pagina, fatta eccezione per quello prodotto da terzi, è diffuso per il solo scopo di aiutare gli studenti del corso al superamento dell'esame. Si diffida dalla pubblicazione/copia del suddetto materiale per scopi diversi. In particolare è fatto divieto di diffusione e riproduzione con fini di lucro.

Libri consigliati

  • A. Silberschatz, P.G. Galvin, G. Gagne, "Operating Systems Concepts", J. Wiley & Sons, 6th edition, 2001 (disponibile anche in italiano)
    oppure: A. Silberschatz, P.G. Galvin, G. Gagne, "Applied Operating Systems Concepts", J. Wiley & Sons, 2000
  • S. Oaks, H. Wong, "Java Threads", O'Reilly, 2nd edition, 1999.
Per approfondimenti su Java:
© 2001-2005 Jürgen Assfalg