تعدد المهام التعاوني
تعدد المهام التعاوني ، المعروف أيضًا بتعدد المهام غير الاستباقي ، هو أسلوب حاسوبي لتعدد المهام لا يقوم فيه نظام التشغيل أبدًا بتبديل السياق من عملية قيد التشغيل إلى أخرى. بدلاً من ذلك، ولتشغيل تطبيقات متعددة في وقت واحد، تتنازل العمليات طواعيةً عن التحكم بشكل دوري أو عند خمولها أو تعطلها منطقيًا . يُسمى هذا النوع من تعدد المهام تعاونيًا لأن جميع البرامج يجب أن تتعاون لكي يعمل نظام الجدولة.
في هذا المخطط، يُعرف مُجدول العمليات في نظام التشغيل باسم المُجدول التعاوني ، ويقتصر دوره على بدء العمليات والسماح لها بإعادة التحكم إليه طواعيةً. [ 1 ] [ 2 ]
هذا مرتبط بنهج البرمجة غير المتزامنة .
الاستخدام
على الرغم من ندرة استخدامها كآلية جدولة أساسية في أنظمة التشغيل الحديثة، إلا أنها شائعة الاستخدام في الأنظمة المدمجة ذات الذاكرة المحدودة وفي تطبيقات محددة مثل CICS أو النظام الفرعي JES2 . كانت تعدد المهام التعاوني آلية الجدولة الأساسية لتطبيقات 16 بت التي استخدمها نظام التشغيل مايكروسوفت ويندوز قبل ويندوز 95 وويندوز NT ، وكذلك نظام التشغيل ماك الكلاسيكي . استخدم ويندوز 9x تعدد المهام غير الاستباقي لتطبيقات 16 بت القديمة، واستخدمته إصدارات PowerPC من نظام التشغيل ماك X قبل ليوبارد للتطبيقات الكلاسيكية . [ 1 ] استخدم نظام التشغيل NetWare ، وهو نظام تشغيل موجه للشبكات، تعدد المهام التعاوني حتى الإصدار 6.5. ولا يزال تعدد المهام التعاوني مستخدمًا في أنظمة RISC OS . [ 3 ]
يُشبه تعدد المهام التعاوني آلية async/await في لغات البرمجة، مثل جافا سكريبت أو بايثون ، التي تتميز بحلقة أحداث أحادية الخيوط في بيئة التشغيل الخاصة بها. ويختلف هذا عن تعدد المهام التعاوني في أن await لا يمكن استدعاؤه من دالة غير متزامنة، بل من دالة متزامنة فقط، وهي نوع من الروتينات الفرعية . [ 4 ] [ 5 ]
تتيح تعدد المهام التعاونية تنفيذًا أبسط بكثير للتطبيقات لأن تنفيذها لا يتم مقاطعته بشكل غير متوقع بواسطة جدولة العمليات؛ على سبيل المثال، لا تحتاج العديد من الوظائف داخل التطبيق إلى أن تكون قابلة لإعادة الدخول . [ 2 ]
مشاكل
بما أن نظام تعدد المهام التعاوني يعتمد على تنازل كل عملية عن وقتها بانتظام للعمليات الأخرى في النظام، فقد يستهلك برنامج واحد مصمم بشكل سيئ كامل وقت وحدة المعالجة المركزية لنفسه، إما بإجراء حسابات مكثفة أو بالانتظار النشط ؛ وكلاهما سيؤدي إلى توقف النظام بأكمله . في بيئة الخادم ، يُعد هذا خطرًا يُعتبر غالبًا سببًا في جعل البيئة بأكملها هشة بشكل غير مقبول، [ 1 ] على الرغم من أنه كما ذُكر أعلاه، فقد استُخدم تعدد المهام التعاوني بشكل متكرر في بيئات الخوادم، بما في ذلك NetWare وCICS.
في المقابل، يقوم تعدد المهام الاستباقي بمقاطعة التطبيقات ويمنح التحكم لعمليات أخرى خارجة عن سيطرة التطبيق.
يمكن التخفيف من احتمالية تعطل النظام باستخدام مؤقت مراقبة ، والذي يتم تنفيذه غالبًا في الأجهزة؛ وهذا عادةً ما يستدعي إعادة ضبط الأجهزة .
انظر أيضاً
مراجع
- 1 2 3 "تعريف تعدد المهام غير الاستباقي" . pcmag.com . تم الاطلاع عليه بتاريخ 15 أغسطس 2015 .
- ١ ٢ جو بارتل (٥ نوفمبر ٢٠١١). "تعدد المهام غير الاستباقي" (ملف PDF) . classiccmp.org . مؤرشف من الأصل (ملف PDF) في ١٩ أغسطس ٢٠١٩. تم الاطلاع عليه في ١٥ أغسطس ٢٠١٥ .
- ↑ "تعدد المهام الاستباقي" . riscos.info . 2 نوفمبر 2009. تم الاطلاع عليه في 15 أغسطس 2015 .
- ↑ كيركور، سيلفان (25 يناير 2022). "البرمجة غير المتزامنة في لغة رست: الجدولة التعاونية مقابل الجدولة الاستباقية" . تم الاطلاع عليه في 30 يناير 2023 .
- ↑ سكفورتسوف، فيكتور. "بايثون من وراء الكواليس #12: كيف تعمل async/await في بايثون" . تم الاطلاع عليه في 30 يناير 2023 .
- الحوسبة المتزامنة
