en
Politecnico di Torino
Anno Accademico 2016/17
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 16
SSD CFU Attivita' formative Ambiti disciplinari
ING-INF/05 10 B - Caratterizzanti Ingegneria informatica
Esclusioni:
01NYH
Presentazione
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. Vengono infine introdotte ed utilizzate tecniche avanzate di programmazione concorrente.
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
- Capacità di analizzare e realizzare programmi basati su processi e/o thread concorrenti
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 di base per la programmazione concorrente.
Programma
Architettura Sistema Operativo (3 ore)
- moduli di gestione delle risorse di un sistema di elaborazione
- gestione di processi e thread (richiami)
Gestione della memoria (12 ore)
- segmentazione
- paginazione
- memoria virtuale
Sistema operativo didattico OS161 (8 ore)
Gestione delle unità periferiche (6 ore)
- driver e gestione dispositivi
- gestione degli accessi a disco
Gestione dei file (6 ore)
- organizzazione di un file system, gestione e protezione degli archivi
Introduzione al linguaggio C++: (12 ore)
- Classi, ereditarietà e polimorfismo
- Gestione delle eccezioni e supporto runtime
- Programmazione generica
Sviluppo di applicazioni Win32: (5 ore)
- programmazione reattiva
- progetto e implementazione di interfacce grafiche
- gestione dell'interazione con l'utente
Programmazione di sistema in Linux e Win32: (12 ore)
- Gestione di processi and thread
- sincronizzazione
- gestione di file and direttori
- gestione della memoria
- I/O sincrono and asincrono
- Comunicazione tra processi
Macchine Virtuali: (6 ore)
- principi generali
- l'ambiente .NET
Organizzazione dell'insegnamento
Esercitazioni in laboratorio (30 ore)
- realizzare un allocatore di memoria
- Modificare e installare un kernel
- Il bootstrap del un Sistema Operativo
- Creare una system call
- Dettagli interni e chiamate di sistema relativi a un file system
- I moduli del Kernel e i daemon
- Struttura dei device driver
- Progetto
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

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, con esercizi e/o domande sugli argomenti svolti a lezione, relativi a:
- realizzazione e moduli interni di un sistema operativo
- chiamate di sistema e programmazione concorrente
Durante lo svolgimento dell’esame non è possibile consultare testi o appunti. L'esame non è superato se il punteggio relativo ad una delle due parti non è sufficiente. Il progetto svolto al termine del corso contribuisce al voto finale.
Orario delle lezioni
Statistiche superamento esami

Programma definitivo per l'A.A.2016/17
Indietro