- Lunedì 16 Febbraio 2004. Lezione
non tenuta per adesione alla protesta contro i DDL "Moratti" su scuola,
università e ricerca.
- Martedì 17 Febbraio 2004. Lezione
non tenuta per adesione alla protesta contro i DDL "Moratti" su scuola,
università e ricerca.
- Lunedì 23 Febbraio 2004. Lezione
non tenuta per adesione alla protesta contro i DDL "Moratti" su scuola,
università e ricerca.
- Martedì 24 Febbraio 2004. Lezione
non tenuta per adesione alla protesta contro i DDL "Moratti" su scuola,
università e ricerca.
- Lunedì 1 Marzo 2004. Lezione non tenuta per impegni istituzionali del docente.
- 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.
- 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.
- 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.
- 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().
- 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().
- 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.
- 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.
- 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.