❆ ❙✐♥❣❧❡✲❈♦♣② ❉✐str✐❜✉t❡❞ ❙❤❛r❡❞ ▼❡♠♦r② ❙❤❛♥❦❛r ❏✉♥❡ ✸✱ ✷✵✶✹
❖✉t❧✐♥❡ s❝♦♣②✲❞s♠ ♣r♦❣r❛♠ ❙✐♥❣❧❡✲❈♦♣② ❉✐str✐❜✉t❡❞ ❙❤❛r❡❞ ▼❡♠♦r② ■♠♣❧❡♠❡♥t❛t✐♦♥ Pr♦✈✐♥❣ t❤❡ ✐♠♣❧❡♠❡♥ts ❝♦♥❞✐t✐♦♥s
❖✈❡r✈✐❡✇ s❝♦♣②✲❞s♠ ♣r♦❣r❛♠ Pr♦❣r❛♠ DsmSCopyDist ✿ ✐♠♣❧❡♠❡♥ts ❝♦❤❡r❡♥t ❞s♠ ✉s✐♥❣ ♦❜❥❡❝t✲tr❛♥s❢❡r s❡r✈✐❝❡ st❛rts ♦❜❥✲tr❛♥s❢❡r s❡r✈✐❝❡ ♦✈❡r ❣✐✈❡♥ ❛❞❞rs st❛rts DsmSCopy s②st❡♠ ❛t ❡✈❡r② ❛❞❞r ♦❢ ♦❜❥✲tr❛♥s❢❡r s❡r✈✐❝❡ ❊❛❝❤ DsmSCopy s②st❡♠ ❤♦❧❞s ❛ s✉❜s❡t ♦❢ ♣❛❣❡s ❢♦r ✐ts ✉s❡r ■♥✐t✐❛❧❧②✱ ♣❛❣❡s ❛r❡ ♣❛rt✐t✐♦♥❡❞ ❛♠♦♥❣st DsmSCopy s②st❡♠s ❲❤❡♥ ✉s❡r ❛tt❡♠♣ts ❛❝❝❡ss t♦ ❛ ♣❛❣❡ ✐❢ ♣❛❣❡ ✐s ♥♦t ❧♦❝❛❧✱ ✉s❡ ♦❜❥✲tr❛♥s❢❡r s❡r✈✐❝❡ t♦ ♦❜t❛✐♥ ♣❛❣❡ ✐❢ ♣❛❣❡ ✐s ❧♦❝❛❧✱ ❛❝❝❡ss ♣❛❣❡ ❛s ✉s✉❛❧
❉✐str✐❜✉t❡❞ ♣r♦❣r❛♠ s❝♦♣②✲❞s♠ ♣r♦❣r❛♠ ♣r♦❣r❛♠ DsmSCopyDist ( ADDR, PNO, PVAL, { initPagesj } ) // initPagesj ✿ ✐♥✐t✐❛❧ ♣❛❣❡ ♥✉♠❜❡rs ❛t ❛❞❞r j { wj } ← st❛rt ObjTransferService ( ADDR, PNO, PVAL, initPages ) ❢♦r j ✐♥ ADDR vj ← st❛rt DsmSCopy ( PNO, PVAL, initPagesj, wj) r❡t✉r♥ { vj } ■♥♣✉t ❢♥s✿ vj ✳r❡❛❞✭♣♥✮✱ vj ✳✇r✐t❡✭♣♥✱ ♣✈✮ ■♠♣❧❡♠❡♥ts DsmSeqConService ( ADDR, PNO, PVAL )
Pr♦❣r❛♠ DsmSCopy ✕ ✶ s❝♦♣②✲❞s♠ ♣r♦❣r❛♠ P❛r❛♠❡t❡rs✿ PNO ✱ PVAL ✱ initPagesj ✱ wj // ♥♦t❡✿ ♥♦ ❛❞❞rs ■♥♣✉t ❢♥s✿ ♠②s✐❞✳r❡❛❞✭♣♥✮✱ ♠②s✐❞✳✇r✐t❡✭♣♥✱ ♣✈✮ ▲♦❝❛❧ ❢♥s✿ ❞♦❘①❘❡q✭✮ // r❝✈s r❡qs ❢r♦♠ ♦❜❥✲①❢r s❡r✈✐❝❡ ❖✉t♣✉t ❝❛❧❧s✿ wj ✳❛❝q✭♣♥✮✱ wj ✳r❡❧✭♣♥✱ ♣✈✮✱ wj ✳r①❘❡q✭✮ ▼❛✐♥ pgVal ✿ ♠❛♣ <PNO, PVAL> // pn ✲❡♥tr② ✐✛ ♣❛❣❡ pn ❧♦❝❛❧ pgValpn ← ✵✱ ❢♦r pn ✐♥ initPagesj startThread ( doRxReq() )
Pr♦❣r❛♠ DsmSCopy ✕ ✷ s❝♦♣②✲❞s♠ ♣r♦❣r❛♠ ✐♥♣✉t ♠②s✐❞✳r❡❛❞ (pn) ✿ ❛✇❛✐t ✭tr✉❡✮ ✐❢ ✭ pgVal ❤❛s pn ❡♥tr②✮ r❡t✉r♥ pgValpn • tpv ← wj ✳❛❝q (pn) ❛✇❛✐t ✭tr✉❡✮ pgValpn ← tpv r❡t✉r♥ pgValpn
Pr♦❣r❛♠ DsmSCopy ✕ ✸ s❝♦♣②✲❞s♠ ♣r♦❣r❛♠ ✐♥♣✉t ♠②s✐❞✳✇r✐t❡ (pn, pv) ✿ ❛✇❛✐t ✭tr✉❡✮ ✐❢ ✭ pgVal ❤❛s pn ❡♥tr②✮ pgValpn ← pv r❡t✉r♥ • tpv ← wj ✳❛❝q (pn) ❛✇❛✐t ✭tr✉❡✮ pgValpn ← tpv pgValpn ← pv r❡t✉r♥
Pr♦❣r❛♠ DsmSCopy ✕ ✹ s❝♦♣②✲❞s♠ ♣r♦❣r❛♠ ❢✉♥❝t✐♦♥ doRxReq() ✿ ✇❤✐❧❡ ✭tr✉❡✮ • pn ← wj ✳r①❘❡q () ✐❝ ④ pn ✐♥ PNO ⑥ ❛✇❛✐t ✭ pn ✲❡♥tr② ✐♥ pgVal ✮ wj ✳r❡❧ (pn, pgValpn) r❡♠♦✈❡ pn ✲❡♥tr② ❢r♦♠ pgVal ❛t♦♠✐❝✐t② ❛ss✉♠♣t✐♦♥✿ ❛✇❛✐t ♣r♦❣r❡ss ❛ss✉♠♣t✐♦♥✿ ✇❡❛❦ ❢❛✐r♥❡ss ❢♦r ❛❧❧ t❤r❡❛❞s
❖✉t❧✐♥❡ s❝♦♣②✲❞s♠ ❛♥❛❧②s✐s ❙✐♥❣❧❡✲❈♦♣② ❉✐str✐❜✉t❡❞ ❙❤❛r❡❞ ▼❡♠♦r② ■♠♣❧❡♠❡♥t❛t✐♦♥ Pr♦✈✐♥❣ t❤❡ ✐♠♣❧❡♠❡♥ts ❝♦♥❞✐t✐♦♥s
❆♥❛❧②s✐s ♦✈❡r✈✐❡✇ s❝♦♣②✲❞s♠ ❛♥❛❧②s✐s ❚♦ ♣r♦✈❡✿ DsmSCopyDist ✐♠♣❧❡♠❡♥ts DsmSeqConService ❉❡✜♥❡ ♣r♦❣r❛♠ Z ♦❢ ✐♠♣❧❡♠❡♥t❛t✐♦♥ ❛♥❞ s❡r✈✐❝❡ ✐♥✈❡rs❡ si ■❞❡♥t✐❢② ❡✛❡❝t✐✈❡ ❛t♦♠✐❝✐t② ❜r❡❛❦♣♦✐♥ts // • ■❞❡♥t✐❢② ❛ss❡rt✐♦♥s A t♦ ❤♦❧❞ Pr♦✈❡ Z s❛t✐s✜❡s A
❖✉t❧✐♥❡ ❩ s❝♦♣②✲❞s♠ ❛♥❛❧②s✐s ❙✐♥❣❧❡✲❈♦♣② ❉✐str✐❜✉t❡❞ ❙❤❛r❡❞ ▼❡♠♦r② ■♠♣❧❡♠❡♥t❛t✐♦♥ Pr♦✈✐♥❣ t❤❡ ✐♠♣❧❡♠❡♥ts ❝♦♥❞✐t✐♦♥s Pr♦❣r❛♠ ❩ ♦❢ ✐♠♣❧❡♠❡♥t❛t✐♦♥ ❛♥❞ s❡r✈✐❝❡ ✐♥✈❡rs❡ ❙❛❢❡t② ❛♥❛❧②s✐s Pr♦❣r❡ss ❛♥❛❧②s✐s
■♠♣❧❡♠❡♥t❛t✐♦♥ ✰ s❡r✈✐❝❡ ✐♥✈❡rs❡ ✕ ✶ ❩ s❝♦♣②✲❞s♠ ❛♥❛❧②s✐s P❛r❛♠❡t❡rs✿ ADDR ✱ PNO ✱ PVAL ✱ initPages DsmSCopy ❛t j ✿ DsmSeqConServiceInverse ✿ j.pgVal ✐❝ { · · · } startThread ( doRxReq() ) α ← [] // ✇❝❛❧❧s✱ rr❡ts
■♠♣❧❡♠❡♥t❛t✐♦♥ ✰ s❡r✈✐❝❡ ✐♥✈❡rs❡ ✕ ✷ ❩ s❝♦♣②✲❞s♠ ❛♥❛❧②s✐s ✐♥♣✉t j ✳r❡❛❞ (pn) ✿ doRead(j,pn) ❛✇❛✐t ✭tr✉❡✮ ♦❝ { ♥♦ ♦♥❣♦✐♥❣ j.read(.) ♦r j.write(.) ✐❢ ✭ pgValpn ❡①✐sts✮ ❜✶✿ r❡t✉r♥ pgValpn ♣✈ ← ❥✳r❡❛❞✭♣♥✮ • tpv ← wj ✳❛❝q (pn) ✐❝ { seqConsistent( α ◦ [[RRET , j, pn, pv]])} ❛✇❛✐t ✭tr✉❡✮ pgValpn ← tpv α ✳❛♣♣❡♥❞ ([[RRET , j, pn, pv]])} ❜✷✿ r❡t✉r♥ pgValpn
■♠♣❧❡♠❡♥t❛t✐♦♥ ✰ s❡r✈✐❝❡ ✐♥✈❡rs❡ ✕ ✸ ❩ s❝♦♣②✲❞s♠ ❛♥❛❧②s✐s ✐♥♣✉t j ✳✇r✐t❡ (pn, pv) ✿ doWrite(j,pn) ❛✇❛✐t ✭tr✉❡✮ ♦❝ { ♥♦ ♦♥❣♦✐♥❣ j.read(.) ♦r j.write(.) ✐❢ ✭ pgValpn ❡①✐sts✮ pgValpn ← pv α ✳❛♣♣❡♥❞ ([[WCALL, j, pn, pv]])} ❜✸✿ r❡t✉r♥ j ✳✇r✐t❡ (pn, pv) ❜✹✿ • tpv ← wj ✳❛❝q (pn) ✐❝ { tr✉❡ } ❛✇❛✐t ✭tr✉❡✮ pgValpn ← tpv pgValpn ← pv ❜✺✿ r❡t✉r♥
■♠♣❧❡♠❡♥t❛t✐♦♥ ✰ s❡r✈✐❝❡ ✐♥✈❡rs❡ ✕ ✹ ❩ s❝♦♣②✲❞s♠ ❛♥❛❧②s✐s ❢✉♥❝t✐♦♥ doRxReq() ✿ ... ❛t♦♠✐❝✐t② ❛ss✉♠♣t✐♦♥✿ ... ❛t♦♠✐❝✐t② ❛ss✉♠♣t✐♦♥✿ ... ♣r♦❣r❡ss ❛ss✉♠♣t✐♦♥✿ ... ♣r♦❣r❡ss ❝♦♥❞✐t✐♦♥✿ ... ObjTransferService ( ADDR, PNO, PVAL, initPages )
❖✉t❧✐♥❡ s❛❢❡t② s❝♦♣②✲❞s♠ ❛♥❛❧②s✐s ❙✐♥❣❧❡✲❈♦♣② ❉✐str✐❜✉t❡❞ ❙❤❛r❡❞ ▼❡♠♦r② ■♠♣❧❡♠❡♥t❛t✐♦♥ Pr♦✈✐♥❣ t❤❡ ✐♠♣❧❡♠❡♥ts ❝♦♥❞✐t✐♦♥s Pr♦❣r❛♠ ❩ ♦❢ ✐♠♣❧❡♠❡♥t❛t✐♦♥ ❛♥❞ s❡r✈✐❝❡ ✐♥✈❡rs❡ ❙❛❢❡t② ❛♥❛❧②s✐s Pr♦❣r❡ss ❛♥❛❧②s✐s
❆ss❡rt✐♦♥s t♦ ❡st❛❜❧✐s❤ s❛❢❡t② s❝♦♣②✲❞s♠ ❛♥❛❧②s✐s ❚♦ s❛t✐s❢② s❡r✈✐❝❡✱ ♥❡❡❞ t♦ ♣r♦✈❡ ❩ s❛t✐s✜❡s A ✶ t❤r❡❛❞ ❛t si ✳❞♦❘❡❛❞ (j,pn) ✳✐❝ A ✶ : ■♥✈ ⇒ seqConsistent ( α ◦ [[RRET , j, pn, pv]]) A ✶ ❡q✉✐✈❛❧❡♥t t♦ ■♥✈ B ✶ // ✇❝❛❧❧ ♣r❡s❡r✈❡s s❡q ❝♦♥s✐st❡♥❝② B ✶ : seqConsistent ( α )
Pr♦♦❢ ✕ ✶ s❛❢❡t② s❝♦♣②✲❞s♠ ❛♥❛❧②s✐s ❉❡✜♥❡ ❛✉①✐❧✐❛r② ✈❛r β st Z s❛t✐s✜❡s ■♥✈ B ✷ ✕ B ✸ B ✷ : ❢♦r❛❧❧ (j ✿ [[., j, ., .] ✐♥ β ] = [[., j, ., .] ✐♥ α ])) B ✸ : sequential( β ) ❈❛♥❞✐❞❛t❡✿ β = β S ◦ β T // st❛❜❧❡ ◦ tr❛♥s✐❡♥t ✇❤❡♥ [.,j,pn,pv] ✐s ❛♣♣❡♥❞❡❞ t♦ α ❛♣♣❡♥❞ ✐t t♦ β S ✐❢ j.pgValpn ❡①✐sts // ❛t ❜✶✱ ❜✷✱ ❜✸ ❛♣♣❡♥❞ ✐t t♦ β T ♦✴✇ // ❛t ❜✹ ✇❤❡♥ j.write(pn,pv) ❝❛❧❧ ❜❡❝♦♠❡s ✉♥❜❧♦❝❦❡❞ r❡♠♦✈❡ ✐ts ❡♥tr② ❢r♦♠ β T ❛♥❞ ❛♣♣❡♥❞ t♦ β S // ❛t ❜✺ ❙✉✣❝✐❡♥t t♦ ♣r♦✈❡ ■♥✈ B ✷ ✕ B ✸
Recommend
More recommend