informatica:sol:laboratorio:programma

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)
    • compilazione e linking
    • suddivisione di un programma in moduli.
    • Makefile
    • debugging con gdb e valgrind
  • Unix e la shell
    • 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
    • cos'e' una System Call
    • gestione sistematica degli errori
    • consigli pratici di programmazione
    • convenzioni e commenti
  • I file
    • 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
    • il modello fork/exec
    • gestione dei figli (wait), exit status
    • atexit(), _atexit()
  • I thread POSIX
    • i modello a thread
    • creazione e distruzione
    • mutex e variabili di condizione
    • soluzione tipici problemi di concorrenza
  • Maccanismi di IPC : Pipe e Socket
    • Pipe anonime
    • Cenni alle pipe con nome (FIFO)
    • Modello client-server
    • Socket per comunicazione locale (AF_UNIX)
    • Cenni ai socket per comunicazione in rete (AF_INET)
  • Segnali
    • Concetti generali: eventi asincroni, gestori di eventi
    • Ignorare, gestire, mascherare ed attendere i segnali
    • Gestione dei segnali con i processi e con i thread
    • Utilizzo di sigwait
  • Pattern tipici di server concorrenti
informatica/sol/laboratorio/programma.txt · Ultima modifica: 29/01/2021 alle 06:22 (10 mesi fa) da Massimo Torquati