[SISTEMI OPERATIVI] Esercizio semafori (stallo)

Black27
Buongiorno! Come da titolo stavo osservando un esercizio sui semafori, dove viene proposta una condizione di stallo (deadlock) da risolvere. La situazione è la seguente (classica situazione):

PROCESSO1
wait(S);
wait(Q);
...
...
...
signal(S);
signal(Q);

PROCESSO2
wait(Q);
wait(S);
...
...
...
signal(Q);
signal(S);

Per risolvere questa sitazione basta inserire un semaforo (mutex) prima della wait e dopo l'ultima signal (che sarebbe come usare un monitor...), o c'è qualche altra soluzione migliore che mi sfugge? Applicando un mutex dovrebbe diventare così:

PROCESSO1
wait(mutex);
wait(S);
wait(Q);
...
...
...
signal(S);
signal(Q);
signal(mutex);

PROCESSO2
wait(mutex);
wait(Q);
wait(S);
...
...
...
signal(Q);
signal(S);
signal(mutex);

Risposte
Black27
Giusto! Nono dici bene, l'esercizio richiede solo di eliminare il deadlock! (effettivamente si, c'è anche starvation...bella roba =) )
Grazie per l'ennesimo aiuto =)

Black27
haha! grazie ancora =)

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.