際際滷

際際滷Share a Scribd company logo
1 
Problemi darka e filozofeve -Lexioni 5 
Ne shkencen kompjuterike, problemi i darkes se filozofeve eshte nje shembull ilustrues i dizenjimit 
te algoritmeve konkurente dhe qe perdoret per te ilustruar ceshtjet e sinkronizimit dhe teknikave 
per zgjidhjen e tyre. 
Eshte formuluar ne vitin 1965 nga Edsger Dijkstra, si ushtrim provimi, qe ne terma kompjuterike do 
te thote konkurenca per akses ne periferike si psh aksesi ne disk. 
 
Ilustrimi i problemit darka e filozofeve 
Pese filozofe gjenden ne nje tryeze dhe duan te darkojne ne nje pjate me spageti. Ndodhet nje pirun 
midis 2 filozofeve. 
Cdo filozof duhet te mendoje dhe te haje. Nje filozof mund te haje vetem nese i ka te dy pirunat 
njerin ne te majte dhe tjetrin ne djathte ne te njejten kohe. Cdo pirun duhet te mbahet vetem nga 
nje filozof dhe nje filozof mund te haje vetem nese piruni nuk eshte i zene nga nje filozof tjeter.Pasi 
filozofi mbaron se ngreni, duhet te vendose pirunin me qellim qe tu jape te tjereve mundesine qe te 
hane. Nje filozof mund te marre nje pirun ne te djathten ose ne te majten e tij nese vihen ne 
dispozicion te tij, por nuk mund te filloje te haje nese nuk i ka te dy pirunjte ne dispozicion. 
E ngrena nuk eshte e limituar, qe do te thote qe mund ta supozojme pjaten me spageti si burim I 
palimituar. 
Problemi eshte si te mund te dizenjojme nje disipline per te ngrene (algorime konkurent) qe 
filozofet te mos mbeten pa ngrene ? Nese alternojme te ngrenin dhe mendimin, duhet te kemi 
parasysh qe filozofet nuk mund ta dijne se kur filozofet e tjere kane deshire te hane apo te 
mendojne. 
Ky problem eshte dizenjuar per te ilustruar shmangien e deadlock, gjendja e sistemit ne cilen nuk 
mund te kemi progress te metejshem.Per te pare nese dizenjimi I zgjidhjes eshte i duhuri, 
konsideroni propozimin e meposhtem: Instruktoni cdo filozof te sillet si me poshte: 
 Mendo derisa piruni i majte te vihet ne dispozicion; nese vihet merre ne dore; 
 Mendo derisa piruni i djathte te vihet ne dispozicion; nese vihet merre ne dore; 
 Kur te dy pirunat jane ne dore, fillo se ngreni deri ne nje kohe te caktuar; 
 Vendos , pirunin e djathte ne tryeze; 
 Vendos , pirunin e majte ne tryeze; 
 Fillo nga e para 
Kjo zgjidhje deshton: lejon qe sistemi te kaloje ne gjendje deadlock, dhe nuk ka mundesi per 
progres te metejshem.
Ky eshte rasti kur cdo filozof, ka marre pirunin e majte dhe pret per pirunin e djathte. Me 
instruksionet e dhena kjo gjendje mund arrihet, dhe kur arrihet filozofit i duhet te prese 
pafundesisht per pirunin tjeter. 
Resource starvation- Vdekja nga burimi-mund te ndodhe gjithashtu ne menyre te pavarur nga 
deadlock, nese nje filozof i caktuar nuk mund te marre te dy pirunjte per efekt te kohes. Psh mund 
te kete nje rregull qe filozofi te vendose pirunin nese pret per nje periudhe deri 10 minuta per 
pirunin tjeter dhe te prese edhe 10 minuta te tjera per tentativen tjeter.Kjo skeme eliminon 
mundesine per deadlock (sistemi mund te avancoje ne nje gjendje tjeter) por perseri mund te kete 
probleme me livelock. Kjo ka te beje me gjendjen qe ndodh kur dy ose me shume procese ne 
menyre te vazhdueshme ndryshojne gjendjen e tyre ne pergjigje te ndryshimeve te procesit tjeter. 
Rezultati ne kete gjendje eshte qe askush nga proceset nuk arrin te perfundoje. 
Livelock ne shembullin tone pasqyrohet kur te gjithe filozofet shfaqen ne te njejten kohe ne dhomen 
e ngrenies dhe cdo njeri prej tyre merr pirunin e majte ne te njejten kohe dhe pret 10 minuta derisa 
te marre pirunin tjeter , nuk e merr pirunin , perseritet cikli filozofi pret 10 minuta te tjera perpara 
se te marre pirunin tjeter. 
Mutual exclusion eshte berthama e problemit; filozofet qe darkojne krijojne nje skenar te 
pergjithshem dhe abstrakt, I nevojshem per shpjegimin e ceshtjeve te tilla. Deshtimet qe mund te 
hasin keta filozofe jane analoge me veshtiresite qe ndeshen ne programime kompjuterike kur 
shume programe duhet te ekzekutohen dhe kerkojne akses ne burimet e ndara. 
Te gjitha keto ceshtje studiohen ne lenden e programimit konkurent. Problemi ne origjine Dijkstra,i 
referohej paisjeve te jashtme si psh disqeve te jashtme.Sidoqofte, veshtiresite qe morem ne 
konsiderate ne darken e filozofeve, ndeshen shume me shpesh kur disa procese aksesojne nje 
grup te dhenash qe jane azhornuar. Sisteme te tilla si psh berthamat e sistemit operativ, perdorin 
mijera lock (bllokime) dhe sinkronizime qe kerkojne zbatim strikt te metodave dhe protokolleve 
nese duhet te shmangen probleme te tilla si deadlock, starvation ose korruptime te dhenash. 
2 
Zgjidhje 
Zgjidhja e hierarkise se burimeve - Resource hierarchy solution 
Kjo zgjidhje e problemit eshte propozuar nga Dijkstra. Ajo i cakton nje renditje te pjesshme te 
burimeve (piruneve ne kete rast) dhe krijon nje marreveshje qe te gjitha burimet do kerkohen te 
renditura, dhe asnje nga dy burimet (pirunet) qe nuk kane lidhje renditje me njera-tjetren nuk do 
te perdoren nga nje njesi pune ne te njejten kohe. Ne kete rast burimet (pirunat) do te etiketohen 
me numrin 1 deri ne 5 dhe cdo njesi pune (filozof) do te marr ne fillim pirunin qe ka numrin me te 
vogel dhe pastaj pirunin qe ka numrin me te madh midis dy pirunjve qe ai ndermend te perdore. 
Rendi qe duhet te ndjeke cdo filozof per te leshuar pirunin nuk ka rendesi. 
Ne kete rast nese 4 filozofe nga 5, kapin ne te njejten kohe pirunat me numrin me te vogel, vetem 
numri me i madh do te mbetet ne tavoline, dhe filozofi i peste ne kete menyre nuk do te mund te 
kape asnje pirun. Per me teper, vetem nje filozof do te kete akses tek piruni me numrin me te madh 
qe te mund te filloje te haje me dy piruna. 
Zgjidhja me hierarkine e burimit shmang deadlock, por nuk eshte gjithnje praktike, sidomos nese 
lista e burimeve te kerkuara nuk njihet paraprakisht.Psh.Nese nje filozof mban burimin 3 dhe 5 dhe 
me pas percakton se do te kerkoje edhe burimin 2, ai duhet te leshoje burimin 5, pastaj 3 para se te 
marre burimin 2, pastaj te rikerkoje burimin 3 dhe 5 ne kete renditje.Programet kompjuteriket qe 
aksesojne numer te madh rekordesh ne databaze nuk do te ekzekutohen ne menyre te efektshme 
nese do tu kerkohet te leshojne te gjitha rekordet me vlerat me te larta perpara aksesimit te nje 
rekordi te ri, duke e bere kete lloj zgjidhje jo praktike per kete qellim.
Zgjidhja me udheheqes - Conductor solution 
Nje zgjidhje tjeter alternative mund te arrihet duke prezantuar nje kamarier ne tavoline. Filozofi do 
te kerkoje lejen e tij para se te kape nje pirun. Duke qene se kamarieri ka informacion sesa pirunj 
jane ne perdorim, ai eshte ne gjendje te gjykoje dhe parandaloje deadlock. Kur 4 piruna jane ne 
perdorim, filozofi tjeter qe te kerkoje nje pirun duhet te prese miratimin e kamarierit, dhe ky 
miratim nuk jepet deri sa nje pirun tjeter te leshohet. Logjika eshte e thjeshte duke specifikuar qe 
filozofi duhet te kerkoje marre pirunin ne doren e majte, para pirunit ne doren e djathte ( ose 
anasjelltas).Kamarieri vepron si semafor. 
Per te ilustruar sesi punon konkretisht kjo zgjidhje, konsiderojme qe filozofet te etiketohen sipas 
drejtimit te akrepave te ores nga A ne E. Nese A dhe C jane ne proces te ngreni, ath 4 pirunj jane ne 
perdorim. B ulet midis A dhe C dhe nuk ka asnje pirun ne dispozicion, nderkohe qe D dhe E kane nje 
pirun te paperdorur midis tyre. Nese supozojme se D do te haje, kur ai deshiron te kape pirunin e 
peste, mund te ndodhe deadlock.Nese ai i kerkon kamarierit dhe ai i thote te prese, mund te jemi te 
sigurte qe heren tjeter 2 piruna do te leshohen dhe do te kemi te pakten nje filozof qe mund te 
rezultoje I suksesshem qe te kerkoje 2 piruna, duke eliminuar ne kete menyre deadlock. 
Chandy / Misra solution-Zgjidhja Kandi/Misra 
Kandi dhe Aggarwal ne 1984 propozuan nje zgjidhje te ndryshme per darken e filozofeve, duke 
lejuar agjentet diktues ( P1,.Pn) te luftojne per nje numer burimesh arbitrare, ndryshe nga zgjidhja 
Dijkstra. Eshte komplet e shperdare dhe nuk ka nevoje per nje autoritet qendror pas inicializimit. 
Sidoqofte, thyen kerkesen filozofet nuk i flasin njeri-tjetrit (per shkak te mesazheve kerkues). 
1. Per cdo cift filozofesh qe pretendon nje burim, kapet nje pirun dhe I jepet filozofit qe ka ID 
me te vogel. Cdo pirun mund te jete i paster ose i papaster.Fillimisht te gjithe pirunjte jane 
te papaster 
2. Kur nje filozof kerkon te perdore disa burime (psh te haje), ai duhet ta marre pirunin nga 
fqinji i tij. Per te gjithe pirunjte qe ai nuk I disponon, dergon nje mesazh kerkues. 
3. Kur nje filozof qe ka nje pirun merr nje mesazh kerkues, ai e mban pirunin e tij nese eshte I 
paster, por leshon pirunin qe mund te jete i papaster. Nese e leshon pirunin ai fillimisht e 
pastron ate. 
4. Kur filozofi mbaron se ngreni, pirunjte e tij jane te papaster. Nese nje filozof tjeter ka bere 
kerkese per pirun ai e pastron ate dhe e leshon. 
Kjo zgjidhje lejon nje shkalle te madhe konkurence dhe zgjidh disa probleme te medha 
arbitrare. 
Zgjidh gjithashtu problemin starvation.Etiketat e paster/e papaster, veprojne si menyre per tu 
dhene perparesi proceseve qe kane me shume uri, dhe perbejne disavantazh per proceset qe sapo 
kane ngrene. Ne rastin e darkes se filozofeve, mund te themi qe filozofet nuk lejohen te hane dy 
here, ne nje radhe pa u dhene mundesine te tjereve te perdorin pirunjte ndermjet tyre. 
Ne analizen e tyre, ata derivojne ne nje sistem me nivele preferencash qe nis nga shperndarja e 
burimeve (pirunjve) dhe gjendja e paster/papaster. Ata tregojne qe ne kete sistem, mund te 
pershkruhet nje grafik aciklik, i cili nuk mund te shnderrohet ne ciklik. Kjo garanton shmangien e 
deadlock. Sidoqofte, nqs sistemi inicializohet ne nje gjendje perfekte simetrike, psh sic eshte rasti qe 
te gjithe filozofet mbajne pirunin e majte, ath grafiku eshte ciklik qe ne fillim, dhe zgjidhja mund te 
coje ne deadlock. Inicializimi i sistemit ku filozofet me id te ulet kane pirunj te papaster siguron qe ne 
fillim qe grafiku te jete aciklik. 
3

More Related Content

Problemi darka e filozofeve

  • 1. 1 Problemi darka e filozofeve -Lexioni 5 Ne shkencen kompjuterike, problemi i darkes se filozofeve eshte nje shembull ilustrues i dizenjimit te algoritmeve konkurente dhe qe perdoret per te ilustruar ceshtjet e sinkronizimit dhe teknikave per zgjidhjen e tyre. Eshte formuluar ne vitin 1965 nga Edsger Dijkstra, si ushtrim provimi, qe ne terma kompjuterike do te thote konkurenca per akses ne periferike si psh aksesi ne disk. Ilustrimi i problemit darka e filozofeve Pese filozofe gjenden ne nje tryeze dhe duan te darkojne ne nje pjate me spageti. Ndodhet nje pirun midis 2 filozofeve. Cdo filozof duhet te mendoje dhe te haje. Nje filozof mund te haje vetem nese i ka te dy pirunat njerin ne te majte dhe tjetrin ne djathte ne te njejten kohe. Cdo pirun duhet te mbahet vetem nga nje filozof dhe nje filozof mund te haje vetem nese piruni nuk eshte i zene nga nje filozof tjeter.Pasi filozofi mbaron se ngreni, duhet te vendose pirunin me qellim qe tu jape te tjereve mundesine qe te hane. Nje filozof mund te marre nje pirun ne te djathten ose ne te majten e tij nese vihen ne dispozicion te tij, por nuk mund te filloje te haje nese nuk i ka te dy pirunjte ne dispozicion. E ngrena nuk eshte e limituar, qe do te thote qe mund ta supozojme pjaten me spageti si burim I palimituar. Problemi eshte si te mund te dizenjojme nje disipline per te ngrene (algorime konkurent) qe filozofet te mos mbeten pa ngrene ? Nese alternojme te ngrenin dhe mendimin, duhet te kemi parasysh qe filozofet nuk mund ta dijne se kur filozofet e tjere kane deshire te hane apo te mendojne. Ky problem eshte dizenjuar per te ilustruar shmangien e deadlock, gjendja e sistemit ne cilen nuk mund te kemi progress te metejshem.Per te pare nese dizenjimi I zgjidhjes eshte i duhuri, konsideroni propozimin e meposhtem: Instruktoni cdo filozof te sillet si me poshte: Mendo derisa piruni i majte te vihet ne dispozicion; nese vihet merre ne dore; Mendo derisa piruni i djathte te vihet ne dispozicion; nese vihet merre ne dore; Kur te dy pirunat jane ne dore, fillo se ngreni deri ne nje kohe te caktuar; Vendos , pirunin e djathte ne tryeze; Vendos , pirunin e majte ne tryeze; Fillo nga e para Kjo zgjidhje deshton: lejon qe sistemi te kaloje ne gjendje deadlock, dhe nuk ka mundesi per progres te metejshem.
  • 2. Ky eshte rasti kur cdo filozof, ka marre pirunin e majte dhe pret per pirunin e djathte. Me instruksionet e dhena kjo gjendje mund arrihet, dhe kur arrihet filozofit i duhet te prese pafundesisht per pirunin tjeter. Resource starvation- Vdekja nga burimi-mund te ndodhe gjithashtu ne menyre te pavarur nga deadlock, nese nje filozof i caktuar nuk mund te marre te dy pirunjte per efekt te kohes. Psh mund te kete nje rregull qe filozofi te vendose pirunin nese pret per nje periudhe deri 10 minuta per pirunin tjeter dhe te prese edhe 10 minuta te tjera per tentativen tjeter.Kjo skeme eliminon mundesine per deadlock (sistemi mund te avancoje ne nje gjendje tjeter) por perseri mund te kete probleme me livelock. Kjo ka te beje me gjendjen qe ndodh kur dy ose me shume procese ne menyre te vazhdueshme ndryshojne gjendjen e tyre ne pergjigje te ndryshimeve te procesit tjeter. Rezultati ne kete gjendje eshte qe askush nga proceset nuk arrin te perfundoje. Livelock ne shembullin tone pasqyrohet kur te gjithe filozofet shfaqen ne te njejten kohe ne dhomen e ngrenies dhe cdo njeri prej tyre merr pirunin e majte ne te njejten kohe dhe pret 10 minuta derisa te marre pirunin tjeter , nuk e merr pirunin , perseritet cikli filozofi pret 10 minuta te tjera perpara se te marre pirunin tjeter. Mutual exclusion eshte berthama e problemit; filozofet qe darkojne krijojne nje skenar te pergjithshem dhe abstrakt, I nevojshem per shpjegimin e ceshtjeve te tilla. Deshtimet qe mund te hasin keta filozofe jane analoge me veshtiresite qe ndeshen ne programime kompjuterike kur shume programe duhet te ekzekutohen dhe kerkojne akses ne burimet e ndara. Te gjitha keto ceshtje studiohen ne lenden e programimit konkurent. Problemi ne origjine Dijkstra,i referohej paisjeve te jashtme si psh disqeve te jashtme.Sidoqofte, veshtiresite qe morem ne konsiderate ne darken e filozofeve, ndeshen shume me shpesh kur disa procese aksesojne nje grup te dhenash qe jane azhornuar. Sisteme te tilla si psh berthamat e sistemit operativ, perdorin mijera lock (bllokime) dhe sinkronizime qe kerkojne zbatim strikt te metodave dhe protokolleve nese duhet te shmangen probleme te tilla si deadlock, starvation ose korruptime te dhenash. 2 Zgjidhje Zgjidhja e hierarkise se burimeve - Resource hierarchy solution Kjo zgjidhje e problemit eshte propozuar nga Dijkstra. Ajo i cakton nje renditje te pjesshme te burimeve (piruneve ne kete rast) dhe krijon nje marreveshje qe te gjitha burimet do kerkohen te renditura, dhe asnje nga dy burimet (pirunet) qe nuk kane lidhje renditje me njera-tjetren nuk do te perdoren nga nje njesi pune ne te njejten kohe. Ne kete rast burimet (pirunat) do te etiketohen me numrin 1 deri ne 5 dhe cdo njesi pune (filozof) do te marr ne fillim pirunin qe ka numrin me te vogel dhe pastaj pirunin qe ka numrin me te madh midis dy pirunjve qe ai ndermend te perdore. Rendi qe duhet te ndjeke cdo filozof per te leshuar pirunin nuk ka rendesi. Ne kete rast nese 4 filozofe nga 5, kapin ne te njejten kohe pirunat me numrin me te vogel, vetem numri me i madh do te mbetet ne tavoline, dhe filozofi i peste ne kete menyre nuk do te mund te kape asnje pirun. Per me teper, vetem nje filozof do te kete akses tek piruni me numrin me te madh qe te mund te filloje te haje me dy piruna. Zgjidhja me hierarkine e burimit shmang deadlock, por nuk eshte gjithnje praktike, sidomos nese lista e burimeve te kerkuara nuk njihet paraprakisht.Psh.Nese nje filozof mban burimin 3 dhe 5 dhe me pas percakton se do te kerkoje edhe burimin 2, ai duhet te leshoje burimin 5, pastaj 3 para se te marre burimin 2, pastaj te rikerkoje burimin 3 dhe 5 ne kete renditje.Programet kompjuteriket qe aksesojne numer te madh rekordesh ne databaze nuk do te ekzekutohen ne menyre te efektshme nese do tu kerkohet te leshojne te gjitha rekordet me vlerat me te larta perpara aksesimit te nje rekordi te ri, duke e bere kete lloj zgjidhje jo praktike per kete qellim.
  • 3. Zgjidhja me udheheqes - Conductor solution Nje zgjidhje tjeter alternative mund te arrihet duke prezantuar nje kamarier ne tavoline. Filozofi do te kerkoje lejen e tij para se te kape nje pirun. Duke qene se kamarieri ka informacion sesa pirunj jane ne perdorim, ai eshte ne gjendje te gjykoje dhe parandaloje deadlock. Kur 4 piruna jane ne perdorim, filozofi tjeter qe te kerkoje nje pirun duhet te prese miratimin e kamarierit, dhe ky miratim nuk jepet deri sa nje pirun tjeter te leshohet. Logjika eshte e thjeshte duke specifikuar qe filozofi duhet te kerkoje marre pirunin ne doren e majte, para pirunit ne doren e djathte ( ose anasjelltas).Kamarieri vepron si semafor. Per te ilustruar sesi punon konkretisht kjo zgjidhje, konsiderojme qe filozofet te etiketohen sipas drejtimit te akrepave te ores nga A ne E. Nese A dhe C jane ne proces te ngreni, ath 4 pirunj jane ne perdorim. B ulet midis A dhe C dhe nuk ka asnje pirun ne dispozicion, nderkohe qe D dhe E kane nje pirun te paperdorur midis tyre. Nese supozojme se D do te haje, kur ai deshiron te kape pirunin e peste, mund te ndodhe deadlock.Nese ai i kerkon kamarierit dhe ai i thote te prese, mund te jemi te sigurte qe heren tjeter 2 piruna do te leshohen dhe do te kemi te pakten nje filozof qe mund te rezultoje I suksesshem qe te kerkoje 2 piruna, duke eliminuar ne kete menyre deadlock. Chandy / Misra solution-Zgjidhja Kandi/Misra Kandi dhe Aggarwal ne 1984 propozuan nje zgjidhje te ndryshme per darken e filozofeve, duke lejuar agjentet diktues ( P1,.Pn) te luftojne per nje numer burimesh arbitrare, ndryshe nga zgjidhja Dijkstra. Eshte komplet e shperdare dhe nuk ka nevoje per nje autoritet qendror pas inicializimit. Sidoqofte, thyen kerkesen filozofet nuk i flasin njeri-tjetrit (per shkak te mesazheve kerkues). 1. Per cdo cift filozofesh qe pretendon nje burim, kapet nje pirun dhe I jepet filozofit qe ka ID me te vogel. Cdo pirun mund te jete i paster ose i papaster.Fillimisht te gjithe pirunjte jane te papaster 2. Kur nje filozof kerkon te perdore disa burime (psh te haje), ai duhet ta marre pirunin nga fqinji i tij. Per te gjithe pirunjte qe ai nuk I disponon, dergon nje mesazh kerkues. 3. Kur nje filozof qe ka nje pirun merr nje mesazh kerkues, ai e mban pirunin e tij nese eshte I paster, por leshon pirunin qe mund te jete i papaster. Nese e leshon pirunin ai fillimisht e pastron ate. 4. Kur filozofi mbaron se ngreni, pirunjte e tij jane te papaster. Nese nje filozof tjeter ka bere kerkese per pirun ai e pastron ate dhe e leshon. Kjo zgjidhje lejon nje shkalle te madhe konkurence dhe zgjidh disa probleme te medha arbitrare. Zgjidh gjithashtu problemin starvation.Etiketat e paster/e papaster, veprojne si menyre per tu dhene perparesi proceseve qe kane me shume uri, dhe perbejne disavantazh per proceset qe sapo kane ngrene. Ne rastin e darkes se filozofeve, mund te themi qe filozofet nuk lejohen te hane dy here, ne nje radhe pa u dhene mundesine te tjereve te perdorin pirunjte ndermjet tyre. Ne analizen e tyre, ata derivojne ne nje sistem me nivele preferencash qe nis nga shperndarja e burimeve (pirunjve) dhe gjendja e paster/papaster. Ata tregojne qe ne kete sistem, mund te pershkruhet nje grafik aciklik, i cili nuk mund te shnderrohet ne ciklik. Kjo garanton shmangien e deadlock. Sidoqofte, nqs sistemi inicializohet ne nje gjendje perfekte simetrike, psh sic eshte rasti qe te gjithe filozofet mbajne pirunin e majte, ath grafiku eshte ciklik qe ne fillim, dhe zgjidhja mund te coje ne deadlock. Inicializimi i sistemit ku filozofet me id te ulet kane pirunj te papaster siguron qe ne fillim qe grafiku te jete aciklik. 3