انعكاس الأولوية
في علوم الحاسوب ، يُعرف انعكاس الأولوية بأنه سيناريو في جدولة المهام ، حيث تُستبدل مهمة ذات أولوية عالية بمهمة ذات أولوية أقل بشكل غير مباشر، مما يعكس فعليًا أولويات المهام. وهذا يُخالف نموذج الأولوية الذي ينص على أنه لا يمكن منع أي مهمة من التنفيذ إلا بواسطة مهمة ذات أولوية أعلى. يحدث الانعكاس عندما يكون هناك تنازع على الموارد مع مهمة (ذات أولوية منخفضة) يتم مقاطعتها لاحقًا بواسطة مهمة ذات أولوية أعلى.
التركيبة
لنفترض وجود مهمتين، H و L ، ذات أولوية عالية ومنخفضة على التوالي، يمكن لأي منهما الحصول على استخدام حصري لمورد مشترك R. إذا حاولت H الحصول على R بعد أن حصلت عليه L ، فإنها ستتوقف حتى تتخلى L عن المورد. في نظام مصمم جيدًا، تتضمن مشاركة مورد حصري ( R في هذه الحالة) عادةً تخلي L عن R فورًا حتى لا تبقى H (المهمة ذات الأولوية الأعلى) متوقفة لفترات طويلة. مع ذلك، ورغم التصميم الجيد، من الممكن أن تصبح مهمة ثالثة M ذات أولوية متوسطة قابلة للتنفيذ أثناء استخدام L لـ R. عند هذه النقطة، وبما أن M ذات أولوية أعلى من L ، فإنها تقاطع L (لأن M لا تعتمد على R )، مما يمنع L من التخلي عن R فورًا، وبالتالي يمنع H - العملية ذات الأولوية الأعلى - من التنفيذ (أي أن H تعاني من توقف غير متوقع ناتج بشكل غير مباشر عن مهام ذات أولوية أقل مثل M ).
عواقب
في بعض الحالات، قد يحدث انعكاس الأولوية دون التسبب في ضرر فوري، حيث يمر تأخير تنفيذ المهمة ذات الأولوية العالية دون ملاحظة، وفي النهاية، تُحرر المهمة ذات الأولوية المنخفضة المورد المشترك. مع ذلك، توجد أيضًا العديد من الحالات التي قد يُسبب فيها انعكاس الأولوية مشاكل خطيرة. فإذا تُركت المهمة ذات الأولوية العالية محرومة من الموارد، فقد يؤدي ذلك إلى خلل في النظام أو تفعيل إجراءات تصحيحية مُحددة مسبقًا، مثل إعادة ضبط مؤقت المراقبة للنظام بأكمله. وتُعد المشكلة التي واجهتها مركبة الهبوط "مارس باثفايندر" عام 1997 [ 1 ] [ 2 ] مثالًا كلاسيكيًا على المشاكل الناجمة عن انعكاس الأولوية في الأنظمة الآنية .
قد يؤدي انعكاس الأولويات إلى انخفاض الأداء الملحوظ للنظام. عادةً ما تُصنّف المهام ذات الأولوية المنخفضة على أنها ذات أولوية منخفضة لعدم أهمية إنجازها بسرعة (على سبيل المثال، قد تكون مهمة معالجة دفعية أو نشاطًا غير تفاعلي). وبالمثل، تُصنّف المهام ذات الأولوية العالية على أنها ذات أولوية عالية لأنها غالبًا ما تخضع لقيود زمنية صارمة - فقد تُقدّم بيانات لمستخدم تفاعلي، أو تخضع لضمانات استجابة فورية. ولأن انعكاس الأولويات يؤدي إلى تنفيذ مهمة ذات أولوية منخفضة تُعيق تنفيذ المهمة ذات الأولوية العالية، فقد يُؤدي ذلك إلى انخفاض استجابة النظام أو حتى انتهاك ضمانات وقت الاستجابة.
يمكن أن تحدث مشكلة مماثلة تسمى تبادل المواعيد النهائية ضمن جدولة الموعد النهائي الأول (EDF).
الحلول
عُرفت هذه المشكلة منذ سبعينيات القرن الماضي. نشر لامبسون وريديل [ 3 ] إحدى أوائل الأبحاث التي أشارت إلى مشكلة انعكاس الأولوية. كانت أنظمة مثل نواة يونكس تعالج هذه المشكلة بالفعل باستخدام الدالة splx(). لا توجد طريقة مضمونة للتنبؤ بالوضع، ولكن توجد حلول عديدة، من أكثرها شيوعًا ما يلي:
- تعطيل جميع المقاطعات لحماية الأقسام الحرجة
- عند استخدام تعطيل المقاطعات لمنع انعكاس الأولوية، لا توجد سوى أولويتين: المقاطعات القابلة للمقاطعة ، والمقاطعات المعطلة. وبدون أولوية ثالثة، يصبح الانعكاس مستحيلاً. ولأن هناك جزءًا واحدًا فقط من بيانات القفل (بت تمكين المقاطعة)، فإن سوء ترتيب القفل مستحيل، وبالتالي لا يمكن أن تحدث حالات جمود. ولأن المناطق الحرجة تعمل دائمًا حتى الاكتمال، فلا تحدث حالات تعليق. تجدر الإشارة إلى أن هذا لا ينجح إلا إذا تم تعطيل جميع المقاطعات. إذا تم تعطيل مقاطعة جهاز معين فقط، فسيعود انعكاس الأولوية من خلال تحديد أولويات المقاطعات في الجهاز. في الإصدارات المبكرة من نظام يونكس، كانت سلسلة من الأوامر الأولية المسماة splx(0) ... splx(7) تعطل جميع المقاطعات حتى الأولوية المحددة. من خلال اختيار أعلى أولوية لأي مقاطعة دخلت القسم الحرج، يمكن حل مشكلة انعكاس الأولوية دون تعطيل جميع المقاطعات. تم تعيين الحدود القصوى بترتيب رتيب ، أي أن الأجهزة الأبطأ لها أولويات أقل.
- في أنظمة المعالجات المتعددة، يُستخدم أسلوب بسيط يُعرف بقفل العلم المشترك الأحادي . يوفر هذا الأسلوب علمًا واحدًا في الذاكرة المشتركة تستخدمه جميع المعالجات لقفل جميع الأقسام الحرجة بين المعالجات باستخدام آلية انتظار نشط . تُعدّ الاتصالات بين المعالجات مكلفة وبطيئة في معظم أنظمة المعالجات المتعددة، لذا تُصمّم معظم هذه الأنظمة لتقليل الموارد المشتركة. ونتيجةً لذلك، يُجدي هذا الأسلوب نفعًا في العديد من الأنظمة العملية. تُستخدم هذه الأساليب على نطاق واسع في الأنظمة المدمجة البسيطة ، حيث تُقدّر لموثوقيتها وبساطتها واستهلاكها المنخفض للموارد. تتطلب هذه الأساليب أيضًا برمجةً ذكيةً للحفاظ على قصر مدة الأقسام الحرجة. يرى العديد من مهندسي البرمجيات أنها غير عملية في الحواسيب العامة.
- بروتوكول سقف الأولوية
- في بروتوكول سقف الأولوية ، تتمتع عملية القفل المشترك (التي تُشغّل رمز نظام التشغيل) بأولوية خاصة بها (عالية)، تُخصص لمهمة قفل القفل. يعمل هذا البروتوكول بكفاءة، شريطة ألا تتجاوز أولوية المهام الأخرى ذات الأولوية العالية التي تحاول الوصول إلى القفل أولوية السقف.
- الميراث ذو الأولوية
- بموجب سياسة توريث الأولوية ، عندما يتعين على مهمة ذات أولوية عالية انتظار مورد مشترك مع مهمة أخرى ذات أولوية منخفضة قيد التنفيذ، تُمنح المهمة ذات الأولوية المنخفضة مؤقتًا أولوية المهمة ذات الأولوية الأعلى المنتظرة طوال مدة استخدامها للمورد المشترك، مما يمنع المهام ذات الأولوية المتوسطة من مقاطعة المهمة ذات الأولوية المنخفضة (أصلاً)، وبالتالي التأثير على المهمة ذات الأولوية العالية المنتظرة أيضًا. بمجرد تحرير المورد، تستأنف المهمة ذات الأولوية المنخفضة عملها بمستوى أولويتها الأصلي.
- تعزيز عشوائي
- تُرفع أولوية المهام الجاهزة التي تحتفظ بالأقفال بشكل عشوائي حتى تخرج من القسم الحرج. استُخدم هذا الحل في نظام التشغيل مايكروسوفت ويندوز [ 4 ] إلى أن استُبدل بتقنية AutoBoost، وهي شكل من أشكال توريث الأولوية. [ 5 ]
- تجنب الحظر
- لأن انعكاس الأولوية ينطوي على قيام مهمة ذات أولوية منخفضة بحظر مهمة ذات أولوية عالية، فإن إحدى طرق تجنب انعكاس الأولوية هي تجنب الحظر، على سبيل المثال، باستخدام خوارزميات غير حظرية مثل القراءة والنسخ والتحديث .
انظر أيضاً
مراجع
- ↑ غلين ريفز، ما حدث بالفعل على المريخ ، فريق باثفايندر التابع لمختبر الدفع النفاث ، تم الاطلاع عليه بتاريخ 4 يناير 2019
- ↑ شرح لمشكلة انعكاس الأولوية التي واجهتها مركبة مارس باثفايندر (ملف PDF) ، تم الاطلاع عليه بتاريخ 4 يناير 2019
- ↑ لامبسون، ب؛ ريديل، د. (يونيو 1980). "تجربة مع العمليات والمراقبين في MESA". اتصالات ACM . 23 (2): 105-117 . CiteSeerX 10.1.1.46.7240 . doi : 10.1145/358818.358824 . S2CID 1594544 .
- ↑ كوهين، آرون؛ وودرينج، مايك (1998)، برمجة Win32 متعددة الخيوط ، أورايلي وشركاه، ص. 30،
ويندوز إن تي يحل مشكلة انعكاس الأولوية عن طريق تعزيز الأولويات الديناميكية للخيوط الجاهزة للتشغيل بشكل عشوائي.
- ↑ "انعكاس الأولوية (ويندوز)" . تم الاطلاع عليه بتاريخ 12 أكتوبر 2024 .
روابط خارجية
- التحكم في التزامن
- أخطاء برمجية
- الأنظمة المدمجة
