ProvaTeorica 2010.07.12
Jump to navigation
Jump to search
Esercizio 2
Fatto dal professore
# Esercizio 2: Message passing con priorita'. Sia dato un servizio di message passing asincrono. Si implementi un servizio
# di message passing con priorita' senza fare uso di processi server. Il nuovo servizio ha due chiamate psend(dest, prio,
# msg) e precv(sender). La precv consente la ricezione da chiunque (sender==*). Quando un processo P chiama la precv
# questa deve restituire il messaggio di massima priorita' fra quelli spediti dal sender specificato a P o sospendere il
# processo se non ce ne sono in attesa. (suggerimento: se serve si puo' usare la funzione getpid() che restituisce
# l'identificativo del processo chiamante).
psend(dest, pio, msg)
asend(dest,(MSG,getpid(),prio,msg))
precv(sender)
asend(getpid,(NULLTAG,getpid(),NULL,NULL))
do:
(tag,senderx,prio,msg)=arev(*)
if(tag==MSG):
msgdb.add(senderx,prio,msg)
while tag!=NULLTAG.
while (m=msgdb.getmaxprio(sender))=None:
(tag,senderx,prio,msg)=arev(*)
msgdb.add(senderx,prio,msg)
return m