Scambio Messaggi (1) • Primitive base – send(destination,&msg) – receive(source, &msg) • Decine di varianti, nel nostro caso : – la receive blocca automaticamente se non ci sono messaggi – i messaggi spediti ma non ancora ricevuti sono bufferizzati dal SO • Non richiedono accesso a supporti di memorizzazione comune • Facili da realizzare come libreria di Scall • Meno efficienti 1 Sol. Produttore/Consumatore con N messaggi 2 Processi e Thread Un insieme di problemi tipici di interazione programmati con i semafori 3 I filosofi a cena (1) • I filosofi mangiano e pensano • Per mangiare servono due forchette • Ogni filosofo prende una forchetta per volta • Come si può prevenire il deadlock • Filosofi = processi, Forchette = risorse 4 I filosofi a cena (2) Una falsa soluzione al problema dei filosofi 5 I filosofi a cena (3) Una soluzione corretta al problema (parte 1) 6 Una soluzione corretta al problema (parte 2) 7