120 likes | 786 Views
PROBLEMA FILOZOFILOR LA MASA. Prep. Drd. Aritoni Ovidiu. Dijkstra. Problema filozofilor la masa a fost expusa prima data de Dijkstra, in 1965 si reprezinta o problema clasica de sincronizare. 5 filozofi stau asezati la o masa circulara Fiecare filozof are in fata o farfurie cu mancare
E N D
PROBLEMA FILOZOFILOR LA MASA Prep. Drd. Aritoni Ovidiu
Dijkstra Problema filozofilor la masa a fost expusa prima data de Dijkstra, in 1965 si reprezinta o problema clasica de sincronizare.
5 filozofi stau asezati la o masa circulara Fiecare filozof are in fata o farfurie cu mancare Pentru a putea apuca mancarea, la stanga si la dreapta fiecarei farfurii, se gaseste cate un betisor In felul acesta, intre doua farfurii cu mancare se gaseste un betisor, iar intre doua betisoare, cate o farfurie
Ciclul de viaţă al fiecărui filozof este format din perioade de meditaţie şi perioade de hrănire. Când un filozof este înfometat, încearcă să ridice beţele aflate în stânga şi în dreapta farfuriei propii. Dacă are la îndemână ambele beţe, va putea mânca şi, într-un final va pune beţele înapoi pe masă, în stânga şi în dreapta farfuriei. Apoi va continua, desigur, cu o perioadă de meditaţie.
Gândeşte Ridică băţul dreptRidică băţul stângMânâncăAşează băţul stângAşează băţul drept Repetă
Dacă toţi filozofii apucă simultan băţul din stânga, toţi vor aştepta ca băţul din dreapta să devină disponibil. Din moment ce nici unul din ei nu va reusi să mânânce, nu va elibera băţul pe care l-a ridicat, ceea ce va crea o situaţie de impas ( deadlock ).
Chiar dacă filozofii s-ar pune de acord să lase din mână băţul pe care l-au ridicat, situaţia s-ar sfârşi tragic dacă toţi ar face această operaţie simultan. De data aceasta, filozofii s-ar bloca într-un ciclu infinit de ridicări şi aşezări de beţe, fără a fi capabili să ajungă la mâncare. O situaţie în care programele sunt executate nedefinit fără a realize nici un fel de progres va fi numită înfometare ( starvation ).
1.Soluţia lui Dijkstra Filozofii şi furculiţele sunt aşezate în ordine O soluţie este ordonarea beţelor şi atunci fiecare filozof va lua beţele în ordine crescătoare Pentru a ilustra această soluţie, vom nota cu P1, P2, P3, P4, P5 cei cinci filozofi şi cu F1, F2, F3, F4,F5 cele cinci beţe Fiecare filozof trebuie să ia beţele într-o ordine prestabilită şi nu poate lua un băţ pe care alt filozof deja îl are O soluţie este ordonarea beţelor şi atunci fiecare filozof va lua beţele în ordine crescătoare
2. Semafoare Mutex Cu ajutorul semafoarelor Mutex sunt protejate acţiunile care vizează beţele. Astfel, inainte de ridicarea unei furculiţe, un filozof va executa o operaţie down(&mutex), iar după ce a terminat realizează o operaşie up(&mutex). Soluţia previne apariţia impasului sau a înfometării, însă prezintă un dezavantaj major : dată fiind utilizarea semaforului mutex, un singur filozof va putea mânca la un moment dat ( un singur proces se poate afla în regiunea critică la un moment dat ).
Concluzii În general, problema filozofilor la masă este o problem generică şi abstractă utilizată pentru a explica o varietate de situaţii în care este folosită excluderea mutual. Excluderea mutuala este un mecanism folosit pentru a ne asigura că, dacă un process utilizează o resursă partajată, toate celelalte procese sunt excluse de la utilizarea simultană a aceleiaşi resurse. Problema filozofilor la masă exemplifică foarte bine impasul ( deadlock).