مشاركة موارد متعددة المعالجات

مكتمل

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

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

A multiprocessor system shared in space.

الشكل 8: التشارك في المساحة لنظام متعدد المعالجات

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

A multiprocessor system shared in time.

الشكل 9: التشارك في الوقت لنظام متعدد المعالجات

وكما أشير سابقًا، فإن تشارك الموارد في نظم المعالجات المتعددة أكثر من تشاركها في الأنظمة أحادية المعالجات. على سبيل المثال، في نظام أحادي المعالج، الجدولة أحادية البعد. على وجه الخصوص، بعد أن يحدد المجدول مقدار محدد، فإنه يقرر بشكل أساسي العملية التي يجب أن تتم بعد ذلك. ومع ذلك، في نظام متعدد المعالجات، بعد تحديد المقدار، على المجدول أن يقرر أي عملية يجب أن تتم بعد ذلك وعلى أي CPU. بعد ذلك، البعد الإضافي يدخل بعض التعقيد، كما هو موضح في الشكل 10. يكشف هذا الشكل عن طريقة للتعامل مع الجدولة على المعالجات المتعددة التي يتم فيها اعتماد بنية بيانات واحدة على مستوى النظام (على سبيل المثال، قائمة أو قائمة انتظار). في الشكل 10 (a)، الـ CPUs الأربعة مشغولة، وهناك عدة عمليات تنتظر في قائمة انتظار مشتركة (على سبيل المثال، مشاهدتها والوصول إليها من قبل كافة CPUs)، بافتراض خوارزمية الترتيب الدوري. في الشكل 10 (b)، ينتهي CPU2 من العمل والاستقصاء عن قائمة الانتظار المشتركة. عندما يتمكن CPU2 من الوصول إلى قائمة الانتظار، فإنه يقوم بتأمينه وتحديد العملي الجاهزة التالية كما تمليها خوارزمية الترتيب الدوري. تأمين قائمة الانتظار المشتركة يتم لتجنب الوصول غير المتناسقة بواسطة CPUs متعددة معطلة.

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

هناك تعقيد آخر له علاقة بالجدولة على أنظمة المعالجات المتعددة هو عدم الكفاءة المحتملة لاستغلال التخزين المؤقت. على وجه التحديد، بعد أن تستخدم العملية A في الشكل 10 المقدار في CPU2، يتم تبديل السياق واستئنافها لاحقًا (عندما يأتي دورها مرة أخرى)، ربما في CPU مختلفة. عندما يتم تنفيذ A على CPU2، فمن المحتمل أن تكون ذاكرة التخزين المؤقت لـ CPU2 ممتلئة بكتل التخزين المؤقت لـ A. وبالتالي، عند استئناف A في CPU مختلفة، فإنه سيعاني من نقص في ذاكرة التخزين المؤقت التي سوف تؤثر على الأداء الكلي. بعض أنظمة المعالجات المتعددة تعالج هذه المشكلة عن طريق تطبيق ما يسمى جدولة الترابط. الفكرة الأساسية لجدولة الترابط هو محاولة لجدولة عملية على CPU التي استخدمت في المقدار السابق. يمكن العثور على المزيد حول جدولة الترابط في Vaswani وZahorjan'sThe Implications of Cache Affinity on Processor Scheduling for Multiprogrammed, Shared Memory Multiprocessors.1

Using a single, systemwide data structure (a queue, in this case) to pursue CPU scheduling in a multiprocessor system. The queue is shared across all the CPUs and exemplifies a round-robin algorithm. (a) All CPUs are assumed to be busy. (b) CPU2 finishes its work and gets the next process, B, from the queue. CPU2 has to lock the queue due to being shared by all CPUs before getting B.

الشكل 10: استخدام بنية بيانات واحدة على مستوى النظام (قائمة انتظار، في هذه الحالة) لمتابعة جدولة وحدة المعالجة المركزية في نظام متعدد المعالجات. تتم مشاركة قائمة الانتظار عبر كافة CPUs وتجسد خوارزمية الترتيب الدوري. (a) يفترض أن تكون جميع CPUs مشغولة. (b) CPU2 تنهي عملها وتحصل على العملية التالية، B، من قائمة الانتظار. يجب على CPU2 تأمين قائمة الانتظار بسبب مشاركتها من قبل كافة CPUs قبل الحصول على B.

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


المراجع

  1. Raj Vaswani and John Zahorjan (1991). The Implications of Cache Affinity on Processor Scheduling for Multiprogrammed, Shared Memory Multiprocessors SIGOPS Oper. Syst. Rev. 25, 5

‏‫اختبر معلوماتك

1.

ما هو الحد الأعلى لعدد الأقسام التي يمكن أن تكون مدعمة في نظام متعدد المعالجات مع المعالجات Nالمشتركة في المساحة؟

2.

ما هو الحد الأعلى لعدد الأقسام التي يمكن أن تكون مدعمة في نظام متعدد المعالجات مع المعالجات Nالمشتركة في الوقت؟