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

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

END<br />

END Reader ;<br />

BEGIN<br />

Init ( mutex,1 ) ;<br />

Init ( db, 1 ) ;<br />

rc := 0 ;<br />

PARBEGIN ;<br />

Writer ;<br />

Reader ;<br />

...<br />

PAREND<br />

END RW ;<br />

// niko još nije pristupio rc-u<br />

// niko još nije pristupio bazi<br />

Analiza: kada č italac poželi da č ita iz baze podataka, najpre proveri da li može pristupiti<br />

globalnoj promenljivoj rc koja označ ava broj onih č itaoca koji istovremeno (u datom trenutku) č itaju iz<br />

baze. Ako ne može, č eka na semaforu mutex. Ako može, onda gleda: ako je on prvi od č itaoca koji žele<br />

č itati iz baze, onda mora zatražiti pristup bazi podataka preko semafora db. Ako pisac već piše, onda ć e<br />

č ekati na tom semaforu. Ako ne, onda ć e dopustiti ostalim č itaocima pristup rc-u. Zatim ć e č itati iz baze.<br />

Posle toga ponovo traži pristup rc-u, kada dobije pristup, onda proverava da li je on možda zadnji od<br />

č itaoca, ako jeste, onda nikom (iz skupa č itaoca) više nije potrebna baza, pa ć e javiti da može neko drugi<br />

pristupiti.<br />

Znač i prvi č itaoc ć e zatražiti pristup bazi (to istovremeno ne mogu uraditi i više njih zbog<br />

semafora mutex), kada dobije pristup, baza ć e biti “ otvorena” za sve č itaoce. Poslednji č itaoc ima zadatak<br />

da “ zatvori” bazu i time omoguć i piscu (ili možda nekom č itaocu koji ponovo želi č itati) pristup.<br />

Nedostatak ovog reš enja je u tome što favorizuje č itaoce: ako pisac poželi da upiše nešto u bazu,<br />

mora sač ekati da svi č itaoci odustanu od č itanja, pa se može desiti da jako dugo ne dobije pristup. Ova<br />

pojava se zove izgladnjivanje (starvation).<br />

Problem uspavanog berberina<br />

(The Sleeping Barber Problem)<br />

U frizerskom salonu radi jedan berberin. U prostoriji imamo jednu stolicu za šišanje i n stolica za<br />

mušterije koji č ekaju da dobiju novu frizuru. Ako nema ni jedne mušterije, berber sedi na svoju stolicu i<br />

spava. Kada uđe prva mušterija, budi berberina, sedi na stolicu za šišanje i berber ga šiša. Sledeć a<br />

mušterija koja dođe, sedi na jednu od tih n stolica za č ekanje, ako ima mesta, i č eka svoj red, ako nema<br />

mesta odustaje od šišanja.<br />

CONST n = 5 ;<br />

VAR barber : Semaphore ;<br />

customers : Semaphore ;<br />

mutex : Semaphore ;<br />

waiting : CARDINAL ;<br />

PROCEDURE Barber ;<br />

BEGIN<br />

// broj stolica za čekanje<br />

// da li je berberin slobodan za šišanje<br />

// da li ima mušterija<br />

// za kontrolu pristupa promen. waiting<br />

// broj mušterija koja čekaju na šišanje<br />

// berberin<br />

47

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

Saved successfully!

Ooh no, something went wrong!