الفرق بين الأولويات اللطيفة في أولويات Linux و RT

في Linux ، يتحكم المجدول في الدفق الذي يتم تنفيذه ومدة استخدامه. يجب معالجة متطلبين متضاربين: المدخلات / المخرجات والتوصيل الحسابي.

يعتمد ترتيب التنفيذ على السياسة والتخطيط لأولوية كل خيط. في الإصدار 2.2 من Linux ، يتم تطبيق سياسة الجدول. يوفر Linux 6 سياسات: SCHED_FIFO و SCHED_RR و SCHED_DEADLINE و SCHED_DEADLINE و SCHED_OTHER و SCHED_BATCH و SCHED_IDLE. تنقسم هذه السياسات إلى مجموعتين ، باستثناء SCHED_DEADLINE ؛ SCHED_OTHER و SCHED_IDLE و SCHED_BATCH تنتمي إلى السياسة العادية ، SCHED_FIFO و SCHED_RR في الوقت الحقيقي. مواضيع SCHED_DEADLINE هي مواضيع خاصة وذات أولوية.

تحتوي كل سلسلة رسائل على قيمة "Schedule_priority" ، والسمات ذات قيمة "Schedule_priority" أعلى من غيرها. تسمى أحيانًا Schedule_priority أولوية في الوقت الفعلي لأنها تُستخدم بشكل أساسي لتحديد ترتيب تنفيذ سلاسل الرسائل باستخدام سياسة الوقت الفعلي. قيم أولوية جدول تشغيل السياسة العادية هي 0 ، وتكون قيمة الموضوعات المستخدمة في الوقت الفعلي عادةً من 1 إلى 99. النظام. يمكن تعيين قيمة Sched_priority بواسطة وظيفة Sched_setscheduler جنبًا إلى جنب مع السياسة ويمكن التحقق منها بواسطة وظيفة Sched_getscheduler.

إذا كانت قيمة Sched_priority تتوافق مع التدفقات في الوقت الفعلي ، فإن سلسلة المحادثات الافتراضية لمؤشرات الترابط الأخرى تسمى قيمة جيدة. النطاق المفضل هو -20 (أولوية عالية) إلى +19 (أولوية منخفضة). يمكن تعيين قيمة المتعة من خلال وظيفة لطيفة أو وظيفة ضبط الأولويات والتحقق منها بواسطة وظيفة getpriority.

كيف ينفذ Linux سلاسل المحادثات في الوقت الفعلي وبما يتماشى مع أولوياتك المفضلة؟ في الوقت الفعلي ، لا توجد قيود على وقت التشغيل ، وينفذ Linux بشكل أساسي سلسلة رسائل ذات قيمة أعلى أولوية في الوقت الفعلي ، إما قبل إكمال سلسلة التنفيذ للتنفيذ الذاتي أو قبل استخدام سلسلة رسائل ذات أولوية أعلى. ومع ذلك ، غالبًا ما يسبب هذا مشاكل لأنه إذا بدأت التدفقات غير المرغوبة في الوقت الفعلي في العمل ولم تنتهي أبدًا ، فإن الطريقة الوحيدة لوقفها هي الانتقال إلى أولويات أخرى. لذلك ، منذ الإصدار 2.6.25 ، هناك ميزات أخرى لإيقاف البث غير المرغوب فيه في الوقت الفعلي ، مثل تقييد وقت التشغيل مسبقًا باستخدام RLMIT_RTTIME. ومع ذلك ، لا يوصى بالاستخدام الدقيق للوقت الفعلي لأن Linux لديه نظام جدولة ذكي يسمى "مخطط عادل عادل" (CFS) لعمليات البث البسيطة المقدمة في الإصدار 2.6.23 من نواة Linux. يحدد CFS مؤشر الترابط الذي سيتم تنفيذه وكم من الوقت.

تستخدم CFS نظام بيانات شجرة أحمر أسود ، وهو أحد الأشجار الثنائية ، للتخطيط العادل. لدى CFS جدول زمني لكل مهمة ، وتقوم CFS ببناء شجرة حمراء-سوداء من المهام في وقت التشغيل. يتم تحديد الشجرة لأداء المهمة بأقل وقت للتنفيذ. بعد التنفيذ ، تضيف CFS وقت التنفيذ إلى المهمة وتعيدها إلى الشجرة الحمراء السوداء وفقًا لوقت التنفيذ. هذا يسمح لك بأداء مهام النوم الطويلة بمجرد الحاجة إليها. في كل مرة تكمل CFS مهمة ما ، يجب عليها إعادة المهمة إلى الشجرة والبحث عن المهمة التالية بأقل وقت للتنفيذ. وهذا يتطلب إنشاء هياكل بيانات طويلة الأمد ، حتى في أسوأ الحالات. هذا هو أحد أسباب اعتماد شجرة حمراء. في الشجرة السوداء الحمراء ، تكون كل عقدة حمراء أو سوداء ، ويكون أطفال العقدة الحمراء دائمًا أسود. الأهم من ذلك أن كل مسار من العقدة المحددة إلى الجيل التالي يحتوي على نفس عدد العقد السوداء. وينتج عن ذلك سمة حاسمة للشجرة الحمراء السوداء ، حيث المسار من الجذر إلى أطول ورقة هو ضعف طول المسار من الجذر إلى أقرب ورقة ليس ضعف البحث ، يضمن أسوأ وقت للدخول. ، و O (log n) يتم حذفهما واستخدامهما لتحديث خطتهما لـ CFS.

الآن بعد أن عرفنا كيف تحدد CFS أمر التنفيذ الخاص بها ، ننتقل إلى كيفية تحديد CFS لكل وقت تنفيذ. يتم حساب كل وقت تنفيذ عن طريق حساب توازن 4 عوامل: وقت الانتظار المستهدف ، الحد الأدنى من التفاصيل ، العدد المتوقع للمهام ، والقيم السهلة للمهام. المهلة المستهدفة هي الوقت الذي يجب أن تكتمل فيه كل مهمة مرة واحدة على الأقل. الحد الأدنى من العمق هو أقصر وقت للتنفيذ ، أقل من وقت التنفيذ ، مما يؤدي إلى ارتفاع تكلفة تبديل السياق. بشكل أساسي ، يتم تقسيم المهلة المستهدفة في كل مهمة وفقًا للقيم المطلوبة بحيث تكون كل مهمة أقل من الحد الأدنى. ينتج عن الكمون المستهدف المرتفع أوقات تشغيل أطول ، خاصة بالنسبة للمهام ذات الأولوية العالية ، ويؤدي الحد الأقصى من الدقة إلى وقت تنفيذ متساوي بغض النظر عن القيم المفضلة.

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