26.02.2015 Views

Operativni Sistemi - Univerzitet u Novom Sadu

Operativni Sistemi - Univerzitet u Novom Sadu

Operativni Sistemi - Univerzitet u Novom Sadu

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

MODULE Version4 ;<br />

VAR p1WantsToEnter, p2WantsToEnter : BOOLEAN ;<br />

PROCEDURE Process1 ;<br />

BEGIN<br />

LOOP<br />

p1WantsToEnter := TRUE ;<br />

WHILE p2WantsToEnter DO<br />

p1WantsToEnter := FALSE ;<br />

DELAY ( maliInterval1 ) ;<br />

p1WantsToEnter := TRUE<br />

END;<br />

KriticnaOblast1 ;<br />

p1WantsToEnter := FALSE ;<br />

OstaleStvari1<br />

END<br />

END Process1;<br />

PROCEDURE Process2 ;<br />

BEGIN<br />

LOOP<br />

p2WantsToEnter := TRUE ;<br />

WHILE p1WantsToEnter DO<br />

p2WantsToEnter := FALSE ;<br />

DELAY ( maliInterval2 ) ;<br />

p2WantsToEnter := TRUE<br />

END;<br />

KriticnaOblast2 ;<br />

p2WantsToEnter := FALSE ;<br />

OstaleStvari2<br />

END<br />

END Process2;<br />

// javimo da P1 želi ući<br />

// sve dok P2 želi ući<br />

// odustajemo od toga da P1 uđe<br />

// čekamo malo,da to P2 primeti<br />

// javimo da P1 želi ući<br />

// izlazimo<br />

// javimo da P2 želi ući<br />

// sve dok P1 želi ući<br />

// odustajemo od toga da P2 uđe<br />

// čekamo malo,da to P1 primeti<br />

// javimo da P2 želi ući<br />

// izlazimo<br />

BEGIN<br />

p1WantsToEnter := FALSE ;<br />

p2WantsToEnter := FALSE ;<br />

PARBEGIN ;<br />

Process1 ;<br />

Process2 ;<br />

PAREND<br />

END Version4.<br />

Analiza: ova verzija zamalo da radi, ali postoji moguć nost greške. Pp. da se procesi izvršavaju<br />

paralelno: Process1 stavlja p1WantsToEnter:=TRUE, Process2 stavlja<br />

p2WantsToEnter:=TRUE, zatim oba procesa uđu u WHILE petlju, oba procesa za neko vreme<br />

odustaju od ulaska u k.o. Process1 č eka u trajanju maliInterval1 a Process2 u trajanju maliInterval2.<br />

Neka generatori sluč ajnih brojeva generišu iste vrednosti, tj neka je maliInterval1=maliInterval2, tada ć e<br />

ponovo biti p1WantsToEnter:=TRUE i p2WantsToEnter:=TRUE i sve poč injemo iz poč etka.<br />

Znač i, mada je mala verovatnoć a da oba generatora sluč ajnih brojeva izgenerišu isti niz vrednosti, postoji<br />

moguć nost da ovaj algoritam ne radi i da dođe do zaglavljivanja (dead lock) – a to može dovesti do vrlo<br />

ozbiljnih grešaka npr. ako se algoritam koristi za upravljanje nuklearnom elektranom, saobrać ajem itd.<br />

26

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!