| 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 |
|
|