Programma del corso "Sistemi Operativi" con relativo materiale


  • Introduzione al corso: argomenti trattati, concetti introduttivi, modalita' esame,
    1. Richiami di architetture di calcolatori
    2. Concetti fondamentali: funzioni, utilita', uso
    3. Strutture dei sistemi operativi
  • Modelli statistici di Sistemi Operativi. Definizioni
    1. Introduzione ai modelli di concorrenza mediante code d'attesa ed esercizi
    2. Cenni di processi di Markov
    3. Esempi di soluzioni di code d'attesa con i processi di Markov
    4. Cenni di reliability dei sistemi ridondati
  • La concorrenza nei Sistemi Operativi: concetti e problematiche
    1. Concorrenza nei Sistemi Operativi: interleaving, grafi delle precedenze, strumenti linguistici, determinatezza
    2. Riepilogo delle caratteristiche fondamentali di Java
    3. Programmazione concorrente in Java
    4. Esempi di programmazione concorrente in Java
    5. Problematiche della programmazione concorrente: mutua esclusione
    6. --> Peterson --> Lamport
    7. Mutua esclusione distribuita
    8. Problematiche della programmazione concorrente: stallo
    9. --> Algoritmo del Banchiere
    10. Problemi classici di sincronizzazione
  • Il linguaggio C
    1. Multi-Threaded Programming con il linguaggio C. ESEMPI: PrimoThread SecondoThread MoltiThread MoltiThread1 EsempioThreads OnceThread Mutex Mutex Mutex1 Schedulazione Esempio1 Esempio2 VariabiliCondizione SimulaSemafori Semafori ClientServer LettoriScrittori CinqueFilosfi
    2. Introduzione alla programmazione Posix in Unix/Linux.
    3. La concorrenza con il linguaggio C nei SO Unix/Linux. ESEMPI: Fork Creazione di piu' figli Creazione di piu' figli Exec Exec1
    4. Inter Process Comm con il linguaggio C nei SO Unix/Linux. ESEMPI: Pipe Pipe1 Fifo Fifo-server Fifo-client
    5. Chiamate di sistema per la gestione del File system. ESEMPI: Copia Copia-bis Descrittori FileMode
    6. Misure di tempo in Unix/Linux. ESEMPI: times.c
  • Il sistema operativo Linux
    1. Schema di principio di una shell. Operazioni fondamentali: parsing, redirezione e background
    2. Introduzione ai comandi di linea del Sistema Operativo Linux
    3. Programmazione in Bash Shell. ESEMPI: Esempi: mycp.sh ...mycd.sh ...myls.sh ...myps.sh ...mygrep.sh ...lowup.sh ...filesize.sh
    4. Struttura base del file system di Linux
    5. Cenno ad altri File System di Linux
    6. Identificatori, protezione dei file
    7. Gestione risorse: processore/memoria
      1. Gestione del processore: schedulazione tradizionale e in tempo reale
      2. Gestione della memoria primaria
  • Compilazione del kernel e gestione dei moduli
  • I Device Driver di Linux ed i sistemi embedded Driver memory.c Makefile