en
Politecnico di Torino
Anno Accademico 2012/13
02GRSOV
Programmazione di sistema
Corso di Laurea Magistrale in Ingegneria Informatica (Computer Engineering) - Torino
Docente Qualifica Settore Lez Es Lab Tut Anni incarico
Cabodi Gianpiero ORARIO RICEVIMENTO AC IINF-05/A 70 0 30 0 15
SSD CFU Attivita' formative Ambiti disciplinari
ING-INF/05 10 B - Caratterizzanti Ingegneria informatica
Presentazione
The course is taught in Italian.
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 (0.5 crediti)
- moduli di gestione delle risorse di un sistema di elaborazione
- gestione di processi e thread (richiami)
- Gestione della memoria (1 credito)
- segmentazione
- paginazione
- memoria virtuale
- Schedulazione dei processi (0.5 crediti)
- Gestione delle unità periferiche (0.5 crediti)
- gestione terminali
- gestione degli accessi a disco
- Gestione dei file (0.5 crediti)
- organizzazione di un file system, gestione e protezione degli archivi
- file locking
- Protezione delle risorse e delle informazioni (0.5 crediti)
- Introduzione al linguaggio C++: (0.6 crediti)
- Classi, ereditarietà e polimorfismo
- Gestione delle eccezioni e supporto runtime
- Programmazione generica
- Sviluppo di applicazioni Win32: (0.5 crediti)
- programmazione reattiva
- progetto e implementazione di interfacce grafiche
- gestione dell'interazione con l'utente
- Programmazione di sistema in Linux e Win32: (1.3 crediti)
- Gestione di processi and thread
- sincronizzazione
- gestione di file and direttori
- gestione della memory
- I/O sincrono and asincrono
- Comunicazione tra processi
- I/O e device driver: (0.5 crediti)
- Architettura di sistema a basso livello di Win32: famiglie di sistemi operativi, device driver
- I device driver in Linux
- Macchine Virtuali: (0.6 crediti)
- principi generali
- l'ambiente .NET
Organizzazione dell'insegnamento
- Esercitazioni in aula (0.5 crediti)
- Le System call
- I moduli del Kernel e i daemon
- Struttura dei device driver

- Esercitazioni in laboratorio (2.5 crediti)
- Modificare e installare un kernel
- Il bootstrap del un Sistema Operativo
- Cereare una system call
- Dettagli interni e chiamate di sistema relativi a un file system
- I moduli del Kernel e i daemon
- Installazione e modifica di un kernel Linux
- Creare una system call
- Progetto: sviluppare una periferica di I/O di tipo 'wearable', implementare il relativo device driver e il software di gestione
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.2012/13
Indietro