Dispense lezioni
- Introduzione corso (pdf)
- Calendario
- Modalità esame
- Introduzione al linguaggio C (pdf)
- Confronto con Java
- Preprocessore
- Tipi di dati
- Istruzioni e operatori
- Funzioni
- File
- Puntatori
- Memoria dinamica
- Librerie
- Compilazione
- Debugging
- Esempi
- Esercizi C (esercizi; soluzioni)
- Introduzione alla bash
(pdf)
- Introduzione
- I comandi di base
- I comandi per il file system
- I comandi per i processi
- La programmazione della shell
- Esempi
- Esercizi bash
(esercizi;
soluzioni)
- Programmazione di sistema (pdf)
- Introduzione
- System call per il file system
- Apertura e chiusura di canali
- Scrittura, lettura e riposizionamento
- Gestione delle directory
- Gestione dei link
- Privilegi e accessi
- Stato di un file
- Controllo dei dispositivi
- Esempi
- Esercizi gestione file e directory
(esercizi;
soluzioni)
- System call
per la gestione dei processi
- Creazione di processi
- Esecuzione di programmi
- Sincronizzazione tra padre e figli
- Informazioni sui processi
- Segnalazione tra processi
- Allarmi e sospensione
- Esempi
- Esercizi gestione dei processi (esercizi; soluzioni)
- System call
per la comunicazione tra processi
- System call
per lo scambio di messaggi
- Caratteristiche comuni ad altre primitive di IPC
- Creazione coda
- Controllo della coda
- Invio e ricezione di messaggi
- Esempi
- Esercizi code di messaggi (esercizi;
soluzioni)
- System call
per gestione della memoria condivisa
- Creazione di aree di
memoria condivisa
- Controllo della memoria condivisa
- Esempi
- System call
per la sincronizzazione tramite semafori
- Creazione di semafori
- Operazioni sui semafori
- Esercizi memoria condivisa e semafori (esercizi;
soluzioni)
- Programmazione multithread
(pdf)
- Creazione e terminazione di thread
- Sincronizzazione tra thread
- Esercizi thread
(esercizi;
soluzioni)
Useful documentation (in English)