Sistemi Operativi (5 CFU)
Corso di Laurea in Ingegneria delle Telecomunicazioni (I anno Laurea Specialistica)
Corso di Laurea in Ingegneria Elettrica (I anno Laurea Specialistica)
Facoltà di Ingegneria
Università degli Studi di Cassino
Anno accademico 2005/2006
Ing. Mario Molinara
Mail: m.molinara@unicas.it
Obiettivi formativi
Scopo del corso è quello di presentare i principali strumenti metodologici per l'analisi del software di sistema, con particolare riferimento al Sistema Operativo Linux. Nella prima parte viene introdotto il modello a processi di un S.O., unitamente alla gestione delle risorse hardware di sistema. Nella seconda parte vengono illustrate le principali caratteristiche di Linux sia come visione utente che come programmazione di sistema.
I punti essenziali del programma del corso:
- S trutture dei sistemi operativi - Kernel monolitici e microkernel
- I processi
- La sincronizzazione dei processi
- Lo scheduling della CPU
- I deadlocks
- La gestione della memoria primaria
- La memoria virtuale
- L'interfaccia del file system
- L'implementazione del file system
- Log-structured e journaled file systems
- La struttura della memoria secondaria - strutture RAID
- Programmazione di sistema Linux e System Call
- Introduzione alla programmazione concorrente mediante threads
Le esercitazioni saranno svolte con i seguenti sistemi operativi:
- Windows XP/2003 server
- Linux
Esercitazioni
- La linea di comando e gcc
- Presentazione del File System e gestione dei processi
- Ambienti di programmazione (C/C++ o Java) per Linux
- Gestione dei processi
- Memoria condivisa
- Misure di prestazioni .
Lavori di presentazione
- Gruppi di lavoro di max 3 persone (Livello complessità: 1=basso, 5=alto)
- Presentazione da 30 minnuti max da tenersi tra il 14 ed il 17 marzo
- Argomenti possibili:
- Studio del kernel 2.6 di Linux
- Tutorial sulla ricompilazione del kernel (per applicazione patch, installazione moduli, ecc.) - (5)
- Studio del file system (4)
- Tutorial sugli algoritmi di scheduling (4)
- Multiprogrammazione nei server che erogano servizi di rete (Apache 2.0, OpenLDAP, IIS, ecc.) (3)
- Tutorial sulle relazioni tra kernel ed interfacce grafiche in ambiente Linux/Unix (3)
- Implementazione del multithreading della virtual machine del linguaggio java (4)
- I sistemi operativi e la domotica (3)
- Studio del kernel 2.6 di Linux
Libri di testo
- A. Silberschatz, P. Galvin, Greg Gagne, Sistemi operativi, Sesta edizione, Addison-Wesley 2002 (E' stata pubblicata la settima edizione in inglese)
- D.P.Bovet, M.Cesati, Understanding the Linux Kernel, O'Reilly
Link utili e download
- Il codice del kernel di Linux navigabile.
- The Linux documentation project.
- Programmazione C (Manuale Interessante).
- Software di sviluppo C++ cross platform (eclipse per java con istruzioni per il funzionamento con C++).
- VMWare player (Software free).
- Immagini di installazione Linux per VMWare.