en
Politecnico di Torino
Anno Accademico 2012/13
01NWGOT, 01NWGOC
Operating systems and system programming
Corso di Laurea Magistrale in Ingegneria Delle Telecomunicazioni (Telecommunications Engineering) - Torino
Corso di Laurea Magistrale in Ingegneria Telematica (Computer And Communication Networks Engineering) - Torino
Docente Qualifica Settore Lez Es Lab Tut Anni incarico
Rebaudengo Maurizio ORARIO RICEVIMENTO O2 IINF-05/A 60 0 20 0 3
SSD CFU Attivita' formative Ambiti disciplinari
ING-INF/05 8 C - Affini o integrative Attivitā formative affini o integrative
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.
The course is taught in English.
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

Attivitā di Laboratorio (1,95 crediti):
- Unix Shell
- Processi
- Posix Thread
- Macchine Virtuali
- Kernel
- Driver Linux
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 č costituito da una prova scritta, della durata di 120 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.
Il voto finale sarā ottenuto dalla media delle due parti, di pari peso.
Orario delle lezioni
Statistiche superamento esami

Programma definitivo per l'A.A.2012/13
Indietro