Creeaza.com - informatii profesionale despre


Evidentiem nevoile sociale din educatie - Referate profesionale unice
Acasa » referate » informatica
Cina filozofilor (The Dining philosophers problem)

Cina filozofilor (The Dining philosophers problem)




Cina filozofilor (The Dining philosophers problem)

Modeleaza procese care concureaza pentru acces exclusiv la un numar limitat de resurse, cum ar fi dispozitivele I/O.

Problema poate fi formulata astfel :

Se considera cinci filozofi care stau la o masa rotunda, fiecare avand in fata o farfurie cu mancare. Intre doua farfurii vecine exista o singura furculita.Viata unui filozof consta in alternarea perioadelor cand acesta mananca si respectiv gandeste. Cand unui filozof i se face foame, el incearca sa ia furculita din dreapta si furculita din stanga. Daca reuseste, mananca o perioada apoi pune furculitele jos si continua sa gandeasca.

Solutia evidenta duce din pacate la esec :

#define N 5 /* numarul filozofilor */

void filozof(int i)

}

Sa presupunem ca toti cei cinci filozofi iau fiecare furculita din stanga simultan. Niciunul nu va mai putea sa ia furculita din dreapta, rezultand o situatie de impas.

Programul poate fi modificat in sensul ca, dupa ce ia furculita din stanga, filozoful i verifica daca furculita din dreapta este disponobila. Daca nu, pune furculita din stanga pe masa, asteapta un timp si apoi repeta intregul proces. Cu un pic de ghinion, toti filozofii pot incepe algoritmul simultan, sa ia furculitele din stanga, sa observe ca furculitele din dreapta nu sunt disponibile, sa puna pe masa furculitele din stanga, sa astepte, sa ia din nou furculitele din stanga simultan s.a.m.d., pentru totdeauna.

O observatie care poate veni in minte este ca filozofii sa astepte un timp aleator inainte de a relua procesul de achizitionare a furculitelor. Aceasta observatie este buna, dar se prefera solutiile care merg intotdeauna si nu esueaza din cauza unei anumite serii de numere aleatoare.

O imbunatatire ar fi folosirea unui semafor. Astfel, inainte sa ia furculitele, filozoful i poate apela functia DOWN pe un semafor mutex. Dupa ce mananca si pune furculitele pe masa, apeleaza functia UP pe mutex. Din punct de vedere teoretic, solutia este buna, dar practic, duce la un rezultat putin curios : la un moment dat, doar un singur filozof poate manca desi sunt disponibile cinci furculite si deci, pot manca doi filozofi simultan.

Solutia prezentata mai jos este corecta si ofera maximum de paralelism pentru un numar oarecare de filozofi. Programul foloseste un tablou, stare, care memoreaza starea fiecarui filozof : gandeste, ii este foame (si incearca sa obtina furculitele), mananca. Un filozof poate manca numai daca vecinii lui nu mananca. Vecinii sunt reprezentati prin macro-urile STANGA si DREAPTA. Astfel, daca i este 2, STANGA este 1 iar DREAPTA este 3.



Programul mai foloseste un tablou de semafoare, unul pentru fiecare filozof , folosit pentru a bloca filozoful daca nu poate obtine furculitele necesare.

#define N

5

/* numarul filozofilor */

#define STANGA

(i-1+N)%N

/* numarul vecinului din stanga */

#define DREAPTA

(i+1)%N

/* numarul vecinului din dreapta */

#define GANDESTE

0

/* filozoful gandeste */

#define FLAMANZESTE

1

/* filozoful flamanzeste */

#define MANANCA

2

/* filozoful mananca */

typedef int semafor;

int stare[N];

semafor mutex=1;

semafor s[N];

/* semaforul este de tip intreg */

/* memoreaza starea fiecarui filozof */

/* excludere mutuala pentru regiuni critice */

/* un semafor per filozof */

void filozof(int i)

}

void ia_furc(int i)

void pune_furc(int i)

void test(int i)

}

Obs .: Fiecare proces ruleaza procedura filozof ; procedurile ia_furc, test, pune_furc sunt proceduri obisnuite si nu procese separate.






Politica de confidentialitate







creeaza logo.com Copyright © 2024 - Toate drepturile rezervate.
Toate documentele au caracter informativ cu scop educational.


Comentarii literare

ALEXANDRU LAPUSNEANUL COMENTARIUL NUVELEI
Amintiri din copilarie de Ion Creanga comentariu
Baltagul - Mihail Sadoveanu - comentariu
BASMUL POPULAR PRASLEA CEL VOINIC SI MERELE DE AUR - comentariu

Personaje din literatura

Baltagul caracterizarea personajelor
Caracterizare Alexandru Lapusneanul
Caracterizarea lui Gavilescu
Caracterizarea personajelor negative din basmul

Tehnica si mecanica

Cuplaje - definitii. notatii. exemple. repere istorice.
Actionare macara
Reprezentarea si cotarea filetelor

Economie

Criza financiara forteaza grupurile din industria siderurgica sa-si reduca productia si sa amane investitii
Metode de evaluare bazate pe venituri (metode de evaluare financiare)
Indicatori Macroeconomici

Geografie

Turismul pe terra
Vulcanii Și mediul
Padurile pe terra si industrializarea lemnului



Sinteza unui dispozitiv secvential de inmultire a numerelor binare reprezentate in semn-marime
Tipul de date abstract sir
Sisteme integrate
Monitor 3D multiutilizator cu detectare a pozitiei capului avand laser RGB ca sursa de lumina
Proiect informatica - Hidrografia Romaniei
Problema cititorilor si scriitorilor
Marketingul traditional- rezultat al practicii de marketing
Notiunea de sistem informatic



Termeni si conditii
Contact
Creeaza si tu