الثلاثاء، 23 يوليو 2013

مفهوم البرمجة المتوازية

البرمجة المتوازية: هي عملية كتابة وتنفيذ للكود بشكل متزامن بمعني ان يتم تنفيذ الكود step by step خطوة بخطوة، وهي الطريقة التقليدية في تنفيذ الاوامر واعطائها لل Processor احادي النواه كي يتم معالجتها، ويتم تنفيذ هذه التعليمات والاوامر بطريقة متزامنة\بتسلسل بمعني ان المعالج ينفذ المهمة الاولي ثم الثانيه ثم الثالثه وهكذا…. ، في هذه الصورة توضح كيف يتعامل المعالج احادي النواه مع التعليمات.
يقوم بتنفيذها واحدة تلو الاخري.
مثال علي كود يتم تنفيذه بشكل متزامن:
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Application Started ");
Thread.Sleep(2000);
foreach (int number in (new List { 1, 2, 3, 4, 5, 6, 7, 8, 9 }))
Console.WriteLine(number);
Thread.Sleep(2000);
Console.WriteLine("Application Finished ");
}
}
ناتج هذا الكود
Application Started
1
2
3
4
5
6
7
8
9
Application Finished
Press any key to continue . . .
في هذا البرنامج البسيط
يتم طباعة كلمة “Application Started” علي الشاشة،  وبعدها يتوقف لمدة ثانيتين، وبعدها يتم عمل حلقة تكرارية متزامنة تقوم بطباعة الارقام من 1 الي 9 بشكل متزامن اي 1 ثم 2 ثم 3 ثم 4 وهكذا,وبعدها يتوقف ثانيتين، وبعدها يتم طباعة كلمة “Application Finished” ،
هذا مايسمي بمفهوم البرمجة المتزامنة اي تنفيذ البرنامج خطوة خطوة، لايمكن لامر ان يسبق الاخر.
للبرمجة المتزامنة مميزات منها سهوله كتابة الكود وسهوله عمل debugging له واختباره ، وسهوله اقتناص الاخطاء وهي الطريقة التقليدية لكتابة الكود.
البرمجة المتوازية ظهرت بعد ظهور المعالجات المتعددة النواه (Multi-Core Processors) ليتم استخدام موارد المعالج بالكامل للحصول علي اعلي اداء لحل المشكلة (Problem Solving) .
يتم تنفيذ الاوامر علي طريقة البرمجة المتوازية كالموضح في الصورة
من الموضح في الصورة انه يتم تنفيذ التعليمات/الاوامر بصورة متوازية بمعني ان الوقت الذي تنفذ فيه المهمة الاولي هو الوقت التي تنفذ فيه المهمة الثانية والثالثه والرابعة الخ… .
ولا شك ان هذه الطريقة تعطي اداء اعلي من طريقة البرمجة المتزامنة/التقليدية.
مثال علي كود C# ينفذ تعليمات بشكل متوازي :
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Application Started ");
Thread.Sleep(2000);
Parallel.ForEach((new List { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 }),
(number) =>
{
Console.WriteLine(number);
});
Thread.Sleep(2000);
Console.WriteLine("Application Finished ");
}
}
Application Started
1
7
8
9
10
11
12
5
6
2
3
4
Application Finished
Press any key to continue . . .

في هذا البرنامج البسيط يتم طباعة كلمة “Application Started” علي الشاشة،  وبعدها يتوقف لمدة ثانيتين، وبعدها يتم عمل حلقة تكرارية متوازية متوازية من 1 الي 12، بمعني ان الوقت الذي تنفذ فيه الحلقة الاولي نفس الوقت الذي تنفذ فيه الثانية والثالثه والرابعة والخامسة الخ.وبعدها يتوقف ثانيتين، وبعدها يتم طباعة كلمة “Application Finished” ،
هذا مايسمي بمفهوم البرمجة المتوازية؛ اي يتم تنفيذ مجموعة من التعليمات بشكل متوازي وفي نفس ذات الوقت، ولا يتم انتظار الاولي حتي تنتهي ليتم تنفيذ الثانيه ، بل بالعكس كل الحلقات تعمل في ان واحد.

- مميزات البرمجة المتوازية:
من مميزاتها اعطاء اداء عالي من خلال استخدام كل الموارد المتوفرة. حل مشاكل كبيرة ومعقدة.  اغلب محركات البحث وانظمة قواعد البيانات وانظمة التعامل مع المعلومات الضخمة تقلل من استخدام الطرق التقليدية/المتزامنة لمعالجة البيانات وحل المشكلات، بل تستخدم طرق اخري مثل البرمجة المتوازية وتستخدم مثل طرق تعدد المهام Multi-Tasking و Asynchronous Programming.

المصدر: مفهوم البرمجة المتوازية 
المزيد من المواضيع:

0 التعليقات:

إرسال تعليق