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