en
Politecnico di Torino
Anno Accademico 2011/12
01NYHOV
System and device programming
Corso di Laurea Magistrale in Ingegneria Informatica (Computer Engineering) - Torino
Docente Qualifica Settore Lez Es Lab Tut Anni incarico
Laface Pietro ORARIO RICEVIMENTO     70 0 30 0 9
SSD CFU Attivita' formative Ambiti disciplinari
ING-INF/05 10 B - Caratterizzanti Ingegneria informatica
Presentazione
The course is taught in English.

Insegnamento obbligatorio della Laurea Magistrale in Ingegneria Informatica, collocato al II periodo didattico del I anno.
Il modulo illustra l'architettura dei sistemi operativi analizzandone i moduli interni, e approfondisce i concetti e le tecniche di gestione efficiente delle risorse di un sistema di elaborazione (processori, memorie, dispositivi periferici, file, ecc.).
Sono presentate inoltre le tecniche di programmazione di sistema mediante l'analisi e l'utilizzo delle chiamate di sistema di Unix e Windows.
Risultati di apprendimento attesi
- Conoscenza dell'architettura dei sistemi operativi come insieme di gestori di risorse
- Conoscenza dei moduli del nucleo del sistema operativo, e capacità di implementare nuovi moduli
- Capacità di usare system call per la creazione, sincronizzazione e terminazione di processi e thread
- Conoscenza del meccanismo della memoria virtuale
- Conoscenza delle tecniche di schedulazione dei processi con e senza vincoli di tempo reale
- Capacità di analizzare e implementare algoritmi di gestione della memoria e di schedulazione
- Conoscenza delle tecniche di gestione dei dispositivi periferici
- Capacità di analizzare ed implementare device drivers
- Conoscenza dell'organizzazione dei moderni file system e capacità di gestione degli stessi
- Conoscenza delle principali tecniche di protezione delle risorse e delle informazioni
- Conoscenza di interface (API) per programmazione di sistema (system calls)
- Capacità di analizzare e realizzare programmi basati su system call
Prerequisiti / Conoscenze pregresse
- Conoscenza dell'architettura dei sistemi di elaborazione: in particolare struttura del processore e organizzazione della memoria
- Conoscenza del meccanismo delle interruzioni e dei fondamenti di un linguaggio Assembler
- Conoscenza dei fondamentali tipi di strutture dati ed algoritmi
- Capacità di sviluppare programmi in linguaggio C
- Conoscenza delle tecniche per la programmazione concorrente.
Programma
- Architettura Sistema Operativo (18 h)
- moduli di gestione delle risorse di un sistema di elaborazione
- gestione di processi e thread (richiami)
- sincronizzazione
- gestione delle eccezioni
- comunicazione tra processi
- Gestione della memoria (8 h)
- segmentazione
- paginazione
- memoria virtuale
- Schedulazione dei processi (6 h)
- Gestione delle unità periferiche (12 h)
- gestione terminali
- gestione degli accessi a disco
- architettura di basso livello di Win32: famiglie di sistemi operativi, device driver
- I/O sincrono e asincrono
- device driver in Linux
- Gestione dei file (10 h)
- organizzazione di un file system, gestione e protezione degli archivi
- file locking
- Protezione delle risorse e delle informazioni (2 h)
- Sviluppo di applicazioni Win32: (4 h)
- programmazione reattiva
- progetto e implementazione di interfacce grafiche
- gestione dell'interazione con l'utente
- Macchine Virtuali: (6 h)
- principi generali
- l'ambiente .NET
Organizzazione dell'insegnamento
- Esercitazioni in aula (10 h)
- Programmazione concorrente con processi e thread
- Memory mapped files
- Kernel modules and daemons
- Struttura dei device drivers
- System calls

- Esercitazioni in laboratorio (24 h)
- Programmazione concorrente con processi e thread
- Installazione e modifica di un kernel Linux
- PC booting
- Kernel modules e daemons
- Device drivers
- Gestione delle eccezioni
- Creare una system call
- Dettagli interni e chiamate di sistema relativi a un file system
Testi richiesti o raccomandati: letture, dispense, altro materiale didattico
I testi, scelti tra quelli elencati, saranno comunicati a lezione dal docente titolare dell'insegnamento

Silberschatz, Galvin, Gagne: 'Operating System Concepts', 7th Edition, John Wiley & son, 2003, ISBN: 0-471-69466-5

Bovet D. P., Cesati M., Understanding the Linux Kernel, 3rd Edition, O'Reilly, 2005. ISBN: 0-596-00565-2

Jonathan Corbet, Alessandro Rubini, Greg KroahHartman: 'Linux Device Drivers, 3rd Edition, O'Reilly, 2005

W.R. Stevens
"Advanced programming in the UNIX Environment", Addison-Wesley Publishing Company

Johnson M. Hart,
'Windows System Programming', Addison-Wesley Publishing Company

- Materiale didattico a disposizione su Web
- Trasparenze proiettate in aula
- Esercizi e soluzioni
Criteri, regole e procedure per l'esame

L'esame è costituito da una prova scritta, della durata di 150 minuti, è costituita da due parti:
- esercizi e/o domande sugli argomenti svolti a lezione
- La soluzione di un problema mediante thread o processi concorrenti implementati in linguaggio C
Durante lo svolgimento della prima parte della prova non è possibile consultare testi o appunti.
L'esame non è superato se il punteggio relativo ad una delle due parti non è sufficiente.
Orario delle lezioni
Statistiche superamento esami

Programma definitivo per l'A.A.2011/12
Indietro