Sinhronizacija tri niti sa tri resursa
03.09.2002. u 16:16 · pre 293 meseci
#1
Postovani prijatelji,
Nadam se da biste mogli da mi sugerisete ispravno resenje za sledeci problem koji se dotice programiranja u
realnom vremenu. U pitanju je jedan ispitni zadatak, pa cu Vam izloziti prvo postavku a onda varijante resenja.
Verujem da u teoriji operativnih sistema postoji optimalno resenje ovog problema, ali ga nisam mogao pronaci
u literaturi koja mi je dostupna.
Naime, postoje tri procesa (ili, svejedno, niti) koji konkurentno pristupaju do tri identicna resursa, po obrascu:
...
use one unit
use two units
...
Potrebno je osmisliti komunikaciju izmedju procesa koristeci semafore tako da se izbegnu 'deadlock' i 'starvation' efekti.
Dodatni zahtev (koji se ne pominje u zadatku ali je cini mi se jako potreban) jeste optimalno iskoriscenje tri resursa.
Podrazumeva se postojanje sinhronizacionih primitiva u operativnom sistemu.
Prvo resenje koje odmah pada na pamet jeste pristup resursima preko centralnog servera. Postoji server kome se
niti obracaju sa zahtevom za resursima, a server se brine o rasporedjivanju resursa. Ovakav pristup obavezno
izbegava deadlock (ne i starvation!) ali server postaje usko grlo kada se sistem skalira na veci broj niti odnosno resursa,
odnosno bespotrebno serijalizuje pristup resursima.
Ono sto se trazi u ovom slucaju (i ono sto se nadam da ce pronaci i ovde napisati neka dobra dusa:) jeste distribuirano
resenje koje sto bolje radi nezavisno od broja niti, bez stvaranja uskih grla. U ovom resenju je znatno teze obezbediti
izbegavanje problema itd.
Zahvaljujem se svima koji uzmu u obzir ovu poruku.
f
Re: Sinhronizacija tri niti sa tri resursa