Operativni Sistemi - Univerzitet u Novom Sadu
Operativni Sistemi - Univerzitet u Novom Sadu
Operativni Sistemi - Univerzitet u Novom Sadu
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
Do zaglavljivanja dolazimo i ako se procesi izvršavaju baš alternativno: izvršimo jednu naredbu<br />
prvog procesa, pa jednu naredbu drugog procesa, pa jednu naredbu prvog, itd.<br />
Dekkerov algoritam<br />
MODULE Dekker ;<br />
VAR p1WantsToEnter, p2WantsToEnter : BOOLEAN ;<br />
favouredProcess : ( first,second ) ;<br />
PROCEDURE Process1 ;<br />
BEGIN<br />
LOOP<br />
p1WantsToEnter := TRUE ;<br />
// P1 javlja da želi ući<br />
WHILE p2WantsToEnter DO<br />
// sve dok P2 želi ući<br />
IF favouredProcess = second THEN // ako P2 ima prednost<br />
p1WantsToEnter := FALSE ; // P1 odustaje<br />
WHILE favouredProcess = second DO END; // čeka prednost<br />
p1WantsToEnter := TRUE<br />
END<br />
END;<br />
KriticnaOblast1 ;<br />
favouredProcess := second ;<br />
p1WantsToEnter := FALSE ;<br />
OstaleStvari1<br />
END<br />
END Process1;<br />
// pa javi da želi ući<br />
// prednost dajemo P2-u<br />
// izlaz<br />
PROCEDURE Process2 ;<br />
BEGIN<br />
LOOP<br />
p2WantsToEnter := TRUE ;<br />
// P2 javlja da želi ući<br />
WHILE p1WantsToEnter DO<br />
// sve dok P1 želi ući<br />
IF favouredProcess = first THEN // ako P1 ima prednost<br />
p2WantsToEnter := FALSE ; // P2 odustaje<br />
WHILE favouredProcess = first DO END ; // čeka prednost<br />
p2WantsToEnter := TRUE<br />
END<br />
END;<br />
KriticnaOblast2 ;<br />
favouredProcess := first ;<br />
p2WantsToEnter := FALSE ;<br />
OstaleStvari2<br />
END<br />
END Process2;<br />
BEGIN<br />
p1WantsToEnter := FALSE ;<br />
p2WantsToEnter := FALSE ;<br />
favouredProcess := first ;<br />
PARBEGIN ;<br />
Process1 ;<br />
// pa javi da želi ući<br />
// prednost dajemo P1-u<br />
// izlaz<br />
27