توازي المهام
يفتقر محتوى هذه المقالة إلى الاستشهاد بمصادر. (يناير 2022) |
التوازي على مستوى المهام تقنية ومفهوم مستعمل في مجال الحوسبة المتوازية. في نظام متعدد المعالجات، يتحقق توازي المهام عندما ينفذ كل معالج خيطا مختلفا (أو عملية) على نفس البيانات أو بيانات مختلفة. قد تنفذ الخيوط نفس التعليمات البرمجية أو تعليمات مختلفة. في الحالة العامة، تتواصل الخيوط الجاري تنفيذها مع بعضهم البعض. يحدث الاتصال عادة بتمرير البيانات من خيط لآخر كجزء من سير العمل.
وصف
[عدل]كمثال بسيط، إذا كنا ننفذ التعليمات البرمجية على نظام بمعالجين (وحدات معالجة مركزية «أ» و «ب») في بيئة متوازية ونرغب بالقيام بمهام «م1» و «م2». ممن الممكن ان نقول للوحدة «أ» للقيام بمهمة «م1» وللوحدة «ب» بالقيام بالمهمة «م2» في نفس الوقت. مما يقلل من وقت التنفيذ. ويمكن اسناد المهام باستخدام عبارات شرط على النحو المبين أدناه.
توازي المهام تؤكد على طبيعة التوزيع (بشكل متواز) للمعالجة (أي الخيوط)، بدلا من البيانات (التوازي البيانات). تنحصر معظم البرامج المتوازية بين توازي المهام وتوازي البيانات.
مثال
[عدل]الكود التالي تجسيد لتوازي المهام:
برنامج: ... إذا كان معالج=«أ» نفذ مهمة «م1» وإلا إذا كان معالج=«ب» نفذ مهمة «م2» نهاية إذا ... نهاية البرنامج
الهدف من هذا البرنامج هو القيام بمجموع المهام («م1 + م2»). إذا كتبنا البرنامج على النحو الوارد أعلاه وإطلاقه على نظام بمعالجين، فإن تنفيذه في بيئة التشغيل سيكون على النحو التالي.
- في نظام SPMD، وستقوم كل وحدة معالجة مركزية بتنفيذ التعليمات البرمجية.
- في بيئة توازي، ستصل كل الوحدات إلى نفس البيانات.
- جملة «إذا» تفرق بين معالجين. بالنسبة للمعالج «أ» الشرط الأول صحيح، أما بالنسبة للمعالج «ب» فإن القراءة صحيحة لجملة «إلا إذا». وبهذا فلكل معالج مهمته الخاصة.
- الآن، كل معالج ينفذ كتلة من البرنامج خاصة به بصورة منفصلة وفي الوقت نفسه، وأداء لمهام مختلفة في وقت واحد.
التعليمات البرمجية التي ينفذها المعالج «أ»:
برنامج: ... نفذ المهمة «م1» ... نهاية البرنامج
التعليمات البرمجية التي ينفذها المعالج «ب»:
برنامج: ... نفذ المهمة «م2» ... نهاية البرنامج
هذا المفهوم يمكن تعميمه على أي عدد كان من المعالجات.
مصادر
[عدل]- Quinn Michael J, Parallel Programming in C with MPI and OpenMP McGraw-Hill Inc. 2004. ISBN 0-07-058201-7
- D. Kevin Cameron coined terms "data static" and "code static".