ديون أو إس
DioneOS (يُنطق /djoneos/) هو نظام تشغيل متعدد المهام ، استباقي ، ويعمل في الوقت الحقيقي (RTOS). [ 1 ] صُمم النظام خصيصًا لوحدات التحكم الدقيقة ، وقد أُصدر لأول مرة في 2 فبراير 2011 لوحدة التحكم Texas Instruments TI MSP430x ، ثم في 29 مارس 2013 لوحدة التحكم ARM Cortex-M3 . [ 2 ] تتميز منصات وحدات التحكم الدقيقة المستهدفة بموارد محدودة، أي تردد ساعة النظام الذي يبلغ عشرات الميغاهرتز ، وسعة ذاكرة تتراوح بين عشرات ومئات الكيلوبايت . يتكيف نظام التشغيل RTOS مع هذه الظروف من خلال توفير صورة مضغوطة وفعالة. تعني الكفاءة هنا تقليل الحمل الإضافي على وحدة المعالجة المركزية (CPU) الناتج عن استخدام النظام. وفقًا لهذا التعريف، يكون النظام أكثر فعالية عندما يستهلك وقتًا أقل من وحدة المعالجة المركزية لتنفيذ أجزائه الداخلية، مثل إدارة سلاسل العمليات .
نظام DioneOS مُصمم للأجهزة ذاتية التشغيل التي تتميز بواجهة مستخدم محدودة الوظائف. وتتمثل وظائفه الأساسية في توفير بيئة لبناء برامج ثابتة متعددة المهام باستخدام مفاهيم قياسية معروفة (مثل الإشارات ، والمؤقتات، وما إلى ذلك). ونظرًا لطبيعة التطبيق المستهدف، يستخدم النظام واجهة سطر أوامر ولا يحتوي على واجهة مستخدم رسومية .
نموذج الذاكرة
تُصنّع شركة تكساس إنسترومنتس مجموعة واسعة من وحدات التحكم الدقيقة التي تستخدم نواة MSP430. يحتوي المعالج، بحسب الإصدار، على كميات مختلفة من ذاكرة الفلاش وذاكرة الوصول العشوائي (RAM)، فعلى سبيل المثال، يحتوي MSP430f2201 على 1 كيلوبايت/128 بايت، بينما يحتوي MSP430f5438 على 256 كيلوبايت/16 كيلوبايت. عندما يتجاوز حجم الذاكرة حد 64 كيلوبايت، كما يحدث عندما لا تتسع الذاكرة ضمن النطاق 0-64 كيلوبايت، يصبح نظام العنونة ذو 16 بت غير كافٍ. لهذا السبب، تُزوّد الرقاقات ذات الذاكرة الأكبر بنواة موسّعة (MSP430x). يتميز هذا الإصدار من المعالج بسجلات أوسع (20 بت) وتعليمات جديدة لمعالجتها.
أثناء عملية التجميع، يختار المبرمج نوع نموذج الذاكرة ( قريب أو بعيد ) المستخدم FLASHللذاكرة RAM. يحدد هذا الاختيار نطاق الذاكرة المتاح، وبالتالي عند برمجة حد FLASH64 كيلوبايت، يجب استخدام النموذج البعيد .
يدعم نظام التشغيل DioneOS نموذج الذاكرة البعيدة لوحدات التعليمات البرمجية، مما FLASHيسمح بتطوير وتشغيل برامج ثابتة كبيرة الحجم تستخدم الذاكرة الموسعة تحت سيطرة النظام. ويستخدم النظام نموذج الذاكرة القريبة لقطاعات البيانات.
إدارة الخيوط
يتكون البرنامج الثابت الذي يبدأ تشغيله ضمن نظام DioneOS من خيوط تُنفذ بطريقة شبه متوازية . لكل خيط أولوية فريدة خاصة به تُستخدم لترتيب الخيوط من الأكثر أهمية إلى الأقل. تحدد قيمة أولوية الخيط أولوية تنفيذه على الخيوط الأخرى.
في نظام DioneOS، يمكن أن يكون الخيط في إحدى الحالات التالية:
- قيد التشغيل - يتم تنفيذ الخيط حاليًا بواسطة المعالج،
- جاهز - الخيط جاهز للتنفيذ،
- في حالة انتظار - يتم حظر الخيط وينتظر كائن تزامن ما.
نظرًا لوجود نواة واحدة فقط في المعالج، لا يمكن أن يكون سوى خيط واحد في حالة التشغيل. هذا الخيط هو الذي يتمتع بأعلى أولوية من بين جميع الخيوط التي ليست في حالة الانتظار. يمكن أن يحدث تغيير حالة الخيط بسبب:
- تشغيل كائن يحمل الخيط،
- فشل في الحصول على الكائن المقفل بالفعل (مثل mutex مملوك لشخص آخر)،
- انقضاء المهلة الزمنية،
- تغيير حالة سلسلة عمليات أخرى، مما قد يؤدي إلى المقاطعة.
يدعم النظام ما يصل إلى 16 خيطًا، بما في ذلك الخيط الخامل ذو الأولوية الأدنى. يجب أن يكون الخيط الخامل جاهزًا للتنفيذ دائمًا، ولا ينتقل أبدًا إلى حالة الانتظار، لذا لا يُسمح باستدعاء أي دوال قد تُعيق عمله من داخله. يُمكن استخدام الخيط الخامل لتحديد إجمالي حمل النظام.
ميزات النظام
يوفر نظام DioneOS ما يلي:
- عناصر التزامن: المؤشرات المتبادلة وإشارات العد ، المستخدمة لتزامن الخيوط، والإشارة من روتين خدمة المقاطعة إلى الخيط، وحماية الموارد المشتركة.
- أساليب إدارة الوقت: المؤقتات، إيقاف مؤقت للخيوط، مهلة التنفيذ ،
- عناصر الاتصالات التي يتم تنفيذها بواسطة الأحداث وقوائم الانتظار المتاحة كمخازن مؤقتة دائرية ،
- إدارة الذاكرة بواسطة مجمع الذاكرة الذي يخصص الذاكرة فقط في كتل ذات حجم ثابت، ولكنه خالٍ من مشاكل التجزئة التي قد تظهر عند استخدام الكومة . كما يتوفر التخصيص العادي للذاكرة بواسطة malloc/free على الكومة، وهو مُقدم من مكتبات لغة C القياسية .
- اختبار كائنات الدعم: أحداث الإشارة على دبابيس الشريحة، والاستثناءات الحرجة، ووضع علامات على الكائنات التي تساعد في اكتشاف الأخطاء مثل استخدام كائن محذوف أو إلغاء تخصيص الذاكرة المزدوج، وما إلى ذلك.
تبديل السياق
كما ذُكر في فصل "إدارة الخيوط"، يتكون البرنامج الثابت من خيوط شبه متوازية. لكل خيط سياقه الخاص، الذي يحتوي على سجلات المعالج الأساسية، وعنوان التنفيذ الأخير، ومكدس خاص. أثناء التبديل بين الخيوط، يحفظ النظام سياق الخيط المتوقف ويستعيد سياق الخيط قيد التشغيل. يُمكّن حفظ الحالة هذا من إيقاف تنفيذ الخيط واستئنافه، حتى لو تم تنفيذ خيط آخر بينهما. تجدر الإشارة إلى أن المقاطعة متبوعةً بتبديل السياق قد تحدث في أي لحظة، حتى لو لم يتم استدعاء أي دالة نظام في الخيط. على الرغم من أن ذلك قد يحدث في موقع غير متوقع في الكود المُنفذ، إلا أن عمل الخيط لا يتأثر بفضل النظام وحفظ السياق. من وجهة نظر الخيط، يمكن إجراء التبديل في الخلفية.
يُعدّ تبديل السياق عمليةً بالغة الأهمية في النظام، ويُحدّد وقت تنفيذها مدى فعالية النظام. ولذلك، تمّ تحسين تبديل السياق في نظام DioneOS ليكون سريعًا. كُتبت أهمّ أجزائه بلغة التجميع ، ما يسمح بإتمام التبديل في غضون 12-17 ميكروثانية [ 3 ] (عند تردد مذبذب f osc = 25 ميجاهرتز).
في نظام DioneOS، يمكن بدء تبديل السياق من معالج المقاطعة (روتين خدمة المقاطعة). تُعد هذه الخاصية مفيدة لنقل معالجة الأحداث إلى الخيط، ويتم تنفيذها عادةً في بنية ثنائية الطبقات.
- يتم استدعاء معالج المقاطعة بعد حدوث مقاطعة في الجهاز. في هذا الجزء، يتم تعطيل المقاطعات، لذا لا يمكن استمرار التنفيذ لفترة طويلة، وإلا ستتأثر استجابة النظام. في هذه الطبقة، يجب معالجة المهام التي تتطلب استجابة سريعة للمقاطعة فقط، أما المهام الأخرى فيجب تمريرها إلى طبقة أعلى.
- الطبقة العليا - تتم المعالجة في خيط منفصل دون مقاطعات مانعة؛ ويمكن مقاطعة هذا الخيط. القيود هنا ليست صارمة كما هي في معالج المقاطعات. لا يؤدي تنفيذ التعليمات البرمجية إلى حظر النظام.
- يستغرق تبديل السياق المقاس من نقطة الإشارة في ISR إلى استعادة مؤشر الترابط الآخر 10 ميكروثانية (لـ f osc = 25 ميجاهرتز) في نظام DioneOS.
إعدادات
يحتوي نظام التشغيل DioneOS على خيارات تهيئة متعددة تؤثر على الميزات المُدرجة في الصورة المُجمّعة للنظام. العديد منها عبارة عن مفاتيح تبديل في شفرة المصدر، مُجمّعة في ملف تهيئة ، ويمكن لمطور البرامج الثابتة تعديلها . بهذه الطريقة، يُمكن التحكم في أجزاء اختبار إضافية. عند تفعيلها، يُبنى النظام بإصدار يوفر قدرة أكبر على اكتشاف الحالات غير الاعتيادية ومعلومات وقت التشغيل، مما يُساعد في عملية تصحيح الأخطاء. بعد اكتشاف الأخطاء وإزالتها، يُمكن تعطيل هذه الميزات الإضافية للحصول على الأداء الكامل للنظام.
مثال على جزء من ملف التكوين:
[...] #define CFG_CHECK_OVERFLOW /* اختبار تجاوز السعة في الإشارات/المؤشرات المتبادلة */ #define CFG_CHECK_LOCK /* اكتشاف مشكلة القفل الناتجة عن شروط الاستباق أثناء قفل المجدول */ #define CFG_LISTDEL_WITH_POISON /* وضع علامة على العناصر المحذوفة في القائمة في os_list1_del() */ #define CFG_MEM_POOL_POISON_FILL 0xDAAB /* نمط لوضع علامة على عناصر الذاكرة غير المخصصة */ #define CFG_LISTDEL_POISON 0xABBA /* نمط لوضع علامة على عناصر القائمة المحذوفة */ #define CFG_CHECK_EMPTY_SEM_DESTROY /* اختبار الإشارة قبل التدمير في os_sleep() */ #define CFG_FILL_EMPTY_MEM_POOL /* ملء الذاكرة الحرة بنمط */ [...]مراجع
- ^ داغدا، تانر ماتيوس، أد. (1 يناير 2012). ديون أو إس . تنفيس. رقم ISBN 978-613-6-47060-3.
- ↑ بيوتر، رومانيوك (14 نوفمبر 2013). "DioneOS" . أنظمة إليسوفت روم المدمجة (باللغتين البولندية والإنجليزية) . تم الاطلاع عليه بتاريخ 12 أكتوبر 2021 .
- ↑ يعتمد وقت التبديل على تكوين النظام، وتظهر القيمة الأطول عندما يتداخل التبديل مع مقاطعة نبضات النظام.
روابط خارجية
- أنظمة التشغيل في الوقت الحقيقي
- أنظمة التشغيل المدمجة
