ProvaTeorica 2011.02.11
Revision as of 19:13, 16 March 2014 by Stefano 92 (talk | contribs) (Created page with "Esercizio 1 <syntaxhighlight lang="C"> /*Esercizio 1: Il monitor lifocs che lo studente deve implementare, realizza una critical section LIFO. I processi per usare la critic...")
Esercizio 1
/*Esercizio 1: Il monitor lifocs che lo studente deve implementare, realizza una critical section LIFO. I processi per usare
la critical section LIFO usano il seguente protocollo:
n1=lifocs.enter()
…. codice critico
n2=lifocs.exit()
quando un processo rilascia la sezione critica e ci sono processi in attesa di entrare, deve venir assegnata la sezione
critica al processo che ha fatto l'ultima richiesta (in ordine di tempo).
Le funzioni enter e exit devono dare come valore di ritorno il numero di processi in attesa di entrare nella sezione critica.
I valori n1 e n2 sono correlati fra loro?*/
monitor lifocs
{
int inc=0;
bool occupy=false;
condition *pila;
procedure entry enter()
{
inc++;
if(occupy)
pila[k-1].wait();
inc--;
occupy=true;
return i;
}
procedure entry exit()
{
occupy=false;
if(k!=0)
pila[k-1].signal();
return k;
}
}