# نظام تشغيل في الزمن الحقيقي

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

## التصميم

التصاميم الأكثر شيوعا:
* الحدث المدفوع هو عبارة عن رموز تقوم بالتبديل فقط عند وجود خدمة تحتاج أولوية أعلى سواء كانت أولوية وقائية أو جدولة.
* تشارك الوقت / تقاسم الوقت هي التصاميم التي لها القدرة على تبديل المهام ومقاطعتها والذي دعا إليها هو راوند روبن، تكون هذه التصاميم أكثر سلاسة ودقة وتقوم بإعطاء الوهم بأن العملية أو المستخدم الوحيد الذي يقوم باستخدام هذا الجهاز.
وحدة المعالجة المركزية المبكره هي التصاميم وحدة المعالجة المركزية التي تحتاج إلى دورات عديده لتبديل المهام تفعل من خلالها وحدة المعالجة المركزية (20 ميجاهيرتز ومعالج 68000) بشكل نموذجي من أواخر الثمانينات ومهمتها مرات التبديل تقريبا (20 مايكرو بالثانية) في المقابل (100 ميجاهيرتز ذراع تبديل في وحدة المعالجة المركزية من (2008)التبديل في أقل من (3 مايكرو في الثانية) ونظرا لهذا حاول Oses تقليل اضاعة الوقت في وحدة المعالجة المركزية عن طريق تجنب التبديل بين المهام الغير ضرورية.

## الجدولة

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

### الخوارزميات

* جدولة تعاونية.
* جدولة معدل رتيبة.
* جدولة راوند روبين (جدولة روبن).
* جدولة وقائية الأولوية الثابتة وهو أعمال وقائية لتقطيع الوقت.
* جدولة الأولوية الثابتة مع تأجيل الضربات الوقائية.
* جدولة غير وقائية ذات الأولوية.
* جدولة وقائية للمقطع الحرج.
* جدولة الوقت الثابت.
* جدولة وقائية.
* أقرب وقت للموعد النهائي والنهج الأول.
* ديجرافس العشوائية مع اجتياز الرسم البياني متعدد مؤشرات الترابط.

## الاتصالات المهمة وتقاسم الموارد

إدارة نظم تبادل وتقاسم موارد الأجهزة بين عدة مهام عادة غير آمنة لاثنين من المهام للوصول إلى نفس مورد البيانات أو الأجهزة المحددة في الوقت المحدد وغير آمنة تعني أن النتائج غير متناسقة أو لا يمكن التنبؤ بها وهنالك ثلاثة نماذج مشتركة لحل هذه المشكلة:

### الإخفاء المؤقت/المقاطعات

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

### الارشادات الثنائية

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

### مرور الرسائل

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

## معالجة المقاطعة والمجدول

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

## أمثلة على الوقت الحقيقي

مثال شائع لمنظمات البحث والتكنولوجيا هو جهاز استقبال التلفزيون عالي الوضوح والعرض. أنه يحتاج إلى قراءة إشارة رقمية وفكه وعرضه لتأتي البيانات. وأي تأخير سيكون ملحوظا (الفيديو منقط أو الصوت مشوه). هذه الامثله على نظم التشغيل في الوقت الحقيقي، والمنتشرة على نطاق واسع:
* LynxOS $^{[الإنجليزية]}$
* OSE
* كيو إن إكس
* RTLinux $^{[الإنجليزية]}$
* VxWorks $^{[الإنجليزية]}$
* ويندوز سي إي
* فري آرتوس

## انظر أيضاً

* نظام مضمن
* جنو/لينكس