ProvaTeorica 2010.07.12

From Sistemi Operativi
Revision as of 16:36, 14 April 2014 by Mrta (talk | contribs) (Created page with "== Esercizio 2 == Fatto dal professore <syntaxhighlight lang="Python"> # Esercizio 2: Message passing con priorita'. Sia dato un servizio di message passing asincrono. Si i...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
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