Politecnico di Torino | |||||||||||||||||
Anno Accademico 2016/17 | |||||||||||||||||
04KTOBG System programming |
|||||||||||||||||
Corso di Laurea Magistrale in Communications And Computer Networks Engineering (Ingegneria Telematica E Delle Comunicazioni) - Torino |
|||||||||||||||||
|
|||||||||||||||||
|
|||||||||||||||||
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. Approfondisce i concetti e le tecniche 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 Assembly • Conoscenza dei fondamentali tipi di strutture dati ed algoritmi • Capacità di sviluppare programmi in linguaggio C |
Programma
1. Architettura del calcolatore e programmazione (0,45 crediti)
- richiami sui linguaggi di programmazione - architettura e funzionamento del processore - gestione delle periferiche 2. Strutture del Sistema Operativo (0,3 crediti) - servizi ed interfaccia utente del Sistema Operativo - Kernel 3. Unix shell (0,3 crediti) - bash - debugger - profiler 4. Processi e thread (1,35 crediti) - multitasking e scheduling - programmazione concorrente - thread 5. Sincronizzazione tramite processi e thread (1,5 crediti) - semafori - Inter Process Communication (IPC) - System call - Posix Thread 6. Gestione della memoria e memoria virtuale (0,45 crediti) |
Organizzazione dell'insegnamento
Attività di Laboratorio (1,65 crediti):
• Unix Shell • Programmazione concorrente con processi e thread . Introduzione al kernel ed ai device 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. Correttezza e completezza delle esercitazioni di laboratorio
(homeworks) saranno anche considerate nel risultato finale. 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 |
|