ProvaTeorica 2011.02.11

From Sistemi Operativi
Jump to navigation Jump to search

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;
	}
}

-furt