55
UNIVERSITETI I PRISHTINËS FAKULTETI I INXHINIERISË ELEKTRIKE DHE KOMPJUTERIKE DEPARTAMENTI I KOMPJUTERIKËS PRISHTINË PUNIM DIPLOME TEMA: PROBLEMET E KONKURENCËS NË SISTEMET OPERATIVE LËNDA: SISTEMET OPERATIVE E PUNOI: MENTORI: XHEVAHIRE TËRNAVA PROF. SEB RODIQI Prishtinë, 2004

ProblemetEKonkurencesNeSistemetOperative (1)

Embed Size (px)

Citation preview

Page 1: ProblemetEKonkurencesNeSistemetOperative (1)

UNIVERSITETI I PRISHTINËS

FAKULTETI I INXHINIERISË ELEKTRIKE DHE KOMPJUTERIKE

DEPARTAMENTI I KOMPJUTERIKËS

PRISHTINË

PUNIM DIPLOME TEMA:

PROBLEMET E KONKURENCËS NË SISTEMET OPERATIVE

LËNDA:

SISTEMET OPERATIVE

E PUNOI: MENTORI:

XHEVAHIRE TËRNAVA PROF. SEB RODIQI

Prishtinë, 2004

Page 2: ProblemetEKonkurencesNeSistemetOperative (1)

PROBLEMET E KONKURENCËS NË SISTEMET OPERATIVE XHEVAHIRE TËRNAVA

PUNIM DIPLOME

2

Abstrakti Një hyrje e shkurtër rreth konceptit të konkurencës e ilustruar me një shembull konkret, ku vihet në pah dallimi esencial në mes të ekzekutimit të proceseve në një sistem njëprocesorik dhe në atë shumëprocesorik. Pastaj, janë cituar një numër i përparësive dhe të metave që na i ofron konkurenca. Qëllimi është, ti gjejmë ato të meta dhe disi ti eliminojmë. Ajo që e bënë më të veçantë këtë punim është përshkrimi i problemeve të konkurencës me anën e problemit klasik të filozofëve që hanë. Njëherit gjendet edhe një përshkrim i këtij problemi se si ai përdoret për zgjidhjen e problemeve të pjesës kritike pra, një analizë e algoritmeve që garantojnë përjashtim reciprok. Një trajtim i veçantë iu bëhet problemeve të dedllokut dhe atyre të urisë, në mesin e proceseve në një sistem, probleme këto të shkatuara nga nevoja e garantimit të domosdoshëm të përjashtimit reciprok (me rastin e çsjes në resurset e përbashkëta), e kjo e fundit nga qëllimi ynë që të kemi një sistem multiprogramues në një rethinë njëprocesorike. Për ti evitu problemet e konkurencës me rastin e rezervimit (marrjes) të resurseve, të gjitha strategjitë janë ndarë në katër grupe; softwerike, hardwerike, që bazohen në konstruktin e sistemit operativ si dhe ato që bazohen në konstruktin e gjuhëve programuese. Algoritmet softwerike dhe hardwerike nuk janë efektive në sistemet e reale për shkak të problemit të pritjes së zënë, ndërkaq dy të tjerat kanë zbatim të madh në raste të caktuara për probleme të caktuara. Pjesa tjetër është një gjeneralizim i problemit të filozofëve që hanë, ku njëherit janë futur edhe konceptet e simetrisë dhe ato të distribuimit të plotë. Ndërsa, meqë problemi i filozofëve që hanë s’mund të përdoret me rastin e çasjes në fajlla, si zgjidhje e kësaj propozohet problemi i filozofëve që pinë. Në pjesën e mbetur, si gjeneralizim nga një aspekt tjetër i problemit të filozofëve ipet një përshkrim i shkurtër i zbatimit të tij në sistemet më të avansuara komunikuese, në rrjetat mobile (filozofët mobil).

Page 3: ProblemetEKonkurencesNeSistemetOperative (1)

PROBLEMET E KONKURENCËS NË SISTEMET OPERATIVE XHEVAHIRE TËRNAVA

PUNIM DIPLOME

3

faqe

Përmbajtja Abstrakti...........................................................................................................2 Përmbajtja.........................................................................................................3 1. Hyrje..................................................................................................................5 2. Koncepti i konkurencës………........................................................................6 2.1. Pse konkurenca? .....................................................................................8 2.2. ’Race condition’ ......................................................................................9 3. Problemet IPC klasike 3.1. Problemi klasik i filozofëve që hanë......................................................10 3.2. Formulimi i problemit............................................................................11 3.3. Analiza e problemit.................................................................................11 3.4. Kushtet për të pasur një zgjidhje të mirë...............................................12 3.5. ’Race condition’ në mesin e filozofëve ..................................................13 4. Zgjidhjet softwerike dhe hardwerike 4.1. Përpjekja e parë .......................................................................................14 4.2. Përpjekja e dytë........................................................................................15 4.3. Përpjekja e tretë........................................................................................16 4.4 Përpjekja e katërtë....................................................................................17 4.5. Agoritmi i Dekker-it ................................................................................18 4.6. Zgjidhjet hardwerike................................................................................19 4.7. Të metat e algoritmeve hardwerike dhe sofwerike................................20 5. Zgjidhjet që bazohen në konstruktin e sistemit operativ 5.1. Pëdorimi i mutex-ave ..............................................................................20 5.1.1. Problemi i dedllokut .....................................................................21 a) Filozofët kokëfortë ........................................................................21 b) Filozofët bujarë..............................................................................22 5.1.2. Problemi i urisë ..............................................................................23 5.2. Vezioni majtas-djathtas.............................................................................24 5.2.1. Vetëm një filozof është i majtë ......................................................24 a) filozofi P është i djathtë.................................................................24 b) filozofi P është i majtë………………………………………...…26 5.2.2. Renditja e shkopinjve………………………………………...........28 5.3. Zgjidhja asimetrike apo filozofët e ngjyrosur……………………….......30 5.4. Dining philosopher problemi me 4 karrige…………………………......31 5.4.1. Problemi i urisë………………………………………………….....32

Page 4: ProblemetEKonkurencesNeSistemetOperative (1)

PROBLEMET E KONKURENCËS NË SISTEMET OPERATIVE XHEVAHIRE TËRNAVA

PUNIM DIPLOME

4

6. Zgjidhjet që bazohen në konstruktin e gjuhës 6.1. Përdorimi i monitorave………………………………………………….......33 6.1.1. Pseudo-kodi i përdorimit të monitrorave në zgjidhjen e problemit...34 6.2. Zgjidhja më e mirë!..........................................................................................35

6.2.1. Problemi i urisë ……………………………………………………......36 6.3. Pse pesë filozofë?..............................................................................................37 6.4. Pse jo shtatë filozofë ?......................................................................................38

7. Gjeneralizimi i problemit të filozofëve që hanë 7.1. Zgjidhja e Lehmann dhe Rabin .......................................................................41 7.1.1. Algoritmi i parë i Lehmann dhe Rabin..................................................41 7.1.2. Një kufizim i përgjithshëm i algoritmit të parë të Lehmann dhe Rabin..43 7.1.3. Algoritmi i dytë i Lehmann dhe Rabin.................................................43 7.2. Zgjidhja e lirë nga dedlloku..............................................................................45 7.3. Një zgjidhje pa uri ............................................................................................46 8. Filozofët që hanë, që pinë dhe filozofët mobil 8.1. Ngrënia duke i marrur shkopinjtë një nga një................................................48 8.1.1. Algoritmi majtas djathtas dhe gjeneralizimi i tij...................................49 8.1.2. Kufizimi i gjatësisë së zinxhirëve pritës.................................................49 8.2. Problemi i filozofëve që pinë..........................................................................50 8.3. Filozofët mobil.................................................................................................52 Rekomandime për lexim............................................................................................53 Literatura ....................................................................................................................54

Page 5: ProblemetEKonkurencesNeSistemetOperative (1)

PROBLEMET E KONKURENCËS NË SISTEMET OPERATIVE XHEVAHIRE TËRNAVA

PUNIM DIPLOME

5

1. Hyrje

Një ndër temat qendrore në sistemet operative moderne janë multiprogramimi, multiprocesimi dhe procesimi i distribuuar. Qenësore në këto tema dhe fundamentale në teknologjinë e dizajnimit të sistemit operativ është konkurenca. Në rast se disa procese janë duke u ekzekutuar në mënyrë konkuruese, aktualisht në rastin e një sistemi multiprocesorik ose virtualisht në rastin e sistemit multiprogramues njëprocesorik, paraqiten problemet e zgjidhjes së drejt të konflikteve dhe ato të bashkëpunimit. Proceset konkuruese mund të bashkëpunojnë në disa mënyra. Proceset që s’janë në dijeni për proceset e tjera në sistem megjithatë, mund të garojnë për resurse siç është koha procesorike dhe çasja në paisjet hyrëse/dalëse. Proceset që në mënyrë indirekte janë në dijeni për ekzistencën e ndonjë procesi tjetër në sistem për shkak se ato procese do të kenë çasje të përbashkët (ang. shared) në ndonjë objekt të caktua, siç është blloku i memories kryesore ose ndonjë fajll. Dhe proceset që në mënyrë direkte dinë për njëri tjetrin dhe bashkëpunojnë me anë të shkëmbimit të informatave. Problemet kyçe që paraçiten në këto bashkëveprime janë garantimi i përjashtimit reciprok dhe eliminimi i dedllokut. Përjashtimi reciprok është një kusht ku, në rast se gjenden një bashkësi e proceseve konkuruese, vetëm një prej këtyre proceseve/thredave duhet të jetë në gjendje që ti çaset një resursi të caktuar (që është i përbashkët-ang. shared) ose të kryej ndonjë funksion të caktuar në ndonjë moment. Teknikat e përjashtimit reciprok mund të përdoren për të zgjidhur konfliktet, siç janë garimet për resurse dhe arritja e sinkronizimit të proceseve në mënyrë që ato të mund të bashkëpunojnë. Një numër i algorimeve hardwerike dhe softwerike janë shqyrtuar me qëllim të arritjes së përjashtimit reciprok. Mirëpo, nuk merren parasysh si zgjidhje të duhura meqë bazohen në pritjen e zënë (ang. busy waiting). Përafrim tjetër për ta arritur përjashtimin reciprok është përdorimi i veçorive brenda sistemit operativ si dhe konstrukteve që gjuhëve programuese. Disa nga këto teknika më të shpeshta janë semaforat, dërgimi i mesazheve dhe monitorat. Semaforat janë përdorur për sinjalizim në mes të proceseve dhe mund të jenë përdorur për të detyruar një disiplinë të përjashtimit reciprok. Monitorat si konstrukte të gjuhëve programuese bazohen në atomicitetin e kryerjes së instruksione të caktuara. Ndërsa, mesazhet janë përdorur për ta detyruar përjashtimin reciprok si dhe për të mundësuar një mënyrë efektive të komunikimit në mes të proceseve.

Page 6: ProblemetEKonkurencesNeSistemetOperative (1)

PROBLEMET E KONKURENCËS NË SISTEMET OPERATIVE XHEVAHIRE TËRNAVA

PUNIM DIPLOME

6

2. Koncepti i konkurencës Sistemet kompjuterike shumëprocesorike kanë mundësi në ekzekutimin e më tepër se një instruksioni njëkohësisht. Për shembull, një sistem dyprocesorik ka mundësi që ti ekzekutoj dy instruksione njëkohësisht, nga një instruksion në secilon procesor. Në sistemet e tilla zakonisht gjendet një memorie fizike qendrore ku për të gjithë procesorët kodi dhe të dhënat janë të përbashkëta. Për ta shpjegu konceptin e konkurencës, le të supozojmë se dy procese momentalisht e ekzekutojnë të njëjtin kod, kodin i cili e bënë rritjen e vlerës së variablës X për një. Secili proces e vendos (ngarkon) përmbajtjen e X-it në një variabël lokale, e ndryshon përmbajtjen e saj dhe rezultatin e ruan përsëri në variablën X. Kodi duket si në vijim: lokal := X; lokal := lokal + 1; X :=lokal; Meqë që të dy proceset janë të pavarura nga njëra tjetra, nuk ka ndonjë sekuencë të veçantë në të cilën do të ekxzekutohen. Le ta marrim sekuencën e ekzekutimit si në vijim:

Procesori 1 Procesori 2 lokal1 := X; lokal1 := lokal1 + 1; X := lokal1; lokal2 := X; lokal2 := lokal2 + 1; X := lokal2; Pasi që të dy proceset ta kenë përfunduar ekzekutimin, vlera e variablës së përbashkët (ang. shared) X do të jetë rritur për dy, që njëherit paraqet edhe rezultatin e kërkuar. Tani le ta shqyrtojmë sekuencën vijuese të ekzekutimit të proceseve: Procesori 1 Procesori 2 lokal1 := X; lokal2 := X; lokal1 := lokal1 + 1; lokal2 := lokal2 + 1; X := lokal1; X := lokal2; Përsëri që të dy proceset e përfundojnë ekzekutimin, por variabla X në këtë rast do të rritet për një. Mospërputhja në sekuencën e ekzekutimit të instruksioneve shkakton problem.

koha t1

koha t2

Page 7: ProblemetEKonkurencesNeSistemetOperative (1)

PROBLEMET E KONKURENCËS NË SISTEMET OPERATIVE XHEVAHIRE TËRNAVA

PUNIM DIPLOME

7

Ky problem s’është vetëm tek një sistem multiprocesorik. Në një ambient njëprocesorik-multiprogramues procesori i vetëm është ndarë në mes shumë shfrytëzuesve. Komutimi i procesorit shkaton që një proces të parandalohet (pre-empt) në një moment dhe procesori të jetë në dispozicion të procesit tjetër. Le ta shqyrtojmë ekzekutimin e dy proceseve në një sistem njëprocesorik dhe në një ambient multiprogramues ku që të dy këto procese dëshirojnë të ndryshojnë vlerën e variablës X. Për shkak se kohë pas kohe mund të ndodhë që radha e ekzekutimit (skedulimi) të kaloj nga procesi në proces, le të marrim sekuencën e ekzekutimit si në vijim: Procesi 1 Sistemi Operativ Procesi 2 lokal1 := X; parandalohet procesi 1 procesori i ipet

procesit 2 lokal2:=X;

parandalohet procesi 2 procesori i ipet procesit 1

lokal1 := lokal1 + 1; parandalohet procesi 1 procesori i ipet procesit 2 lokal2 :=lokal2 +1;

parandalohet procesi 2 procesori i ipet procesit 1

X := lokal1; parandalohet procesi 1

procesori i ipet procesit 2 X := lokal2;

Si tek sistemi shumëprocesorik edhe këtu tek sistemi njëprocesorik multiprogramues vlera e variablës X është rritur për një në vend se të rritet për dy. Në të dy rastet problemi, i ndryshimit të gabuar të vlerës së variablës X, ka rrjedhur nga sekuenca e ekzekutimit të instruksioneve. Edhepse që të dy sistemet, si ai njëprocesorik poashtu edhe ai shumëprocesorik, shkaktuan të njëjtin problem gjatë ndryshimit të vlerës së X –it, duhet të dimë ti dallojmë modet e ekzekutimit të dy proceseve në secilin sistem. Kur kemi dy procesor themi se ekzekutimi i instruksioneve ka ngjarë njëkohësisht (ang. simultaneously): të dy proceset ngjajnë në të njëjtën kohë. Në një sistem njëprocesorik s’kemi mundësi që instruksionet ti ekzekutojmë njëkohësisht. Instruksionet ekzekutohen sekuencialisht (njëri pas tjetrit) por efekti

Page 8: ProblemetEKonkurencesNeSistemetOperative (1)

PROBLEMET E KONKURENCËS NË SISTEMET OPERATIVE XHEVAHIRE TËRNAVA

PUNIM DIPLOME

8

përfundimtar mund të jetë edhe këtu katastrofik, si tek sistemi shumëprocesorik. Këtu, tek sistemi multiprogramues, themi se proceset ekzekutohen në mënyrë konkuruese (ang. concurrently). Edhepse ekzekutimi ishte sekuencial, efekti ishte i njëjtë si tek ekzekutimi i njëkohësishëm. Ky efekt është arritur nga ’aftësitë’ e sistemit operativ për të dirigjuar dhënien e procesorit tek shumë procese.

2. Pse konkurenca?

Në një makinë njëprocesorike, ku sistemi operativ e përkrah konkurencën ekziston mundësia që më tepër aplikacione të ndajnë (shfrytëzojnë bashkarisht) resurset në atë mënyrë që aplikacionet duken se ekzekutohen në të njëjtën kohë. Meqë një aplikacion i zakonshëm nuk i shfrytëzon të gjitha resurset në një moment, me një koordinim të kujdesshëm mund të arrijmë që secili aplikacion të ekzekutohet sikur ta zotëroj të tërë makinën. Ekzistojnë një numër i përparësive për një sistem operativ i cili e përkrah konkurencën:

1. Përparësia më e madhe është që ka mundësi të ekzekutohen më tepër aplikacione në të njëjtën kohë.

2. Përderisa resurset që janë të papërdorshme nga një aplikacion mund të përdoren nga aplikacioni tjetër, konkurrenca mundëson shfrytëzim më të mirë të resurseve.

3. Pa konkurencë, secili aplikacion duhet të ekzekutohet për tu kompletuar e më pas të filloj ekzekutimin aplikacioni tjetër. Këtu, konkurenca mundëson një kohë mesatare të përgjigjjes më të mirë për aplikacionet individuale.

4. Koha e nevojshme për të mbaruar punën dy aplikacione është më e vogël se sa në rastin kur s’kemi konkurencë në sistem. Prandaj themi se me konkurencë arrijmë performansa më të mira.

konkurenca ka edhe disa të meta:

1. Më tepër aplikacione duhet të mbrohen nga njëra tjetra. 2. Më tepër aplikacione është e nevojshme të koordinihen përmes mekanizmave

shtesë. 3. Komutimi (ang. switching) në mes të aplikacioneve nënkupton kompleksitet

në sistem (p.sh., rreth vendosjes se cilit aplikacioni ti ipet radha e ekzekutimit). 4. Në rastet ekstremne të ekzekutimit të shumë aplikacioneve në mënyrë

konkuruese do të kemi një degradim në performansa. Mbi të gjitha, kur përdoret si duhet, konkurenca ofron më tepër të mira se sa që sjell probleme.

Page 9: ProblemetEKonkurencesNeSistemetOperative (1)

PROBLEMET E KONKURENCËS NË SISTEMET OPERATIVE XHEVAHIRE TËRNAVA

PUNIM DIPLOME

9

2.2. ’Race condition’ Kur dy ose më tepër procese/threda që janë duke u ekzekutuar në mënyrë konkuruese, kanë çasje në një të dhënë të përbashkët (ang. shared) dhe rezultati përfundimtar varet nga rendi i ekzekutimit (se kush kur ekzekutohet), kemi të bëjmë me problemin e njohur si race condition. Le ta rishqyrtojmë shembullin e mësipërm. Nga më parë vërejtëm se çasja në të dhënat e përbashkëta (ang. shared) nga më tepër procese të cilat ekzekutohen në mënyrë konkuruese, gjeneronte rezultate të ndryshme kur radha e ekzekutimit është e ndryshme (figura 2.2.1). Kjo në fakt paraqiste race condition. Për të mos ndodhur kjo është e nevojshme që çdo gjë që është e përbashkët (ang. shared) në sistem të definohet si pjesë kritike, në atë kuptimin që vetëm një proces në një moment guxon ta ekzekutoj atë pjesë. Prandaj, ndihet nevoja për një mekanizëm i cili do të na ofronte një sinkronizim në mes të proceseve gjatë ekzekutimit të tyre dhe para së gjithash do të na garantonte përjashtim reciprok në mes të proceseve me rastin e ekzekutimit të pjesëve kritike. Si pjesë kritike njihen të gjitha resurset, qofshin ato konkrete apo abstrakte, të ripërdorshme apo të përkohshme. Kështu, nën termin resurs përfshihen: paisjen hyrëse/dalëse, koha procesorike, një lokacion memorik-variablat, sinjalet, semaforat, mesazhet, fajllat, bandwith-i, printeri, ploteri etj..

Fig.2.2.1. Çasja në resurset e përbashkëta Fig.2.2.2.Definimi i regjionit kritik (ang. shared) Me qëllim të garantimit të përjashtimit reciprok çdo herë çasjen e proceseve/ thredave në pjesët kritike e kushtëzojmë me një mutex kyç ( nga; mutual exclusion). Me qëllim të garantimit të përjashtimit reciprok duhet të definojmë pjesët kritike dhe qasjen në këto pjesë ta bëjmë të kushtëzuar disi (figura 2.2.2).

Pjesa kritike

P1 P2 Resurset e përbashkëta Shënimet e përbashkëta

shënimet

Page 10: ProblemetEKonkurencesNeSistemetOperative (1)

PROBLEMET E KONKURENCËS NË SISTEMET OPERATIVE XHEVAHIRE TËRNAVA

PUNIM DIPLOME

10

3. Problemet ICT (Inter Processes Communication) klasike Literatura e Sistemeve Operative është përplot me probleme interesante që janë diskutuar dhe analizuar me qëllim të ilustrimit të problemeve reale. Disa nga problemet klasike më të popullarizuara janë: Problemi i Filozofëve që hanë (ang. Dining Philosophers Problem); Problemi i Lexuesve dhe Shkrimtarëve (ang. Readers and Writers Problem); Problemi i Berberit të Fjetur (ang. The Sleeping Barber Problem); Problemi i Prodhuesit dhe Konsumuesit (the Problem of Producer and Consummer) Problemi i Konsumatorëve të Duhanit (The Cigarette Smokers Problem) etj.. Njëherit këto probleme edhepse në dukje të parë paraqesin një analogji ’të vrazhdë’ me sistemet reale, në fakt përdoren si probleme në të cilat çdo zgjidhje e tyre mund të aplikohet në rastet reale. Kështu, me rastin e paraqitjes së ndonjë problemi në sistemet reale, gjithmonë shqyrtohet se sa mirë ndonjë propozim i bërë (që konsoderohet si zgjidhje) i zgjedh problemet klasike.

3.1. Problemi klasik i filozofëve që hanë (Dining Phlosopher Problem)

Problemi i filozofëve që hanë ishte propozuar (zbuluar) nga E.W.Dijskra1) më 1965. Problemi i filozofëve që hanë është një prej problemeve klasike që përdoren me qëllim të ilustrimit të koncepteve të regjionit kritik (ang. critical section) dhe sinkronizimit në mes të shumë proceseve. Ky problem është një model dhe metodë univerzale për testimin dhe krahasimin e teorisë në rezervimin e resurseve. Dijsktra mendoi ta përdorë atë për të krijuar një sistem operativ të niveluar (ang. layered). Në shikim të parë do të duket si diç e pakuptimtë por ama është një problem tipik që mirret me zgjidhjen e shumë probleme të sinkronizimit që kanë të bëjnë me rezervimin e resurseve në Sistemet Operative, dhe njëherit njihet si problem çuditërisht i ndërlikuar. Filozofët dhe shkopinjtë e tyre janë vetëm metafora të Dijsktra-s për një problem të përgjithshëm që ka të bëjë me rezervimin e resurseve në një mjedis të proceseve garuese.

1) matematikan holandez

Page 11: ProblemetEKonkurencesNeSistemetOperative (1)

PROBLEMET E KONKURENCËS NË SISTEMET OPERATIVE XHEVAHIRE TËRNAVA

PUNIM DIPLOME

111) Dijsktra asnjëherë se specifikoi se nga vjen furnizimi i pafund i shpagetave!

3.2. Formulimi i problemit Janë pesë filozof të cilët, thjesht, e shpenzojnë jetën e tyre vetëm duke menduar dhe duke ngrënë. Do me thënë, jeta e një filozofi konsiston në ciklin : cikël fillon mendon; Ha përfundon. Në mes të dhomës së ngrënies gjendet një tavolinë rrethore me pesë karrige. Në tavolinë gjendet një pjatë e madhe me shpageta (në verzionet e tjera, para çdo filozofi gjendet nga një pjatë me shpageta)1). Sidoqoftë, gjenden vetëm pesë shkopinjë në dispozicion (në verzionet tjera gjenden pesë pirunj), siç janë paraqitur edhe në (figura 3.2.1).

Figura 3.2.1. Ilustrimi i problemit të pesë filozofëve Kur një filozof është i uritur, ulet afër tavolinës dhe i merr dy shkopinjtë që gjenden më së afërmi tij. Në qoftë se një filozof mund ti merr që të dy shkopinjtë, më të afërt, do të ha, për pak kohë, shpageta. Pasi që një filozof ta ketë përfunduar ngrënien, i lëshon shkopinjtë dhe fillon të mendoj.

3.3. Analiza e problemit Sfida kryesore në problemin e filozofëve që hanë është të dizajnojmë një protokol ashtu që të sigurojmë përjashtim reciprok në mesin e filozofëve me rastin e tentimit , të dy fqinjëve, për marrjen e shkopit të përbashkët. Pra, duhet të sigurojmë që asnjëherë dy filozof të mos jenë duke e përdorur shkopin e njëjtë në të njëjtën kohë. Mirëpo, mu tani paraqitet një problem tjetër. Meqë, vetëm njëri nga fqinjët ka mundësi ta përdorë, në të njëjtin moment, shkopin e përbashkët me fqinjin tjetër, do të thotë se protokoli ynë duhet të mundësoj ndonjë sinkronizim në mes të filozofëve (në marrjen e shkopinjëve), rrjedhimisht filozofët duhet ta presin njëri tjetrin, për ta marrur shkopin e përbashkët (ang. share). Pikërisht, për shkak të kësaj, ndodhë që

Page 12: ProblemetEKonkurencesNeSistemetOperative (1)

PROBLEMET E KONKURENCËS NË SISTEMET OPERATIVE XHEVAHIRE TËRNAVA

PUNIM DIPLOME

12

filozofët të presin përgjithmonë. Rast në të cilin s’do të ketë progres, asnjëherë, në mes të filozofëve e që njihet si gjendje e dedllokut. Gjendje kjo në të cilën çdo filozof e ka nga një shkop dhe meqë që të gjithë dëshirojnë të hanë, që të gjithë e kërkojnë shkopin e dytë dhe asnjëri s’dëshiron ta lëshoj shkopin e parë, që të gjithë vazhdimisht shpresojnë në bujarinë e njëri tjetrit rrjedhimisht, asnjëri s’ka mundësi për të ngrënë. Në anën tjetër, për shkak se përjashtimi reciprok duhet të ekzistojë patjetër në mes të filozofëve, me rastin e marrjes së shkopinjëve, shpeshherë ndodhë që disa filozofë të hanë më tepër, ose ndonjë të mos ha fare, ose rasti më i vrazhdë është kur filozofi fqinjë i cili edhepse është duke menduar, nuk e lejon filozofin tjetër fqinjë (me të cilin e ndanë shkopin) i cili është i uritur dhe e kërkon shkopin që të ketë mundësi të hajë, ta merr shkopin. Njëherit, kjo gjendje njihet si problem i urisë (ang. starvation) në mesin e filozofëve. Prandaj, protokoli ynë duhet të kujdeset që asnjë filozof mos të vdes urie (dmth., kur ndonjë nga filozofëve të jetë i uritur, eventualisht ndonjëri prej tyre të ketë mundësi për të ngrënë). Poashtu, protokoli ynë duhet të tentohet që të jetë sa më efektiv, që të jetë e mundur. Me fjalë të tjera, duhet të provojmë që të minimizojmë kohën që filozofët të presin për të ngrënë. Do me thënë, të sigurohemi se gjithmonë do të ketë progres në mesin e filozofëve, pra pritja për shopinjë të jetë e kufizuar.

3.4. Kushtet për të pasur një zgjidhje të mirë Të theksojmë se filozofët gjenden në ciklin: duke menduar - marrja e shkopinjëve – ngrënia - lëshimi i shkopinjëve , siç është paraqitur në (figura 3.4.1). Duke menduar Marrja e shkopinjëve

Lëshimi i shkopinjëve Ngrënja për pak kohë

Figura 3.4.1. gjendjet e mundshme të filozofëve Marrja e shkopinjëve është pjesa kyçe e gjithë problemit. Pra, problemi është se si të merren shkopinjtë? Në ndonjë program ne thjesht e shtypim mesazhin, p.sh. ”E ka shkopin e majtë”, i cili është mjaft lehtë që të shkruhet. Mirëpo, problemi është se secili shkop është i ndarë (shfrytëzohet bashkarisht) në mes të dy filozofëve, apo më mirë të themi se paraqet një resurs të ashtu quajtur “shared” (që shfrytëzohet bashkarisht nga filozofët fqinjë). Qëllimi ynë është që një filozof mos të lejojmë që të merr shkopin i cili veçse është marrur nga (d.m.th., e posedon) filozofi fqinjë. Rrjedhimisht, me këtë dëshirojmë që ti shmangemi problemit të njohur si race

Page 13: ProblemetEKonkurencesNeSistemetOperative (1)

PROBLEMET E KONKURENCËS NË SISTEMET OPERATIVE XHEVAHIRE TËRNAVA

PUNIM DIPLOME

13

condition në Sistemet Operative. Pyetja se si një filozof do ti merr shkopinjtë, në fakt paraqet pyetjen se si ta eliminojmë race condition. Në realitet, ajo që duhet të ndalojmë është që të mos lejojmë që dy filozofë ta posedojnë shkopin e njëjtë në të njëjtën kohë. Me fjalë të tjera ajo që na nevoitet është përjashtimi reciprok, dmth ndonjë mënyrë e cila do të na siguroj se në rast se njëri filozof e posedon ndonjërin prej shkopinjëve, filozofit tjetër s’do ti lejohet që ta përdorë atë. Edhe në rast se arrijmë ta eliminojmë problemin, që dy filozofë fqinjë të mos kenë mundësi të kenë njëkohësisht të njëjtin shkop, kjo s’do të jetë e mjaftueshme që filozofët të themi se po punojnë me efektivitet. Prandaj, nevoiten disa kushte për të pasur një zgjidhje të mirë:

• S’lejohet që dy filozof të posedojnë njëkohësisht të njëjtin shkop (sigurimi i përjashtimit reciprok);

• S’lejohet që filozofët të cilët janë duke menduar, ta pamundësojnë marrjen e shkopit nga filozofi tjetër-fqinjë i cili dëshiron të hajë (problemi i urisë);

• S’lejohet që ndonjëri prej filozofëve të pres përgjithmonë që ti merr dy shkopinjtë, në mënyrë që ti mundësohet ngrënia (pritja e kufizuar);

• Të kemi kujdes dedllokun, ku të gjithë filozofët e presin njëri tjetrin dhe asnjëherë në mesin e tyre s’do të ketë progres (dedlloku- jo progresi).

3.5. ‘Race condition’1) në mesin e filozofëve

Nëse implementojmë një protokol, në të cilin procedurave, merre shkopin e parë pastaj të dytin, nuk u vëmë kurrfarë kushtesh-implementimi, atëherë e lejojmë mundësinë që dy filozofë fqinjë në të njëjtën kohë ta përdorin të njëjtin shkop, gjë që bie ndesh me qëllimin tonë! Kjo do të thotë se e lejojmë mundësinë që dy filozofë fqinjë të jenë duke ngrënë me të nëjtin shkop njëkohësisht (figura 3.5.1). Prandaj, themi se në këtë rast s’do të kemi zgjidhjen e kërkuar. Për ta evitu problemin e tillë rrjedhimisht, kërkohet që të mos lejojmë që dy filozofë fqinjë të jenë duke ngrënë në të njëjtën kohë. Më saktësisht, duhet ti definojmë pjesët kritike, në të cilat s’mund të kenë çasje dy filozofë njëkohësisht, dhe si rezultat i mos respektimit të kësaj pjese do të merrnim një rezultat përfundimtar të gabuar.

1) kushti i garës

Page 14: ProblemetEKonkurencesNeSistemetOperative (1)

PROBLEMET E KONKURENCËS NË SISTEMET OPERATIVE XHEVAHIRE TËRNAVA

PUNIM DIPLOME

14

4. Zgjidhjet softwerike dhe hardwerike Me qëllim të gjetjes së zgjidhjeve që do ti eliminojnë problemet e regjionit kritik më saktësisht, që garantojnë përjashtim reciprok janë propozur një numër i zgjidhjeve hardwerike dhe softwerike. Më pas për shkak të problemeve të jo efektshmërisë në pika të caktuara tek këto zgjidhje, janë propozuar zgjidhje të tjera që mbështetën në vet konstruktin e sisitemin operativ si dhe të gjuhëve programuese.

4.1. Përpjekja e parë Me qëllim të zgjedhjes së problemit të pjesës kritike, që në fakt paraqet pjesën kur ndonjë filozof paraqet kërkesën për marrjen e shkopinjve, do ta përdorim një variabël turn e cila tregon se cili filozof e ka radhën për ta marrur shkopin në mënyrë që ta ekzekutoj pjesën kritike, përkatësisht të ketë mundësi të hajë. Ja pseudo-kodi : Filozofi F1( ) Filozofi F2( ) { { while (true) while (true) { { filozofi 1:=duke_menduar; filozofi 2:=duke_menduar; while (turn==1); while (turn==2); pjesa kritike; pjesa kritike; turn=2; turn=1; filozofi1:=duke_menduar; filozofi2:=duke_menduar; } } } } Nëse e analizojmë kodin vërejmë së përjashtimi reciprok është garantuar meqë vetëm F1 ose F2 , mund te jenë duke ngrënë në një moment, këtë gjë e mundëson variabla

Që të dy filozofët e posedojnë shkopin e njëjtë--problem që duhet zgjidhur!

Figura 3.5.1. Problemi i regjionit kritik

Page 15: ProblemetEKonkurencesNeSistemetOperative (1)

PROBLEMET E KONKURENCËS NË SISTEMET OPERATIVE XHEVAHIRE TËRNAVA

PUNIM DIPLOME

15

turn që ia kemi shoqëruar çdo shkopi. Ky algoritëm e eleminon problemin e përjashtimit reciprok por në të njëjtën kohë shfaqet një problem tjetër. Le ta shqyrtojmë sekuencën vijuese të marrjes së shkopinjve nga filozofët F1 dhe F2 : F1, është duke ekzekutuar kodin e pjesës kritike, d.m.th. F1 është duke ngrënë ndërsa, F2 është duke pritur për t’iu mundësuar ngrënia. F1 dikur e mbaron ngrënien dhe turn e bënë 2. F2 tash ka mundësi të ha. F1 mund të jetë filozof i cili pjesën më të madhe të kohës e kalon duke menduar e rasti më i keq është kur F1 kalon në gjendjen ku do të mendoj përgjithmonë, në realitet ky paraqet një proces i cili mund të terminoj. F2 dikur e mbaron ngrënien dhe turn e bënë 1. Pas një kohe F2 prap dëshiron të hajë, por turn =1 dhe F2 është i detyruar të pres F1 që turn ta bëjë 2 ,gjë që në realitet s’do të ndodhë fare (asnjëherë), në rastin më të keq kur procesi/thredi ”i parë” të ketë terminuar apo filozofi F1 do të kaloj në gjendjen ku do të mendoj pëgjithmonë. Rrjedhimisht, as F2 s’do ti mundësohet ngrënia një kohë të gjatë apo asnjëherë. Në këtë rast F2 s’iu ka mundësuar ngrënia nga F1 i cili as vetë s’është duke ngrënë. Gjendja ekuivalente në një sistem real do të ishte p.sh. kur një procesi s’iu ka lejuar përdorimi i printerit sepse një proces tjetër është duke lexuar në ndonjë fajll ose në rastin më banal kur ky procesi i dytë veçse s’ekziston më! E gjithë kjo ndodhë për shkak se ky algoritëm si merr parasysh gjendjet e filozofëve (proceseve/thredave).

4.2. Përpjekja e dytë Me qëllim të shqyrtimit të gjendjes së filozofëve, një kyç e shoqërojmë me secilin filozof. Filozofi kur bëhet i uritur e vendos kyçin në true dhe e vendos atë në false kur të mbaroj ngrënien. Algoritmi do të jetë: Filozofi F1() Filozofi F2() { { while F1() while F1() { { filozofi1 := duke_menduar; filozofi2 := duke_menduar; while (kyç2); while (kyç1); kyç1 = true; kyç2 = true; pjesa kritike; pjesa kritike; kyç1 = false; kyç2 = false; filozofi1 := duke_menduar; filozofi2 := duke_menduar; } } } }

Page 16: ProblemetEKonkurencesNeSistemetOperative (1)

PROBLEMET E KONKURENCËS NË SISTEMET OPERATIVE XHEVAHIRE TËRNAVA

PUNIM DIPLOME

16

Përdorimi i kyç1 dhe kyç2 e eliminon problemin e pritjes së një filozofi për filozofin fqinjë i cili s’ka nevojë të ha një kohë të gjatë apo s’ha fare më. Përderisa, në algoritmin e parë përjashtimi reciprok ishte siguruar, këtu është prap problem qenësor. Le ta shqyrtojmë sekuencën e ekzekutimit të filozofëve: filozofi1 e verifikon kyç2 se është false, me ç’rast del nga unaza while. Para se kyç1 ta bëjë true, filozofi2 e verifikon kyç1 e sheh se është false, dhe poashtu do të del nga unaza while. P1 tani kyç1 e bënë true P2 poashtu, kyç2 e bënë true. Me fjalë të tjera që të dy filozofëve iu është mundësuar ngrënia. Rrjedhimisht, që të dy filozofët e posedojnë të njëjtin shkop, me ç’rast dy filozofët fqinjë janë duke ngrënë, gjë që është në kundërshtim me qëllimin tonë që ti pamundësojmë fqinjtë të hanë njëkohësisht.

a) b) Figura 4.2.1 a) filozofi 1 e kërkon edhe shkopin e djathtë b) filozofi 0 dhe 1 posedojnë të njëjtin shkop

4.3. Përpjekja e tretë Në këtë rast përdoret variabla kyç për të treguar dëshirën e një filozofi që të hajë. Këtu filozofi së pari e shfaq dëshirën për të ngrënë e më pas e shqyrton gjendjen e filozofit tjetër, se a është ai duke ngrënë. Pseudo-kodi duket: Filozofi F1() Filozofi F2() { { while (true) while (true) { { filozofi1 := duke_menduar; filozofi2 := duke_menduar; kyç1 = true; kyç2 = true; while (kyç2); while (kyç1); pjesa kritike; pjesa kritike; kyç1 = false; kyç2 = false; filozofi1 := duke_menduar; filozofi2 := duke_menduar; } } } } Ky algoritëm si më parë garanton përjashtim reciprok por ka një problem. Le ta shqyrtojmë sekuencën vijuese të ekzekutimit të filozofëve (proceseve/thredave).

Mosrespekimi i regjionit kritik

Page 17: ProblemetEKonkurencesNeSistemetOperative (1)

PROBLEMET E KONKURENCËS NË SISTEMET OPERATIVE XHEVAHIRE TËRNAVA

PUNIM DIPLOME

17

Që të dy filozofët 1 dhe 2 së pari janë duke menduar, pas pak shfaqin dëshirën që të hanë shpageta. Filozofi F1 e shqyrton kyç2 vetëm pasi kyç1 të bëhet true. Megjithatë, pas sajë filozofi F2 e vendos kyç2 në true. Kështu, kyç1 dhe kyç2 që të dy janë në true, dhe si rrjedhim që të dy filozofët do ta ekzekutojnë while gjendjen pambarim dhe në këtë rast themi se këtu është ndryshuar principi i bllokimit të dyanshëm (ang. mutual blocking). Këtu problemi ndodhë për shkak se variabla kyç ka një definim të papërcaktueshëm. Ajo është përdorur për të teguar dëshirën e filozofit që të hajë dhe gjithashtu tregon se një filozof veçse është duke ngrënë. Kur filozofi fqinjë e shqyrton kyç të shkopit të përbashkët, e sheh se vlera e kyç është në true, ai s’ka njohuri se ai filozof është duke ngrënë apo ka çfaqur dëshirën për të ngrënë. Në këtë rast filozofët nuk kanë informata të mjaftueshme për gjendjen momentale të njëri-tjetrit.

4.4. Përpjekja e katërtë Për ta definu papërcaktueshmërinë e definimit të kyç variablës e shqyrtojmë algoritmin vijues: Filozofi F1() Filozofi F2() { { while (true) while (true) { { filozofi1 := duke_menduar; filozofi2 := duke_menduar; kyç1 = true; kyç2 = true; while (kyç2); while (kyç1); { { kyç1 = false; kyç2 = false; while (kyç2); while (kyç1); kyç1 = true; kyç2 = true; } } pjesa kritike; pjesa kritike; kyç1 = false; kyç2 = false; filozofi1 := duke_menduar; filozofi2 := duke_menduar; } } } } Kjo në fakt mund të duket sikur njëri filozof i thotë tjetrit “nëse dëshiron të hash vetëm vazhdo, unë do të pres deri ta mbarosh ngrënien”! Mirëpo, pikërisht kjo sjellje e filozofëve shkakton problem.

Page 18: ProblemetEKonkurencesNeSistemetOperative (1)

PROBLEMET E KONKURENCËS NË SISTEMET OPERATIVE XHEVAHIRE TËRNAVA

PUNIM DIPLOME

18

Do të përsëritet përgjithmonë!

Le ta analizojmë sekuencën vijuese të ekzekutimit të F1 dhe F2 (shih Tabela 1.):

Shih tabelën e mësipërme, që të dy filozofët këtu e presin njëri tjetrin. Vërejmë se sekuenca e pritjes së njëri tjetrit do të jetë e pafundme. Asjëri filozof s’do të ketë mundësi për të ngrënë.

4.5. Algoritmi i Dekker-it1)

Algoritmi i Dekker-it është bazuar në kombinimin e përpjekjes së parë dhe të katërtë. Pseudo-kodi i algoritmit të Dekker-it është: Filozofi F1() Filozofi F2() { { while (true) while (true) { { filozofi1 := duke_menduar; filozofi2 := duke_menduar; kyç1 = true; kyç2 = true; while (kyç2); while (kyç1); { { if (turn==2) if (turn==1) { { kyç1 = false; kyç2 = false; while (turn==2); while (turn==1); kyç1 = true; kyç2 = true; } }

Tabela 1. Sekuenca e ekzekutimit të filozofit 1 dhe filozofit 2

1) Shumë autorë e preferojnë shqyrtimin e algoritmit të Petersonit në vend të këtij të Dekker-it

Page 19: ProblemetEKonkurencesNeSistemetOperative (1)

PROBLEMET E KONKURENCËS NË SISTEMET OPERATIVE XHEVAHIRE TËRNAVA

PUNIM DIPLOME

19

} } pjesa kritike pjesa kritike turn==2; turn==1; kyç1 = false; kyç2 = false; filozofi1 := duke_menduar; filozofi2 := duke_menduar; } } } } Ky algoritëm garanton përjashtim reciprok, në anën tjetër edhe “mutual blocking” është pamundësuar. Kjo në fakt mund të themi se paraqet një zgjidhje1). Mirëpo, çfarë të themi për problemet e përshkruara në vijim që shfaqen tek zgjidhjet softwerike dhe ato hardwerike.

4.6. Zgjidhjet hardwerike

Me qëllim të garantimit të përjashtimit reciprok me rastin e çasjes në pjesët kritike tentohet që zgjidhjet të këkohen nga hardweri, meqë zgjidhjet softwerike njihen si zgjidhje të pa parashikueshme. Ndër zgjidhjet hardwerike dy janë më të njohura, njëra që bazohet në pamundësimin e interrapteve dhe tjetra e bazuar në instruksine të makinës. Tek pamundësimi i interrapteve, nëse një proces dëshiron të ketë çasje në një pjesë kritike, ai proces së pari e bënë pamundësimin e interrapteve në sistem ( d.m.th., me qëllim që vetëm ai të ketë mundësi ta përdorë procesorin derisa ta ekzekutoj pjesën kritike) e më pas fillon ekzekutimin e pjesës kritike. Mirëpo, ti ipet të drejtë një procesi të shfytëzuesit që ti pamundësoj interraptet është shumë rrezik. Çka nëse ai proces i ka pamundësu interraptet dhe për ndonjë arsye të mundshme (të ndonjë gabimi) nuk i mundëson ato më? Kjo në fat thuhe se paraqet fundin e sistemit. Në anën tjetër kjo metodë nuk funksionon tek sistemet shumë procesorike. Rrjedhimisht, pamundësimi i interrapteve është metodë që e përdorë vet sistemi operativ por nuk mirret si metodë për të arritur përjashtim reciprok te proceset e shfrytëzuesve. Testo dhe vendos kyçin (ang. test_and_set_lock-TSL) bazohet në përdorimin e instruksioneve të makinës. Kjo teknikë mund të përdoret edhe në sistemet shumëprocesorike, meqë ekzekutimi i instruksioneve është atomik (nuk mund të ndërhyjnë proceset e tjera nëistem gjatë ekzekutimit të një instruksioni). Për shembull, test_and_set veprimi në mënyrë atomike e bënë leximin e një lokacioni të memories, e vendos atë në 1, dhe e kthen vlerën në vend të asaj të vjetrës në atë lokacion të memories.

Page 20: ProblemetEKonkurencesNeSistemetOperative (1)

PROBLEMET E KONKURENCËS NË SISTEMET OPERATIVE XHEVAHIRE TËRNAVA

PUNIM DIPLOME

20

4.7. Të metat e algoritmeve softwerike dhe hardwerike Një ndër të metat kryesore të algoritmeve softwerike dhe hardwerike është pritja e zënë (ang. busy waiting). Pritja e zënë do të thotë që një filozof (thred) është duke i shfrytëzuar ciklet e procesorit derisa është duke pritur që vlera e një variable të ndryshohet. Apo më mirë të themi se një proces është duke i shpenzuar ciklet e procesorit gjatë kohës që pret për të ndodhur një ngjarje. Për ti eliminu këto probleme kërkohen mekanizma dhe rregulla më të mira që e sinkronizojnë punën e proceseve në një sistem, me rastin e çasjes së tyre në pjesët kritike. Pikërisht për shakak të problemit të pritjes së zënë (ang. busy waiting) këta mekanizma s’mund ti konsiderojmë fare si zgjidhje. Në një rast thuhet se Intel 432 ishte një makinë e ngadalshme për shkak të kyçeve në nivelin hardwerik1).

5. Zgjidhjet që bazohen në konstruktin e Sistemit Operativ

5.1. Përdorimi i mutex-ave

Le të supozojmë se secili shkop, si diç e përbashkët të mund të mbrohet nga një mutex kyç. Tani secili filozof, para se të filloj për të ngrënë, e kyç shkopin e tij të majtë dhe pastaj edhe atë të djathtë. Në qoftë se arrin ndonjë nga filozofët ti vendos dy kyçat fqinjë me sukses, për të themi se i posedon dy shkopinjtë, gjë që do të thotë se ai filozof mund të filloj për të ngrënë. Pasi të përfundoj ngrënien, ky filozof do ti lëshoj që të dy shkopinjtë, dhe fillon të mendoj! Rrjedha e ekzekutimit duket si në vijim (figurën 5.1.1). Meqë na nevoitet që të kyçim dhe të çkyçim një shkop, rrjedhimisht secili shkop është i shoqëruar nga një mutex kyç. Meqë i kemi pesë filozof të cilët mendojnë dhe hanë njëkohësisht, na nevoitet të krijojmë pesë threda, nga një për secilin filozof. Meqë çdo

filozof duhet të ketë çasje tek të dy mutex kyç-at që janë të shoqëruar me shkopinjtë e majtë respektivisht, të djathtë, këta mutex kyç-a në program i deklarojmë si variabla globale.

Figura 5.1.1. Radha e marrjes dhe lëshimit të shkopinjëve nga filozofët

1) “Implementing Mutual Exclusion” nga Andy Wang-2003 në “Sistemet Operative”, pjesa e parë.

Page 21: ProblemetEKonkurencesNeSistemetOperative (1)

PROBLEMET E KONKURENCËS NË SISTEMET OPERATIVE XHEVAHIRE TËRNAVA

PUNIM DIPLOME

21

Në këtë rast, secili filozof ka një karrige të fiksuar. Rrjedh pyetja se a është një gjë e tillë e nevojshme? Sigurisht që s’është. Për shembull, kur një filozof është i uritur, ai mund të gjeneroj një numër të rastësishëm (çfarëdoshëm) i nga rangu 0 deri 4, për karrige. Në qoftë se ajo karrige është e zënë, atëherë gjenerojmë një numër tjetër, të plotë, të rastësishëm. Në këtë mënyrë ne thjesht e simulojmë aktivitetin e gjetjes së një karrige të lirë. Vetëm pasi që një karrige, të themi i-karriga, të jetë gjetur se është e lirë, ky filozof i përdor shkopinjtë më të afërt, në fakt këta paraqesin shkopinjtë i dhe (i+1)%Filozofët, në rast se dëshirojmë ta implementojmë protokolin me ndonjë gjuhë programuese. Mirëpo, ne që më parë edhe në vijim do e përdorim verzionin ku të gjithë filozofëve u japim nga një karrige të fiksuar. Kjo për arsye se, nëse tentojmë që ta implementojmë në kod edhe problemin se filozofët kanë të drejtë ta ndrrojnë vendin (karriget) atëherë, kodi ynë do të jetë shumë kompleks dhe do të nevoitej një shqyrtim më i thukët i problemit. Poashtu, shqyrtimi i mësipërm thjesht e detyron që çdo filozof të marrë dhe të lëshoj shkopin e tij të majtë, e pastaj atë të djathtin. Kjo gjë thjesht bëhet me qëllim të thjeshtësisë. Në fakt, s’ka rëndësi rendi i marrjes dhe lëshimit të shkopinjëve nga ana e filozofëve. Problemi më serioz i këtij protokoli është se mund të ndodh dedlloku!

5.1.1. Problemi i dedllokut a) Filozofët kokëfortë (ang. Stubborn philosophers)

Bëhet pyetja, çfarë do të ndodhë në çoftë se të gjithë filozofët ulet në të njëjtën kohë dhe e marrin shkopin e tyre të majtë, si në (figura 5.1.1.1.a))? Në këtë rast, që të gjithë shkopinjtë janë të kyçur dhe asnjë prej filozofëve s’do të ketë sukses në marrjen edhe të shkopit të djathtë. Si rezultat, do të kemi një pritje ciklike (dmth. çdo filozof është duke pritur për shkopin e djathtë që në realitet është marrur nga fqinji i tij i djathtë) rrjedhimisht, themi se ka ngjarë dedlloku përkatësisht, gjendja ku të gjithë filozofët e kanë nga një shkop dhe presin fqinjin për shkopin tjetër, që ta lëshoj, në mënyrë që ndonjërit ti mundësohet ngrënia. Mirëpo, një gjë e tillë s’do të ndodhë sepse edhe fqinji i tij poashtu është duke pritur atë për t’ia marrur shkopin, rrjedhimisht që të gjithë filozofët janë në një pritje ciklike të njëri tjetrit (figura 5.1.1.1.b)).

Page 22: ProblemetEKonkurencesNeSistemetOperative (1)

PROBLEMET E KONKURENCËS NË SISTEMET OPERATIVE XHEVAHIRE TËRNAVA

PUNIM DIPLOME

22

a) b) Figura 5.1.1.1. a) dhe b) Ilustrimi i dedllokut-pritjes ciklike

Filozofët e tillë njihen si kokëfortë meqë, kur ta kenë marrur njërin shkop nuk e lëshojnë atë derisa ta mdarojnë procesin e ngrënies. ‘Kokëfortësia’ e tyre bënë që të ngjajë dedlloku në mes tyre. Deri më tani supozuam se filozofët marrin së pari shkopin e majtë e pastaj shohin se a kanë mundësi që ta marrin edhe shkopin e djathtë, në mënyrë që të kenë mundësi të hanë për pak kohë. Mirëpo, pamë se kjo zgjidhje dështoi sepse kishte mundësi për dedllok, në rast se të gjithë filozofët i merrnin shkopinjtë e majtë në të njëjtën kohë. S’na mbetet tjetër vetëm se të propozojmë një zgjidhje tjetër.

b) Filozofët bujarë (ang. Gready philosophers)

Mirëpo, çfarë nëse e ndryshojmë programin ashtu që, pasi ta ketë marrur shkopin e majtë, filozofi pastaj e analizon se a është shkopi i djathtë në dispozicion. Nëse s’është, filozofi e lëshon edhe shkopin e majtë, pret pak kohë dhe pastaj e përsëritë të gjithë procesin e mësipërm. Megjithatë, edhe ky tentim poashtu dështon. Me pak fat të keq mund të ndodhë që të gjithë filozofët ta fillojnë algoritmin njëkohësisht. Marrin shkopinjtë e majtë, pastaj shohin se shkopinjtë e djathtë s’janë në dispozicion dhe me ç’rast vendosin ta lëshojnë edhe shkopin e majtë, kështu me radhë. Pas një kohe të caktuar prap e kërkojnë shkopin e majtë, çka do të thotë se, meqë koha është fikse, përsëri që të gjithë filozofët do t’ia fillojë algoritmit, për marrjen e shkopinjëve, njëkohësisht. Si rezultat, një gjendje e tillë do të vazhdojë përgjithmonë. Një situatë e tillë, ku të gjitha proceset (resp. thredat) vazhdojnë të ekzekutohen pafund herë, por dështojnë në aspektin e arritjes së ndonjë progresi është quajtur uri (ang. starvation). Tash mund të mendojmë, nëse filozofët i lëmë të presin vetëm një kohë të rastësishme në vend se të presin për kohë të njëjtë-fikse. Dmth. të eliminojmë mundësinë që filozofët të hanë për kohë të njëjtë dhe të mendojnë poashtu, për kohë të njëjtë! Pasi të kenë dështuar në kërkimin e shkopit të djathtë, shansa që çdo njëri do të vazhdoj në hapin prapa për brenda një ore është shumë e vogël.” Ky supozim është i vërtetë, në kuptimin se përdoret në sistemet reale dhe përafërsisht në të gjitha aplikimet.

Gjendja e dedllok-ut!

Page 23: ProblemetEKonkurencesNeSistemetOperative (1)

PROBLEMET E KONKURENCËS NË SISTEMET OPERATIVE XHEVAHIRE TËRNAVA

PUNIM DIPLOME

23

Thënia “provo më vonë përsëri” s’është ndonjë problem. Për shembull, në një rrjetë lokale të Ethernet-it, nëse dy kompjuter e dërgojnë nga një paketë, në të njëjtën kohë, secila prej tyre do të pret një kohë të rastësishme (jo të definuar) dhe provon përsëri më vonë; në praktikë kjo zgjidhje punon mirë. Mirëpo, në pak aplikacione, pakkush do të preferoj një zgjidhje që gjithmonë punon dhe nuk do të dështoj për shkak të një serie të pa dëshiruar të numrave të rastësishëm. Le të mendojmë rreth kontrollit të sigurisë në një uzinë të fuqisë nukleare.

5.1.2. Problemi i urisë Le të imagjinojmë se dy filozof mendojnë shpejt dhe hanë shpejt. D.m.th. ata janë ngrënës të shpejtë dhe mendues të shpejtë. Pastaj, ata janë të ulur në karriget që gjenden në opozitë, siç shihet në (figura 5.1.2.1). Për shkak se janë shumë të shpejtë, është e mundur që ata të marrin (kyçin) nga dy shkopinjtë dhe të fillojnë ngrënien. Pasi të kenë përfunduar ngrënien dhe para se fqinjët e tyre të kenë kyçur shkopinjtë dhe të fillojnë të hanë, ata kthehen dhe i kyçin shkopinjtë prap dhe si rrjedhim iu mundësohet ngrënia përsëri. Në këtë rast, tre filozofët e tjerë, edhepse kanë qëndruar të ulur për një kohë të gjatë, ata prap s’kanë shansë për të ngrënë. Ky problem njihet si uri (ang. starvation). Theksohet se ky nuk paraqet dedllok sepse s’ka pritje ciklike, dhe çdo njëri ka një shansë të hajë, se kur do ti vije ajo shansë…?! Në (figura 5.1.2.1) është paraqitur një shembull i urisë në mesin e filozofëve. Ka edhe shumë sekuenca, dukeMenduar-dukeNgrënë, të tjera më të komplikuara që qojnë deri në gjendjen e urisë në mes të filozofëve.

Figura 5.1.2.1. Filozofët e uritur

Që të tre këta filozof janë të uritur!

Page 24: ProblemetEKonkurencesNeSistemetOperative (1)

PROBLEMET E KONKURENCËS NË SISTEMET OPERATIVE XHEVAHIRE TËRNAVA

PUNIM DIPLOME

24

5.2. Verzioni majtas-djathtas Më parë patëm një zgjidhje në të cilën secili filozof e merrte shkopin e tij të majtë të shoqëruar me atë të djathtin. Me atë rast, theksuam se ajo zgjidhje shkaktonte dedllok dhe gjithashtu, paraqitej problemi i urisë në mesin e filozofëve. Eliminimi i dedllokut nuk është ndonjë problem aq i vështirë. Në shembullin e mësipërm dedlloku ishte shkaktuar meqë secili filozof duhej ta marrë shkopin e tij të majtë, së pari. Me ç’rast krijohej një pritje ciklike, në mesin e filozofëve, për shkopinjë. Në çoftë se këtë pritje ciklike mund ta prishim disi atëherë ne do ti shmangemi dedllokut. Për ta arritur këtë ne mund ta detyrojmë ndonjërin prej filozofëve që të veproj ndryshe rreth marrjes së shkopinjëve. Më saktësisht, kjo do të thotë se ne mund ta detyrojmë ndonjërin prej filozofëve që të merr së pari shkopin e tij të djathtë e pastaj atë të majtin. Kështu që, një filozof i cili e merr shkopin e tij të majtë të shoqëruar me atë të djathtin themi se është i majtë përndryshe themi se është i djathtë. Theksojmë se shuma e filozofëve të majtë dhe atyre të djathtë duhet të jetë e barabartë më numrin e filozofëve dhe që të dy bashkësitë s’guxojnë të jenë zero njëkohësisht. Intuitivisht, ekzistenca e një filozofi të djathtë mund ta thej pritjen ciklike, siç e përmendëm edhe më parë. Le ta vërtetojmë këtë. Ritregojmë se, një dedllok ndodhë në qoftë se disa ose të gjithë thredat janë të përfshirë në një pritje ciklike. Në rast se sigurojmë që pritja ciklike të mos ndodhë asnjëherë, për sistemin themi se nuk do të ketë dedllok.

5.2.1. Vetëm një filozof është i djathtë Në vijim, do të marrim se ekziston vetëm një filozof i djathtë. S’është vështirë ta zgjerojmë diskutimin tonë në rastin kur më tepër filozof janë të djathtë. Le ta marrim në shqyrtim cilindo prej filozofëve, do të vërejmë se ai ka gjasa që ti marr që të dy shkopinjtë dhe të ha shpageta. Ky filozof, të cilin e zgjedhëm të rastësishëm, le të jetë P filozofi, i cili mund të jetë i majtë apo i djathtë. Dallojmë këto raste:

a) Filozofi P është i djathtë Në qoftë se filozofi P nuk mund të ha momentalisht, janë dy mundësi ose s’ka shkopinjë ose e ka vetëm shkopin e djathtë. ** Filozofi P ka vetëm shkopin e djathtë: Nëse filozofi P e ka shkopin e djathtë (figura 5.2.1.1.a)), ai mund të hajë vetëm nëse e ka në dispozicion edhe shkopin e majtë. Nëse shkopin e majtë P-ja momentalisht se ka

Page 25: ProblemetEKonkurencesNeSistemetOperative (1)

PROBLEMET E KONKURENCËS NË SISTEMET OPERATIVE XHEVAHIRE TËRNAVA

PUNIM DIPLOME

25

në dispozicion, atë shkop rrjedhimisht, e posedon filozofi fqinjë, i majtë i P-së, le ta quajmë atë filozofi Q.

a) b) Fig 5.2.1.1. a) dhe b) filozofi P është i djathtë dhe s’mund të hajë sepse ka vetëm një shkop Meqenëse e kemi vetëm një filozof të djathtë, Q është i majtë, dhe rrjedhimisht i posedon dy shkopinjë (figura 5.2.1.1.b)). Në këtë rast, Q është duke ngrënë dhe pas pak do ti lëshoj që të dy shkopinjtë. Në këtë moment P-ja e ka një shansë që ta merr edhe shkopin majtë dhe të ha shpageta. Theksohet që P-ja mund që të mos e merr shkopin e tij si duhet pasi që Q-ja ta lëshojë atë. Sidoqoftë, P-ja ka shansë që ta merr shkopin e tij të majtë, dhe si rezultat, P-ja s’është përfshirë në gjendjen e dedllokut. Nëse P-ja s’mund të ha, kjo ndodhë për arsye se fqinji i tij gjithmonë e parandalon (ang. preempts) atë në marrjen e shkopit që e shfrytëzojnë bashkarisht. Në këtë rast, më tepër themi se kemi të bëjmë më uri se sa me dedllok. ** Filozofi P s’ka shkop: Në këtë rast, shkopin e majtë të P-së (resp., të djathtë) e zotëron fqinji i majtë (resp., ai i djathtë) (figura 5.2.1.2). Nëse fqinji i djathtë i P-së është duke ngrënë, eventualisht fqinji i majtë i P-së do ta përfundon ngrënien dhe do ti lëshoj që të dy shkopinjtë. Në këtë moment, P-ja ka një shansë që të merr shkopin e tij të djathtë. Nëse fqinji i djathtë, të themi Q, s’është duke ngrënë, Q-ja ka shkopin e tij të majtë (dmth., shkopin e djathtë të P-së) dhe është duke pritur për shkopin e tij të djathtë siç është treguar edhe në figurën e mëposhtme.

Figura 5.2.1.2. Filozofi P është i djathtë dhe s’ka shkop

Kush do ta merr këtë shkop?

Filozofi Q e ka marrur shkopin!

Filozofi P s’ka shkop

Page 26: ProblemetEKonkurencesNeSistemetOperative (1)

PROBLEMET E KONKURENCËS NË SISTEMET OPERATIVE XHEVAHIRE TËRNAVA

PUNIM DIPLOME

26

Rasti më i keq është që shkopi i djathtë i Q-së të mbahet nga fqinji i djathtë i Q-së. Kjo situatë mund të zgjerohet deri tek fqinji i majtë i P-së (figura 5.2.1.2). Në këtë rast, fqinji i majtë i P-së i ka që të dy shkopinjtë dhe mund të ha. Si rezultat, vetëm pasi që fqinji i majtë i P-së i lëshon shkopinjtë e tij, çdo kush përveç P-së ka shansë që të merr shkopin e djathtë dhe të ha. Sa i përket P-së, ai ka shansë që të marr shkopin e djathtë vetëm pasi që fqinji i tij i djathtë ta përfundon ngrënien dhe ti lëshoj që të dy shkopinjtë. Rrjedhimisht, konkludojmë që filozofi P ka një shansë që të marr shkopin e tij të djathtë. Si në rastin e mëparshëm, filozofi P eventualisht mund të ha pavarësisht se a është parandaluar (ang. preempted) nga ndonjë prej fqinjëve të tij. Sidoqoftë, në këtë rast do të paraqitet problemi i urisë tek ndonjëri prej filozofëve, e jo dedlloku.

b) Filozofi P është i majtë Sikurse në rastin kur P ishte i djathtë, i kemi dy mundësi për ti shqyrtuar: P-ja s’ka shkopinj dhe P-ja e ka vetëm shkopin e majtë. ** Filozofi P ka vetëm shkopin e majtë: Supozojmë se P-ja është i majtë dhe e posedon vetëm shkopin e majtë (figura 5.2.1.3). Dëshirojmë të shohim se P-ja ka shansë të hajë. Çelësi në këtë arsyetim është në dorën e djathtë të filozofit R siç është paraqitur më poshtë. Nëse filozofi i djathtë R s’mund të hajë, kjo është për arsye se ai s’ka shkopinj (figura majtas më poshtë) ose e ka vetëm shkopin e djathtë (figura djathtas më poshtë). Nëse R s’ka shkop, kjo është për arsye se fqinji i djathtë, i majtë, është duke e mbajtur shkopin e djathtë të R-së. Në këtë rast, do të kemi një numër të filozofëve të cilët janë duke i mbajtur shkopinjtë e tyre të majtë dhe janë duke i pritur shkopinjtë e tyre të djathtë. Filozofi P është njëri prej tyre. Meqë R-ja s’ka shkopinj, fqinji i tij i majtë L-ja, që është i majtë, mund të përdor shkopin e majtë të R-së dhe të ha. Pas kësaj, L-ja i lëshon që të dy shkopinjtë në mënyrë që fqinji i tij i majtë ti përdorë. Me këtë, thjesht shkaktohet një reagim zinxhiror, me ç’rast i mundësohet P-së të ketë shansë të merr shkopin e djathtë dhe të ha. Nëse R -i djathtë, është duke mbajtur shkopin e djathtë dhe është duke pritur për shkopin e majtë, atëherë shkopi i majtë i R-së është mbajtur nga L-ja, kështu që L-ja i ka që të dy shkopinjtë dhe mund të hajë. Vetëm pasi që L-ja ta përfundon ngrënien dhe ti lëshoj që të dy shkopinjtë, çdo njëri prej filozofëve të tjerë, duke e përfshi edhe P-në, do të ketë një shansë për të ngrënë, rrjedhimisht dedllok s’do të ketë.

Page 27: ProblemetEKonkurencesNeSistemetOperative (1)

PROBLEMET E KONKURENCËS NË SISTEMET OPERATIVE XHEVAHIRE TËRNAVA

PUNIM DIPLOME

27

Figura 5.2.1.3. a) dhe b) filozofi P është i majtë dhe e ka vetëm shkopin e majtë ndërsa R është i djathtë

Figura 5.2.1.4. Filozofi R është i djathtë dhe ka mundësi të hajë

** Filozofi P s’ka shkopinjë: P-ja është i majtë dhe rrjedhimisht duhet të marrë së pari shkopin e majtë. Meqenëse P-ja s’ka shkop shkopin e tij të majtë e posedon fqinji i tij i majtë, le të jetë ky filozofi Q. Në anën tjetër filozofi Q mund të jetë i majtë ose i djathtë.

Figura 5.2.1.5. Filozofi P s’ka asnjë shkop dhe filozofi Q është i majtë * Q është i djathtë: Në këtë rast, shkopi i majtë i P-së është mbajtur nga Q-ja si shkop i djathtë i Q-së. Nëse Q-ja ka gjithashtu edhe shkopin e tij të majtë, Q-ja mund të ha dhe eventualisht dikur ti lëshoj që të dy shkopinjtë. Kështu që, P-ja do të ketë një shansë për të marrur shkopin e tij të majtë. Përndryshe, Q-ja është duke pritur për shkopin e djathtë që është duke u mbajtur nga fqinji i tij i majtë, R-ja.

Nëse i djathti është duke ngrënë, ai i ka dy shkopinjtë, siç është paraqitur në (figura 5.2.1.4). Vetëm pasi që filozofi i djathtë të ketë përfunduar me ngrënien, i lëshon që të dy shkopinjtë, me ç’rast fqinji i tij i majtë ka një shansë për të ngrënë, dhe si rezultat, çdo njëri prej të majtës nga i djathti ka shansë të hajë. Rrjedhimisht, s’do të kemi dedllok.

* Q është i majtë: Në këtë rast, Q-ja ka shkopin e tij të djathtë (rrjedhimisht i ka që të dy shkopinjtë) dhe është duke ngrënë. (figura 5.2.1.5). Më në fund , dikur Q-ja do ti lëshoj që të dy shkopinjtë dhe në atë moment P-ja themi se ka shansë që të merr shkopin e majtë.

a) b)

Page 28: ProblemetEKonkurencesNeSistemetOperative (1)

PROBLEMET E KONKURENCËS NË SISTEMET OPERATIVE XHEVAHIRE TËRNAVA

PUNIM DIPLOME

28

Shih (figura 5.2.1.6). Meqë R-ja është i majtë (theksuam më parë se e kemi vetëm një të djathtë) dhe e posedon shkopin e djathtë, R-ja është duke ngrënë. Më vonë, R-ja do ti lëshoj që të dy shkopinjtë, dhe, në këtë moment, Q-ja ka shansë të merr shkopin e majtë dhe të ha. Vetëm pasi që Q-ja ta përfundon ngrënien dhe ti lëshoj shkopinjtë, P-ja ka mundësi që të merr shkopin e majtë. Në të dy rastet, P-ja do të ketë mundësi që të marr shkopin e majtë. Kështu që, nga rasti i fundit, P-ja do të ketë një shansë të hajë dhe dedlloku s’mund të ndodhë.

Figura 5.2.1.6. Filozofi Q është i djathtë Figura 5.2.2.1. Renditja e shkopinjëve ndërsa P i mjatë

Legjenda:

- kemi paraqitur numrin i cili i korresondohet çdo shkopi,

- tentimin e filozofit përkatës për marrjen e shkopit më të madh fqinjë.

5.2.2. Renditja e shkopinjëve Me qëllim të shmangies së pritjes ciklike, çdo shkopi ia shoqërojmë një numër. Në këtë rast marrja e shkopinjëve nga ana e filozofëve bëhet ashtu që, ndonjëri nga filozofët kur të bëhet i uritur së pari e kërkon shkopin me numër më të madh në rend e pastaj atë me numër më të vogël ose anasjelltas. Në sistemet reale kjo do të thotë se të gjitha resurset i vendosim në rendin numërues. Një process mund ti kërkoj resurset sa herë që dëshiron dhe cilat dëshiron por të gjitha kërkesat duhet të jenë në rendin numërues. P.sh., kemi resurset:

1. Ploteri 2. Printeri 3. CD rom drajveri 4. Skeneri etj.,

Një process mund së pari ta kërkoj një printer e më pas një plotter e jo një plotter e më pas një printer.

x

Page 29: ProblemetEKonkurencesNeSistemetOperative (1)

PROBLEMET E KONKURENCËS NË SISTEMET OPERATIVE XHEVAHIRE TËRNAVA

PUNIM DIPLOME

29

Le ta analizojmë sekuencën vijuese të marrjes së shkopinjëve nga ana e filozofëve dhe të tregojmë se përjashtimi reciprok është siguruar ndërsa dedlloku është parandaluar. Shih (figura 5.2.1.7). Filozofi 1 e merr shkopin 1, filozofi 2 e merr shkopin 2, filozofi 3 do ta merr shkopin 3, ndërkaq shkopin 4 do ta merr ose filozofi 4 ose filozofi 0. * Filozofi 4 e merr shkopin 4 Në këtë rast filozofi 0 s’do ta ketë asnjë shkop, ndërsa filozofi 1 ka mundësi ta merr edhe shkopin 0 dhe të filloj ngrënien (figura 5.2.2.2.a)). Me këtë rast, filozofi 1 siguron progress, çka do të thotë se dedlloku është i pamundur.

a) b) Fig 5.2.2.2. a) filozofi 4 e ka shkopin 4. b) filozofi 0 e ka shkopin 4. * Filozofi 0 e merr shkopin 4 Në këtë rast filozofit 4 i është pamundësuar marrja e shkopit 4 ndërsa, filozofi 0 e posedon shkopin 4. Këtu përsëri filozofi 1 ka mundësi ta merr shkopin 0, gjë që nënkupton se s’do të kemi gjendje të dedllokut (figura 5.2.2.2.b)). Mirëpo, edhe kjo strategji e marrjes së shkopinjëve, problemin e urisë e ka mjaftë të theksuar. Në një sistem real, marrja e resursit 9 pastaj 10, pas pak procesi përkatës vëren se ka nevojë për resursin 1. Pamundësimi i marrjes së resursit 1 e shtyn këtë process që ti liroj resurset 9 dhe 10 dhe t’ia filloj kërkimin e resurseve që nga fillimi, edhepse resursi 1 ka qenë i lirë për përdorim. Pikërisht kjo paraqet një të metë të përdorimit të këtij algoritmi. Mirëpo, edhepse dedlloku është eliminuar vërejmë se këtu është e pamundur të bëjmë një renditje të resurseve i cili rend do ta kënaqte çdo proces. Në anën tjetër mund të ketë aq shumë resurse reale dhe abstrakte ku s’do të ishte fare efektive (e preferueshme) mbajtja e rendit në mes tyre.

Në të dy rastet filozofi 1 siguron progres

Page 30: ProblemetEKonkurencesNeSistemetOperative (1)

PROBLEMET E KONKURENCËS NË SISTEMET OPERATIVE XHEVAHIRE TËRNAVA

PUNIM DIPLOME

30

5.3. Zgjidhja asimetrike apo filozofët e ngjyrosur Kjo zgjidhje është e ngashme me verzionin kur vetëm një filozof është i djathtë. Vërejtëm se ajo zgjidhje e eliminonte problemin e dedllokut mirëpo, dominonte problemi i urisë në mesin e filozofëve (thjesht filozofët, kur ishte puna për të ngrënë, disa hanin më shumë përderisa fqinji i tyre ishte i uritur). Çka nëse disa filozofë janë të majtë e disa të djathtë? Më saktësisht, supozojmë se filozofët tek fillojnë marrjen e shkopit të majtë, ndërsa filozofët çift së pari e marrin shkopin e djathtë. As në këtë rast s’do të ketë dedllok, bile edhe në rastin kur vendosim vonesë me rastin e marrjes së shkopit të djathtë dhe atij të majtë. Mirëpo, janë dy probleme në këtë zgjidhje. Problemi i parë është i thjesht. Le të supozojmë se filozofi P është duke pritur për një shkop. Eventualisht, zotëruesi i shkopit (të themi filozofi Q) do ta mbaroj ngrënien dhe do ti lëshoj shkopinjtë, por ama s’do të ketë garancion se filozofi P do ta merr atë shkop, që ishte mbajtur deri atëherë nga filozofi Q dhe të filloj ngrënien, nëse filozofi Q dëshiron të ha përsëri para se, thredi që e paraqet filozofin P, të jetë skeduluar. E gjithë kjo varet nga mënyra se si është i organizuar sistemi i thredave. Problemi tjetër dhe më kryesor është se filozofët s’janë njësoj të peshuar (d.m.th s’kanë mundësi të barabarta për të ngrënë). Ajo që është me rëndësi këtu është koha gjatë së cilës ndonjë prej filozofëve është i bllokuar, duke pritur që ti marr shkopinjtë në mënyrë që të ha. Mund të vërejmë se ndonjëri prej filozofëve do të hajë më shumë se sa filozofët e tjerë (ose të themi se qëndron shumë pak kohë në gjendjen e bllokuar, që e njohim si gjendje kur filozofi është duke menduar, pra pjesën më të madhe të kohës e kalon duke ngrënë ), shtrohet pyetja pse? Arsyeja është paksa delikate. Supozojmë se të gjithë filozofët dëshirojnë të hanë në të njëjtën kohë (figura 5.3.1). Filozofi 0 dhe 1 (meqë njëri është i majtë e tjetri i djathtë) do të zihen për shkopin e parë, se cili do ta merr i pari, në të njëjtën gjendje janë edhe filozofët 2 dhe 3. Përderisa, filozofi 4 gjithmonë e merr shkopin e parë pa pasur nevojë që të zihet me ndonjërin prej filozofëve të tjerë. Ky fenomen (i cili është shumë më kompleks se sa që e përshkruam këtu) thjesht i jep filozofit 4 një përparësi ndaj filozofëve të tjerë, që nënkupton se ai ha më tepër se sa të tjerët. Kështu që, nëse qëllimi ynë është që të gjithë filozofët ti konsiderojmë njësojë, atëherë kjo nuk paraqet zgjidhjen e duhur. Përndryshe, nëse kërkohet që vetëm dedllok të mos ketë në mesin e filozofëve, atëherë do të themi se ia kemi arritur qëllimit.

Page 31: ProblemetEKonkurencesNeSistemetOperative (1)

PROBLEMET E KONKURENCËS NË SISTEMET OPERATIVE XHEVAHIRE TËRNAVA

PUNIM DIPLOME

31

Figura 5.3.1. Filozof 4 ka mundësi të ha, Figura 5.3.2. Ngjyrosja alternative e filozofëve

kjo garanton progres me vetëm dy ngjyra Për këtë zgjidhje nganjëherë problemi formulohet ashtu ku thuhet; filozofët ngjyrosen në mënyrë alternative me ngjyra (me vetëm dy ngjyra!). Më saktësisht, filozofët tek ngjyrosen me ngjyrë të kuqe ndërsa, filozofët çift me ngjyrë të gjelbërtë, d.m.th. kjo në fakt paraqet një ngjyrosje alternative të filozofëve (figura 5.3.2). Ndërkaq, rregullat e marrjes së shkopinjëve nga ana e filozofëve të ngjyrosur është e atillë që filozofët me ngjyrë të kuqe së pari e marrin shkopin e djathtë ndërsa, ata me ngjyrë të gjelbërtë së pari e marrin shkopin e majtë. Si rezultat do të kemi zgjidhjen e njëjtë si më parë.

5.4. Problemi i filozofëve me 4 karrige (PËRDORIMI I SEMAFORAVE) Shqyrtimin e problemit e fillojmë nga një pikëvështrim tjetër! Nëse na përkujtohet nga më parë, dedlloku në zgjidhjen më të thjeshtë, shkaktohej meqë që të pesë filozofët e merrnin shkopin e majtë në të njëjtën kohë. Një mënyrë e qartë për ta eliminu pritjen ciklike, të filozofëve, është që të lejojmë jo më shumë se katër filozofë (në rast se jemi duke e shqyrtuar problemin vetëm me pesë filozofë) që të ulen në të njëjtën kohë rreth travoline. Si rezultat, edhe nëse ndodhë që të katër filozofët, që u është mundësuar të ulen njëkohësisht, të marrin në të njëjtën kohë shkopin e majtë, filozofi i fundit do të ketë një mundësi për të ngrënë, siç është paraqitur në (figura 5.4.1). Në fakt, mund të shihet se nëse janë më pak se katër filozofë të ulur njëkohësisht, dedlloku s’do të ndodhë. Ky shqyrtim na mundëson që në mënyrë shumë të lehtë ta tejkalojmë dedllokun. Ne thjesht, s’lejojmë që më tepër se katër filozofë të ulen njëkohësisht! Me fjalë të tjera na nevoitet një mekanizëm me të cilin filozofi i pestë do të jetë bllokuar pasi që të katër filozofët e tjerë vërehet se veçse janë ulur.

D – i djathtë

M – i majtë

Page 32: ProblemetEKonkurencesNeSistemetOperative (1)

PROBLEMET E KONKURENCËS NË SISTEMET OPERATIVE XHEVAHIRE TËRNAVA

PUNIM DIPLOME

32

Figura 5.4.1. Filozofit me të verdhë iu ka pamundësuar ulja rreth tavoline

Kjo në fakt paraqet teknikën e semaforave numërues (ang. countdown and lock) të semaforave. Për këtë qëllim na nevoitet një semafor që ta inicializojmë në katër. Secili filozofë duhet të pret në këtë semafor para se të tentoj ti marr shkopinjtë. Pasi që ta përfundojnë ngrënien, secili filozofë duhet që ta sinjalizoj këtë semafor në mënyrë që ta lëshoj karrigen (shkopinjtë) e tij. Diç tjetër, përveç kësaj përpjekje shtesë, çdo gjë është e ngjashme me atë tek verzionet e më parshme. Por ajo që duhet të theksohet edhe këtu është se uria ende mbetet problem i pazgjdhur. Të theksojmë se përveç shmangies së dedlokut semaforat garantojnë përjashtim reciprok përshkak se bazohen në ekzekutimin atomik të instruksioneve wait dhe signal.

5.4.1. Problemi i urisë Le ta analizojmë problemin e urisë. Vërejmë se filozofit 4-tër s’iu ka lejuar ulja rreth tavolinës; filozofi 3 veçse është duke ngrënë, ndërkaq filozofi 0, filozofi 1 dhe filozofi 2 presin shkopin e djathtë (figura 5.4.1.1).

Figura 5.4.1.1. Problemi i urisë Mirëpo, pesë filozof, me pesë shkopinjë, me nga dy shkopinjë, maksimalisht mund të hanë dy filozof, ndërkaq në rastin tonë vetëm filozofi 3 është duke ngrënë edhepse ka sasi të shkopinjëve të mjaftueshëm për të ngënë edhe një filozof tjetër! Ky rast paraqet një rast të urisë në mesin e filozofëve, por mund të themi se është tipik për ta

Filozofit 4 s’iu ka lejuar ulja rreth tavoline

S’iu ka lejuar ulja rreth tavolinës

Page 33: ProblemetEKonkurencesNeSistemetOperative (1)

PROBLEMET E KONKURENCËS NË SISTEMET OPERATIVE XHEVAHIRE TËRNAVA

PUNIM DIPLOME

33

iluatruar një teknikë jo të mirë të skedulimit. Poashtu, edhe këtu problemi është i njëjtë kur ndonjë prej filozofëve është më i ngadalshëm se të tjerët. Në fakt kjo teknikë, e marrjes së shkopinjëve nga ana e filozofëve, kur s’na intereson numri i filozofëve, d.m.th. në rastin e përgjithshëm, realizohet ashtu që, supozohet se kemi një kuti me n-1 tiketa, ku n është numri i filozofëve, dhe secili filozof duhet ta marrë një tiketë para se të provoj marrjen e shkopinjëve (figura 5.4.1.2).

Figura 5.4.1.2. algoritmi i bazuar në marrjen e tiketave –ilustrim i përdorimit të semaforave

6. Zgjidhejt e bazuara në konstruktin e gjuhës

6.1. Përdorimi i monitor-ave Më parë, diskutuam rastin kur i përdorim pesë mutex kyça për të pesë shkopinjtë, me ç’rast vërejmë se në atë zgjidhje mund të ndodhë dedlloku. Pastaj, verzioni majtas-djathtas ku gjendej së paku një filozof i djathtë i cili gjithmonë e merrte shkopin e djathtë së pari. Duke i përdorur semaforat, kemi akoma një version në të cilin vetëm katër filozof mund të ulen dhe të hanë. Treguam se në këto dy verzionet e fundit ishte i pamundur dedlloku. Në vijim do e prezentojmë një zgjidhje tjetër në të cilën e përdorim monitorin, dhe në të cilë zgjidhje poashtu s’do të kemi dedllok. Në zgjidhjet e më parshme, një filozof i merrte shkopinjtë një nga një. Kjo shkaktonte që të vie deri te paraqitja e dedllokut në mesin e filozofëve, në rast se marrja e shkopinjëve s’ishte koordinuar si duhet. Çka do të ndodhë me atë filozof i cili i merr të dy shkopinjtë si një njësi të vetme, dmth përnjëherë? Më saktësisht, një filozof mund të ha vetëm nëse ai i merr të dy shkopinjtë në të njëjtën kohë. Kështu, nëse një filozof vëren se të dy shkopinjtë janë në dispozicion, ai i merr ata dhe ha. Përndryshe, ai pret derisa shkopinjtë e tij të jenë në dispozicion. Pasi të ketë ngrënë, ai filozof, i lëshon shkopinjtë.

x

Legjenda: - Numri i tiketës i marrë nga

filozofi përkatës - Filozofi

- Shkopi

Për këtë filozof janë harxhu tiketat!

Page 34: ProblemetEKonkurencesNeSistemetOperative (1)

PROBLEMET E KONKURENCËS NË SISTEMET OPERATIVE XHEVAHIRE TËRNAVA

PUNIM DIPLOME

34

Ajo që na intereson është se, a do të ketë dedllok. Për të pasur dedllok, duhet të dominoj gjendja ku; filozofi 0 e ka një shkop që i nevoitet filozofit 1, filozofi 1 e ka një shkop që i nevoitet filozofit 2 dhe filozofi 2 e ka një shkop që i nevoitet filozofit 0 (në rastin me tre filozof!). Meqë një filozof mund të ha vetëm në rast se i ka që të dy shkopinjtë, situatë në të cilën një filozof e ka një shkop dhe pret për shkopin tjetër, asnjëherë s’mund të ndodhë, dhe dy filozofët fqinjë asnjëherë s’do të jenë duke ngrënë, në të vërtetë s’do të ketë dedllok.

6.1.1. Pseudo-kodi i përdorimit të monitor-ave në zgjidhjen e problemit Monitori për problemin e filozofëve përbëhet nga dy procedure: fillon_ngrënien dhe ndale_ngrënien, siç është paraqitur në figurë: monitor filozofët_që_hanë() { int shkopinjtë[5]; kushti shkopinjtë_e_lirë [5]; procedura fillon_ngrënien (int i) { if (shkopinjtë[i] !=2) shkopinjtë_e_lirë[i].wait; shkopinjtë[(i-1)%5]--; shkopinjtë[(i+1)%5]--; } procedura ndale_ngrënien(int i) { shkopinjtë[(i-1)%5]++; shkopinjtë[(i+1)%5]++; if (shkopinjtë[(i-1)%5] = = 2) shkopinjtë_e_lirë[(i-1)%5].signal; if (shkopinjtë[(i+1)%5] = = 2) shkopinjtë_e_lirë[(i+1)%5].signal; } /* inicializimi i variablave të monitorit*/ { for (i=0; i<=4; i++) shkopinjtë[i] = 2; } }

Page 35: ProblemetEKonkurencesNeSistemetOperative (1)

PROBLEMET E KONKURENCËS NË SISTEMET OPERATIVE XHEVAHIRE TËRNAVA

PUNIM DIPLOME

35

Një filozof do ta ekzekutoj fillon_ngrënien para se të ha dhe ndale_ngrënien pasi ta mbaroj ngrënien dhe është i gatshëm për të kaluar në gjendjen duke menduar. Zgjidhja me monitora nuk e kufizon numrin e filozofëve të cilët mund të ulen në karrige. Le ta alalizojmë se si punon algoritmi. Kur një filozof e ekzekuton fillon_ngrënien së pari do të shqyrtoj se sa shkopinjë i ka në dispozicion. Nëse që të dy shkopinjtë i ka në dispozicion atëherë do ta bëjë zbritjen për 1, të numrit të shkopinjëve tek filozofët fqinjë dhe do të filloj ngrënien. Në rast se vëren se si ka në dispozicion që të dy shkopnjtë do të pret në variablën shkopinjtë_e_lirë[i]. Filozofi mund të vërej se numri i shkopinjëve që janë në dispozicion për të mund të jetë 2, në rast se asnjë nga filozofët fqinjë s’është duke ngrënë, 1 nëse ndonëri nga filozofët fqinjë është duke ngrënë dhe 0 kur që të dy filozofët fqinjë janë duke ngrënë. Në rast se filozofi e mbaron ngrënien, para se të vazhdoj të mendoj, së pari e bënë rritjen e numrit, që janë në dispozicion, të shkopinjëve tek fqinjtë edhe atë për 1. Tani në rast se fqinji i majtë i ka që të dy shkopinjtë në dispozicion (shkopinjtë((i+1)%5)==2) do ta dërgojë një sinjal për ta liruar atë filozof nga rendi. E njëjta gjë ndodhë edhe me fqinjin e djathtë.

6.2. Zgjidhja më e mirë! Në verzionin e parë, me mutex kyç-at vërejtëm se mund të vie deri te gjendja e dedllokut. Në verzionin djathtas-majtas kishim së paku një filozof të djathtë, i cili e merrte shkopin e djathtë të tij. Verzioni i tretë e përdorë një semafor me të cilin lejohen vetëm katër filozof të ulen rreth tavoline. Ndërkaq, nëse i përdorim monitorat, verzioni i katërtë e detyron që një filozof të pret derisa të dy shkopinjtë janë në dispozicion. Por, ky version ka një pritje të përsëritur e cila s’është edhe aq e efektshme. Në këtë version, të pestë, do të japim një zgjidhje më të efektshme e cila bazohet në idenë e njëjtë. Ku është dallimi? Pika kyçe te këtij version është mënyra e organizimit se kush do ti ketë të dy shkopinjtë me qëllim që ti mundësohet ngrënia. Përsëri nëse filozofi i, të themi, s’mund të hajë, ai vendost në variablën kushtëzuese. Për më tepër, një filozof i ka tri gjendje: duke menduar, i uritur dhe duke ngrënë. Një filozof themi se është në gjendjen i uritur nëse ai dëshiron të hajë por s’mund ti marr shkopinjtë. Më saktësisht, gjendja i uritur do të thotë se një filozof është duke pritur për ti marrur shkopinjtë. Kur një filozof provon të hajë, gjendja e tij bëhet i uritur. Pastaj, e testojmë se a mund të hajë ky filozof. Nëse shkopinjtë janë të lirë, ai mund të hajë dhe gjendja e tij bëhet duke ngrënë. Përndryshe, ky filozof thjesht do ta bllokoj vetvetën. Në anën tjetër, kur një filozof ta mbaroj ngrënien, ai e ndryshon gjendjen e tij në duke menduar, dhe i

Page 36: ProblemetEKonkurencesNeSistemetOperative (1)

PROBLEMET E KONKURENCËS NË SISTEMET OPERATIVE XHEVAHIRE TËRNAVA

PUNIM DIPLOME

36

informon fqinjët e tij kështu që ata kanë shansë për të ngrënë. Problemi është se si të dizajnohet një procedurë testuese e cila është e ndryshme nga ajo e mëparshmja. Nisemi nga analiza se, filozofi i mund të ha vetëm nëse fqinjët e tij, përkatësisht filozofët djathtas dhe majtas tij, s’janë duke ngrënë dhe vetë filozofi i është në gjendjen i uritur. Nëse është takuar ky kysht, gjendja e filozofit i është ndryshuar në duke ngrënë, kështu që filozofi i mund të filloj ngrënien. Ndryshimi në mes të këtyre dy zgjidhjeve të fundit është se në këtë rast ideja ishte ti përdorim gjendjet e filozofëve për të përcaktuar se cili filozof mund të ha. Në zgjidhjen e më parshme, testimi (se cili filozof mund të ha) ishe bazuar në atë se a janë shkopinjtë e zënë apo jo, ndërsa tani i shqyrojmë vetëm gjendjet e filozofëve fqinjë, e më pas vijmë në përfundim se a mund të ha apo jo ai filozof. Ku është përparësia e kësaj zgjidhje ndaj asaj të mëparshmes? Më parë, filozofët ishin të detyruar që në mënyrë të përsëritshme të shqyrtojnë se kur shkopinjtë do të bëhen të gatshëm, ndërsa këtu si shqyrtojmë fare gjendjet e shkopinjëve.

6.2.1. Problemi i urisë Në këtë rast problemi i urisë s’është edhe aq i theksuar, ndërsa dedlloku është i pa mundur. Këtu filozofit 4 nuk i ipet përparësi ndaj filozofëve të tjerë, si në shembullin e kaluar. Le ti theksojmë rastet kur vie në shprehje uria e ndonjë filozofi. Parakushti kryesor prapa kësaj zgjidhje është ky: kur një filozof dëshiron që të hajë, ai i merr që të dy shkopinjtë jo njëherë njërin e pastaj pas pak kohe edhe tjetri, por tani marrja e shkopinjëve konsiderohet si një tërësi e vetm jo e ndarë. Normal, nëse janë të lirë, atëherë atij filozofi i mundësohet që të hajë, përndryshe do të pret në një variabël kushtëzuese. Sa herë që ndonjë prej filozofëve e përfundon ngrënien, ai do të shqyrtoj nëse fqinjët e tij dëshirojnë të hanë dhe janë duke pritur. Nëse po, atëherë radhën e marrin filozofët fqinjë për të ngrënë, nëse kjo është e mundur.

a) b) Figura 6.2.1.1. a) dhe b) filozofi 4 s’ka mundësi të ha asnjëherë sepse s’ndodhë që 0 dhe 3 të jenë duke

menduar njëkohësisht.

Page 37: ProblemetEKonkurencesNeSistemetOperative (1)

PROBLEMET E KONKURENCËS NË SISTEMET OPERATIVE XHEVAHIRE TËRNAVA

PUNIM DIPLOME

37

Prap problemi është i njëjtë si më parë; uria. Supozojmë se filozofi 0 dhe filozofi 2 së pari kanë mundësi të hanë, pas pak do të hanë filozofët 1 dhe filozofi 3 e pastaj prap filozofi 0 dhe filozofi 2 e kështu më radhë. Filozofi 4 asnjëherë s’do të haj, për shkak se asnjëherë s’do të ndodhë që filozofi 0 dhe filozofi 3 të jenë që të dy duke menduar (figura 6.2.1.1). Theksuam më parë se uria është problemi kyç në këtë rast mirëpo, në rastet kur koha në të cilën filozofët duhet të rrinë duke menduar është më e madhe se duke ngrënë, uria s’është ndonjë problem dhe rrjedhimisht, kjo paraqet një zgjidhje të mirë.

6.3. Pse pesë filozofë!? Në të gjithë shembujt e problemit të filozofëve që hanë, shqyrtuam rastin me pesë filozof. Pse pikërisht pesë, pse jo më pak p.sh. katër?! Dikush pyet se a është kjo për arsye historike apo numri pesë është numri më i vogël për të cilin ne mund ta vështrojmë problemin? Me 1 filozof s’ka zgjidhje (figura 6.3.1)! Gjendet vetëm një shkop, përderisa një filozofi i nevoiten dy shkopinjë që të ketë mundësi për të ngënë, nga definimi i problemit.

Me 3 filozof s’ka shansë për paralelizëm (figura 6.3.2). Gjenden tre filozof, numri maksimal i filozofëve që mund të hanë është një rrjedhimisht, paralelizmi s’vie në shprehje!

Figura 6.3.1. Rasti me një filozof Figura 6.3.2. Rasti me tre filozofë Në këtë rast mirë do të ishte ta përdorim një algoritëm serik. Të theksojmë se qëllimi ynë ishte të ofrojmë një zgjidhje me qëllim të sinkronizimit të proceseve në një system njëprocesorik. Njëherit, në këtë system të ketë konkurencë në mes të proceseve, apo siç thuhet shpeshherë të kemi “paralelizëm” në system.. Pra, po shqyrtonim sistemet njëprocesorike multiprogramuese.

Page 38: ProblemetEKonkurencesNeSistemetOperative (1)

PROBLEMET E KONKURENCËS NË SISTEMET OPERATIVE XHEVAHIRE TËRNAVA

PUNIM DIPLOME

38

Me 4 filozof mjafton një algoritëm dy fazësh për ta zgjidhur problemin (figura 6.3.4). Çdo gjë është e çartë dhe e thjeshtë. Të theksojmë se paralelizmi është i plotë, por ama një algoritëm që përdoret për zgjidhjen e këtij problemi s’mund të përdoret për një rast të përgjithshëm. Dmth. për një numër të çfarëdoshëm të filozofëve. Ne themi, në rast se numri i filozofëve është çift1), zgjidhja më e mirë e argumentueshme është një algoritëm global i orkestruar, dy fazësh, ku s’ka nevojë ti përdorim semaforat. Për një zgjidhje të mirë mjafton në algoritëm global dy fazësh për ta zgjidhur problemin(figura 6.3.3.a) dhe b))! Ndërkaq, me 5 filozof çdo gjë ndryshon, ka zgjidhje, ka vend për paralelizëm, thjesht çdo gjë komplikohet, e ne pikërisht tentojmë ti zgjidhim rastet më të këqia (më të komplikuara)! Dmth. qëllimi ishte të gjejmë një algoritëm general për të gjitha rastet, pa marrë parasysh numrin e filozofëve në system.

a) b) Figura 6.3.3. a) dhe b) Rasti me dy filozof Figura 6.3.4. Rasti me katër filozof

6.4. Pse jo shtatë filozofë? Mund të marrim çfarëdo numri të filozofëve. Zgjidhja jonë për ata filozofë duhet të siguroj përjashtim reciprok, në mes të shkopinjëve të mos ketë dedllok dhe të ketë konkurencë maksimale. Konstreinsat (kushtet) shtesë siç është uria-(starvation) na çojnë deri te një zgjidhje tjetër. Çka në rast se filozofët janë Europian?

Figura 6.4.1. Filozofët evropian-me tre shkopinjë

Në rast se filozofët janë Europian me “tri duar” sepse u nevoiten tre shkopinjë për të ngrënë, kjo do të thotë se në mes të secilit çift të europianëve duhet ti vendosim nga dy shkopinjë! (figura 6.4.1)

Page 39: ProblemetEKonkurencesNeSistemetOperative (1)

PROBLEMET E KONKURENCËS NË SISTEMET OPERATIVE XHEVAHIRE TËRNAVA

PUNIM DIPLOME

39

7. Gjeneralizimi i problemit të filozofëve që hanë

Le ta bëjmë një gjeneralizim të problemit të filozofëve që hanë. Gjeneralizimi konsiston në ndryshimin e topologjisë së sistemit. Në problemin klasik filozofët dhe shkopinjtë janë të shpërndarë nëpër një rreth (tavolinë) në pozita alternuese. Për dallim, në rastin e gjeneralizuar shqyrtojmë topologjinë e lidhjes së çfarëdoshme, dhe në veçanti e pranojmë mundësinë që një shkop të mund të shfrytëzohet bashkarisht në mes të më tepër filozofëve. Rrjedhimisht, numri i filozofëve dhe i shkopinjëve s’është e nevojshme të jetë i njëjtë. Konstreinsi (kushti) i vetëm i cili imponohet në këtë topologji është se secili filozof është i lidhur (ka çasje) në dy shkopinjë të ndryshëm (më vonë edhe këtë kusht do ta thyejmë kur flasim për filozofët që pinë dhe ata mobil). Një gjeneralizim të problemit do ta formulojmë si vijon: Definim: Një sistem i gjeneralizur i problemit të filozofëve që hanë përbëhet prej n≥1 filozofë dhe k≥2 shkopinjë. Për dallim nga rasti klasik, n dhe k mund të jenë numra të ndryshëm, dhe një shkop mund të jetë ndarë (shfrytëzuar bashkarisht) nga një numër i çfarëdoshëm i filozofëve. Ndërsa, ngjashëm me rastin klasik , çdo filozofë ka çasje në dy shkopinjë, që njihen si shkopi i majtë dhe shkopi i djathtë. Çdo filozof mund të mendoj ose të hajë. Kur një filozof dëshiron të hajë, duhet ti marrë që të dy shkopinjtë. Ai mund të merr vetëm një shkop njëherë. Ai s’mund ta merr shkopin të cilin veçse është duke e mbajtur filozofi fqinjë. S’mund të ha përgjithmonë. Pasi të mbaroj ngrënien, ai i lëshon të dy shkopinjtë dhe fillon të mendoj. Në (figura 7.1) janë dhënë disa shembuj të problemit të gjeneralizuar.

Figura 7.1. a) 6 filozof me 3 shkopinjë b) 12 filozof me 6 shkopinjë c) 16 filozof me 12 shkopinjë d) 10 filozof me 9 shkopinjë

a) b) c) d)

Page 40: ProblemetEKonkurencesNeSistemetOperative (1)

PROBLEMET E KONKURENCËS NË SISTEMET OPERATIVE XHEVAHIRE TËRNAVA

PUNIM DIPLOME

40

Këto gjeneralizime mund të paraqiten si grafe të pa orientuara ku nyjet janë shkopinjtë (në figurë vizat) dhe lidhëset në mes të nyjeve janë filozofët (në figurë rrathët). Rrjedhimisht, shkopinjtë e çasshëm tek një filozof janë nyjet më të afërta. Mund ta zgjerojmë problemin dhe të lejojmë më tepër lidhëse në mes të nyjeve. Edhe këtu qëllimi është i njëjtë si te problemi klasik: për tu programuar filozofët ashtu që filozofët e uritur eventualisht do të hanë. Duke e ndjekur terminologjinë standarde, do të themi se një zgjidhje siguron progres nëse ajo e garanton atë, sa herë që një filozof i bashkësisë është i uritur, atëherë një filozof i bashkësisë së njëjtë eventualisht do të hajë. Për një zgjidhje themi se është ”pa problemin e urisë” (ang. lockout-free) nëse ajo garanton që, sa herë që një filozof i bashkësisë është i uritur, atëherë filozofi i njëjtë eventualisht do të hajë. Zgjidhjet e problemit të filozofëve që hanë varen fundamentalisht nga kushtet e marra në sistem. Në rast se nuk e imponojmë një simetri fillestare , ose nuk e imponojmë që sistemi të jetë plotësisht i distribuuar, atëherë disa zgjidhje ishin të mundshme. P.sh.: - shkopinjtë janë të renditur dhe secili filozof provon të merr së pari shkopin

fqinjë i cili është më i madhi në rend; - Filozofët janë të ngjyrosur me të kuqe dhe të gjelbërt në mënyrë alternative.

Filozofët e kuq provojnë të marrin së pari shkopin e majtë. Ata të gjelbërtit provojnë të marrin së pari shkopin e djathtë (apo në rastin tonë patëm marrë të kuqtë paraqesin filozofët çift, të gjelbërtit paraqesin filozofët tek).

- gjendet një monitor qendror i cili kontrollon dhënien e shkopinjëve tek filozofët;

- gjendet një kuti me n-1 tiketa, ku n-është numri i filozofëve, dhe secili filozof duhet të marr një tiketë para se të provoj të marr shkopinjtë. Në dy zgjidhjet e para, sistemi s’është simetrik, ndërsa në dy të fundit ai s’është plotësisht i distribuuar.

Problemi bëhet më serioz kur i imponojmë kushtet e simetrisë dhe të distribuimit të plotë. Më saktësisht, simetria do të thotë se filozofët janë të pa dallueshëm, sikurse edhe shkopinjtë. Filozofët ekzekutojnë të njëjtin program, dhe që të dy filozofët dhe shkopinjtë janë të gjithë në gjendjen fillestare të njëjtë. Distribuimi i plotë do të thotë se s’ka procese të tjera përveç filozofëve, s’ka memorie qendrore, të gjithë filozofët ekzekutohen pavarësisht, dhe bashkëpunimi i vetëm i mundshëm është përmes shkopinjëve.

Page 41: ProblemetEKonkurencesNeSistemetOperative (1)

PROBLEMET E KONKURENCËS NË SISTEMET OPERATIVE XHEVAHIRE TËRNAVA

PUNIM DIPLOME

41

7.1. Zgjidhja e Lehmann dhe Rabin Lehmann dhe Rabin çuditërisht erdhën në përfundim se s’ka zgjidhje tek problemi i filozofëve që hanë në rast se janë imponuar kushtet e simetrisë dhe të distribuimit të plotë. Zgjidhje të vetme të mundshme, në kushte të tilla janë algoritmet e rastësishme, që lejojnë eventualisht thyerjen e simetrisë fillestare me probabilitet 1. Në vijim do ti shqyrtojmë algoritmet e rastësishme, të ashtuquajturat algoritmet të cilat lejojnë një filozof të zgjedh rastësisht në mes të dy ose më tepër alternativave. 7.1.1. Algoritmi i parë i Lehamann dhe Rabin1) Në vijim janë paraqitur algoritmet e rastësishme të Lehmann dhe Rabin, do ti analizojmë ato dhe do të vërejmë se nuk funksionojnë në rastin e përgjithësuar të problemit. Pseudo-kodi i algoritmit të parë të Lehmann dhe Rabin është:

Theksohet se, për rastin klasik, LR1 siguron progres me probabilitet 1 për çdo skeduler të drejtë (fer). Mirëpo, në rastin e gjeneralizuar ky progres nuk ekziston! Le ta shqyrojmë këtë situatë me një shembull. Po e përdorim shënimin në vijim; një shigjetë e zbrazët, që i shoqërohet një filozofi dhe që tregon nga një shkop, do të thotë se filozofi ka çasje në atë shkop (e ka zgjedhur atë shkop (me instruksionin e zgjidhjes së rastësishme) por akoma se ka marrur. Një shigjetë e mbushur do të thotë se filozofi është duke e mbajtur atë shkop, pra ai e ka marrë shkopin dhe akoma se ka lëshuar. Në vijim shkopinjtë janë paraqitur me rrathë e jo me viza! Le të shqyrtojmë sistemin në anën e majtë të figurës.1 dhe po e analizojmë gjendjen 1 të paraqitur në figurën e më poshtme. Kjo gjendje është marrur nga gjendja fillestare (kur të gjithë filozofët janë në fillim të programit dmth duke ngrënë).

1) I njohur si LR1, i cili shënim njëherit është përvetësuar edhe këtu

Page 42: ProblemetEKonkurencesNeSistemetOperative (1)

PROBLEMET E KONKURENCËS NË SISTEMET OPERATIVE XHEVAHIRE TËRNAVA

PUNIM DIPLOME

42

gjendja1 gjendja2 gjendja3

gjendja4 gjendja5 gjendja6 Figura 7.1.1.1. Ilustrim i një rasti të problemit të gjeneralizuar për të cilin LR1 nuk siguron progres Skeduleri e zgjedh P1 me ç’rast kemi gjendjen 1. Pastaj e zgjedh P4. Nëse P4 tregon tek shkopi tjetër, atëherë ai do ta marrë atë dhe pastaj provon ta marr shkopin tjetër. Meqë shkopi tjetër është marrur nga P3, P4 ka për ta lëshuar shkopin e parë dhe provon përsëri . skeduleri e mbanë të zgjedhur P4 derisa ai të tregoj tek shkopi i mbajtur nga P3. Kur të ndodhë kjo atëherë jemi në gjendjen 2. Pastaj skeduleri e zgjedhë P1 dhe P1 e merr shkopin në të cilin tregonte. Pastaj skeduleri e mban të skeduluar P5 derisa P5 të tregoj tek shkopi i marrë nga P1 (ngjashëm siç ishte rasti me P4). Kjo është gjendja 3. Pastaj skeduleri e zgjedh P2, dhe P2 e merr shkopin në të cilin ka treguar. Kjo situatë është paraqitur në gjendjen 4. Skeduleri vazhdon me P3. P3 vëren se shkopi i tij i dytë mbahet nga P2 dhe si rrjedhim e lëshon edhe shkopin e parë, të cilin e posedonte. Pastaj skedulohet P6 derisa të tregoj tek shkopi i marrë nga P2. këtu jemi në gjendjen 5. Përfundimisht, skeduleri e zgjedh për ekzekutim P2 , i cili ka për ta lëshuar shkopin që e posedonte, meqenëse shkopi tjetër që i nevoitet mbahet nga P1. Pastaj zgjidhet P4, i cili e merr shkopin në të cilin tregonte. Me radhë zgjidhet P1, i cili e lëshon shkopin që e posedonte meqë shkopi tjetër që i nevoitet vëren se mbahet nga P4. Kjo është gjendja 6. Vërejmë se gjendja 6 është izomorfike me gjendjen 1, ajo që dallon janë vetëm emrat e filozofëve. Skeduleri pastaj mund të kaloj prapa në gjendjen 1 dhe të vazhdoj ti përsërisë këta hapa përgjithmonë. Kështu si rrjedhim do të marrim në gjendje ku asnjë prej filozofëve s’do të kenë mundësi të hanë. Theksohet se probabiliteti i paraqitjes së një gjendje të tillë është ¼, më mirë të themi se paraqet probabilitetin e marrjes së një gjendje izomorfike me gjendjen 1, që në tentimin e parë. Fatkeqësisht skeduleri i shqyrtuar në këtë shembull është jo fer(jo i drejtë). Në fakt, ai e mban të zgjedhur një filozof (psh. P4) derisa të pozicionohet tek një shkop i marrë.

Page 43: ProblemetEKonkurencesNeSistemetOperative (1)

PROBLEMET E KONKURENCËS NË SISTEMET OPERATIVE XHEVAHIRE TËRNAVA

PUNIM DIPLOME

43

Në rast se filozofi e zgjedhë gjithmonë shkopin e lirë, atëherë llogaritja është jo e drejtë (jo fer). Sidoqofë, është e lehtë të ndryshojmë skedulerin ashtu që të kemi një skeduler fer me të cilin do të arrijmë një skedulim fer, i cili do të na sjell deri tek rezultati i njëjtë, dmth. në një gjendje pa progres me probabilitet jo-null (probabiliteti i gjendjes izomorfike), megjithatë më të vogël se ¼.

7.1.2. Një kufizim i përgjithshëm i algoritmit të parë të Lehmann dhe Rabin Kemi vërejtur se ekziston së paku një shembull i grafit në të cilin LR1 nuk punon. Mund të shpresojmë se shembulli i më sipërm paraqet një rast shumë të veçantë, dhe se në kushte të caktuara LR1 do të funksionoj përsëri edhe në rastet e gjeneralizuara. Fatkeqësisht një supozim i tillë s’është i vërtetë: sa herë që lejojmë që një shkop të shqrytëzohet nga më tepër filozof (nga filozofë shtesë, më tepër se dy), LR1 s’funksionon. Teoremë1: marrim një graf G i cili përmban një nëngraf H, dhe ashtu që ndonjë prej nyjeve të H-së ka së paku tri lidhëse të rastësishme (dmth. Një lidhëse shtesë në G brenda dy në H). Atëherë është e mundur të definojmë një skeduler fer(të drejtë) për LR1 ashtu që probabiliteti i llogaritjes në të cilën lidhëset (filozofët) në H të mos bëjnë progres është rreptësisht pozitiv.

7.1.3. Algoritmi i dytë i Lehamann dhe Rabin1)

Në këtë pjesë shqyrtojmë algoritmin e dytë të Lehmann dhe Rabin , i cila njihet si zgjidhje pa problemin e urisë (ang.Loockout-free), tek problemi klasik i filozofëve që hanë. Në vijim do e shqyrtojmë një gjeneralizim të thjeshtë të algoritmit origjinal, të përshtatshëm për një topologji të përgjithshme. Supozojmë se secili shkop ka strukturën e të dhënave vijuese: Një listë të kërkesave që vijnë r, me veprimet ështëZbrazët, inserto, dhe largo. Fillimisht kjo listë është e zbrazët. Një ’libër i kërkesave’ g, dmth një libër i cili mban shënime rreth filozofëve se kush e ka përdorur shkopin. Ideja është që kur një filozof është i uritur, ai e inserton id e emrit të tij në listën e kërkesave të shkopinjëve fqinjë. Pasi të ketë mbaruar ngrënien, e largon emrin e tij nga këto lista dhe i dorëzon librat e kërkesave të shkopinjëve. Para se të mirret një shkop, filozofi duhet të verifikoj se s’ka kërkesa të tjera që janë duke pritur për atë shkop, ose që filozofët e tjerë që janë duke kërkuar shkopin e kanë përdorur atë pasi

1) Në vend të “Algoritmi i dytë i Lehmann dhe Rabin” është përvetësuar shënimi LR2.

Page 44: ProblemetEKonkurencesNeSistemetOperative (1)

PROBLEMET E KONKURENCËS NË SISTEMET OPERATIVE XHEVAHIRE TËRNAVA

PUNIM DIPLOME

44

që e ka përdorur ky filozof. Ky kusht është paraqitur, në algoritëm, me kushtin Cond(fork). Kodi i cili do të ekzekutohet nga secili filozof është paraqitur në vijim:

Të metat nga teorema1 nuk ekzistojnë në LR2. Në fakt, vetëm pasi që P të ketë ngrënë, ai s’mund ta merr shkopin f para se fqinji i tij poashtu të ketë ngrënë. Megjithatë, klasa e grafeve në të cilat LR2 nuk funksionon në fakt është e përgjithshme: Teoremë2: Analizojmë një graf G që përmbanë një nëngraf rrethor H, dhe ashtu që dy prej nyjeve në H janë të lidhura së paku nga tri shtigje të ndryshme (d.m.th., një shteg shtesë P në G brenda dyve në H). Atëherë është e mundur të definojmë një skeduler fer për LR2 ashtu që probabiliteti i llogaritjes në të cilën lidhëset (filozofët) e H dhe P të mos kenë progres është rreptësisht pozitiv. Vërtetim: Vërtetimi është paraqitur në (figura 7.1.3.1), ku njëherit është paraqitur pjesa e G e cila e përmbanë rrethin H dhe shtegu shtesë në mes të dy nyjeve të H-së. Si më parë, rasti i ilustruar është shqyrtuar nga një skeduler jo fer S, por duke e ndjekur teknikën e zakonshme mund të definojmë një skeduler fer S’ i cili i përafrohet S-së dhe me të cilin arrihet rezultat i njëjtë. Nga analiza e figurës vërejmë se asnjë prej filozofëve në H dhe në shtegun e shtuar s’do të kenë mundësi për të ngrënë, rrjedhimisht ndryshimi i LR2 nga LR1, dmth testi Cond(fork), është i pa përdorshëm: fork.g mbetet përgjithmonë i zbraztë.

Page 45: ProblemetEKonkurencesNeSistemetOperative (1)

PROBLEMET E KONKURENCËS NË SISTEMET OPERATIVE XHEVAHIRE TËRNAVA

PUNIM DIPLOME

45

Figura 7.1.3.1. Një klasë e grafeve për të cilën LR2 nuk funksionon

7.2. Zgjidhje e lirë nga dedllok-u1)

Në vijim është dhënë një zgjidhje simetrike dhe plotësisht e distribuuar tek rasti i gjeneralizuar i problemit të filozofëve që hanë,e cila do të ketë progres me probabilitet 1. Ky algoritëm funksionon si në vijim. Çdo shkopi i shoqërojmë një fushë nr e cila përmbanë një numër të plotë në intervalin [0,m], me m≥k, ku k ëhstë numri i përgjithshëm i shkopinjëve në sistem. Së pari nr është 0 për të gjithë shkopinjtë. Secili filozof mund ta ndrroj vlerën e një shkopi me rastin e posedimit të atij shkopi, dhe ky filozof më pas tenton të sigurihet se nr vlerat e shkopinjëve fqinjë tij bëhen dhe mbahen të ndryshëm. Me qëllim që të sigurojmë se kjo situatë eventualisht do të arrihet, çdo nr vlerë e re zgjidhet rastësisht. Të theksojmë se kjo zgjidhje e rastësishme është e nevojshme në mënyrë që të thyhet simetria, përndryshe, në prezencë të një cikli, një skeduler i pa përshtatshëm mund të na sjell në një situatë ku një filozof e ndryshon një shkop (nr vlerën e tij), pastaj fqinji i tij e ndryshon shkopin tjetër në vlerë të njëjtë, dhe kështu, dhe për shkopinjtë e tjerë në cikël. Algoritrmi ynë është i

1) Apo siç do ta quajmë më vonë me shkurtesën GDP1 për “General Dining Philosophers algoritmi i parë”

Page 46: ProblemetEKonkurencesNeSistemetOperative (1)

PROBLEMET E KONKURENCËS NË SISTEMET OPERATIVE XHEVAHIRE TËRNAVA

PUNIM DIPLOME

46

ngjashëm me LR1, përveç se zgjidhja e shkopit të parë është bërë duke e marrur atë me nr vlerë më të madhe(nëse ato nr vlera janë të ndryshme), në vend se të bëhet edhe zgjedhja e parë e rastësishme siç bëhej tek LR1. dallimi tjetër është se, siç shpjeguam edhe më parë, filozofët mund të nryshojnë nr vlerën e një shkopi në rast se e vrenë se ajo është e barabartë me nr vlerën e shkopit tjetër. Kjo arrihet duke e thirrur random [1,m], i cili e kthen një numër natyral në intervalin [1,m], të zgjedhur në mënyrë probabilistike. Ky algoritëm duket:

Vërtetohet se ky algoritëm bënë progres edhe atë me probabilitet 1. Mirëpo, e meta e këtij algoritmi është se nuk na garanton që do të marrim, me probabilitet 1, një situatë ku të gjthë shkopinjtë fqinjë do të kenë një nr vlerë të ndryshme. Jo bile në rast se të gjithë filozofët janë në pjesën ‘trying’ pafundësisht herë. Kjo ndodh për shkak se ndonjë prej filozofëve asnjëherë s’do t’ia dalë mbanë ta marr një shkop, për shembull sepse ata (filozofë) gjithmonë janë skeduluar në kohën kur fqinjët e tyre kanë qenë duke ngrënë.

7.3. Një zgjidhje pa uri1)

Algorimi GDP1 i paraqitur në pjesën e më parshme s’është ‘lockout-free’ ( ku dominon problemi i urisë). Në fakt, shqyrtojmë dy filozofë fqinjë, P1 dhe P2, të cilët e shfrytëzojnë bashkarisht një shkop f me një nr vlerë e cila është më e vogël se vlera e shkopit tjetërg të P1. atëherë P1 do ta mbajë të selektuar g si shkop të parë, dhe skeduleri do ta mbajë të skeduluar orvatjen e P1 që ta marr shkopin e dytë, f, vetëm atëherë kur f është mbajtur nga P2. Tani propozojmë një variantë të GDP1 e cila është

1) Apo siç do ta quajmë më vonë me shkurtesën GDP2 për “General Dining Philosophers algoritmi i dytë”

Page 47: ProblemetEKonkurencesNeSistemetOperative (1)

PROBLEMET E KONKURENCËS NË SISTEMET OPERATIVE XHEVAHIRE TËRNAVA

PUNIM DIPLOME

47

plotësisht pa problemin e urisë. Ideja është që çdo shkopi t’ia shoqrojmë një listë r të kërkesave që vinë, dhe një ‘guest book’ (libër mysafir) g, si në rastin e LR2. testi cond(fork) është definuar si tek LR2. Algoritmi i ri është paraqitur në vijim:

8. Filozofët që hanë, që pinë dhe filozofët mobil Gjeneralizimin e problemit të filozfëve do ta bëjmë këtu (duke supozuar se filozofët për të ngrënë u nevoiten numër i çfarëdoshëm i shkopinjve fqinjë e jo vetëm dy shkopinjë si në rastin e gjeneralizuar më parë) duke i përshkruar tri raste më karakteristike të këtij problemi. Siç janë, gjeneralizimi i filozofëve që hanë, filozofët që pinë dhe filozofët mobil. Tek gjeneralizimi i problemit të filozofëve që hanë supozojmë se secili filozof ka një numër të çfarëdoshëm të fqinjëve, me të cilët ai e ndanë (ang. share) një shkop dhe nëse dëshiron të hajë i nevoiten të gjithë shkopinjtë e filozofëve fqinjë. Problemi i filozofëve që pinë, i propozuar nga Chandi dhe Misra, është një gjeneralizim i filozofëve që hanë. Edhe këtu çdo filozof ka si më parë një numër të çfarëdoshëm të fqinjëve me të cilët ai e ndanë një shishe; sa herë që bëhet i etur, e

Page 48: ProblemetEKonkurencesNeSistemetOperative (1)

PROBLEMET E KONKURENCËS NË SISTEMET OPERATIVE XHEVAHIRE TËRNAVA

PUNIM DIPLOME

48

kërkon një bashkësi (të paracaktuar e cila ndryshon çdo herë) të shisheve të tij incidente me qëllim që të pijë. Filozofët mobil fusin në analizë edhe shumë çështje dhe probleme të tjera me rastin e rezervimit të resurseve, në krahasim me problemet e shpjeguara tek filozofët klasik. Këtu filozofët nuk qëndrojnë të ulur por kanë mundësi edhe të lëvizin. Në fakt filozofët mobil ilustrojnë problemet e rezervimit të kanaleve (pa tela) (resurseve) nga ana e hostit mobil (filozofit) në një sistem mobil. Për ti zgjidhur problemet e filozofëve një algoritëm duhet të siguroj: * Përjashtim (siguri): Asnjë resurs s’ka mundësi të përdoret njëkohësisht nga më tepër se një proces. Dallimet themelore në mes të këtyre tri problemeve janë për nga vetia e përjashtueshmërisë (ang. exclusion) dhe mund të përmblidhen si në vijim: tek problemi i ngrënësve fqinjët s’kanë mundësi të hanë njëkohësisht; tek problemi i pirësve fqinjët kanë mundësi të pinë njëkohësisht mirëpo, me kusht që të jenë duke pirë nga shishe të ndryshme; tek problemi mobil u lejhet fqinjëve të zgjedhin frekuenca të ndryshme për përdorim, kështu që ata mund të punojnë njëkohësisht (p.sh., situtat në të cilat stacionet bazë vendosin të marrin frekuenca të njëjta ashtu që ndonjë prej tyre ka për të pritur për tjetrin që ti liroj frekuencat mund të shmanget). * Jo dedllok (progres): Në një bashkësi të proceseve të cilat kanë nevojë për përdorim të resurseve, ndonjë prej tyre duhet të ketë mundësi ti përdorë ato në një kohë të kufizuar. * Eliminim të urisë (drejtësi): Me rastin e kërkimit të resurseve nga një proces, koha e dhënies së mundësisë për ti përdorur ato, të jetë e kufizuar. Sistemi është përshkruar me një graf të interferencës (konflikt graf) G=(V.E), ku nyjet paraqesin proceset (filozofët, ose në rastin mobil paraqesin ”cell agent”-at) dhe nyjet paraqesin resurset e konfliktit. Tehu në mes të dy nyjeve tegon konflikt në rast se këto procese tentojnë ti çasen resursit të njëjtë njëkohësisht. Në rast se një çift i filozofëve, në rastin e pirësve dhe ngrënësve ka më tepër konflikte se sa për një resurs, grafi i interferencës do të ketë më tepër tehe në mes tyre (filozofëve), nga një teh për secilin resurs. Tek filozofët që pinë, çdo proces ν¡ ka një bashkësi të shoqëruar të variablave që përcaktojnë numrin e shisheve që i nevoiten çdoherë për të pirë. Tek filozofët mobil, çdo ”cell agent” ν¡ ka një numër shoqërues r¡, i cili paraqet numrin e kërkesave të bëra në atë qelulë në çdo kohë. Çdo proces (filozof) ν¡ (1 ≤ i ≤ n) ka mundësi të komunikojë (përmes mesazheve apo memories së përbashkët) me fqinjtë e tij në G.

Page 49: ProblemetEKonkurencesNeSistemetOperative (1)

PROBLEMET E KONKURENCËS NË SISTEMET OPERATIVE XHEVAHIRE TËRNAVA

PUNIM DIPLOME

49

8.1. Ngrënia duke i marrur shkopinjtë një nga një Këtu filozofi i uritur me qëllim që të ketë mundësi për të ngrënë, garon për marrjen e shkopinjve, që i nevoiten një nga një, duke e ekzekutuar për secilin shkop një protokol që siguron përjashtim reciprok me proceset e tjera të cilat mund të pyesin për atë shkop. Varësisht nga tipi i komunikimit që ekziston në sistemin e shqyrtuar, kjo mund të arrihet duke përdorur një protokol të rrjetës (që siguron përjashtim reciprok siç është ai i Ricard dhe Agrawala) ose semaforat apo një resurs kontroller për secilin resurs (kontrolleri mund të jetë i centralizuar ose i distribuuar). Në këtë mënyrë përjashtimi reciprok themi se është garantuar. Për të garantuar mungesë të dedllokut, duhet të kemi kujdes për rendin në të cilin filozofët (proceset) e bëjnë kërkesën për resurse. Prandaj, për të shmangur dedllokun është e nevojshme të rendisim resurset në ndonjë mënyrë. Këtë mund ta arrijmë me anë të zgjidhjes së rastësishme, të propozuar nga Lehmann dhe Rabin ose në mënyrë deterministike, me ç’rast përdorim një renditje të caktuar të resurseve. Zakonisht këtu simetria thyhet me ngjyrosjen e resurseve.

8.1.1. Algoritmi majtas djathtas dhe gjeneralizimi i tij Këtu filozofët e uritur shkopinjtë tentojnë ti marrin në rendin rritës të ngjyrave. Në problemin origjinal ku filozofët ishin të ulur rreth tavolinës, kjo paraqiste zgjidhjen majtas djathtas. Theksohet se pritja për resurse krijon të të ashtuquajturit zinxhirët pritës në mes të proceseve. Një proces vi që është duke pritur për resursin me ngjyrë 1 në fakt është duke pritur për procesin tjetër vj që e mbanë atë resurs; vj në anën tjetër mund të jetë duke pritur për resursin me ngjyrë 2, dhe në këtë mënyrë krijohen zinxhirët pritës të proceseve të gjatësisë së barabartë me numrin e ngjyrave C. Gjatësia maksimale e zinxhirëve pritës është distanca maksimale (në grafin e interferencës) në mes të dy proceseve, ashtu që një proces mund ta vonoj tjetrin. Të theksojmë se procesi me ngjyrë më të madhe, në fund të zingjirit do të ketë mundësi të ha dhe kjo garanton progres (dmth shmangie të dedllokut) në sistem.

8.1.2. Kufizimi i gjatësisë së zinxhirëve pritës Me qëllim të reduktimit të gjatësisë së zinxhirëve pritës të proceseve, Stayer dhe Peterson japin një ide interesante. Ata propozuan një algoritëm dinamik, i cili tenton ti eliminon zinxhirët pritës të proceseve, kur procesi vëren se një resurs s’është në

Page 50: ProblemetEKonkurencesNeSistemetOperative (1)

PROBLEMET E KONKURENCËS NË SISTEMET OPERATIVE XHEVAHIRE TËRNAVA

PUNIM DIPLOME

50

dispozicion, i liron të gjitha resurset që i mbante dhe fillon garën nga fillimi përsëri. Një zgjidhje e tillë ka gjatësinë e zinxhirit pritës maksimal vetëm 1, por mund lehtë të rezultoj në uri. Më pas ata e balansuan këtë sjellje duke propozuar që procesi (në rendin e ngjyrave rritëse) ti liroj vetëm gjysmën e resurseve që i posedonte deri në momentin kur i pamundësohet marrja e ndonjë shkopi dhe lagrimin për resurse ta filloj prej aty (jo nga e para) ku ka pasur ”back-trcked”. Kjo siguron gjatësinë maksimale të zinxhirit pritës deri në logC. Për të shmangur problemin e urisë për shkak të lirimit të gjysmës (poseduese) të resurseve, Styer dhe Peterson propozuan një mekanizëm sinkronizues, i cili njihet si ”gardh protokoli” (ang. fence protocol). Ky protokol në fakt paraqet një barrierë të sinkronizimit asinkron, dhe në fakt është ekuivalentë me atë që secili filozof do të kërkon të drejtë për ta kaluar atë ”gardh”, dhe do të pres derisa ta merr një përgjigjje nga secili fqinjë. Këtu nëse ndonjë filozof veçse ka kaluar ai do të kundërshtoj ti jap përparësi fqinjëve të tij derisa të mbaroj ngrënien. Ky protokol garanton që secili filozof ka për të pritur për secilin prej fqinjëve të tij së paku njëherë para se të filloj ngrënien.

8.2. Problemi i filozofëve që pinë Këtu filozofët nuk i kërkojnë shkopinjtë një nga një, por i kërkojë të gjithë përnjëherë. Kjo paraqet një thyerje të simetrisë në mes të proceseve me qëllim të zgjidhjes së konflikteve. Problemi i filozofëve që pinë është një variantë dinamike e problemit të filozofëve që hanë e propozuar nga Chandy dhe Misra. Në problemin origjinal (klasik) kishim pesë filozof rreth një tavoline, të cilëve për të ngrënë iu nevoiteshin nga dy shkopinjë secilit. Një verzion më i përgjithshëm i problemit e zgjeron mundësinë që të kemi një numër të çfarëdoshëm të proceseve dhe nuk vë kufizime në atë se cilat procese i ndajnë (shfrytëzojnë bashkarisht) resurset. Ndërkaq, në problemin e filozofëve që pinë, për secilin proces gjendet një bashkësi e resurseve të cilat mund të kërkohen, dhe saherë që një proces dëshiron të bëjë ndonjë punë, ai e kërkon një bashkësi të çfarëdoshme të resurseve nga bashkësia e tij maksimale. Në fakt problemi i filozofëve që pinë është një variantë e problemit të filozofëve që hanë, por ku është dallimi? Në problemin e filozofëve që hanë, secili shfrytëzues (ose filozof) gjithmonë kërkon bashkësinë e njëjtë të resurseve. Në problemin e filozofëve që pinë, secili filozof mund të kërkoj një bashkësi të ndryshme të resurseve, sa herë që provon të futet në ekzekutimin e pjesës kritike. Në këtë problem filozofët janë përshkruar me gjendjet: i qetë, i etur dhe duke pirë (në vend të gjendjeve duke menduar, i uritur dhe duke ngrënë tek filozofëë hanë). Një ndër algoritmet më efektive për zgjidhjen e këtij

Page 51: ProblemetEKonkurencesNeSistemetOperative (1)

PROBLEMET E KONKURENCËS NË SISTEMET OPERATIVE XHEVAHIRE TËRNAVA

PUNIM DIPLOME

51

problemi është ai i propozuar nga Chandy dhe Misra. Problemi këtu ipet në formë të grafit të interferencës.

Figura 7.6. Ilustrim i filozofëve që pinë Ku filozofët vendosen në kulmet e grafit ndërsa, tehet paraqesin shkopinjtë përkatësisht shishet. Për ta arritur asimetrinë, konflikt grafi orientohet fillimisht në mënyrë aciklike. Ky orientim aciklik arrihet duke e përdorur protokolin e Luby-it për ngjyrosjen e grafit me ngjyra të renditura. Nga më parë e dimë se së paku njëri nga filozofët, në fund të rendit siguron progres, çka do të thotë se mund të pijë. Pasi një filozof të ketë mbaruar pirjen do ti reversoj (kthej prapa) të gjitha tehet e grafit për tek fqinjtë (përnjëherë), çka do të thotë se tani fqinjtë kanë mundësi që të pinë dhe mbi të gjitha reversimi i përnjëhershëm i të gjitha teheve (lirimi i menjëhershëm i të gjitha shisheve) garanton jociklicitet në graf (shmangie të dedllokut). Sa i përket vetisë së përjashtimit reciprok është garantuar sepse nënbashkësia e shisheve të marra nga njëri filozof janë pamundësuar të mirren edhe nga fqinji i tij edhepse që të dy fqinjtë mund të jenë njëkohësisht duke pirë, por ama nga shishe të ndryshme. Pikërisht, mundësia që dy filozofë fqinjë të jenë duke pirë njëkohësisht bënë që në sistem të kemi më tepër konkurencë. Kjo do të thotë se këtu filozofët i marrin për secilin sesion vetëm ato shishe që u nevoiten të pinë, ndërkaq si mbajnë të kyçura të gjitha shishet që i kanë në dispozicion, por ua lënë mundësinë edhe fqinjve që të pinë. Me qëllim të përmirësimit të performansave të këtij algoritmi janë zhvilluar edhe shumë algoritme të tjera ku ndër mëë njohurat janë ato të propozuara nga Choy dhe Singh, pastaj Ginat, Shankara dhe Agrawala, Awerbuch dhe Saks etj.. Sa i përket asaj se me çfarë mund ta ekuivalentojmë këtë sjellje të filozofëve që pinë në një sistem real duhet të theksojmë se problemi i filozofëve që hanë s’mund të përdoret në rast se resurset janë fajlla. Fqinjtë mund tu çasen fajllave të ndryshëm në të njëjtën kohë por s’mund tu çasen fajllave të njëjtë (d.m.th., dy fqinjë s’mund të pinë nag shishe të njëjta). Ndërkaq, dy procese janë fqinjë nëse së paku njëra prej tyre i çaset fajllit të përbashkët për të shkruar në të; ndërsa dy procese që vetëm i lexojnë fajllat e përbashkët s’kanë nevojë të jenë fqinjë.

Edhepse Pm filozofi ka çasje në pesë resurse, momentalisht i nevoiten vetëm tri. Futja në përdorim e shisheve ia mundëson që ti merr vetëm tri resurse ndërsa të tjerat t’ua lë në dispozicion fqinjëve për përdorim.

Page 52: ProblemetEKonkurencesNeSistemetOperative (1)

PROBLEMET E KONKURENCËS NË SISTEMET OPERATIVE XHEVAHIRE TËRNAVA

PUNIM DIPLOME

52

8.3. Filozofët mobil Integrimi i mobilitetit fut edhe çështje dhe probleme të tjera. Këtu filozofët nuk qëndrojnë ulur në një vend, por ata kanë mundësi edhe të lëvizin. Aftësia e një filozofi (gjithashtu i njohur edhe si host mobil në këtë rast) të jetë i përfshijshëm gjatë çvendosjes kërkon ndonjë formë të komunikimit pa tela, e cila e përkrah komunikimin ”broadcast” brenda një regjioni të veçantë, të njohur si qelulë. Për të pasur komunikim në mes të qelulave të ndryshme, një host i veçantë i quajtur ”cell agent” ose stacion bazë i është shoqëruar çdo qelule. Bashkësia e ”cell agent”-ave janë të ndërlidhur dhe mund të komunikojnë me njëri tjetrin në çifte. Në mënyrë që të plotësoj një kërkesë për komunikim të një hosti mobil, ”cell agent”-i përkatës do të rezervoj, varësisht nga gjerësia e brezit të kërkuar, një numër të caktuar të kanaleve pa tela në të. Kanalet (wireless-pa tela) do të zgjidhen nga ”cell agent”-at në atë mënyrë që të mos ketë interferencë në mes të sinjaleve gjatë transmetimit. Një zgjidhje tek problemi i rezervimit të kanaleve mobile duhet të garantoj që në rast se një kanal është përdorur për një sesion të komunikimit nga një host mobil (filozof) në një qelulë të caktuar, ai kanal s’duhet të përdoret njëkohësisht (ang. concurrently) për sesionet tjera komunikuese, përveç në qelulat në distancë, jashtë hapësirës së sinjalit me qëllim që të mos ketë interferncë. Dihet se bashkësia e frekuencave që janë të mundshme të përdoren në secilën qelulë është e njëjtë (d.m.th. frekuencat janë të ripërdorshme në secilën qelulë). Megjithatë, frekuencat e lira në një ”cell agent” janë frekuencat e spektrit që s’janë në përdorim në atë qelulë ose në ndonjë prej qelulave brenda hapësirës së sinjalit (kërkesat që s’mund të plotësohen dështojnë). Të theksojmë se bashkësia e frekuencave të lira në një stacion bazë ndryshojnë kohë pas kohe. Për më tepër, frekuenca të njëjta mund të jenë tek bashkësia e frekuencave të lira të të dy stacioneve bazë fqinjë dhe për këtë arsye, kur një stacion bazë është duke marrur kanalet nga bashkësia e tij e frekuencave të lira duhet të siguroj që s’do të ketë interferencë në mes tyre. Me qëllim të zgjidhjes së problemit të rezervimit të kanaleve një përdorim të gjerë dhe të veçantë zë problemi i filozofëve mobil. Të theksojmë se në këtë rast meqë numri i resurseve (kanaleve) është i kufizuar atëherë në çdo stacion bazë mbahet një listë e ngjyrave të lira (d.m.th., këtu ngjyrosen kanalet dhe ajo që është më e rëndësishmja, çdo stacion bazë ka ngjyra të njëjta –në një sistem të njëjtë, dhe dy stacione bazë fqinjë s’guxojnë të kenë në përdorim në të njëjtën kohë ngjyrat e njëjta në mënyrë që të mos ketë interferencë në mes të sinjaleve).

Page 53: ProblemetEKonkurencesNeSistemetOperative (1)

PROBLEMET E KONKURENCËS NË SISTEMET OPERATIVE XHEVAHIRE TËRNAVA

PUNIM DIPLOME

53

Rekomandime për lexim Edhepse [4] dhe [12] janë ndër shkrimet më të vjetra të publikuara që mirren me dy nga metodat më të përhapura në zgjidhjen e probelmit të marrjes së resurseve (probleme këto të ilustruar me anë të problemit klasik të filozofëve që hanë) nga ana e proceseve në një sistem multiprogramues, njëherit njihen edhe si referenca bazë nga të gjitha shkrimet pasuese. [1] dhe [2] janë dy libra që në mënyrë të detajizuar japin sqarime rreth problemeve të konkurencës (ku ofrohen edhe disa zgjidhje të propozuara çofshin nga ato me karakter softwerik, hardwerik apo ato të bazuara në sistemin operativ apo në gjuhët programuese), përjashtimit reciprok, semaforave dhe problemeve tjera. Në [16] dhe [17] gjenden programe të gatshme me qëllim të vizuelizimit të problemeve për shkak të konkurencës. Njëherit [17] është ndër publikimet më të freskëta që akoma tenton ta zgjeroj zbatimin e problemit të filozofëve edhe në sistemet e distribuuara. [3] gjendet algoritmi që zgjedh problemin e filozofëve që pinë, në detaje. [5]dhe [9] një zgjerim i problemeve të konkurencës në rast se sistemi është simetrik dhe i distribuuar. [6] një përmbledhje e tri llojeve të filozofëve; që hanë , që pinë dhe atyre mobil. [7] ofron një mundësi tjetër për zgjidhjen e problemit të filozofëve që pinë. [8] dhe [10] konceptet bazë të sistemeve operative por të përmbledhura shumë shkurtimisht. [15] një hyrje e mirë në rrejtat mobile. [13] një publikim i preferuar për studimin e algoritmeve të distribuuara që përdoren për zgjidhjen e konflikteve në këto sisteme.

Page 54: ProblemetEKonkurencesNeSistemetOperative (1)

PROBLEMET E KONKURENCËS NË SISTEMET OPERATIVE XHEVAHIRE TËRNAVA

PUNIM DIPLOME

54

Literatura:

* Librat [1] Andrew S. Tanenbaum -”Modern Operating Systems” [2] William Stalings -“Operating Systems: principles and international tips”

* Publikimet [3] K.M.Chandy dhe J.Misra – “The Drinking Philosophers Problem”, ACM

Transactions on Programming Language and Systems, vëllimi 6, nr.4, tetor 1984, faqe 632-646.

[4] E.W.Disktra – “Heriarchical Ordering of Sequential Processes” Acta Informatica, vëllimi 1, 1971, faqe 115-138.

[5] D.Lehmann dhe M.Rabin–“On the Advantages of Free Choice: A symmetric and Fully Distributed Solution to the Dining Philosophers Problem” janar 1981, faqe 133-138.

[6] M.Papatriantafilogu dhe P.Tsigas –“On Distributed resource handling:

Dining, Drinking and Mobile Philosophers” nëntor, 1997. [7] Jennifer L.Welch dhe Nancy A.Lynch – „A Modular Drinking

Philosophers Algorithm“, 1 qershor 2001. [8] Andy Wang –“Concurrency: Threads, Address Spaces,and Processes”,

Operating Systems, pranverë 2003, pjesa e parë. [UCLA CS 111] [9] Oltea M.Heresku dhe Catuscia Palamidessi –“On the generalized dining

philosophers problem” –Universiteti i Pensilvanisë. [10] I panjohur –Kapitulli 6 - “Mutual Exclusion and Syncronisation”. [11] I.S.W.B.Prasetya -“Dining Philosophers Reviseted”, [12] E.W.Dijsktra -“Two starvation free solution of a general exclusive

problem”. [13] Boris Koldehofe – “Distributed Algorithms” më 10 shtator 2000. [14] Astrit Ademaj – “Sinkronizimi i proceseve” (ppt fajlla), Programim

Sistemor, nëntor 2003. [15] Salem Lepaja – “Komunikimet mobile” nëntor 2004.

Page 55: ProblemetEKonkurencesNeSistemetOperative (1)

PROBLEMET E KONKURENCËS NË SISTEMET OPERATIVE XHEVAHIRE TËRNAVA

PUNIM DIPLOME

55

* Web faqe [16] C460 Lecture notes -- Dining Philosophers, autor: Jim Plank dhe Rich Wolski.

http://www.cs.utk.edu/~plank/plank/classes/cs560/560/notes/Dphil/lecture.html [17] “Multithreaded Programming with ThreadMentor”: Dr. C.-K. Shene (Last update:

April 16, 2002) 2001-2002. http://www.cs.mtu.edu/~shene/NSF-3/e-Book/ [18] http://users.erols.com/ziring/diningAppletDemo.html [19] http://www.cs.ucla.edu/classes/spring03/cs111/