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
Scarica

Processes and Threads