Politecnico di Torino | |||||||||||||||||
Anno Accademico 2011/12 | |||||||||||||||||
01NYHOV System and device programming |
|||||||||||||||||
Corso di Laurea Magistrale in Ingegneria Informatica (Computer Engineering) - Torino |
|||||||||||||||||
|
|||||||||||||||||
|
|||||||||||||||||
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 |
|