Politecnico di Torino
Politecnico di Torino
   
Login  
en
Politecnico di Torino
Anno Accademico 2014/15
02GRSOV
Programmazione di sistema
Corso di Laurea Magistrale in Ingegneria Informatica (Computer Engineering) - Torino
Docente Qualifica Settore Lez Es Lab Anni incarico
Cabodi Gianpiero ORARIO RICEVIMENTO AC ING-INF/05 70 0 30 8
SSD CFU Attivita' formative Ambiti disciplinari
ING-INF/05 10 B - Caratterizzanti Ingegneria informatica
Presentazione
The course is taught in Italian.
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 (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 laboratorio (3 crediti)
- 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: 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

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.2014/15
Indietro



© Politecnico di Torino
Corso Duca degli Abruzzi, 24 - 10129 Torino, ITALY
WCAG 2.0 (Level AA)
m@il