Struttura e principali funzioni di un sistema operativo; processi, thread e scheduling della CPU; caratterizzazione e gestione dello stallo; gestione della memoria principale e virtuale; interfaccia e implementazione del file system; struttura dei dispositivi di massa e gestione del sistema di I/O.
Uso interattivo della shell in UNIX/Linux. Il linguaggio di programmazione C. UNIX/Linux system call. Programmazione di sistema e comunicazione tra processi in ambiente UNIX/Linux.
Teoria
Testo adottato:
Sistemi Operativi. A.Silberschatz & P.B.Galvin & G.Gagne, 9ed., Addison-Wesley.
Testi consigliati:
Sistemi Operativi. P.Ancillotti & M. Boari & A. Ciampolini & G. Lipari, 2ed., McGraw-Hill.
I Moderni Sistemi Operativi. A.S. Tanenbaum & H. Bos, 4ed., Pearson.
Laboratorio
BASH Programming – Introduction HOWTO. http://tldp.org/HOWTO/Bash-Prog-Intro-HOWTO.html
Programming in C - UNIX System Calls and Subroutines using C. http://www.cs.cf.ac.uk/Dave/C/CE.html
The Linux Kernel Module Programming Guide - P.J.Salzman, 2007. http://www.tldp.org/LDP/lkmpg/2.6/lkmpg.pdf
Obiettivi Formativi
Conoscenza e capacità di comprensione:
struttura interna dei sistemi operativi e delle funzionalità delle loro componenti; problematiche inerenti la progettazione e la realizzazione delle varie componenti che costituiscono un sistema operativo, con particolare riguardo ai legami hardware/software e le interazioni con i programmi utente.
Conoscenza e capacita' di comprensione applicate:
utilizzo più consapevole ed efficace dei sistemi operativi e degli strumenti da essi messi a disposizione.
Prerequisiti
Corsi vincolanti: Programmazione, Architetture degli Elaboratori
Metodi Didattici
Numero di ore totali del corso: 225
Numero di ore per studio personale e altre attività formative di tipo individuale: 147
Numero di ore relative alle attività in aula: 56
Numero di ore relative ad attività di laboratorio (lezioni in laboratorio): 24
Numero di ore per prove in itinere: 4
Altre Informazioni
Ricevimento studenti Prof. Pugliese: per appuntamento (contattare il docente per telefono o e-mail)
Ricevimento studenti Dott. Lollini: per appuntamento (contattare il docente per telefono o e-mail)
Modalità di verifica apprendimento
L'esame è composto di due prove, una riguardante la parte di teoria ed una riguardante la parte di laboratorio.
La prova di teoria consiste in un esame scritto comprendente domande di teoria ed esercizi da risolvere tramite l'applicazione pratica della teoria. Su richiesta dello studente o del docente, nel caso in cui lo studente abbia conseguito un punteggio pari o superiore a 16 nello scritto, è possibile sostenere anche una prova orale. In questo caso, il voto della prova di teoria è determinato tramite media aritmetica dei punteggi conseguiti nella prova scritta e nell'orale.
La prova di laboratorio consiste nello sviluppo di un progetto software, in gruppi di 2-3 studenti, e di una prova orale che include la discussione del progetto. Il voto della prova di laboratorio è determinato tramite media aritmetica dei punteggi conseguiti nella valutazione del progetto e nella prova orale.
Il voto finale dell'esame è quindi determinato effettuando una media pesata del voto conseguito nelle prove relative alla parte di teoria (con peso 2/3) e del voto conseguito nel progetto (con peso 1/3).
Programma del corso
Funzioni principali di un sistema operativo. Modalità di funzionamento. Interruzioni. System call. I processi. Diagramma degli stati. Operazioni sui processi. Processi e threads. Gestione della CPU. Politiche di scheduling. Tecniche di prevenzione e rilevamento dello stallo. Gestione della memoria centrale. Allocazione contigua. Paginazione. Segmentazione. Memoria virtuale. Tecniche di sostituzione delle pagine. Gestione della memoria secondaria. Il file system. Directory e file. Metodi di accesso ai file. Allocazione dei file su disco. Interfaccia ed implementazione del file system. Gestione delle periferiche di I/O: polling, interrupt, DMA. Politiche di scheduling delle richieste al disco. Casi di studio: implementazione di alcuni concetti in Windows e UNIX/Linux.
Modulo di laboratorio: Comandi di shell in UNIX/Linux. Il linguaggio di programmazione C. UNIX/Linux system call. Programmazione di sistema e comunicazione tra processi in ambiente UNIX/Linux. Concetti di base di amministrazione dei sistemi UNIX/Linux.