Contenuto delle lezioni


  1. Lunedì 16 Febbraio 2004. Lezione non tenuta per adesione alla protesta contro i DDL "Moratti" su scuola, università e ricerca.
  2. Martedì 17 Febbraio 2004. Lezione non tenuta per adesione alla protesta contro i DDL "Moratti" su scuola, università e ricerca.
  3. Lunedì 23 Febbraio 2004. Lezione non tenuta per adesione alla protesta contro i DDL "Moratti" su scuola, università e ricerca.
  4. Martedì 24 Febbraio 2004. Lezione non tenuta per adesione alla protesta contro i DDL "Moratti" su scuola, università e ricerca.
  5. Lunedì 1 Marzo 2004. Lezione non tenuta per impegni istituzionali del docente.
  6. Martedì 2 Marzo 2004. Introduzione e organizzazione del corso. C e POSIX. Linguaggio C: origine (breve storia di UNIX), filosofia, ambiti di applicazione, struttura di compilazione (preprocessore, compilatore e linker). Direttive del preprocessore: #define, #include, #if/#else/#endif; varianti #ifdef. Struttura lessicale di un programma C; file sorgente, header locali e di sistema, compilazione separata. Tipi di dato semplici del C; dimensioni tipiche dei tipi; uniformità dei tipi integral; conversioni intero-carattere; convenzioni sui booleani. Dichiarazioni di dati semplici; dichiarazioni con inizializzazione; Puntatori (operatori * e &) e struttura di memoria.
  7. Lunedì 8 Marzo 2004. Ancora sui puntatori. Aritmetica dei puntatori. Tipi di dato complessi: array, struct, union. Equivalenza fra array e puntatori. Un esempio: la funzione strlen(). Layout in memoria dei tipi complessi. Un esempio di uso di struct e union.
  8. Lunedì 15 Marzo 2004. Uso dei puntatori per il passaggio di parametri per riferimento. Modalità di passaggio di array, struct e union. Allocazione dinamica della memoria: malloc() e free(). Passaggio di parametri sulla riga di comando. Esempio: il comando echo.
  9. Lunedì 22 Marzo 2004. Qualificatori in C: unsigned/signed, const, static, extern. Il comando man. Funzioni della libreria standard I/O: getchar(), putchar(), printf(), scanf(), sprintf(), sscanf(). Funzioni su stringhe: strlen(), strcpy(), strcat(), strncpy(), strncat(), strsep().
  10. Lunedì 5 Aprile 2004. Generalità sulle chiamate POSIX e le librerie standard; manuali in linea. Funzioni su file: open(), close(), read(), write(), lseek(). Funzioni di utilità: perror(). Funzioni di libreria: fopen(), fclose(), fread(), fwrite(), fseek().
  11. Lunedì 19 Aprile 2004. Informazioni sui file: stat(), fstat(). Gestione file: creat(), unlink(). Gestione directory: opendir(), readdir(), rewinddir(), closedir(). Gestione directory corrente: chdir(), fchdir(), getcwd(). Funzioni di utilità: concat(), split_args(), free_args(). File mappati in memoria: concetto, relazioni con i meccanismi di memoria virtuale, applicazioni, prestazioni. Le funzioni mmap(), munmap(), getpagesize(). Uso dei file mappati in memoria come strumento di comunicazione inter-processo.
  12. Lunedì 27 Aprile 2004. Struttura e proprietà dei processi UNIX. Funzioni POSIX per la gestione dei processi: fork(), exec (varianti: execve(), execl(), execlp(), execle(), execv(), execvp(), exit(), wait(), waitpid(). Esempi comuni: esecuzione di programmi con fork()/exec(); elaborazione parallela. Le funzioni system(), dup() e dup2(). Uso di dup2() per l'implementazione della redirezione di I/O.
  13. Lunedì 3 Maggio 2004. Comunicazioni interprocesso: shared memory con mmap(), comunicazioni figlio-padre con exit()/wait(), segnali e pipe. Segnali: definizione, alcuni segnali tipici. Gestione di default dei segnali. Gestione personalizzata dei segnali con sigaction(). Sezioni critiche e protezione dalle interruzioni. Invio di segnali: le funzioni kill() e alarm(). Attesa di segnali: pause() e sleep(). Gruppi di processi e loro relazione con la gestione dei terminali.

Consulta il Registro ufficiale delle lezioni.