informatica:sol:laboratorio:programma
Questa è una vecchia versione del documento!
Programma di massima modulo Laboratorio Programmazione di Sistema
(Per il programma dettagliato e l'ordine corretto di presentazione degli argomenti consultare la sezione lezioni ed esercitazioni dell'anno in corso)
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.
Prerequisiti: Una buona conoscenza di C
Argomenti Trattati
- Strumenti per la programmazione C in ambiente GNU (e dintorni) (2h lez + 2h ese)
- compilazione e linking
- suddivisione di un programma in moduli: gestione(make) e archiviazione (ar)
- debugging con gdb
- cenni ad altri tool (valgrind)
- Unix e la shell (6h lez + 6h ese)
- Unix: concetti di base, comandi/utility
- La shell di Unix
- introduzione alla shell
- cenni agli script
- personalizzazione con alias ed opzioni e variabili
- espansione (alias, storia, tilde, percorso, variabili, sostituzione di comando, espressioni aritmetiche)
- quoting
- Controllo dell'I/O: ridirezione
- Exit status
- Combinare comandi
- pipe
- sequenza non condizionale
- sequenze condizionali &&, ||
- comandi composti (uso di {…} e (…) )
- Operatori su stringhe (pattern matching)
- Costrutti di controllo
- condizionale (if) e test
- iterazione limitata (for)
- scelta multipla (case)
- iterazione illimitata (while e do/while)
- menu' con select
- C e la programmazione di sistema (1h lez)
- cos'e' una System Call
- gestione sistematica degli errori
- consigli pratici di programmazione
- convenzioni e commenti
- I file (2h lez + 2h ese)
- concetti base dei FS Unix
- operazioni di base (open, read, write, close, lseek)
- differenza tra chiamate di libreria e system call (write vs fwrite)
- link: concetti e system call per la gestione
- manipolare e accedere alle informazioni sui file (stat, fcntl, ioctl)
- gestione delle directory (opendir,readdir,…,closedir)
- duplicazione di descrittori (dup e dup2)
- I processi (2h lez + 2h ese)
- il modello fork/exec
- gestione dei figli (wait), exit status
- atexit(), _atexit()
- I thread (3h lez + 4h ese)
- i modello a thread
- creazione e distruzione
- mutex e variabili di condizione
- soluzione ti tipici problemi di concorrenza
- Maccanismi di IPC : Pipe (2h lez + 2h ese)
- Pipe anonime
- Pipe con nome (FIFO)
- Maccanismi di IPC : Socket (2h lez + 2h ese)
- Modello client-server
- Socket per comunicazione locale (AF_UNIX)
- Socket per comunicazione in rete (AF_INET)
- Segnali (2h lez + 2h ese)
- Concetti generali: eventi asincroni, gestori di eventi
- Ignorare, gestire, mascherare ed attendere i segnali
- Gestione dei segnali con i processi e con i thread
informatica/sol/laboratorio/programma.1486317132.txt.gz · Ultima modifica: 05/02/2017 alle 17:52 (8 anni fa) da Massimo Torquati