Le esercitazioni si svolgono presso il laboratorio didattico di Via Tiburtina nelle aule 15 (canale di provenienza A-K) e 16 (canale di provenienza L-Z).
Esempio di uso dell'istruzione leal nei compilatori C
Secondo modulo (SC2)
Il materiale delle esercitazioni del secondo modulo è disponibile nella pagina del Materiale Didattico
Esercitazione 1 - Processi e Thread (5 marzo 2015 ore 12:00-13:30)
Processi e thread: breve riepilogo
Obiettivi dellesercitazione
Capire le differenze tra processi e thread in termini di ritardi di lancio/terminazione, e da cosa dipendono
Imparare le basi della programmazione multi-threading
Misurazione performance
Tempi di lancio/terminazione (con proposta di esercizio)
Accesso concorrente a variabili condivise (con proposta di esercizio)
Esercitazione 2 - Concorrenza (12 marzo 2015 ore 12:00-13:30)
Soluzione esercizio su accesso concorrente a variabili condivise (senza semafori)
Problematiche sul passaggio dei parametri (con proposta di esercizio)
Concorrenza: breve riepilogo e semafori in C
Obiettivi dellesercitazione
Come si implementa la mutua esclusione per laccesso ad una sezione critica?
Quanto vale loverhead dei semafori?
Come si implementa laccesso in mutua esclusione a N risorse distinte?
Accesso sezione critica in mutua esclusione
Misurazione overhead semafori (con proposta di esercizio)
Accesso in mutua esclusione a N risorse (con proposta di esercizio)
Esercitazione 3 - Sincronizzazione inter-Processo (19 marzo 2015 ore 12:00-13:30)
Soluzione esercizio sullo scheduler
Gestione degli errori in C
Obiettivi dellesercitazione
Sincronizzazione inter-processo: come usare i named semaphores per implementare meccanismi di sincronizzazione tra processi diversi?
Proposta di esercizio di riepilogo su processi, thread e semafori
Esercitazione 4 - Produttore/Consumatore (26 marzo 2015 ore 12:00-13:30)
Soluzione esercizio di riepilogo su processi/thread/semafori
Obiettivi dellesercitazione
Come implementare un buffer circolare?
Produttore/Consumatore: come usare i semafori per implementare una soluzione per singolo produttore e singolo consumatore?
Proposta di esercizio: estendere la soluzione per più produttori e più consumatori
Esercitazione 5 - Input/Output su Socket (9 aprile 2015 ore 12:00-13:30) fino alla slide 11 inclusa, le altre verranno presentate nella prossima esercitazione
Soluzione esercizio su più produttori e più consumatori
Obiettivi dellesercitazione
Imparare ad effettuare operazioni di input e output usando i descrittori in UNIX
Lettura/scrittura su file
Invio/ricezioni messaggi su socket
Descrittori in UNIX
Letture e Scritture su file con i descrittori (con proposta di esercizio)
Invio e Ricezione messaggi su socket con i descrittori (con proposta di esercizio) questa parte verrà presentata nella prossima esercitazione
Esercitazione 6 - Client/Server con Socket (16 aprile 2015 ore 12:00-13:30)
Soluzione esercizio su invio/ricezione messaggi su socket
Obiettivi dellesercitazione
Imparare ad impostare unapplicazione client/server con
Server single-thread
Come mettersi in ascolto su una porta nota?
Come accettare una connessione da client?
Client
Come connettersi ad un server in ascolto?
Semplice protocollo basato su messaggi testuali
Socket lato server
Socket lato client
Proposta di esercizio: EchoServer
Esercitazione 7 - Server multi-process/multi-thread (23 aprile 2015 ore 12:00-13:30)
Soluzione esercizio su EchoServer
Obiettivi dellesercitazione
Capire la differenza tra network byte order e host byte order
Gestire più connessioni in parallelo lato server
Usando un processo per ogni connessione
Usando un thread per ogni connessione
Esercizio: EchoServer multi-process
Esercizio: EchoServer multi-thread
Esercitazione 8 - Pipe e FIFO (30 aprile 2015 ore 12:00-13:30)
Soluzione esercizio EchoServer multi-thread
Obiettivi dellesercitazione
Implementare comunicazione inter-processo tramite pipe
Usando pipe semplici tra processi "relazionati"
Usando FIFO tra processi non "relazionati"
Esercizio: Logger
Esercizio: EchoProcess su FIFO
Esercitazione 9 - Riepilogo sui Semafori (7 maggio 2015 ore 12:00-13:30)
Soluzione esercizio sul Logger
Soluzione esercizio sullEchoProcess su FIFO
Riepilogo semafori
Sezione critica
Limite sugli accessi concorrenti
Produttore/Consumatore
Singolo Produttore/Singolo Consumatore
Più Produttori/Più Consumatori
Esercizio sul Produttore/Consumatore
Esercizio sul limite sugli accessi concorrenti
Esercitazione 10 - Riepilogo su Socket e Pipe (14 maggio 2015 ore 12:00-13:30)