[so] tema3

Cosmin Arad so@atlantis.cs.pub.ro
Wed, 19 Nov 2003 02:55:09 -0800 (PST)


--- Bogdan Butnaru <bogdanb@fastmail.fm> wrote:
> OK, am inteles cum e cu dll-urile. Totusi, care sunt
> formularile pentru
> cele trei probleme suplimentare:
> 
> Bounded Buffer cu mai multi producatori si mai multi
> consumatori,
> Dining Philosophers,
> Cigarette Smokers?

BoundedBuffer e problema producator consumator.
Producatorul produce (adauga) elemente intr-un buffer
de dimensiune fixa, iar consumatorul extrage elemente
din buffer. De data aceasta vei avea mai mult de un
producator si mai mult de un consumator. Practic nu e
mare diferenta. Producatorii trebuie sa astepte la o
conditie full si consumatorii la o conditie empty.
Problema e banala dar s-o rezolvati corect.

Dining philosophers e problema clasica cu N filosofi
in jurul unei mese rotunde. Fiecare are in fata sa o
farfurie cu spagette si exista N furculite plasate
intre cele N farfurii astfel incat fiecare filosof are
in stanga si in dreapta cate o furculita pe care se
"bate" cu vecinii din stanga respectiv dreapta. In caz
ca mai trebuie mentionat, filosofii sunt procese care
concureaza pt resursele de tip furculita. Exista in
cartea Modern Operating Systems a lui Tanenbaum o
solutie cu semafoare la acesta problema.
Voi trebuie sa gasiti o solutie cu monitoare si
sunteti restrictionati la a folosi doar un monitor.
Probabil ca in loc sa astepte la niste monitoare
filosofii vor astepta la niste variabile conditie din
monitor. S-ar putea ca inlocuirea chioara a
semafoarelor din solutia lui Tanenbaum cu variabile
conditie sa nu reprezinte o solutie corecta.
Trebuie sa evitati deadlock, livelock, etc. Solutii
gresite gasiti in curs ca sa vedeti care sunt
capcanele.

In problema Cigarette Smokers avem 4 procese: 3
fumatori si un agent. Fiecare fumator detine unul
dintre ingredientele: tutun, hartie si chibrite,
necesare pentru a aprinde o tigara. Asadar un fumator
va avea doar tutun, unul doar hartie si unul doar
chibrite. Agentul va avea o cantitate nelimitata din
toate cele 3 ingrediente. La un moment dat agentul
pune pe masa 2 dintre ingrediente, pe rand, iar
fumatorul care il are pe al treilea isi va aprinde o
tigara. Agentul va astepta ca fumatorul sa termine de
fumat dupa care ciclul se repeta. 

Cosmin


__________________________________
Do you Yahoo!?
Protect your identity with Yahoo! Mail AddressGuard
http://antispam.yahoo.com/whatsnewfree