أمرا التفرع والتنفيذ
fork() and exec()
عند إنشاء مهمة نشطة بأمرالتفرع فأنه يتم نسخ جميع محتوى المهمة الأم إلى المهمة المنشاة
التسأول المطروح هنا : هل سيتم نسخ جميع الأفرع لهذه المهمة إلى المهمة المنشأة أم سيتم فقط نسخ الفرع الذي أصدر الأمر
بإنشاء مهمة جديدة ؟
إجابة التسأول تعتمد على التطبيق المتضمن لهذه المهام ؛ إن تم إصدار أمرالتنفيذ مباشرة بعد أمر التفرع فإن محتوى المهمة المنشأة سيتحول بكامله إلى البرنامج المرسل له في أمر التنفيذ مما يعني أنه لا أهمية لأفرع المهمة الأم لهذه المهمة المنشأة ففي هذه الحالة سيتم فقط نسخ الفرع الذي أصدر أمر التفرع في المهمة الأم إلى المهمة المنشأة . أما إذا لم يتم مناداة أمر التنفيذ بعد أمر التفرع مباشرة فإنه يتوجب نسخ جميع أفرع المهمة الأم إلى المهمة المنشأة
إلغاء التفرعات
عندما تكون هناك رغبة في إنهاء التفرع على غير المناخ الطبيعي وهو إتمام وظائفها فإن هذا الإنهاء يكون إلغاء
في بعض الأحيان يرغب المبرمج في إلغاء التفرع لعدم أهميته كأن يكون أنشأ أكثر من فرع للبحث في قاعدة بيانات فعندما يعود أحد هذه الأفرع بالنتيجة فإنه لا حاجة لبقية الأفرع فيلجأ المبرمج إلى إلغائها مباشرة لتحريرموارد النظام المحجوزة لها إلا أنه بهذه الطريقة لن يتم تحرير جميع هذه الموارد علاوة على أنه قد يكون هذا الفرع المراد إلغائه "الهدف" يعمل على تعديل قيمة مستخدمة من قبل الأفرع الآخرى مما سيؤدي إلى أخطاء لا حصر لها لذلك فُضل أن يكون الإلغاء مؤجل مما يعني أن يعطى المجال للفرع الهدف بأن ينهي نفسه في اللحظات الأكثر أماناً وذلك يكون بإعطاء علم يدل على إمكانية إنهائية في هذه اللحظة أو الإنتظار قليلاً ريثما يكون الوضع أكثر أمناً
توجيه الإشارات
نظام الحاسب الآلي قائم على إصدار وتوجيه الإشارات على مختلف أنواعها ، فبعضها يتم إصداره نتيجة لدخول مكان "محظور" في الذاكرة نظراًلإستخدامه من قِبل مهمة أخرى أو ما شابه ؛ ما سنتناوله بالبحث في اختصاصنا هو معالجة الإشارات الصادرة للمهام النشطة
عندما تستقبل مهمة مقسمة إلى أفرع إشارة فإنه يتوجب عليها التعامل معها وتوجيهها ولكن أي من هذه الأفرع سيتولى وظيفة التوجيه والتعامل مع الإشاراة المستلمة؟
تتعدد الإحتمالات في مثل هذا الوضع : قد تتوجه الإشارة إلى الفرع الذي تسبب في إصدارها إن كانت مُصدرة من نفس المهمة النشطة ، أو قد تتوجه إلى جميع الأفرع وهذا في مثل حالة الدخول إلى مكان محظور في الذاكرة لإنهاء المهمة النشطة كلياً ،وقد تتوجه إلى أفرع محددة مسبقاً . أما عن آلية التعامل مع هذه الإشارات إما أن تكون افتراضية أي أنها معرّفة مسبقاً في النظام أو ان تكون معرّفة من قِبل المبرمج
استفتاء الأفرع للمهام النشطة
من أهم الأسباب الرئيسية لإنشاء التفرعات للمهام النشطة هو رفع مستوى الأداء العام للنظام وإرضاء المستخدم إلا أنه قد تنقلب الأمور رأساً على عقب في بعض الأحيان
توفر بعض المواقع الإلكترونية خدمة الشراء عن طريق الإنترنت وتقوم بتقسيم هذه المهمة النشطة إلى أفرع ؛ فتتبع آلية إنشاء فرع لكل مشتري إلا أن هذا الإنشاء يسغرق وقتاً و إن كان أقل من الوقت المستغرق لإنشاء مهمة نشطة المؤسف في الأمر أنه لن يتم الإستفادة من هذا الفرع بعد إنهاء عملية الشراء وسيتم إنشاء فرع جديد لكل من يطلب خدمة الشراء علاوة على أنه ليس هناك حد معين لعدد الأفرع المراد إنشائها لخدمة العدد اللامحدود من المشترين مما يتسبب في إرهاق موارد النظام وضياع الهدف الأسمى وهو إرضاء المستخدم . فكان لهذه الحاجة الملحة الفضل بعد الله سبحانه وتعالى في إيجاد مفهوم استفتاء الأفرع . يقوم هذا المفهوم على إنشاء عدد معين من الأفرع وإسناد هذا الفرع للمشتري الذي يطلب الخدمة الشرائية وإعادته مرة آخرى بعد إنهاء عملية الشراء ليستخدمه مشترٍ آخر، فإن زاد عدد المشتريين عن عدد الأفرع المنشأة توجب عليه الإنتظار ولكن الإنتظار هنا لن يطول كما كان في السابق
Comments (0)
You don't have permission to comment on this page.