Saturday, June 25, 2011

SW: Casovo zavisle chyby a kriticke sekcie

Casovo zavisle chyby vznikaju v dosledku vzajomneho pouzivania zdielanych prostriedkov (pamat, subory). Vysledok vypoctu je potom zavisly na prepinani kontextu (nakolko si navzajom prepisuju data). Detekcia takychto problemov je narocna.

Cast programu, ktora vyuziva zdielane prostriedky sa nazyva kriticka sekcia. Kriticke sekcie viacerych procesov, ktore sa tykaju toho isteho prostriedku, sa nazyvju zdruzene kriticke sekcie. Mi tu ale mame Coffmanovu podmienku, ktora vravi, ze vzajomne vylucenie - nemozete zdielat jeden prostriedok sucasne => nemozete byt v zdruzenej kritickej sekcii sucasne.

Aby bol program korektny, tak musia byt splnene 4 podmienky

  • dva procesy sa nesmu nachadzat sucasne v kritickej sekcii 
  • nesmu byt kladene ziadne predpoklady na rychlost a pocet procesorov 
  • pokial proces bezi mimo kriticku sekciu, tak nesmie byt blokovany inymi procesmi 
  • ziadny proces nesmie na vstup do kritickej sekcie cakat do nekonecna
A na toto tu mame aj Bernsteinove podminenky, ktore vravia, ze zdielane premenne mozu byt iba citane. Tym zabranime konfliktom, ale hovno vyriesime, pretoze toto su prilis prisne podmienky.