نماذج البرمجة للسحب
- 13 دقائق
تضم نماذج البرمجة المفاهيم وتقدم الأدوات التي تدعم المطورين في بناء أنظمة حسابية كبيرة. وييسر نموذج البرمجة الموزعة، على وجه الخصوص، ترجمة الخوارزميات المتسلسلة إلى برامج موزعة يمكنها التنفيذ عبر الأنظمة الموزعة. ويحدد تصميم النموذج مدى سهولة أن يقوم المبرمج بتحديد خوارزمية لتكون برنامجاً موزعاً. فأي نموذج يستخلص التفاصيل المعمارية/الأجهزة، ويعمل تلقائياً على موازاة الحساب وتوزيعه، ويدعم بشفافية التسامح مع الخطأ، يعتبر سهل الاستخدام.
غير أن كفاءة النموذج تتوقف على فعالية تقنياته الأساسية. وبالنسبة لبرنامج موزع يعمل على نظام من أجهزة الكمبيوتر الموزعة، هناك متطلب أساسي واحد وهو وجود آلية اتصال تتيح تنسيق مهام المكونات عبر الموارد المتعددة المتصلة بالشبكة. وهناك نموذجان تقليديان، تمرير الرسائل والذاكرة المشتركة، يلبيان هذه الحاجة، وإن كان في شكل أساسي نسبياً. وقد أدت التحديات الإضافية في البرامج الموزعة النموذجية للبيئات السحابية إلى وجود نماذج برمجة أكثر تعقيداً، والتي، عند تنفيذها كمحركات تحليلات موزعة، يمكن أن توازي المهام وتوزعها تلقائياً ويمكن أن تتسامح مع الأخطاء.
نموذج الذاكرة المشتركة
الشكل 4: مهام تعمل بالتوازي وتتشارك في مساحة عنوان
إن الفكرة التجريدية الأساسية لنموذج الذاكرة المشتركة تقول أن كل مهمة يمكنها الوصول إلى أي موقع في مساحة الذاكرة الموزعة لأي تطبيق. ومن ثم تتواصل المهام بواسطة القراءة من والكتابة إلى مواقع الذاكرة في مساحة الذاكرة الموزعة، كما هو الحال مع مؤشرات الترابط في أي عملية واحدة، حيث تتشارك كل مؤشرات الترابط في مساحة عنوان العملية (الشكل 4). ومع نموذج الذاكرة المشتركة، تتبادل المهام البيانات ضمنياً عبر المشاركة وليس عن طريق إرسال الرسائل وتلقيها بشكل صريح. وبالتالي، يدعم نموذج الذاكرة المشتركة آليات المزامنة التي يجب أن تستخدمها البرامج الموزعة للتحكم في الترتيب الذي يمكن من خلاله أن تقوم المهام المختلفة بعمليات القراءة/الكتابة. وبوجه خاص، يجب ألا تتمكن المهام المتعددة من الكتابة في نفس الوقت إلى أي موقع بيانات مشتركة، مما قد يؤدي إلى إتلاف البيانات أو جعلها غير متسقة. ويمكن تحقيق هذا الهدف عادة باستخدام الإشارات، و/أو الأقفال، و/أو الحواجز. الإشارة هي آلية مزامنة نقطة إلى نقطة تتضمن مهمتين متوازيتين/موزعتين. وتستخدم الإشارات عمليتين: النشر والانتظار. وتعمل عملية النشر بمثابة إيداع رمز مميز، مما يشير إلى أن البيانات قد تم إنتاجها. ويتم منع عملية الانتظار حتى تتلقى الإشارة بواسطة عملية النشر بإمكانية أن تستمر في استهلاك البيانات. وتحمي الأقفال الأقسام المهمة، وهي المناطق التي يمكن الوصول إليها بواسطة مهمة واحدة فقط (عادةً للكتابة) في كل مرة. وتتضمن الأقفال عمليتين، القفل وإلغاء القفل، للحصول على قفل مرتبط بأي قسم مهم وتحريره. ويمكن لمهمة واحدة فقط حمل القفل في كل مرة، ولا يمكن للمهام الأخرى الحصول عليه حتى يتم تحريره. وأخيراً، يحدد الحاجز نقطة لا يسمح بعدها لأي مهمة بأن تمضي قدماً إلى أن تصل كل مهمة أخرى إلى تلك النقطة. وكفاءة الإشارات، والأقفال، والحواجز هو هدف مهم وصعب في تطوير البرامج الموزعة/الموازية لنموذج البرمجة الذاكرة المشتركة.
يعرض الشكل 5 مثالاً يحول برنامج متسلسل بسيط إلى برنامج موزع باستخدام نموذج البرمجة الذاكرة المشتركة. ويضيف البرنامج المتسلسل عناصر صفيفين، b وc، مع تخزين النتائج في الصفيف a. وبعد ذلك، تتم إضافة أي عنصر أكبر من 0 في a إلى المجموع الكبير. والإصدار الموزع المقابل يفترض وجود مهمتين فقط ويقسم العمل بالتساوي بينهما. لكل مهمة، يتم تحديد متغيرات البداية والانتهاء لفهرسة الصفائف (المشتركة) بشكل صحيح، والحصول على البيانات، وتطبيق الخوارزمية المعطاة. ومن الواضح أن المجموع الكبير هو قسم مهم ولذلك فهو محمي بقفل. بالإضافة إلى ذلك، لا يمكن لأي مهمة طباعة المجموع الكبير قبل أن تنتهي كل مهمة أخرى من عملها، وبالتالي إدراج حاجز قبل عبارة الطباعة. وكما هو موضح في البرنامج، الاتصال بين المهمتين ضمني (عن طريق القراءة والكتابة إلى المتغيرات والصفائف المشتركة) والتزامن صريح (عبر الأقفال والحواجز). وأخيراً، وكما أشير سابقاً، يجب أن يوفر النظام الموزع الأساسي وظيفة تبادل البيانات. وعلى وجه التحديد، يجب على البنية التحتية إنشاء الوهم بأن ذاكرات كل أجهزة الكمبيوتر في النظام تشكل مساحة واحدة مشتركة يمكن معالجتها من قبل كل المهام. والمثال العام للأنظمة التي تقدم مساحة عنوان (ظاهرية) مشتركة وأساسية على مجموعة من أجهزة الكمبيوتر (المتصلة بواسطة LAN) تسمى DSM.1، 2 ولغة البرمجة العامة التي يمكن استخدامها على DSM وغيره من الأنظمة الموزعة المشتركة هي OpenMP.3
الشكل 5: الإصدارات المتسلسلة (أ) والذاكرة المشتركة (ب)
نموذج البرمجة تمرير الرسائل
في نموذج البرمجة تمرير الرسائل، تتواصل المهام الموزعة عن طريق إرسال واستقبال الرسائل. وهنا، المهام الموزعة لا تشترك في مساحة عنوان حيث يمكنهم الوصول إلى البيانات الخاصة ببعضها البعض (راجع الشكل 6). وتشبه الفكرة التجريدية الأساسية العمليات التي، على عكس مؤشرات الترابط، تحافظ كل منها على مساحة ذاكرة خاصة. ولإرسال البيانات وتلقيها عبر رسائل صريحة، يتسبب هذا النموذج في حدوث مصاريف إضافية للاتصال (على سبيل المثال، زمن الانتقال إلى الشبكة المتغير ونقل البيانات المفرط المحتمل). ولموازنة هذه المصاريف الإضافية، تعمل الرسائل الصريحة التي تتبادل ضمنياً على مزامنة تسلسل العملية في توصيل المهام. يوضح الشكل 7 مثالًا يحول البرنامج المتسلسل الموضح في الشكل 5 (أ) إلى إصدار موزع يستخدم تمرير الرسالة. في البداية، يمكن فقط لمهمة رئيسية مع id = 0 الوصول إلى الصفيفين b وc. وهكذا، بافتراض وجود مهمتين فقط، فإن المهمة الرئيسية ترسل أولاً أجزاء من الصفيفين إلى المهمة الأخرى (باستخدام عملية إرسال صريحة) من أجل تقسيم العمل بالتساوي بين المهمتين. وتتلقى المهمة الثانية البيانات المطلوبة (باستخدام عملية استلام صريحة) وتقوم بإجراء جمع محلي. وعند إجراء الجمع المحلي، تقوم المهمة الثانية بإرسال هذا المجموع إلى المهمة الرئيسية. وبالمثل، تقوم المهمة الرئيسية بتنفيذ جمع محلي على جزء البيانات الخاص بها وتجمع المجموع المحلي للمهمة الأخرى قبل تجميع المجموع الكبير وطباعته. وكما هو موضح، لكل عملية إرسال، هناك عملية استلام مقابلة، ولا يلزم وجود مزامنة صريحة. وأخيراً، لا يتطلب نموذج البرمجة تمرير الرسائل أي دعم من النظام الموزع الأساسي. وبوجه خاص، لا تتطلب المهام المتفاعلة الوهم بوجود مساحة عنوان مشتركة واحدة. يتم توفير مثال شائع على نموذج البرمجة تمرير الرسائل بواسطة واجهة تمرير الرسالة (MPI).4 وMPI هي مكتبة تمرير الرسائل القياسية للصناعة (بشكل أكثر دقة، مواصفات ما يمكن أن تفعله المكتبة) لكتابة برامج تمرير الرسائل. والأداء العالي الشائع والتنفيذ المتنقل على نطاق واسع لواجهة MPI هو MPICH.5
الشكل 6: المهام التي تعمل بالتوازي باستخدام نموذج البرمجة تمرير الرسائل، حيث تحدث التفاعلات فقط عن طريق إرسال الرسائل واستقبالها عبر الشبكة
يقارن الجدول التالي بين نماذج البرمجة الذاكرة المشتركة وتمرير الرسائل من حيث خمسة جوانب: جهد التطوير، وجهد الضبط، والاتصالات، والمزامنة، ودعم الأجهزة.
برامج الذاكرة المشتركة هي في البداية أسهل في التطوير لأن المبرمجين ليس عليهم القلق حول كيفية وضع البيانات أو تواصلها. علاوة على ذلك، بنية التعليمات البرمجية لبرنامج الذاكرة المشتركة غالباً ما تكون مشابهة جداً لنظيرتها المتسلسلة. وعادةً ما يقوم المبرمجون بإدراج توجيهات إضافية لتحديد المهام المتوازية/الموزعة ونطاق المتغيرات ونقاط المزامنة فقط. وفي المقابل، تتطلب برامج تمرير الرسائل تحولاً في تفكير المبرمج، تفكير استنتاجي، في كيفية تقسيم البيانات عبر المهام، وجمع البيانات، وتوصيل وتجميع النتائج باستخدام الرسائل الصريحة.
لقد بدأت كيفية وضع البيانات وأين يتم تخزينها في التأثير على الأداء بشكل كبير مع زيادة البيانات والموارد. على سبيل المثال، الأنظمة الموزعة واسعة النطاق مثل السحابة تقتضي حدوث أزمنة انتقال غير موحدة للوصول (على سبيل المثال، الوصول إلى البيانات عن بعد يستغرق وقتاً أطول بكثير من الوصول إلى البيانات المحلية)، مما يشجع المبرمجين على إبقاء البيانات قريبة من المهام التي تستخدمها. وعلى الرغم من أن المبرمجين في نموذج تمرير الرسائل يجب عليهم التخطيط مسبقاً لتقسيم البيانات عبر المهام، يتعامل المبرمجون في نموذج الذاكرة المشتركة (معظم الوقت) مع هذه المشكلة أثناء مرحلة ما بعد التطوير، عادةً من خلال ترحيل البيانات أو النسخ المتماثل. ويمكن أن يتضمن هذا التعديل جهد ضبط كبير مقارنة بتصميم تمرير الرسائل.
في الأنظمة كبيرة الحجم، يمكن أن تصبح نقاط المزامنة ازدحامات في الأداء: مع زيادة عدد المستخدمين الذين يحاولون الوصول إلى قسم مهم ما، تزداد التأخيرات والانتظارات المصاحبة لذلك. سنعود إلى المزامنة والتحديات الأخرى التي تنطوي عليها البرمجة للسحابة في وحدة نمطية لاحقة.
الشكل 7: برنامج موزع يتوافق مع البرنامج المتسلسل في الشكل 5 (أ) ويتم ترميزه باستخدام نموذج البرمجة تمرير الرسائل
| الجانب | نموذج الذاكرة المشتركة | نموذج تمرير الرسائل |
|---|---|---|
| الاتصال | ضمني | واضح |
| المزامنة | واضح | ضمني |
| دعم الأجهزة | مطلوب عادة | غير مطلوب |
| جهود التطوير الأولية | أدنى | أعلى |
| جهد الضبط عند رفع المستوى | أعلى | أدنى |
المراجع
- أ. إس. تاننباوم (4 سبتمبر 1994). أنظمة التشغيل المُوزّعة Prentice Hall، الإصدار الأول
- ك. لي (1986). الذاكرة الظاهرية المشتركة على المعالجات متعددة المقترنة بشكل فضفاض جامعة ييل، نيو هافن، CT (الولايات المتحدة الأمريكية)
- OpenMP
- واجهة تمرير الرسائل
- MPICH
اختبر معلوماتك
الملاحظات
هل كانت هذه الصفحة مفيدة؟
لا
هل تحتاج إلى مساعدة مع هذا الموضوع؟
هل تريد محاولة استخدام Ask Learn لتوضيح هذا الموضوع أو إرشادك خلاله؟