الميراث ذو الأولوية

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

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

مثال

لنأخذ ثلاث وظائف بعين الاعتبار:

اسم الوظيفةأولوية
حعالي
مواسطة
لقليل

لنفترض أن كلاً من H و L يحتاجان إلى مورد مشترك. إذا حصل L على هذا المورد (ودخل قسمًا حرجًا)، ثم احتاج H إليه لاحقًا، فسيتوقف H حتى يُحرره L (ويخرج من قسمه الحرج). بدون توريث الأولوية، قد تُقاطع العملية M العملية L أثناء القسم الحرج وتؤخر اكتمالها، مما يؤدي فعليًا إلى مقاطعة العملية M ذات الأولوية المنخفضة للعملية H ذات الأولوية العالية بشكل غير مباشر. هذا خطأ في عكس الأولوية .

مع خاصية توريث الأولوية، سينفذ البرنامج L قسمه الحرج بأولوية البرنامج H العالية كلما كان H محجوزًا على المورد المشترك. ونتيجة لذلك، لن يتمكن البرنامج M من مقاطعة L وسيُحظر. أي أن البرنامج M ذو الأولوية الأعلى يجب أن ينتظر تنفيذ القسم الحرج للبرنامج L ذي الأولوية الأقل، لأن L قد ورث أولوية H. عندما يخرج L من قسمه الحرج، يستعيد أولويته الأصلية (المنخفضة) ويُفعّل H (الذي كان محجوزًا بواسطة L). يقوم H، ذو الأولوية العالية، بمقاطعة L ويكمل تنفيذه. وهذا يُمكّن M وL من استئناف التنفيذ بالتتابع وإكماله دون انعكاس الأولوية.

أنظمة التشغيل التي تدعم التوريث ذي الأولوية

انظر أيضاً

مراجع