❈❤❛♥♥❡❧ ✇✐t❤ ❚❡r♠✐♥❛t✐♦♥ ❉❡t❡❝t✐♦♥ ❙❡r✈✐❝❡ ❙❤❛♥❦❛r ❆♣r✐❧ ✷✻✱ ✷✵✶✹
❖✈❡r✈✐❡✇ ❉✐str✐❜✉t❡❞ t❡r♠✐♥❛t✐♦♥ ❞❡t❡❝t✐♦♥ ♣r♦❜❧❡♠ ❣✐✈❡♥ ❝♦♠♣✉t❛t✐♦♥ X ✇❤❡r❡ ❡❛❝❤ s②st❡♠ ✐s ❛❝t✐✈❡ ♦r ✐♥❛❝t✐✈❡ ❛❝t✐✈❡✿ s❡♥❞✴r❝✈ ♠s❣s✱ ❜❡❝♦♠❡ ✐♥❛❝t✐✈❡ ✐♥❛❝t✐✈❡✿ ❜❡❝♦♠❡ ❛❝t✐✈❡ ✉♣♦♥ r❝✈✐♥❣ ❛ ♠s❣ ♦❜t❛✐♥ ❝♦♠♣✉t❛t✐♦♥ Y t❤❛t ❞♦❡s ♥♦t ❞✐st✉r❜ X ❛♥❞ ✐♥❢♦r♠s ❛ ✏s✐♥❦✑ s②t❡♠ ✇❤❡♥✴✐❢ X ❤❛s t❡r♠✐♥❛t❡❞ t❡r♠✐♥❛t✐♦♥✿ ❛❧❧ s②st❡♠s ✐♥❛❝t✐✈❡✱ ♥♦ ♠s❣s ✐♥ tr❛♥s✐t ❋♦r♠❛❧✐③❡ ❛s ✜❢♦ ❝❤❛♥♥❡❧ ✇✐t❤ t❡r♠✐♥❛t✐♦♥ ❞❡t❡❝t✐♦♥ s❡r✈✐❝❡ s✉❜s❡t ♦❢ ❛❞❞r❡ss❡s ❛❝t✐✈❡ ✐♥✐t✐❛❧❧② ❛t ❡❛❝❤ ❛❞❞r✿ s❡♥❞ ♠s❣s❀ r❝✈ ♠s❣s❀ s✐❣♥❛❧ ✐♥❛❝t✐✈❡ ❛t ✏s✐♥❦✑ ❛❞❞r a0 ✿ ❣❡t t❡r♠✐♥❛t✐♦♥ st❛t✉s
❚❡r♠✐♥❛t✐♦♥ ❞❡t❡❝t✐♦♥ ❝❤❛♥♥❡❧✿ ♦✈❡r✈✐❡✇ ❱❛rs✿ active ✢❛❣ ❢♦r ❡✈❡r② ❛❞❞r j txh ❛♥❞ rxh ❢♦r ❡✈❡r② j,k ✐♥♣✉t j.tx(k, msg) ❛❧❧♦✇❡❞ ♦♥❧② ✐❢ j ❛❝t✐✈❡❀ s❡♥❞ msg ✱ ✉♣❞❛t❡ txh ✐♥♣✉t j.rx() r❝✈ ♠s❣ ❢r♦♠ ❛♥② k ❀ s❡t j ❛❝t✐✈❡ ✐♥♣✉t j.inactive() ❛❧❧♦✇❡❞ ♦♥❧② ✐❢ j ❛❝t✐✈❡❀ s❡t j ✐♥❛❝t✐✈❡ ✐♥♣✉t a0.isTerminated() r❡t✉r♥ ♦♥❧② ✐❢ j ✐♥❛❝t✐✈❡ ❛♥❞ t①❤ ❡q✉❛❧s r①❤ ❢♦r ❡✈❡r② j,k
❚❡r♠✐♥❛t✐♦♥ ❞❡t❡❝t✐♦♥ ❝❤❛♥♥❡❧ ✕ ✶ ❙❡r✈✐❝❡ TdChannel ( ADDR, a0, initActive ) initActive ✿ ✐♥✐t✐❛❧❧② ❛❝t✐✈❡ ❛❞❞r❡ss❡s ▼❛✐♥ ✴✴ t① ❤✐st♦r② ❛t j t♦ k txhj,k ← [] ✴✴ r① ❤✐st♦r② ❛t k ❢r♦♠ j rxhj,k ← [] activej ← j ✐♥ initActive ✴✴ ❛❝t✐✈❡ st❛t✉s ❛t j ✴✴ ❛❝❝❡ss s②st❡♠ ❛t j vj ← sid() ✴✴ s✐❞ ♠❛♣ ♦✈❡r ADDR return {vj} ❍❡❧♣❡r ❢✉♥❝t✐♦♥ terminated(): ❛♥❞ forall(j: not activej) forall(j,k: txhj,k = rxhj,k)
❚❡r♠✐♥❛t✐♦♥ ❞❡t❡❝t✐♦♥ ❝❤❛♥♥❡❧ ✕ ✷ ✐♥♣✉t vj.tx(k,msg) ✐❝ ④ activej ❛♥❞ k � = j ❛♥❞ ♥♦ ♦♥❣♦✐♥❣ vj.tx(.) ⑥ ❛♣♣❡♥❞ msg t♦ txhj,k ❀ ♦❝ ④ true ⑥ r❡t✉r♥ ✐♥♣✉t Seq vj.rx() ✐❝ ④♥♦ ♦♥❣♦✐♥❣ vj.rx() ⑥ ♦✉t♣✉t msg, k ♦❝ {rxhk,j ◦ [msg] ♣r❡✜①✲♦❢ txhk,j ⑥ ❛♣♣❡♥❞ msg t♦ rxhk,j activej ← tr✉❡ r❡t✉r♥ msg
❚❡r♠✐♥❛t✐♦♥ ❞❡t❡❝t✐♦♥ ❝❤❛♥♥❡❧ ✕ ✸ ✐♥♣✉t vj.inactive() ✐❝ ④ activej ❛♥❞ ♥♦ ♦♥❣♦✐♥❣ vj.inactive() ⑥ activej ← ❢❛❧s❡ ♦❝ ④ true ⑥ r❡t✉r♥ ✐♥♣✉t va0.isTerminated() ✐❝ ④♥♦ ♦♥❣♦✐♥❣ va0.isTerminated() ⑥ ♦❝ {terminated()} r❡t✉r♥
❚❡r♠✐♥❛t✐♦♥ ❞❡t❡❝t✐♦♥ ❝❤❛♥♥❡❧ ✕ ✹ ❛t♦♠✐❝✐t② ❛ss✉♠♣t✐♦♥✿ ✐♥♣✉t ♣❛rts ❛♥❞ ♦✉t♣✉t ♣❛rts ♣r♦❣r❡ss ❛ss✉♠♣t✐♦♥ ♦♥❣♦✐♥❣ vj.tx ♥♦t ♦♥❣♦✐♥❣ vj.tx ❧❡❛❞s✲t♦ txhk,j.size ≥ i ❧❡❛❞s✲t♦ rxhk,j.size ≥ i ♦r ♥♦t ♦♥❣♦✐♥❣ vj.rx ♦♥❣♦✐♥❣ vj.inactive ❧❡❛❞s✲t♦ ♥♦t ♦♥❣♦✐♥❣ vj.inactive() (terminated() ❛♥❞ ♦♥❣♦✐♥❣ va0.isTerminated) ♥♦t ♦♥❣♦✐♥❣ va0.isTerminated ❧❡❛❞s✲t♦
Recommend
More recommend