[NOS] 1. laboratorijska vježba - 2021/2022
Sulejman
Značka je cancer
tomekbeli420
Sulejman feelsbad neparna zadnja znamenka jmbag geng nisu dobili pseudokod ko parni
Bucc
tomekbeli420 dodat ću si jedan jmbagu
Avendo
Može netko tko je riješio značku napisati pseudokod za to… trebamo li koristiti forkove, mutexe itd…
Sulejman
Značka be like:
Avendo Ko što možeš vidit nema baš pseudokoda za ovak neš, al evo hint ti je da ti treba fork, a mutex ti ne treba jer je red poruka blokirajući
viliml
Avendo Taj protokol sa putujućom značkom je najjednostavniji mogući
funkcija uđi_u_kritični():
primi poruku
funkcija izađi_iz_kritičnog():
pošalji poruku procesu [indeks procesa] + 1
Jedino moraš paziti da kad sleepaš ili čekaš drugačije ne-značka poruke, ako slučajno uđeš u kritični onda odmah izađeš.
Avendo
viliml Index proces mi dodje kao pid ? I gdje ja pratim indekse procesa
Krpa1
viliml Što se događa ako se dobije poruka dok posjetitelj spava? Kako proslijedi značku slijedećem posjetitelju ili vrtuljku (do koga je već došlo) ako spava? Mislio sam možda napraviti da spava u for petlji pa stalno provjerava treba li proslijediti značku dalje, ali čini mi se da bi to produljilo vrijeme spavanja.
Sulejman
viliml Pa ti si genije.
viliml
Janez Možeš tako ako je bitno da odmah proslijedi. Ako nije prebitno, samo provjeri nakon spavanja. Možeš pozvati msgrcv sa zastavicom IPC_NOWAIT tako da ne čeka ako nema poruke, samo ti da poruku ak ju već imaš. Tako možeš proslijediti značku ako ti ne treba.
Avendo
Nije mi jasno što točno misle pod značka ? Što mi to u kodu predstavlja?
viliml
Avendo Značka je apstraktni koncept, nema je u kodu kao takve.
Trebalo bi u teoriji pojednostaviti intuitivno shvaćanje algoritma.
Poruke su ti u ovo slučaju kao prenošenje značke.
Slažem se da je malo glupo objašnjeno.
Krpa1
viliml
Znaci znacke nema nigdje u kodu? Ja sam shvatio da se u kodu treba slati poruka koja kruzi po svim procesima koja je zapravo znacka. I onda ako treba uci u KO, moze se samo ako je znacka trenutno u tom procesu, inace treba cekati dok znacka ne dode do tog procesa. Napravio sam tako i nije mi radilo, onda sam uklonio sav kod koji predstavlja kruzenje znacke i sad mi radi. Jedino sto mi se u ispisu dogada da se vrtuljak pokrene prije nego sto su svi sjeli. Pretpostavljam da je to zato sto sjedanje treba biti u KO…
Lyras
sanity check: purgajte si message queue nakon svakog executanja koda. Sve poruke koje ste poslali a niste konzumirali OSTAJU ako ne pozovete msgctl (recimo ako vam se program sruši).
t. čovjek koji više nema sanity nakon ne rađenja istoga.
možete to napraviti pomoću naredbe u bashu:
ipcrm -Q <key>
Vonj
Lyras
Ili ako nemate nijednih drugih poruka na OS-u, mozete ipcrm –all da obrisete odmah sve.
viliml
Janez Poruka predstavlja prijenos značke, poruka nije značka.
Kad proces primi poruku, poruke više nema, ali on ima značku.
Moglo bi se reći da je poruka anti-značka, jer između vremena kad jedan proces pošalje poruku i drugi ju primi, dok poruka postoji, nitko nema značku…
Poanta je ovo: “značka” je metafora, treba iskodirati nešto što se ponaša kao da neka značka kruži kroz procese.
KiflaKiflic
Kada bismo u vrtuljku trebali ispitivati da li je proces posjetitelj zavrsio? Prilikom primitka svake poruke?
micho
KiflaKiflic To bi ti proces posjetitelj trebao javiti vrtuljku. Ispitivanje budnosti procesa nije najsjajnija ideja, tako da to obično procesi javljaju glavnom procesu, ili imaš neki proces koji ih prati i komunicira s glavnim procesom.
E sad, kako ćeš to točno implementirati ovisi o zadatku koji imaš. Sa značkom je malo teže, ali da se.
Daeyarn
odakle najbolje krenut uciti za ovaj labos hehe
viliml
Daeyarn od osnovne škole