Esercizio 1

Sia data la procedura swap cosi' definita:

proc swap(var x,var y)
var aux;
begin-atomic
aux := y;
 y := x;
x := aux;
end-atomic

che scambia il contenuto di x e y in modo "atomico" cioe' senza possibili interferenze
dello scheduler.

E' possibile utilizzare questa funzione al posto, ad. es. della test&set, per assicurare la
proprieta' di mutua esclusione da una sezione critica?


Esercizio 2

Cosa il programma concorrente definito dal parallelo dei processi P e Q definiti di seguito?

semaphor s1:=0;
semaphor s2:=0;


P: process {
up(s1);
down(s2);
print P
down(s2);
print R
up(s1);
}

Q: process {
up(s2);
down(s1);
print A;
up(s2);
down(s1);
print I;
}


Esercizio 3

Si consideri la seguente soluzione al problema produttore-consumatore con buffer ad una posizione realizzata
con i seguenti semafori (realizzati con sleep/wakeup):
- Buffer_vuoto (inizializzato ad 1),
- Buffer_pieno (inizializzato a 0)
- Mutex (inizializzato ad 1)

Produttore:

While (True) {
Item = produce_item();
Down(&Buffer_Vuoto);
Down(&Mutex);
insert_item(item);
Up(&Mutex);
Up(&Buffer_Pieno);

}


Consumatore:

While (True) {
Down(&Buffer_Pieno);
Down(&Mutex);
item=remove_item();
Up(&Mutex);
Up(&Buffer_Vuoto);
consume_item(item);
}


Dire se tale soluzione è corretta se utilizzata da due thread user-level di uno stesso
processo e motivare la risposta

Esercizio 5

Provare che l'algoritmo del Fornaio (bakery) garantisce le proprieta' di mutua esclusione e progresso.
Piu' precisamente: provare che se il processo Pi e' nella critica e Pk (k=/=i) ha scelto il suo numero,
allora (number[i],i) < (number[k],k), e quindi studiare il caso in cui Pi e' nella regione critica e
Pk cerca di entrarvi.

Esercizio 6

Riformulare un "monitor" utilizzando i semafori nell'ipotesi che un processo che esegue un operazione di
signal si sospenda rilasciando il controllo del monitor (monitor alla Hoare).

Hint: introdurre un semaforo per la mutua esclusione all'interno del monitor (i.e. per eseguire in mutua
esclusione le sue procedure) e semafori per le condizioni.