هل يعقل المزج بين نظام RTOS والمدير التنفيذي الدوري؟

StackOverflow https://stackoverflow.com/questions/115306

  •  02-07-2019
  •  | 
  •  

سؤال

في مشروع نظام مضمن صغير، لدينا بعض التعليمات البرمجية التي نرغب في تشغيلها في سلسلة رسائل، لذا نختار البناء فوق نظام RTOS (eCos) المضمن.

في السابق، استخدمنا تنفيذيًا دوريًا في main()‎ يقود المهام التي يتم تنفيذها كآلة حالة.بالنسبة لبعض المهام، واجهنا مشكلات حيث يلزم تقسيم المهمة إلى العديد من الحالات الدقيقة مما يجعل التعليمات البرمجية أكثر تعقيدًا.

عند التبديل إلى نظام RTOS، وجدنا أن استخدام الذاكرة لكل مكدس خيط يتزايد بسرعة إذا أعطينا كل مهمة منفصلة خيطًا خاصًا بها.(لدينا 64 كيلو بايت فقط ونحتاج إلى الذاكرة لمخازن اتصالاتنا المؤقتة)

نحن نفكر في استخدام مداس لمهمة الاتصالات لدينا وخيط آخر لمدير تنفيذي دوري.سوف يقوم المدير التنفيذي الدوري بقيادة المهام المنطقية الأخرى.

هل يعقل المزج بين RTOS والمدير التنفيذي الدوري مثل هذا؟

هل كانت مفيدة؟

المحلول

هذا تصميم صالح تمامًا.
في أحد منتجاتنا، استخدمنا تصميمًا مشابهًا، حيث كانت قنوات الإدخال/الإخراج غير المتزامنة (TCP/IP، 2 تدفقات تسلسلية) في مهامها الخاصة وكان لدينا مهمة "رئيسية" ستكون مسؤولة عن مجالات متعددة من الوظائف .

فكر في المهام باعتبارها مجرد آلية تقسيم تسمح لك بتبسيط تصميمك.

نصائح أخرى

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

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

اذا أنت انظر إلى FreeRTOS, ، يقومون بالفعل بتشغيل برنامج جدولة آخر في مهمة ما، نوعًا ما :)

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

إنه تصميم صالح، ولكن أعتقد أنني فاتني سبب وجود نظام التشغيل على الإطلاق.

ما هي مرافق نظام التشغيل التي تخطط لاستخدامها؟

من المعلومات المتاحة، يبدو أنك ستنتهي بنقل تعقيد المهام إلى حلقتك الرئيسية الجديدة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top