| Politecnico di Torino | |||||||||||||||||
| Anno Accademico 2015/16 | |||||||||||||||||
| 03KTOOC System programming |
|||||||||||||||||
|
Corso di Laurea Magistrale in Ingegneria Telematica (Computer And Communication Networks Engineering) - Torino |
|||||||||||||||||
|
|||||||||||||||||
|
|||||||||||||||||
| Esclusioni: 01NWG |
|||||||||||||||||
|
Presentazione
Il modulo ha lo scopo di introdurre gli elementi principali dell'architettura dei sistemi operativi, illustrandone la struttura di base e il funzionamento dal punto di vista dell'utilizzatore avanzato e del programmatore di sistema.
Il modulo illustra l'architettura dei sistemi operativi analizzandone i moduli interni e approfondisce i concetti e le tecniche di di gestione delle risorse di un sistema di elaborazione. Il corso presenta inoltre le tecniche di programmazione di sistema mediante l'analisi e l'utilizzo delle chiamate di sistema di Unix. Il corso è tenuto in lingua inglese. |
|
Risultati di apprendimento attesi
• Conoscenza e gestione dei processi e thread d'esecuzione concorrenti
• 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 • Capacità di analizzare device drivers |
|
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 |
|
Programma
Architettura di un sistema di elaborazione: Principi generali e concetti base (0.75 crediti)
• Richiami sui linguaggi di programmazione • Architettura e funzionamento di un processore • Tecniche per la gestione delle periferiche Struttura di un sistema operativo, risorse gestite e moduli corrispondenti (0.3 crediti) • Servizi di un Sistema Operativo • Il Kernel Unix shell (0.3 crediti) • Bash • Debugger • Profiler Processi e Thread (1.4 crediti) • multitasking e scheduling • Processi concorrenti • I thread Sincronizzazione di Processi e Thread (2.1 crediti) • Variabili e primitive semaforiche • Inter-Process Communication • Deadlock • System call • Posix Thread Gestione della Memoria e Memoria Virtuale (0,45 crediti) Macchine Virtuali (0.3 crediti) Linux kernel e Linux driver (0.45 crediti) • Gestione della ricompilazione del kernel Linux. • Realizzazione di driver Linux |
|
Organizzazione dell'insegnamento
Attività di Laboratorio (1,95 crediti):
• Unix Shell • Processi • Posix Thread • Macchine Virtuali • Kernel • Driver Linux Gli studenti sono tenuti a svolgere 4 esercitazioni di laboratorio che dovranno essere consegnate entro determinate scadenze. Tali elaborati saranno valutati. |
|
Testi richiesti o raccomandati: letture, dispense, altro materiale didattico
I testi di riferimento sono i seguenti:
• Silberschatz, Galvin, Gagne, "Operating System Concepts", 8th Edition, John Wiley & Son, 2009 • J. Cooperstein, "Linux Program Development", 2009 • J. Cooperstein, "Writing Linux Device Drivers", 2009 |
|
Criteri, regole e procedure per l'esame
L’esame consiste in una prova scritta ed un orale.
L’esame scritto, di durata di 120 minuti, consiste di: • Esercizi e domande sugli argomenti del programma • La soluzione di un problema utilizzando thread o la programmazione concorrente in linguaggio C. La prova orale si svolgerà sugli argomenti del programma del corso, sulle esercitazioni di laboratorio e sulla verifica del programma sviluppato nella prova scritta. |
| Orario delle lezioni |
| Statistiche superamento esami |
|
|