Semaforji Naloga

Ima gda mogoče čas in voljo sprogramirat naslednjo nalogo? Ker bi jo nujno rabil saj se mi gre če naredim predmet ali pa ne :S pa mi nikakor ne gre :S

Restavracija Desetka ima solatni bar, v katerem se nahaja 8 različnih vrst solat. Vsake vrste solate je za 20 študentov. Ob solatnem baru si lahko istočasno postrežeta 2 študenta, vendar ne solate iste vrste. Če solate ene vrste zmanjka, si študent izbere drugo vrsto. Če pa ni več nobene solate, pa študent zapusti bar. Napišite program desetka.c, kjer boste simulirali solatni bar za n študentov.

Dodatna razlaga: Oče ustvari n procesov (študentov), ki se izvajajo vzporedno! Solatni bar predstavite s skupnim pomnilnikom, kjer pa potrebujete en števni semafor za pristop "študenta" (procesa) do solatnega bara in eno polje binarnih semaforjev za dostop do posamezne "solate" (skupni pomnilnik). Vsak študent naj izpiše katero solato si je vzel. Izbiro solate naj naključno (rand) izračuna oče (v nasprotnem primeru bo vedno enaka vrednost).

Opozorilo: Preden oddate nalogo, jo dobro pretestirajte. Generirajte kakšnih 100, 200, 1000 procesov, da boste ugotovili, če pride slučajno do "deadlock-a". Pazite tudi, da se Vam resnično ustvari toliko procesov, kot je zahtevano.

Programsko kodo OBVEZNO opremite s podrobnimi komentarji!

Kot rešitev oddate arhiv.zip, kjer se nahaja:

* desetka.c in
* Makefile

Komentarji

Za komentiranje se prijavite ali pa se vpišite.