Politecnico di Torino | |||||||||||||||||
Anno Accademico 2012/13 | |||||||||||||||||
02GRSOV Programmazione di sistema |
|||||||||||||||||
Corso di Laurea Magistrale in Ingegneria Informatica (Computer Engineering) - Torino |
|||||||||||||||||
|
|||||||||||||||||
|
|||||||||||||||||
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 |
|