Ovu stranicu je najbolje pregledavati u modernom internet pregledniku s omogućenim JavaScriptom.

[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


« Prethodna stranica Sljedeća stranica »