| | | corso | | | | |
Laboratorio di programmazione concorrente e di sistema A
Codice: | AA538 | Crediti: | 6 | Semestre: | 2 | Sigla: | LCS | |
|
Settore disciplinare: | INF/01 - Informatica |
Docente
Susanna Pelagatti
Tel. 0502212772Prerequisiti
Si consiglia di aver seguito e superato l'esame di AA536 “Laboratorio di Linguaggi di Sistema''
Obiettivi di apprendimento
Il corso intende fornire le conoscenze di base relative alla programmazione C
con chiamate di sistema Unix/POSIX. In particolare, vengono prese in
considerazione le chiamate standard per il trattamento di file e directory,
processi, thread, segnali, pipe, socket e vari meccanismi di sincronizzazione.
Conoscenze. Lo studente acquisirà conoscenze sulla programmazione concorrente utilizzando processi e thread in ambiente Unix/Posix, con particolare riferimento ai sistemi Linux.
Capacità. Lo studente saprà progettare e realizzare un sistema client server di medie dimensioni utilizzando gli strumenti messi a disposizione dallo standard POSIX. Saprà inoltre selezionare all'interno dello standard le primitive più adeguate, in modo da ottenere un software robusto ed efficiente. Saprà infine codificare e sviluppare la soluzione progettata usando ANSI C e gli strumenti dell'ambiente GNU.
Comportamenti. Lo studente sarà cosciente delle problematiche principali legate all'utilizzo di C+POSIX su diverse piattaforme e saprà valutare indipendentemente le scelte progettuali più adeguate per ottenere del software portabile e corretto.
Descrizione
Il corso e' diviso logicamente in due parti. La prima descrive sommariamente la shell di Unix, introduce gli script (con riferimento a Bash), descrive l'ambiente di sviluppo GNU ed i tool associati. La seconda tratta la programmazione concorrente e di sistema utilizzando le System Call POSIX. In particolare vengono descritte e sperimentate le SC relative ai file, ai processi, ai thread, ai segnali, alle pipe ed ai socket. Ogni argomento prevede lo svolgimento di esercizi in laboratorio da parte degli studenti.
English Description
We first introduce the Unix shell, shell scripting (Bash) and the principal GNU tools used to develop non trivial system programs in C. Then, we introduce the concept of 'system call' and review the principal ones in the areas of file system, processes, threads, signals, pipes and sockets. For each topic, we will propose several problems, which will be solved by the students during the Lab hours (esercitazioni).
Programma
Il
linguaggio usato nel corso e' ANSI C (lo studente deve già conoscerlo da LLS)
- Introduzione. Gestione
di progetti C complessi: make, cenni alla programmazione di shell (2h + 2h
laboratorio)
- Standard POSIX, system
call, gestione degli errori (2h + 2h laboratorio)
- Chiamate di sistema
relative ai file: open, close, read, write, lseek(2h + 2h laboratorio)
- SC avanzate sui file:
stat, SC su directory (2h + 2h laboratorio)
- Gestione di
processi:fork, exec (2h + 2h laboratorio)
- Gestione di
thread: pthread_create(), pthread_join() etc (2h + 2h laboratorio)
- IPC di base: semafori e
mutex (2h + 2h laboratorio)
- IPC di base: pipe con
nome e pipe senza nome(2h + 2h laboratorio)
- Gestione dei segnali (2h
+ 2h laboratorio)
-
Socket
(2h + 2h laboratorio)
Ore lezione: | 20 | Ore esercitazione: | 40 | | | |
Bibliografia
Testo. M.J. Rochkind Advanced Unix Programming. Addison Wesley 2004 Più materiale in linea accessibile
dalla pagina web del corso.
Software. Postazioni
Linux con ambiente GNU sui PC del laboratorio. Tutto il software utilizzato è
open source e scaricabile gratuitamente dagli studenti da vari siti web oppure
ottenibile in copia su CD direttamente dal centro di calcolo.
Modalità di esame
La valutazione avverrà mediante lo sviluppo di un progetto didattico in gruppi di 1-2 studenti più una prova orale individuale. Il progetto verterà sullo sviluppo di un semplice sistema client server utilizzando gli strumenti presentati a lezione. Parti del progetto verranno svolte durante le ore di laboratorio con l'aiuto del docente.