str t r

strt r r r - PowerPoint PPT Presentation

strt r r r r strt r v .acq() i address v .rel() 1 i n i


  1. ❉✐str✐❜✉t❡❞ ▲♦❝❦ ❙❡r✈✐❝❡ ❙❤❛♥❦❛r ❆♣r✐❧ ✶✽✱ ✷✵✶✹

  2. ❖✈❡r✈✐❡✇✿ ❉✐str✐❜✉t❡❞ ▲♦❝❦ ❙❡r✈✐❝❡ v .acq() i address v .rel() 1 i n i (e.g., mac, ip, url, ...) v vi vn 1 access system DistLockService( ... ) P❛r❛♠❡t❡r✿ s❡t ♦❢ ❛❞❞r❡ss❡s ❆❝❝❡ss s②st❡♠ ❛t ❡❛❝❤ ❛❞❞r❡ss s✐❞ r❡t✉r♥❡❞ ❛t ✐♥st❛♥t✐❛t✐♦♥ ❋✉♥❝t✐♦♥s ❛t ❛❞❞r❡ss j ✱ ❛ss✉♠✐♥❣ ❛❝❝❡ss s②st❡♠ vj ✐♥♣✉t vj.acq() ✿ ❛❝q✉✐r❡ ❧♦❝❦ ✐♥♣✉t vj.rel() ✿ r❡❧❡❛s❡ ❧♦❝❦ ❚❡r♠✐♥❛t✐♦♥ ❢✉♥❝t✐♦♥✭s✮✿ ❝❛♥ ❜❡ ❛❞❞❡❞

  3. ❙❡r✈✐❝❡ DistLockService(ADDR) ✕ ✶ ▼❛✐♥ ✐❝ {ADDR ♥♦t ❡♠♣t② } eating ← null ✴✴ ✉s❡r ✇✐t❤ ❧♦❝❦ ✐❢ ♥♦t ♥✉❧❧ usersj ← [] ✴✴ ✉s❡rs ❛t ❛❞❞r j vj ← sid() ✴✴ s✐❞ ♦❢ ❛❝❝❡ss s②st❡♠ ❛t j r❡t✉r♥ { vj } ✴✴ ♠❛♣ ♦❢ s✐❞s ❛t♦♠✐❝✐t② ❛ss✉♠♣t✐♦♥✿ ✐♥♣✉t ❛♥❞ ♦✉t♣✉t ♣❛rts ♣r♦❣r❡ss ❛ss✉♠♣t✐♦♥s thread u in vj.rel ❧❡❛❞s✲t♦ not u in vj.rel eating = null) ⇒ (eating � = null ❧❡❛❞s✲t♦ (u in usersj ❧❡❛❞s✲t♦ u = eating)

  4. ❙❡r✈✐❝❡ DistLockService(ADDR) ✕ ✷ v[j].acq() ✐❝ {eating � = mytid} ❛❞❞ mytid t♦ usersj ♦❝ {eating = null} eating ← mytid ✐♥♣✉t v[j].rel() ✐❝ {eating = mytid and ✴✴ ❝❛❧❧❡r ❛❝q✉✐r❡❞ ❧♦❝❦ ❛t j mytid in usersj} r❡♠♦✈❡ mytid ❢r♦♠ usersj ♦❝ {true}

  5. ■♥✈❡rs❡ ♦❢ ❞✐str✐❜✉t❡❞ ❧♦❝❦ s❡r✈✐❝❡ DistLockServiceInverse(ADDR, v) ♠❛✐♥✿ ... vj ... ♦✉t♣✉t doAcq(j) ✐♥♣✉t vj.acq() ✐❝ ♦❝ {...} ... vj.acq() ♦❝ ✐❝ {...} ... ♦✉t♣✉t doRel(j) ✐♥♣✉t vj.rel() ✐❝ ♦❝ {...} ... vj.rel() ♦❝ ✐❝ {...} ... ❛t♦♠✐❝✐t② ❛ss✉♠♣t✐♦♥✿ ... ♣r♦❣r❡ss ❛ss✉♠♣t✐♦♥ ❝♦♥❞✐t✐♦♥ {...}

  6. ❙♦♠❡ ♥❛✐✈❡ ✐♠♣❧❡♠❡♥t❛t✐♦♥s ♦✈❡r ✜❢♦ ❝❤❛♥♥❡❧ ❈❡♥tr❛❧✐③❡❞ s♦❧✉t✐♦♥ ✜①❡❞ ❛❝❝❡ss s②st❡♠✱ s❛② v0 ❝♦♥tr♦❧s ❧♦❝❦ acq ❛♥❞ rel ❝❛❧❧s s❡♥❞ ♠s❣s t♦ v0 v0 s❡r✈❡s acq ✲❝❛❧❧ ♠s❣s ✐♥ ✜❢♦ ♦r❞❡r ❚♦❦❡♥✲❝✐r❝✉❧❛t✐♥❣ s♦❧✉t✐♦♥ ✏t♦❦❡♥✑ ♠s❣ ❝②❝❧❡s t❤r♦✉❣❤ ❛❝❝❡ss s②st❡♠s ✇❤❡♥ ❛♥ ❛❝❝❡ss s②st❡♠ ❣❡ts t♦❦❡♥ ✐❢ ❧♦❝❛❧ ❤✉♥❣r② ✉s❡r r❡t✉r♥ ❛♥ acq ❝❛❧❧❀ ✇❛✐t ❢♦r rel ❝❛❧❧ ❢♦r✇❛r❞ t♦❦❡♥ t♦ ♥❡①t ❛❝❝❡ss s②st❡♠ ■❞❡❛❧ s♦❧✉t✐♦♥ r❡q✉❡st ❞✐st✉r❜s ♦♥❧② ♥♦♥✲t❤✐♥❦✐♥❣ ❛❝❝❡ss s②st❡♠s ❞✐str✐❜✉t❡❞ ♣❛t❤✲r❡✈❡rs❛❧ s♦❧✉t✐♦♥ ✴✴ ❝❤❛♣t❡r ✶✻

Recommend


More recommend