|
Docente
|
CESATI MARCO
(programma)
* Richiami di calcolatori elettronici (I componenti di un sistema di calcolo. Architettura generale del software) * Introduzione ai sistemi operativi (Definizione di sistema operativo. Il concetto di multiprogrammazione.) * Struttura di un sistema operativo (Servizi del sistema operativo Interfacce utente. Chiamate di sistema. Controllo dei processi. Gestione dei file. Gestione dei dispositivi di I/O. Gestione delle informazioni. Comunicazioni. Progettazione di un sistema operativo. Struttura di un sistema operativo) * Gestione dei processi (Il blocco di controllo. Struttura di un file eseguibile. La schedulazione dei processi. Il job scheduler. Lo scheduler a breve termine. Lo scheduler a medio termine. Contesto e cambio di contesto) * Processi e thread (Gestione dei processi. I thread. La libreria di thread POSIX. Implementazione dei thread in Linux) * Schedulazione dei processi (Schedulazione e caratteristiche dei processi. Algoritmi di schedulazione. Schedulazione nei sistemi multiprocessore. La schedulazione dei processi in Linux) * Sincronizzazione dei flussi di esecuzione (Flussi di esecuzione e race condition. Le regioni critiche. Operazioni atomiche. Primitive di sincronizzazione. Il problema dello stallo. La sincronizzazione in Linux) * Gestione della memoria centrale (Schemi di indirizzamento della memoria centrale. La segmentazione. La paginazione. La gestione della memoria centrale in Linux su IA-32) * Gestione delle pagine fisiche di memoria (Frammentazione esterna della memoria. Frammentazione interna della memoria. L'allocatore di tipo Buddy system. L'allocatore "slab allocator". Pagine fisiche e pagine virtuali. Paginazione su richiesta. Condivisione delle pagine fisiche tra i processi. Copiatura su scrittura delle pagine fisiche. Gestione delle pagine fisiche di memoria in Linux) * Gestione della memoria virtuale (Regioni di memoria virtuale. Algoritmi di sostituzione delle pagine. Politiche di assegnazione della memoria fisica) * Interfaccia del file system (Il sistema di archiviazione in memoria secondaria. I file e la loro gestione. Tipo e contenuto dei file. Operazioni sui file. Le directory) * Realizzazione del file system (Protezione dei file. Montaggio di un file system. Componenti del sistema operativo per il file system. Il file system virtuale (VFS). Il file system su disco) * Gestione della memoria secondaria (I file system annotati. Tecnologia e prestazioni del disco magnetico. Algoritmi di schedulazione del disco. I sistemi RAID) * La memoria tampone per i dischi (Efficienza e prestazioni della memoria secondaria. Memorie tampone per la memoria secondaria. Ottimizzazione degli accessi ai file. Recupero della memoria fisica) * Gestione delle periferiche di I/O (Le periferiche di I/O. Le interfaccie di I/O. Driver delle periferiche) * Ciclo di esercitazioni: Installazione ed uso di una distribuzione basata su Linux. Richiami di programmazione in linguaggio C. Gestione dei file. Gestione dei processi. Segnali. Interprocess Communication. Applicazioni multithread.
 A. Silberschatz, P. B. Galvin, G. Gagne, Sistemi operativi: concetti ed esempi, nona edizione. Pearson, 2014. ISBN: 9788865183717
testo consigliato, non obbligatorio: M. Kerrisk, The Linux Programming Interface: A Linux and UNIX System Programming Handbook, No Starch Press, 2010, ISBN: 1593272200, 9781593272203
|