Sistemi operativi (2004/2005)

Corso a esaurimento

Codice insegnamento
4S00019
Crediti
10
Altri corsi di studio in cui è offerto
Altri corsi di studio in cui è offerto
Altri corsi di studio in cui è offerto
L'insegnamento è organizzato come segue:
Modulo Crediti Settore disciplinare Periodo Docenti
Teoria 6 2° Q, 3° Q Graziano Pravadelli
Laboratorio 4 3° Q Nicola Drago

Obiettivi formativi

Modulo: Laboratorio
-------
Padronanza della programmazione di sistema (UNIX system V), dagli script al C.


Modulo: Teoria
-------
Il corso è una introduzione ai principi ed al progetto di sistemi operativi, essenziali per coordinare le attività e le risorse di un sistema di calcolo. Sono affrontati i principali temi dalle architetture software alla gestione dei processi e delle risorse del sistema (es. memoria). Nel corso di Laboratorio viene studiato un sistema operativo reale della famiglia UNIX.
Il corso di teoria viene svolto in 48 ore (6 crediti) di lezione/esercitazione frontale. A queste vanno aggiunte 48 ore di laboratorio (4 crediti).

Programma

Modulo: Laboratorio
-------
* La struttura di UNIX
* Introduzione alla programmazione C:
o Il compilatore, il linker, le librerie.
o La struttura del programma C, la variabile, le funzioni e il passaggio dei parametri.
o I puntatori, malloc e free
o Le stringhe
* Il Makefile
* La programmazione tramite script - la bash:
o La struttura del programma di shell
o La selezione e l'iterazione
o L'input e l'output
o Le variabili
o I comandi di sistema
* La programmazione di sistema in C:
o I file.
o I processi (fork / exec).
o Pipe e named pipe.
o Le IPC (memoria condivisa, code di messaggi e semafori).
* Le threads:
o La programmazione tramite threads.
o La sincronizzazione delle threads



Modulo: Teoria
-------
* Introduzione: Ruolo del sistema operativo e sua evoluzione. Elementi architetturali. Struttura e funzioni di un sistema operativo.

* Gestione dei Processi: Processi. Stati dei processi. Cambiamento di contesto. Creazione e terminazione di processi. Thread. Thread a livello utente e a livello kernel. Cooperazione e comunicazione fra processi: memoria condivisa, messaggi. Comunicazione diretta ed indiretta.

* Scheduling: Modello a ciclo di burst di CPU-I/O. Scheduling a lungo, medio, breve termine. Scheduling con prelazione e cooperativo. Criteri di scheduling. Algoritmi di scheduling: FCFS, SJF, a priorità RR, a code multiple e con feedback. Valutazione degli algoritmi: con modelli deterministici, probabilistici o simulazione.

* Sincronizzazione fra Processi: Coerenza di dati condivisi, operazioni atomiche. Sezioni critiche. Approccio software alla mutua esclusione: algoritmi di Peterson e Dekker, algoritmo del panettiere. Supporto hardware per la mutua esclusione: test and set, swap. Costrutti per sincronizzazione: semafori, semafori binari, mutex, monitor. Deadlock, starvation. Alcuni problemi tipici di sincronizzazione: produttore/consumatore, lettori/scrittore, problema dei dining philosophers .

* Deadlock: Condizioni per l'innesco di un deadlock. Rappresentazione dello stato di un sistema con grafi di allocazione. Tecniche di deadlock prevention. Deadlock avoidance. Algoritmo del banchiere. Deadlock detection e recovery.

*Gestione della Memoria: Memoria primaria. Indirizzamento logico e fisico. Rilocazione, address binding. Swapping. Allocazione contigua della memoria. Frammentazione interna ed esterna. Paginazione. Supporti hardware alla paginazione: registri specializzati e TLB. Tabella delle pagine. Paginazione a piu' livelli. Segmentazione. Tabella dei segmenti. Segmentazione con paginazione.

*Memoria Virtuale: Paginazione su richiesta. Gestione di page-fault. Algoritmi di sostituzione delle pagine: FIFO, ottimale, LRU, approssimazioni LRU. Buffering di pagine. Allocazione di frames in memoria fisica, allocazione locale o globale. Thrashing. Località dei riferimenti. Working set model. Controllo della frequenza di page-fault. Blocco di pagine in memoria.

*Memoria secondaria Struttura logica e fisica dei dischi. Tempo di latenza. Scheduling del disco: algoritmi FCFS, SSTF, SCAN, C-SCAN, LOOK, C-LOOK. Gestione della memoria di paginazione.
Sistema di I/O: Sistemi di Input/Output Hardware per I/O. Tecniche di I/O: programmato, con interrupt, con DMA. Device driver ed interfaccia verso le applicazioni. Servizi di kernel per I/O: scheduling, buffering, caching, spooling.

*File System: Concetto di file, attributi ed operazioni relative. Tipi di file. Accesso sequenziale e diretto. Concetto di directory. Struttura di directory. Protezioni nell'accesso a file. Attributi e modalità di accesso. Semantica della consistenza. Realizzazione Struttura di un file-system. Montaggio di file-systems. Metodi di allocazione dello spazio su disco: contigua, concatenata, indicizzata. Gestione dello spazio libero su disco: tramite vettore di bit, tramite liste. Realizzazione delle directory: liste lineari, tabelle hash.

*Casi di studio: Il sistema UNIX: struttura del kernel, strutture dati, implementazione delle funzionalità principali.

Modalità d'esame

Modulo: Laboratorio
-------
Scritto, orale, pratico da concordare con il docente durante il corso.

L'esame consiste nel risolvere un semplice problema di programmazione di sistema proponendo un programma C / script bash.


Modulo: Teoria
-------
L'esame consiste in una prova scritta, contenente domande teoriche ed esercizi.
Sono previste due prove intermedie durante il corso.
Per la parte di laboratorio si veda il relativo corso.
Il voto finale si ottiene dalla seguente media pesata:
Voto = Voto_teoria*0,6 + Voto_laboratorio*0,4
Per chi sostiene le prove intermedie il voto di teoria si ottiene dalla seguente media pesata:
Voto_teoria = 2/3*Voto_prova_1 + 1/3*Voto_prova_2

Statistiche per i requisiti di trasparenza (Attuazione Art. 2 del D.M. 31/10/2007, n. 544)

Statistiche esiti
Esiti Esami Esiti Percentuali Media voti Deviazione Standard
Positivi 28.69% 23 3
Respinti 13.04%
Assenti 44.34%
Ritirati 6.08%
Annullati 7.82%
Distribuzione degli esiti positivi
18 19 20 21 22 23 24 25 26 27 28 29 30 30 e Lode
3.0% 15.1% 6.0% 15.1% 9.0% 9.0% 12.1% 6.0% 6.0% 9.0% 3.0% 0.0% 0.0% 6.0%

Valori relativi all'AA 2004/2005 calcolati su un totale di 115 iscritti. I valori in percentuale sono arrotondati al numero intero più vicino.