El مفهوم نظام الوقت الحقيقي إنه ليس شيئًا تم التفكير فيه في السنوات الأخيرة في Linux، منذ ظهور فكرة ذلك بدأت منذ ما يقرب من 20 عامًا، وبالضبط في عام 2005 كجزء من مشروع "Realtime-Preempt" ("-rt") مع تطوير وضع PREEMPT_RT لنواة Linux.
بالنسبة لأولئك الذين لا يعرفون PREEMPT_RT، يجب أن يعرفوا ذلك إنها رقعة لنواة لينكسويحول نظام التشغيل إلى نظام في الوقت الحقيقي (في الوقت الحالى). الهدف الرئيسي من PREEMPT_RT هو تقليل زمن الوصول وضمان القدرة على التنبؤ في تنفيذ المهام، وهو أمر بالغ الأهمية في التطبيقات التي تتطلب استجابات سريعة.
بكلمات أبسط، يمكننا أن نقول أن PREEMPT_RT يسمح بمقاطعة جميع أجزاء النواة تقريبًا، مما يقلل من الكمون. على عكس النواة القياسية، لا يمكن مقاطعة جميع الأقسام، مما قد يسبب تأخيرًا في أوقات الاستجابة.
منذ عام 2015 أصبح المشروع تحت إشراف مؤسسة Linux وحتى الآن، تم تقديم تنفيذ وضع PREEMPT_RT في شكل تصحيحات خارجية. بناءً على هذه التصحيحات، يتم توزيع توزيعات مثل قامت RHEL وSUSE وUbuntu بإنشاء إصدارات في الوقت الفعلي لمنتجاتها، هناك طلب كبير عليها في قطاعات مثل الأنظمة المالية وأجهزة معالجة الصوت والفيديو وأنظمة الطيران والطب والروبوتات والاتصالات والتطبيقات الصناعية، حيث من الضروري ضمان أوقات استجابة يمكن التنبؤ بها للأحداث.
En 2019 بدأت عملية الترويج من التصحيحات التي تم تطويرها في مشروع PREEMPT_RT إلى نواة لينكس الرئيسية. في إصدار kernel 5.3، تم تضمين خيار PREEMPT_RT في ملف التكوين لتمكين وضع الوقت الحقيقي.
توجد بتات printk المطلوبة لـ PREEMPT_RT في نظام التشغيل Linux التالي. هذا كانت آخر عقبة معروفة أمام PREEMPT_RT. قائمة انتظار RT لديها وأيضًا "وحدة التحكم الذرية" لـ UART 8250 والتي لم يتم طرحها بعد لينكس التالي. وهذا يعني سلوك "وحدة التحكم القديمة" كما هو الحال في عدم الطباعة منها السياق الذري في حالات الطوارئ. وحدة التحكم 8250 UART هي الوحيدة والذي يوفر دعم "وحدة التحكم الذرية" اليوم.
جميع هذا العمل على وشك أن يؤتي ثماره، نظرًا لأن التكامل الكامل للتغييرات الضرورية قد استغرق خمس سنوات ويقترب من الاكتمال، حيث أنه من المتوقع أنه في الإصدار 6.12، يمكن تجميع النواة في وضع PREEMPT_RT دون الحاجة إلى تطبيق تصحيحات إضافية.
ويذكر أن العقبة الأخيرة الذي حال دون تمكين PREEMPT_RT هو عدم وجود دعم الإخراج الذري غير المحظور باستخدام وظيفة printk. هذه الوظيفة كانت بالفعل المعتمدة في فرع لينكس التالي. بالإضافة إلى ذلك، هناك وحدة تحكم ذرية غير محظورة في انتظار التنفيذ لوحدة التحكم 8250 UART، والتي يمنع غيابها حاليًا إخراج رسائل الطوارئ إلى وحدة التحكم من التعليمات البرمجية المنفذة في السياقات الذرية.
مع دمج وحدات بت printk، يمكن تمكين PREEMPT_RT على X86 وARM64 وريسك-V. تطلبت هذه البنى الثلاثة المدمجة تغييرات على مر السنين.
سنوات، مما تركني في وضع لا يوجد فيه أي تغييرات أساسية في
قائمة الانتظار التي من شأنها أن تؤثر عليهم. لدى ARM وPOWERPC بعض التصحيحات الأساسية المتبقية...
مطورو Linux kernel أعلنت عن دمج أحدث التغييرات الضرورية في فرع Linux-next، والذي سيتم استخدامه لتجميع الإصدار 6.12. ستسمح هذه التغييرات بتجميع النواة باستخدام خيار PREEMPT_RT، الذي يقدم إمكانيات في الوقت الفعلي.
بمجرد قبول هذه التغييرات على الفرع الرئيسي، وضع PREEMPT_RT وسيكون متاحًا لمعماريات X86 وARM64 وRISC-V. سيتم إضافة دعم لبنيتي ARM وPOWERPC لاحقًا، حيث لم يتم دمج التصحيحات الضرورية بشكل كامل بعد.
ومن الجدير بالذكر أن التغييرات المقترحة ليست نهائية بعد ومن الممكن أنه إذا لم يصل PREEMPT_RT إلى الفرع 6.12، فسيتم دمجه حتى العام المقبل في الإصدار 6.13.
وأخيرا، إذا كنت مهتمًا بمعرفة المزيد عنها، يمكنك التحقق من التفاصيل في الرابط التالي.