ما هي أنظمة تشغيل الزمن الحقيقي؟
المعلوماتية >>>> برمجيات
تختلفُ هذه المتطلبات باختلاف المكونات الصلبة التي يجب على نظام التشغيل إدارتها، وباختلاف خصائص البرمجيات التي يجب عليه تشغيلها. وبالتالي، يمكن التمييزُ بين أنواع أنظمة التشغيل وتصنيفها كأنظمة تشغيل الحواسيب الشخصية، وأنظمة تشغيل الهواتف المحمولة، وأنظمة تشغيل الأنظمة المضمّنة (Embedded Systems)، وغيرها.
تعـدُّ أنظمة تشغيل الزمن الحقيقي (Real Time Operating Systems) إحدى أهمِّ هذه التصنيفات لما لها من دور أساسي في تشغيل العديد من الآلات والأجهزة التي لا غنى لنا عنها في حياتنا اليومية. بالإضافة إلى قدرة هذه الأنظمة على تشغيل البرمجيات المطلوبة، تتميزُ بإمكانية توفير الدقة الزمنية في التنفيذ، بمعنى أنها قادرة على ضمان ربط إنهاء تنفيذ برمجية أو مهمة معينة بفاصل زمني أو بلحظة زمنية معينة. تعد هذه الميزة ذات أهمية خاصة في العديد من التطبيقات التي يؤدي فيها أيُّ تأخير في تنفيذ البرنامج أو أي تأخير في زمن الاستجابة إلى نتائجَ سلبية على النظام، والتي قد تكون خطيرة أو كارثية في بعض الأحيان كأنظمة التحكم الآلية في الآلات الصناعية وفي وسائط النقل المختلفة.
يمكن القول أن نظام تشغيل الزمن الحقيقي هو نظام تشغيل يأخذ بعين الاعتبار القيود الزمنية، فهو يتميز بأن لديه علماً مسبقاً بالوقت الذي يحتاج إليه لإنجاز العمليات المختلفة التي يقوم بتنفيذها، أو على الأقل سيكون قادراً على ضمان الحد الأقصى لزمن التنفيذ والاستجابة وإعطاء النتائج لهذه العمليات. ولكن، لا بد هنا من التمييز بين نوعين من أنظمة الزمن الحقيقي بناءً على درجة الحساسية الزمنية لهذه الأنظمة.
النوع الأول: أنظمة الزمن الحقيقي ذات القيود الزمنية الصارمة (Hard Real-Time Systems):
تتميز هذه الأنظمة بحساسيتها الشديدة للعامل الزمني، إذ يعدُّ أي خرق للقيود الزمنية المفروضة مرفوضاً وغيرَ مقبول، وبالتالي فإن تنفيذ العملية المطلوبة يعـدُّ فاشلاً إذا تجاوزت مدة التنفيذ القيدَ الزمني المحدد، حتى لو كانت نتائج هذا التنفيذ صحيحة.
يوجد هذا النوع من أنظمة الزمن الحقيقي في العديد من الأنظمة المضمّنة، كأنظمة المراقبة في الطائرات، وأنظمة التحكم بالروبوتات والآلات وغيرها من الأنظمة التي غالباً ما تتصف المهام التي تقوم بها بالحرجة وبارتباطها بعوامل الوثوقية والسلامة والأمان. لذلك فإن أي تأخير قد يعني انهيارَ النظام أو أضراراً مادية كبيرة أو حتى خسائر في الأرواح.
على سبيل المثال، أثناء قيادة السيارة، يجبُ عرض السرعة وكمية الوقود في السيارة على شاشة المقاييس بالزمن الحقيقي، وأن تخضع لقيود زمنية للحفاظ على سلامة السائق. كما أن عملية الضغط على المكابح يجب أن تؤدي إلى توقف السيارة بتأخير زمني محدد وإلا فإن السيارة قد تصطدم وقد يسبب هذا الحدث كوارث. كذلك نظام التحكم بالوسادة الهوائية الذي يجب أن يفعّل عند اصطدام السيارة، وذلك أيضاً بتأخير زمني محدد بشكل صارم يضمن التقليل من مخاطر الاصطدام .
مثال آخر هو أنظمة الملاحة التي تساعد على حفظ توازن الطائرة أثناء الطيران، إذ يتمُّ وضع حساس لتحديد الاتجاه يُسمّى الـ"Gyroscope"، والذي يقوم بالمحافظة على توجيه الطائرة بتفاعله مع الحساسات والمكونات الأخرى. حيث يخضع هذا التفاعل إلى قيود زمنية مختلفة ومرتبطة بهذه المكونات. فمثلاً، لحساب السرعة الحقيقية للطائرة يتم جلب نبضات التسارع اعتماداً على الإحداثيات (X، Y، Z) بمعدل مرة كلَّ 5 ميلي ثانية، ويتم أخذ قراءات الـ"Gyroscope" للزوايا بمعدل مرة كل 40 ميلي ثانية، وتتمُّ قراءة درجة الحرارة بمعدل مرة كل ثانية، ثم يتم حساب السرعة الحقيقية بمعدل مرة كل 40 ميلي ثانية، وأخيراً يتم عرضها على الشاشة بمعدل مرة كل ثانية، وبالطبع لابد لنظام التشغيل أن يضمن مزامنةَ هذه المهام وتحقيقَ القيود الزمنية المرتبطة بها، حيث أن أي تأخير أو فشل في جلب القراءات والتعامل معها قد يؤدي إلى فشل في حساب السرعة.
النوع الثاني: أنظمة الزمن الحقيقي ذات القيود الزمنية المرنة (Soft Real-Time System):
تتصف هذه الأنظمة بأنها أيضاً تفرض قيوداً زمنية على المهام التي تقوم بتنفيذها، ولكن يمكن التسامح مع نسبة قليلة أو عدد قليل من مرات التجاوز للقيد الزمني، بحيث لا يؤدي هذا التجاوز إلى انهيار في النظام أو خسائر كبيرة مقارنة مع الأنظمة ذات القيود الصارمة، لكنه قد يؤدي بشكل تدريجي إلى تململ واستياء المستخدمين أو المستفيدين من المهام والخدمات التي يقدمها هذا النظام، وبالتالي سيؤدي إلى ارتفاع تدريجي في الخسائر الناجمة عن حدوث هذه التجاوزات الزمنية. من الأمثلة على هذه الأنظمة هي مخدمات الإنترنت، وأنظمة التجارة الإلكترونية، وأنظمة حجز البطاقات، وأنظمة بث الفيديو المباشر وغيرها.
عندما تقوم بمتابعة بث لفيديو فإن النظام المسؤول عن عملية البث يجب أن يضمن انسيابية العرض، بحيث يتم إرسال وعرض عدد محدد من الإطارات خلال فترة زمنية محددة لكي يتحقق رضا المشاهد واستمرارية المتابعة. قد يؤدي أي تأخير زمني إلى بعض المشاكل في العرض التي يمكن التغاضي عنها، وبهذا فإنه قد لا يتسبب مباشرة بخسارة هذا المشترك، ولكن إذا تكرر هذا التأخير بشكل غير مقبول، فإن ذلك قد يعني خسارة هذا المشترك وغيره من المشتركين بشكل تدريجي.
على سبيل المثال أيضاً، عندما تتصفح مواقع الإنترنت فإن الصفحات المطلوبةَ ستحتاج إلى فترة زمنية معينة لتظهر على شاشتك، ولكن إذا زادت الفترةُ اللازمة لعرض هذه الصفحات فإنك ستبدأ بالبحث عن المشكلة. لذلك يجب على النظام المستضيف لهذه المواقع فرضُ قيود زمنية على المدة اللازمة لمعالجة طلبات المتصفحين لكي لا يكون هذا التأخير سبباً لخسارة الزوار تدريجياً.
يمكن اعتبار هذين النوعين من أنظمة الزمن الحقيقي طرفي مقياس يتضمن عدة مستويات، فقد تختلف التطبيقات المتنوعة التي تعتمد على أنظمة الزمن الحقيقي بدرجة تسامحها مع التجاوزات لقيودها الزمنية، وبالتالي قد تميل إلى الصرامة أكثر كلما ازداد تأثيرُ هذه التجاوزات، أو إلى المرونة كلما قل هذا التأثير.
مِمَّا يجب أخذه بعين الاعتبار هو أن أنظمة الزمن الحقيقي بشكل عام لا تعني أنظمةً ذات أداء أفضل أو أعلى مقارنةً مع بقية أنظمة التشغيل العامة الأغراض، وذلك لأن الأداء يعتمد على سرعة وحدة المعالجة المركزية (CPU)، وهيكلية الذاكرة، وخصائص البرمجيات المنفذة، والعديد من الأشياء الأخرى. ولكن ما يميز أنظمة الزمن الحقيقي عن غيرها هو قدرتها على التنبؤ بالخصائص الزمنية لتحديد الفترة اللازمة لتنفيذ مهمة معينة، إضافةً إلى ضمان الالتزام بالقيد الزمني المفروض على هذا التنفيذ.
المصادر:
هنا
Jane W. S. Liu: Real-time systems.
Giorgio Buttazzo، "Hard Real-time Computing Systems: Predictable.
Scheduling Algorithms and Applications"، Second Edition، Springer، 2005.
Albert M. K. Cheng. Real-Time Systems: Scheduling، Analysis، and
Verification. Wiley، 2002.
Alan Burns and Andy Wellings. Real-Time Systems and Programming.
Languages. Addison Wesley، 1996.
Phillip A. Laplante. Real-Time Systems Design and Analysis: An Engineer's، Handbook. IEEE Press، 1992.
Luca Aceto، Anna Ingolfsdottir، Kim G. Larsen، Jiri Srba. Reactive Systems.
Modeling، Specification and Verification. Cambridge Press، 2007.