Il corso intende fornire una introduzione alla struttura e alle funzioni dei moderni sistemi operativi, esaminandone le componenti fondamentali, le metodologie di progettazione, gli algoritmi e gli strumenti di base. In particolare: 1-Cos'è un sistema operativo: il suo ruolo nei sistemi di calcolo, l’evoluzione e le funzionalità dei sistemi operativi. Il funzionamento di un sistema di calcolo, e interazione con i sistemi operativi. Il supporto hardware per i sistemi operativi. I componenti e servizi dei sistemi operativi. La progettazione e la struttura dei sistemi operativi. 2-I processi: concetto e sua realizzazione. operazioni sui processi, comunicazione tra processi. I threads. Modelli di implementazione di threads. Esempi di realizzazione di processi e threads nei sistemi operativi. Scheduling dei processi. Algoritmi di scheduling: FCFS, SJF, RR, con priorità. Scheduling per sistemi in tempo reale. 3-La programmazione concorrente: il problema della sincronizzaziione e della sezione critica. Supporto hardware per sincronizzazione. I semafori. Problemi significativi di sincronizzazione dei processi. 4-La gestione della memoria: avvicendamento dei processi. Assegnazione contigua. Assegnazione non contigua: paginazione e segmentazione. La gestione della memoria virtuale: paginazione su richiesta, creazione dei processi, assegnazione della memoria, paginazione. Esempi di gestione della memoria nei sistemi operativi. 5-Il file system: file e directory. Metodi di accesso. Montaggio dei file system, condivisione e protezione. Realizzazione e gestione del file system. Gestione dello spazio libero. 6-La memoria secondaria: struttura e caratteristiche. Gli algoritmi di scheduling del disco. I sistemi RAID.
1. Storia ed evoluzione dei sistemi operativi
2. Struttura dei sistemi operativi
3. Interazione tra hardware e sistemi operativi
4. La rappresentazione dei processi
6. I Thread
7. Lo scheduling dei processi: introduzione e primi esempi
9. La sincronizzazione dei processi
10. I semafori
11. Allocazione contigua dei processi in memoria centrale
12. Allocazione non contigua dei processi in memoria centrale
14. Gli algoritmi di avvicendamento delle pagine
16. I sistemi RAID
17. L'organizzazione logica dei file system
18. L'organizzazione fisica dei file system
Ha conseguito presso l’Università degli Studi di Napoli Federico II la laurea con lode in Matematica nel 1986 e in dottorato di ricerca in Matematica Applicata e Informatica nel 1991. Dal 1992 al 2001 è stato ricercatore universitario nel settore dell’analisi numerica e dal 2001 è professore associato presso il Dipartimento di Matematica e Applicazioni dell’Università di Napoli Federico II. Tiene corsi di Laboratorio di Programmazione, Sistemi Operativi, Calcolo Parallelo e Distribuito per gli studenti iscritti ai corsi di studio di Matematica e di Informatica. I suoi interessi di ricerca riguardano lo sviluppo di algoritmi e software per la matematica computazionale in ambienti di calcolo ad alte prestazioni paralleli e distribuiti.