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 2006/2007
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
Slide proiettate a lezione (I capitoli si riferiscono alla VII edizione del libro)
- Capitolo 1
- Capitolo 2
- Capitolo 3
- Capitolo 4
- Capitolo 5 - Integrazione Capitolo 5
- Capitolo 6 - Integrazione Capitolo 6
- Capitolo 7 - Integrazione Capitolo 7
- Capitolo 8 - Integrazione Capitolo 8
- Capitolo 9
- Capitolo 10
Altro materiale utile
Esercitazioni
- La linea di comando e gcc
- Esercitazione del 22 febbraio 2007: esercizio 1 (Building a small sample dll) , esercizio 2 ( Uso di make per la compilazione a linea di comando e con eclipse - Scaricare dllhelpers-0.4.1.tar.bz2)
- 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
Libri di testo
- A. Silberschatz, P. Galvin, Greg Gagne, Sistemi operativi - Concetti ed Esempi, Settima edizione, Addison-Wesley
- D.P.Bovet, M.Cesati, Understanding the Linux Kernel, O'Reilly
Link utili e download
- Il codice del kernel di Linux navigabile.
- LDAP
- The Linux documentation project.
- Programmazione C (Manuale Interessante).
- Software di sviluppo C++ cross platform (eclipse per java con istruzioni per il funzionamento con C++ per windows).
- VMWare player (Software free).
- Immagini di installazione Linux per VMWare.