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

E' necessaria una buona conoscenza del linguaggio C. 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 di concorrente e di sistema in ambiente POSIX. In particolare, viene introdotta la programmazione di shell BASH, e 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 e di sistema 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, strumenti GNU introduzione alla shell (2h + 2h laboratorio)
  2. La shell Bash, programmazione ed uso (2h + 2h laboratorio)
  3. Standard POSIX, system call, gestione degli errori (2h + 2h laboratorio)
  4. Chiamate di sistema relative ai file: open, close, read, write, lseek (2h + 2h laboratorio)
  5. SC avanzate sui file: stat, SC su directory (2h + 2h laboratorio)
  6. Processi:fork, exec, wait, exit (2h + 2h laboratorio)
  7. Thread Posix: creazione, attesa distruzione, la libreria pthread() di Linux (2h + 2h laboratorio)
  8. Variabili di condizione e mutex, programmazione concorrente con thread (2h + 2h laboratorio)
  9. Inter process communication: pipe con nome e pipe senza nome (2h + 2h laboratorio)
  10. Inter process communication: Socket, indirizzi AF_UNIX, cenni AF_INET (2h + 2h laboratorio)
  11. Segnali (2h + 2h laboratorio)

Ore lezione: 22 Ore laboratorio: 38  

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 esercitazioni in aula e di un progetto didattico (svolti individualmente) più una prova orale. 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.cli.di.unipi.it/doku/doku.php/lcs/start


home


email