أبعاد خفية في ساعة المتجه

ساعة المتجه هي بنية بيانات تُستخدم لتحديد الترتيب الجزئي للأحداث في نظام موزع و كشف انتهاكات السببية . تمامًا كما في طوابع زمنية Lamport ، تحتوي الرسائل بين العمليات على حالة الساعة المنطقية للعملية المرسلة. تتكون ساعة المتجه في نظام مكوّن من N عملية من مصفوفة /متجه، مكوّن من N ساعة منطقية ،تتكون ساعة واحدة لكل عملية؛ يتم الاحتفاظ بنسخة محلية "بأكبر القيم الممكنة" من مصفوفة الساعة العالمية في كل عملية.

نرمز إلى







V



C



i









{\displaystyle VC_{i}}



بساعة المتجهة التي تحتفظ بها العملية







i





{\displaystyle i}



، و تتم تحديثات الساعة على النحو التالي:



في البداية تكون جميع الساعات صفرًا.

في كل مرة تتعرض فيها عملية لحدث داخلي، فإنها تزيد من الساعة المنطقية الخاصة بها في المتجه بمقدار واحد. على سبيل المثال، عند وقوع حدث في العملية







i





{\displaystyle i}



، يتم تحديثه







V



C



i





[

i

]



V



C



i





[

i

]

+

1





{\displaystyle VC_{i}[i]\leftarrow VC_{i}[i]+1}



.

في كل مرة ترسل فيها عملية رسالة، فإنها تزيد من الساعة المنطقية الخاصة بها في المتجه بمقدار واحد (كما هو الحال في النقطة أعلاه، ولكن ليس مرتين لنفس الحدث)، ثم تقوم بإقران الرسالة بنسخة من متجهها الخاص وأخيرًا ترسل الزوج.

في كل مرة تتلقى فيها عملية زوج ساعة متجه الرسالة، فإنها تزيد من ساعتها المنطقية في المتجه بمقدار واحد وتقوم بتحديث كل عنصر في متجهها عن طريق أخذ الحد الأقصى للقيمة في ساعة متجهها الخاصة والقيمة في المتجه في الزوج المستقبل (لكل عنصر). على سبيل المثال، إذا كانت العملية









P



i









{\displaystyle P_{i}}



يتلقى رسالة







(

m

,

V



C



j





)





{\displaystyle (m,VC_{j})}



من









P



j









{\displaystyle P_{j}}



، فإنه يزيد أولاً الساعة المنطقية الخاصة به في المتجه بمقدار واحد







V



C



i





[

i

]



V



C



i





[

i

]

+

1





{\displaystyle VC_{i}[i]\leftarrow VC_{i}[i]+1}



ثم يقوم بتحديث متجهه بالكامل عن طريق الإعداد







V



C



i





[

k

]



max

(

V



C



i





[

k

]

,

V



C



j





[

k

]

)

,



k





{\displaystyle VC_{i}[k]\leftarrow \max(VC_{i}[k],VC_{j}[k]),\forall k}



.

قراءة المقال الكامل على ويكيبيديا ←