Il corso si propone di fornire la conoscenza di base della struttura e delle strategie di gestione delle risorse dei moderni sistemi operativi, acquisendo familiarità con concetti nuovi (come lo scheduling dei processi e i relativi algoritmi) e approfondendo quelli già posseduti dai corsi precedenti, come la gestione della memoria (centrale e di massa) e le relative strutture dati. Lo studente sarà in grado di costruire una approfondita capacità di analisi e valutazione d'impiego dei più diffusi sistemi operativi e delle strategie relative alla sicurezza dei sistemi informatici.
Prerequisiti
Nozioni base introdotte nei corsi di Fondamenti di Informatica e Calcolatori elettronici.
Metodi didattici
Lezioni frontali svolte mediante presentazioni proiettate su schermo (disponibili agli studenti) e approfondimenti usando la lavagna.
Verifica Apprendimento
Verrà svolta al termine del corso una prova scritta che verterà su tutti gli argomenti trattati allo scopo di verificare la conoscenza del candidato delle problematiche relative ai sistemi operativi. La prova consiste in domande teoriche aperte ed esercizi pratici.
Testi
Sono disponibili i lucidi delle lezioni svolte in classe.
Silberschatz Abraham; Galvin P. Baer; Gagne Greg. . Sistemi operativi. Concetti ed esempi. . Pearson Education Italia.
Andrew S. Tanenbaum. I moderni sistemi operativi. . Pearson Education Italia. .
Contenuti
Introduzione ai sistemi operativi Evoluzione storica, modello di sistema operativo, multiprogrammazione, classificazione dei sistemi operativi. Le chiamate di sistema: classificazione e utilizzo. Uso di pipe e generazione di processi. I sistemi operativi per la multimedialità (cenni).
Gestione di memoria e CPU Lo stato del processore, il concetto di processo e schedulazione. Stati del processo, funzioni di kernel e algoritmi di schedulazione. Deadlock e semafori. Gestione fisica della memoria principale, swapping, partizione, segmentazione e paginazione. La memoria virtuale (implementazione e gestione).
La sicurezza e i sistemi operativi Compiti dei moderni sistemi operativi nella gestione della sicurezza. Attacchi storici alla sicurezza di sistemi informatici. Programmi perniciosi (virus, bombe logiche, trapdoor ecc?). Strategie di gestione della sicurezza da parte del sistema operativo. La gestione della protezione del sistema in Unix. Crittografia (cenni).
La gestione di dati permanenti File, metodi di allocazione, directory e metodi di accesso. Il file system: struttura e gestione. La gestione dei dispositivi di I/O, algoritmi di scheduling per richieste di I/O su disco.
Programmazione di processi Programmo tramite script (uso della shell). Programmazione concorrente in C e Java.