.
.
.
.
.
.
.
.
.
.
.
.

Sistemi operativi


Denominazione del corso: Sistemi operativi
Corso di studi: I3N - Laurea in Ingegneria dell'Informazione
Quadrimestre/Semestre:
Anno:
Numero di moduli: 1
Crediti: 6
Ore: 60
Tipologia: B - Attività caratterizzanti
Struttura: monodisciplinare
Settore Scientifico Disciplinare: ING-INF/05 (Sistemi Di Elaborazione Delle Informazioni)

Docente: Daniele Frigioni (60 ore). Titolo copertura: cattedra (prof. associato)
Orario di ricevimento: Di norma il Venerdì dalle 14:30 alle 16:30, salvo diversa comunicazione.


Programma sintetico del corso:

Corso di base sui sistemi operativi. Gestione di processi e threads. Scheduling della CPU. Sincronizzazione di processi. Stallo nei processi. Gestione della memoria RAM. Memoria virtuale. Gestione del file system. Gestione del sistema di I/O.

Programma esteso del corso:

Link Programma completo (PDF)    (Aggiornato il 22-09-2017)

Introduzione ai Sistemi Operativi: definizione, obiettivi e tipologie di Sistemi Operativi; multiprogrammazione e time-sharing; comunicazione con le periferiche; integrazione di tecniche hardware e software. Struttura dei Sistemi Operativi: componenti e servizi di un Sistema Operativo; gestione delle risorse; chiamate di sistema; approccio stratificato e macchine virtuali. Processi e Threads: concetto di processo, scheduling dei processi, processi cooperanti, comunicazione tra processi; modelli e questioni di programmazione multithreads. Scheduling della CPU: concetti di base, criteri di scheduling, algoritmi di scheduling, valutazione degli algoritmi di scheduling. Sincronizzazione dei processi: concetti fondamentali, sezioni critiche, semafori, problemi tipici di sincronizzazione. Sincronizzazione dei processi in ambiente GNU/Linux: le chiamate di sistema getpid(), fork(), waitpid(), memoria condivisa, semafori, realizzazione del produttore/consumatore. Stallo dei processi: definizione, caratterizzazione, tecniche per prevenire, evitare, rilevare e rimuovere il deadlock. Gestione della memoria centrale: tecniche fondamentali e supporto hardware; indirizzi logici e fisici, allocazione contigua, paginazione e segmentazione. Memoria virtuale: algoritmi di paginazione, analisi delle prestazioni. Gestione del file system: nozioni di file e directory, metodi di accesso, struttura delle directory, condivisione di file e protezione, struttura del file system, metodi di allocazione, gestione dello spazio libero, efficienza e prestazioni.


Testi consigliati:

Abraham Silberschatz, Peter B. Galvin, Greg Gagne. Sistemi Operativi - Concetti ed Esempi (ottava edizione), Addison-Wesley, Maggio 2009 (Testo di riferimento)

M. D’Emidio, D. Frigioni and D. Romano. Elementi di programmazione concorrente in ambienti GNU-Linux e Microsoft Windows. Ed. Libreria Universitaria Benedetti, 2012.
ISBN: 978 88 87 182 514

            
            
                         


Modalità d'esame:

Prova unica


Risultati di apprendimento previsti:

Il corso si propone di fornire le nozioni necessarie alla comprensione del funzionamento dei moderni sistemi di elaborazione, sia relativamente agli aspetti metodologici che a quelli tecnologici, per far sì che l’allievo acquisisca una maggiore professionalità e consapevolezza nell'utilizzo del calcolatore. Il corso affronta problematiche legate alla CPU, al sistema di memoria e alla gestione delle periferiche. Gli argomenti vengono trattati sia da un punto di vista metodologico generale, che con riferimento a processori reali diffusi sul mercato, in modo da fornire una panoramica sulle soluzione tecnologiche avanzate e al contempo competenze teoriche e professionalizzanti che non mutino al variare dei sistemi e delle loro versioni.


Link al materiale didattico:

http://www.didattica.univaq.it/moodle/course/view.php?id=4941