Problema del Ponte Tibetano
Due villaggi di montagna sono separati da una profonda vallata; per facilitare la comunicazione tra i due villaggi, č stato costruito un ponte tibetano (di corde) che li unisce. Il ponte č abbastanza largo da permettere il passaggio di due pedoni alla volta, eventualmente in direzioni opposte. Il ponte č largo appena a sufficienza per far passare un carro;questo significa che non č possibile che due carri attraversino il ponte contemporaneamente in due direzioni opposte, ed č impossibile superare un carro. Il ponte ha un limite di carico MAXLOAD. Se il peso di tutti i carri e pedoni attualmente presenti sul ponte supera MAXLOAD, il ponte si spezza. E' possibile ottenere il peso di un pedone o carro x con la funzione getWeight(x).
1. Scrivere il programma Tibet in linguaggio C che abbia le i seguenti processi:
pEntra(Village src, Persona p);
pEsci(Village dst, Persona p);
cEntra(Village src, Carro c);
cEsci(Village dst, Carro c);
La vita di un pedone consiste nell'andare da una cittā all'altra, invocando prima pEntra a partire dalla cittā di partenza e poi Esci sulla cittā di arrivo.
La vita di un carro consiste nell'andare da una cittā all'altra, invocando prima cEntra a partire dalla cittā di partenza e poi cEsci sulla cittā di arrivo.
Il programma deve soddisfare alle seguenti caratteristiche:
- assenza di deadlock
- assenza di rotture del ponte
- assenza di sorpassi e incroci impossibili.
2. Spiegare come le proprietā 1 - 3 sono rispettate dal vostro algoritmo.
Possibile implementazione 1
Possibile implementazione 2
Torna a Lab Sistemi Operativi
Non ci sono commenti in questa pagina. [Scrivi commento]