[NOS] 1. laboratorijska vježba - 2021/2022
Rene
Nekoliko pitanja za putujuću značku:
Jel’ značka kruži samo između visitora, vrtuljak je nezavisan i samo čeka poruke “Želim na vrtuljak”?
Jel’ uredu za ključeve reda poruka koristit npr index visitora, tako da je jednostavno dohvatit red poruka nekog visitora?
Kako bi vrtuljak trebao znat od kojeg visitora mu je došao zahtjev za sjest, jel to napišem u poruci pa vadim iz charova ili preko tipa poruke?
carrieb
Rene
ja sam u potpunosti zanemarila vrtuljak, nema bas neku svrhu ako koristimo putujucu znacku, eventualno da mu proces koji zadnji sjedne na vrtuljak posalje poruku da su svi spremni (ako bas zelis po uputama napraviti i proces vrtuljak)
mislim da si otezavas stvar npotrebno na druge nacine, samo salji znacku kroz posjetitelje
flicka
može neko pojasniti kako koristit cjevovod u zadatku s filozofima i kao radit prema protokolu Ricarta i Agrawala
SuperSjajan3
Jel imao neko problem da mu msgrcv ne zablokira proces? Dok vrtuljak radi, ostali procesi mi se samo izvrte dalje u for petlji i zavrse bez da su bile uopce na vrtuljku. msgflag mi je postavljen na 0.
bodilyfluids
Koja je razlika između key-a i identifikatora prilikom inicijalizacije reda poruka?
Jel key označava konkretan red poruka, a identifikator je pristupna točka tom redu?
steker
znaci filozofe bi isto smjeli rijesiti preko reda poruka
Lyras
steker ja sam rješio pomoću cjevovoda tako da i-ti filozof ima svoj read otvor i write otvore (i + 1)-og i (i-1)-og filozofa. Piše na te otvore, a poruke mu dolaze na njegov otvor. Imam “direction” zastavicu u poruci da se zna je li neku pojedinu poruku primio od lijevog ili od desnog filozofa. Deadlock sam rješio tako da ako filozof nema oba štapića, on briše obje svoje poruke iz 2 priority queua (lijeva i desna ruka) i šalje poruku izlazak(i, Ti), iako nije jeo. Samo ako su mu obje njegove zahtjev(i,Ti) poruke na vrhu priority queuea on jede.
Da, želim počiniti suicid nakon ovog labosa, hvala na pitanju.
flicka
Lyras je li lakse s imenovanim ili neimenovanim cjevovodima?
flicka
Lyras Kak provjeris dal su oba njegova zahtjeva na vrhu? i kak brises obje poruke iz 2 priority queua?
Me1
Lyras jesi siguran da se može to tako, kaj nije da ovako fiksiraš svakog filozofa na jedno mjesto za stolom?
Lyras
Lyras kolega, lamport zapravo uistinu rješava deadlock. Ne trebaju nikakvi random sleepovi. Ako slijediš ispravno algoritam, doći ćeš do toga da će svi recimo imati u svom desnom redu svoju poruku na prvom mjestu, no razlika će se dogoditi upravo između 0. i 4. (ili 1. i 5., ovisi odakle započinješ brojanje) filozofa. Naime, oni će si međusobno poslati zahtjeve (istovremeno, po njihovim satovima), no prevladati će 0. filozof, jer on ima manji id, (odnosno i). Napraviš while petlju koja će biti istinita sve dok se oba zahtjeva filozofa ne pojave na vrhu njegovog reda. On čita poruke svojih susjeda sve dok se taj uvjet u while petlji ne ispuni. Ako uđe u lock u readu, nema veze, jer će zasigurno primiti poruku izlazak svojeg susjeda eventualno. Postupak jedenja se dogodi tek onda kada ima oba štapića na raspolaganju i isključivo samo tada.
Lyras
flicka ja sam napravio s neimenovanim. Mislim da nebi bilo lakše s imenovanim.
bodilyfluids
3 sata briješ da ti rješenje ne radi, razbijaš glavu sa svim mogućim fixevima, i onda skužiš da nisi obriso redove poruka nakon prvog pokretanja.
Sad radi
😃
Bucc
kakav vam je izlaz s vrtuljkom sa značkom? meni idu uvijek po redu 0, 1, 2, 3 pa 4, 5, 6, 7 i tak tri puta. nisam siguran jel treba nekad preskočit nekog il ne
Ardura
Olive Oil I meni, tako treba
viliml
Daeyarn M̵̧̩͑̀͝î̶͍̉ć̴̝̾́̀o̶̺̟̣͂̽
Čak I ako su svi povezani sa svima, gotovo uvijek je dovoljno N redova.
Svatko čita iz svojeg i piše u onaj koji pripada onom komu šalje.
Retard00
Kakva pitanja pitaju u terminima labosa?
Rene
Može pomoć s Ricart-Agrawalom? Kako vam izgledaju poruke koje šaljete u cjevovod? Ne kužim baš kako samo preko string poruka ovo ostvarit bez da bude užasno naporno
viliml
Rene Možeš poruke scanfati iz tekstualnog cjevovoda, ili možeš imati binarni cjevovod pa njime slati podatake koje hoćeš. Samo bi neke flagove trebalo namjestiti. Ili je možda čak po defaultu read i write preko file descriptora uvijek binarni i tek kad se opena i radi preko FILE pointera onda je tekstualni ili binarni? Nisam siguran.
Lyras
flicka koristio sam C++. Napravio sam klasu Message i definirao operatore <, > i == nad tom klasom. Onda sam iskoristio std::set za dodavanje u pojedini red (metoda seta “begin” daje min, odnosno “rbegin” daje max vrijednost unutar seta). Onda sam koristio metodu seta “erase” da izbrišem pojedini element.
Daeyarn
Maddy
ovo je ok izlaz onda za putujucu znacku?
Lyras
Me I da i ne. To se može realno i protumačiti kao “Došao je nepoznati filozof na mjesto i i jede”, a kada ode može se protumačiti kao “Otišao je neki nepoznati filozof x i sada misli”.