elenco    
        corso    

Laboratorio di programmazione concorrente e di sistema A

Codice: AA538Crediti: 6Semestre: 2Sigla: LCS 
 
Settore disciplinare: INF/01 - Informatica

Docente

Susanna Pelagatti   susanna@di.unipi.it  Stanza 346  Tel. 0502212772

Prerequisiti

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)

  1. Introduzione. Gestione di progetti C complessi: make, cenni alla programmazione di shell (2h + 2h laboratorio)
  2. Standard POSIX, system call, gestione degli errori (2h + 2h laboratorio)
  3. Chiamate di sistema relative ai file: open, close, read, write, lseek(2h + 2h laboratorio)
  4. SC avanzate sui file: stat, SC su directory (2h + 2h laboratorio)
  5. Gestione di processi:fork, exec (2h + 2h laboratorio)
  6. Gestione di thread: pthread_create(), pthread_join() etc (2h + 2h laboratorio)
  7. IPC di base: semafori e mutex (2h + 2h laboratorio)
  8. IPC di base: pipe con nome e pipe senza nome(2h + 2h laboratorio)
  9. Gestione dei segnali (2h + 2h laboratorio)
  10. Socket (2h + 2h laboratorio)

Ore lezione: 20Ore 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.

Ulteriore pagina web del corso: http://www.di.unipi.it/~susanna/LPC/ (sarà disponibile dall'inizio del corso: Febbraio 2006)


home


email