semafory - określanie wartości zmiennych współdzielonych - CIEKAWE

0

Mam takie ciekawe zadanie.
Proszę określić wszystkie możliwe pary wartości zmiennych współdzielonych w1 i w2, wynikające
z współbieżnego przetwarzania procesów P(i) oraz P(j). Proszę dodatkowo określić taką wartość pary zmiennych w1 i w2, która jest niemożliwa
do uzyskania ze względu na zastosowane operacje semaforowe (tzn. mogłaby być uzyskana, gdyby operacji
semaforowych nie było).

//--------------------------------------------------------------
shared int w1 = 0, w2 = 0;
shared semaphore s1 = 0;
//--------------------------------------------------------------
Proces P(i)                          
local int i = 0;                       

i = w1;                              
w1 = i - 1;                          
w2 = i - 2;                            
V(s1);                                 
//--------------------------------------------------------------
Proces P(j)
local int j = 0;
j = w1;
 w1 = j + 2;
P(s1); 
w2 = j + 5;
//--------------------------------------------------------------

Według mnie
możliwe do uzyskania wartości
w1 , w2
-1, 2
-1, -2
-2, -4

a niemożliwe to :
w1 , w2
-1, 5
-2, 5

Zastanawiaja mnie wszystkie mozliwe wartosci

0

Możliwe jest też przykładowo:

w1 w2
1 5

Ogólnie w2 ∈ {5, 3} a w1 ∈ {-1, 1, 2}

1 użytkowników online, w tym zalogowanych: 0, gości: 1