المعالجة المتوازية في أنظمة التشغيل Parallel Processing

اقرأ في هذا المقال


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

ما هي المعالجة المتوازية في نظام التشغيل

تتطلب المعالجة المتوازية معالجات متعددة (multiple processors) وجميع المعالجات تعمل في نفس الوقت في النظام، هنا، يتم تقسيم المهمة إلى أجزاء فرعية ثمّ يتم توزيع هذه الأجزاء الفرعية على المعالجات المتاحة في النظام، تكمل المعالجة المتوازية المهمة في أقصر وقت ممكن، دعونا نفهم السيناريو بمساعدة مثال واقعي:

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

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

شرح المعالجة المتوازية في نظام التشغيل

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

هناك شيء آخر تشترك فيه جميع المعالجات في النظام، أي محطة المستخدم “من حيث يتفاعل المستخدم مع النظام”، لا يحتاج المستخدم إلى معرفة البنية الداخلية للجهاز، يجب أن يشعر أنّه يتعامل مع معالج واحد فقط وأنّ تفاعله مع النظام سيكون هو نفسه كما هو الحال في معالج واحد، إذا كان المستخدم على علم بعدد المعالجات الموجودة في النظام، فسيحاول دائمًا تقسيم وظيفته على أساس عدد المعالجات الموجودة في النظام.

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

الأجهزة الداعمة للمعالجة المتوازية

التواصل القائم على النواقل Bus-based Intercommunication

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

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

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

الوصول إلى الذاكرة المحولة Switched Memory Access

يتم إجراء التوصيل البيني بين المعالجات هنا باستخدام (crossbar switch)، تشبه هذه التقنية التقنية القديمة للتبادل الهاتفي حيث استخدموا (crossbar switch) لربط مجموعة الخطوط الواردة بالخطوط الصادرة، باتباع هذه الاستراتيجية، يتم تقسيم الذاكرة المشتركة إلى عدد من كتل الذاكرة (memory blocks)، كل معالج في النظام لديه حق الوصول إلى جميع كتل الذاكرة المقسمة، ولكن هناك قيد واحد، لا يمكن لمعالجين الوصول إلى نفس كتلة الذاكرة في الوقت المحدد.

لفهم سيناريو استخدام (crossbar switch) في المعالجة المتوازية، ضع في اعتبارك أنّ لدينا (4) معالجات (P1 وP2 وP3 وP4) وقمنا بتقسيم الذاكرة المشتركة إلى (4) أجزاء (M1 وM2 وM3 وM4)، عندما يصل المعالج (P1) إلى كتلة الذاكرة (M1)، يمكنه الاستمرار في الوصول إليها متى يحتاج ذلك، ولكن خلال هذه المدة، لا يحق لأي معالج آخر الوصول إلى كتلة الذاكرة (M1)، في حالة محاولة أي من المعالجات الأخرى الوصول إلى كتلة الذاكرة (M1)، فسيجدون إشارة “مشغول” (busy)، عليهم الانتظار حتى ينتهي المعالج (P1) من الوصول إلى (M1).

يوجد حل لهذه المشكلة، يمكننا ترتيب كتلة ذاكرة ومعالج بطريقة تجعل المعالج المعين يمكنه الوصول إلى كتلة ذاكرة معينة في معظم الأوقات، يمكن أن يتيح لنا اتباع هذه الإستراتيجية الحصول على أكبر عدد ممكن من المعالجات حسب الحاجة، لكن استخدام (crossbar switch) يعني أنّه يجب أن يكون هناك عدد من كتل الذاكرة حيث توجد معالجات، لذلك، إذا كان هناك (n) معالجات، فستكون هناك حاجة إلى كتلة ذاكرة (n)، ولتوصيل هذه المعالجات إلى كتلة الذاكرة، سيتطلب الأمر مفاتيح (nxn)، وبالتالي يبدو أنّ تنفيذ المعالجة المتوازية باستخدام (crossbar switch) أمر مكلف، حتى المفاتيح هنا ذات موثوقية منخفضة.

هايبر كيوب Hypercubes

تقول ما إذا كان هناك معالجات (n) في النظام، ثمّ يتم توصيل كل معالج بـ (log n base 2)، وهنا يكون لكل معالج ذاكرته الخاصة وأجهزة الإدخال / الإخراج الأخرى، يمكننا القول أنّ كل معالج هنا هو جهاز كمبيوتر كامل، كان هناك الكثير من الأبحاث التي أجريت على هذا النوع من الأنظمة.

أنظمة التشغيل للمعالجة المتوازية

نظام تشغيل منفصل Separate operating system

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

نظام تشغيل رئيس / تابع Master/Slave operating system

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

نظام تشغيل متماثل Symmetric Operating System

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


شارك المقالة: