Re: za asistenta
Nisam dobro procitao ono sto si napisao. Mislio sam da si napisao da dodje
samo jedan atom kiseonika, a za njim 4 atoma vodonika. Onda, po onome sto si
napisao, sledi da onaj drugi atom vodonika odblokira prvi atom kiseonika,
koji nesmetano prodje barijeru, potom ne prodje 1. ili 2. ili oba H ( jer ne
smemo nista da pretpostavljamo o vremenima izvrsavanja procedura), 3. i 4. H
odblokiraju onaj 2. atom O, i tako u nedogled.
Da li bi moglo da se popravi resenje sa ovim?
procedure Hydrogen(i:integer);
begin
wait(hydroSem);
wait(hydroMutex);
count:= count + 1;
if(count =2) then
begin
signal(oxySem);
signal(hydroSem2); // obavesti onog prvog
count:= 0;
bond(i); // posto te je O sacekao, a ti si drugi, nema
razloga da ne prodjes i prolazis odmah
signal(hydroMutex); // oslobodi da za sledece H
end; else begin // ako si prvi
signal(hydroMutex);
wait(Mutexpomocni); // onaj prvi H ce proci, 3. ce se
zaglaviti
wait(hydroSem2); // onaj prvi H ceka potvrdu od
drugog
bond(i); // i nedeljivo prelazi
barijeru
signal(Mutexpomocni); // oslobodi treci H sto/ako ceka.
end;
end;
Da li ovo ISTA valja? :) Nadam se da nisam nesto lupio
Nego, dok sam kucao ovo, postalo mi je nejasno da li moze da neka
promenljiva/procedura/... malo bude u kriticnoj sekciji malo ne bude,
zavisno od procedure do procedure. U materijalim sa vezbi je bond(i) u O u
krit. sek. a u H nije.
Током 4.5.07., Milos Ilic <milos.ilic@gmail.com> је написао:
--
Budite pozdravljeni!
Milos
samo jedan atom kiseonika, a za njim 4 atoma vodonika. Onda, po onome sto si
napisao, sledi da onaj drugi atom vodonika odblokira prvi atom kiseonika,
koji nesmetano prodje barijeru, potom ne prodje 1. ili 2. ili oba H ( jer ne
smemo nista da pretpostavljamo o vremenima izvrsavanja procedura), 3. i 4. H
odblokiraju onaj 2. atom O, i tako u nedogled.
Da li bi moglo da se popravi resenje sa ovim?
procedure Hydrogen(i:integer);
begin
wait(hydroSem);
wait(hydroMutex);
count:= count + 1;
if(count =2) then
begin
signal(oxySem);
signal(hydroSem2); // obavesti onog prvog
count:= 0;
bond(i); // posto te je O sacekao, a ti si drugi, nema
razloga da ne prodjes i prolazis odmah
signal(hydroMutex); // oslobodi da za sledece H
end; else begin // ako si prvi
signal(hydroMutex);
wait(Mutexpomocni); // onaj prvi H ce proci, 3. ce se
zaglaviti
wait(hydroSem2); // onaj prvi H ceka potvrdu od
drugog
bond(i); // i nedeljivo prelazi
barijeru
signal(Mutexpomocni); // oslobodi treci H sto/ako ceka.
end;
end;
Da li ovo ISTA valja? :) Nadam se da nisam nesto lupio
Nego, dok sam kucao ovo, postalo mi je nejasno da li moze da neka
promenljiva/procedura/... malo bude u kriticnoj sekciji malo ne bude,
zavisno od procedure do procedure. U materijalim sa vezbi je bond(i) u O u
krit. sek. a u H nije.
Током 4.5.07., Milos Ilic <milos.ilic@gmail.com> је написао:
Uz ogranicenje da se nisam bas udubljivao
Taj drugi vodonik stigne do
wait(hydroSem2) koji bi sada mogao da prodje, ali i pre nego sto
izvrsi taj poziv uleti 3. vodonik, koji na isti nacin stigne do te
naredbe
kako mislis da ti 3. vodonik stigne do wait(hydroSem2), kada se on zaglavi
na samom pocetku svoje procedure u prvom wait(hydroSem); ?
Током 4.5.07., Igor Stojkovic <stojkovic.igor@gmail.com> је написао:
>
>
> Radio sam iz Vezbi2007_V1.1.pdf 9. zadatak iz semafora (The H2O
> problem) i primetio jedan slucaj koji se ne uklapa bas u resenje.
>
> Recimo dodju 2 kiseonika. Prvi se zaglavi na wait(oxySem) a drugi na
> wait(oxyMutex). Sada dodju 2 vodonika. Prvi se zaglavi na
> wait(hydroSem2) a drugi sa signal(oxySem) dozvoli prvom kiseoniku da
> zavrsi posao tj. pozove bond(i). Taj drugi vodonik stigne do
> wait(hydroSem2) koji bi sada mogao da prodje, ali i pre nego sto
> izvrsi taj poziv uleti 3. vodonik, koji na isti nacin stigne do te
> naredbe kada i njemu uleti 4. vodonik (znam da je malo verovatno,
> ali...). Taj 4. vodonik sa jos jednim signal(oxySem) dozvoli i drugom
> kiseoniku da prodje (wait(oxyMutex) je prosao jos kad je prvi kiseonik
> zavrsio posao) i da on izvrsi bond(i). Tek posle toga sva cetiri
> vodonika prolaze wait(hydroSem2).
>
> Ja koliko sam shvatio ne bi smelo da se desi da prodju dva kiseonika a
> da nije ni jedan vodonik. Ispravite me ako gresim (bilo gde).
>
> --
> Pozdrav,
> Igor Stojkovic mailto: stojkovic.igor@gmail.com
>
>
>
> -----------------------------------------------------------------
> unsubscribe:
> minimalist@rti.etf.bg.ac.yu?subject=unsubscribe%20drs
> -----------------------------------------------------------------
>
--
Budite pozdravljeni!
Milos
--
Budite pozdravljeni!
Milos
- Follow-Ups:
- Re: za asistenta
- From: "Igor Stojkovic" <stojkovic.igor@gmail.com>
- Re: za asistenta
- From: "Milos Ilic" <milos.ilic@gmail.com>
- Re: za asistenta
- References:
- Re: za asistenta
- From: Zaharije Radivojevic <zaki@galeb.etf.bg.ac.yu>
- Re: za asistenta
- From: "Sasa Vitorovic" <savitor@sbb.co.yu>
- za asistenta
- From: "Igor Stojkovic" <stojkovic.igor@gmail.com>
- Re: za asistenta
- From: "Milos Ilic" <milos.ilic@gmail.com>
- Re: za asistenta
Previous by date: Re: za asistenta
Next by date: H2O problem
Previous by thread: Re: za asistenta Next by thread: Re: za asistenta
Previous by thread: Re: za asistenta Next by thread: Re: za asistenta