28
9.4.2003
Teemu Kerola, Copyright 2003
RIO: synkronointiongelman ratkaisu Test-and-Set -käskyllä
•TAS  Ri, L
(ttk-91:n
 laajennus)
•Kriittinen vaihe




•Toimiiko, jos tulee keskeytys pahassa kohtaa?
–Mikä on “paha kohta”?
Ri := mem[L]
if Ri==1 then 
   {Ri := 0, mem[L] := Ri, jump  *+2}
?
  LOOP: TAS        R1, L         # L:  1 (vapaa)   0 (varattu)
  JUMP     LOOP        # odota kunnes lukko auki
... # lukko on varattu (kiinni) minulle
kriittinen vaihe: yksi prosessi kerrallaan
...
LOAD    R1,=1         # avaa lukko L
STORE   R1,L           
tämän
käskyn
osoite