دروس
التطبيقات العاملة Processes ومسارات التنفيذ Threading
احصائيات سريعة
اقسام على الموقع
دروس في أنظمة التشغيل | ماي سكيول - MySQL | لفيجوال بيسك - Visual Basic | المات لاب Matlab | اللينكس و اليونكس | الاسمبلي - ASSEMBLY | الاوتلوك - Outlook | البرمجة تحت اللنكس -Linux Programming | البرمجة تحت وندوز بواسطة دوال ال win API | البرمجة في بيئة الدوت نت .Net | التصمبم والرسوم | الدلفي - Delphi | الجافا - Java | السي - C | الصوت و الصورة | الوورد - Word | القسم العام للأوفيس | الكوبول - COBOL | control panel-ftp | اوراكل - Oracle | اكسل - Excel | تحميل الملفات | برامج متنوعة | برامج التصفح | برامج الحماية | برامج إنترنت | تعرّف على الويب | بوربوينت - Power Point | images | دروس : كمبيوتر وصيانة | دروس مجلة نيوك phpnuke | دروس مسنجر MSN - yahoo - Gmail | دروس منتديات vBulletin | دروس الجوالات والهواتف | دروس السي بنل cpanel | دروس اكسس access | دروس بيونت شوب برو - point shop pro | دروس برمجة php - mysql | دروس برامج منوعة software | دروس ثري دي ماكس 3D max | دروس تطوير المواقع والمنتديات | دروس جافا سكريبت JavaScript | دروس دريم ويفر DreamWeaver | دروس شبكات Networks | دروس سويش - swish | دروس فلاش - flash | دروس فلاش mx | دروس فى نظام الوندوز WINDOWS | دروس فىالباسكال - Pascal | دروس فيجوال بيسك Visual Basic | دروس فرونت بيج - frontpage | دروس فوتوشوب photoshop | دروس هكر hacker crack virus | سي ++ | سي شارب - #C | فيجوال سي ++ - ++ Visual C | قسم البرمجة العام | دروس فى لغة HTML
البحث في المواد

اكثر المحتويات زيارة
ما هو البريد الإلكتروني ( الايميل (55,846 مشاهده)
أنواع العلاقات وطريقة الربط بين الجداول. (44,149 مشاهده)
تعريف الفن التشكيلي: (33,007 مشاهده)
نظام التشغيل (Windows) (31,349 مشاهده)
ما هي شبكة الانترنت: (30,719 مشاهده)
دروس في الأوفيس الأكسس - Access0- (29,339 مشاهده)
تغيير لغة واجهة التطبيق من عربي الى انجليزي وبالعكس لـ Windows-based applications (28,010 مشاهده)
للمبتدئين : كل ما تريد معرفته عن الوقت - التاريخ - والأدوات المتعلقة بهما . (21,657 مشاهده)
ربط قاعدة بيانات أكسس (MS Access) مع برنامج الفيجوال بيسك بطريقة(ODBC) (21,231 مشاهده)
الدوال في الاكسل (20,623 مشاهده)
ما هو آكسس ( Access ) ؟ (20,149 مشاهده)
ما هو برنامج الاكسل -00 (19,888 مشاهده)
التعامل مع List Box و Combo Box (19,508 مشاهده)
ما هو البوربوينت (19,425 مشاهده)
لإجراء العمليات الحسابية (17,191 مشاهده)
شرح طريقة استعمال الأوتلوك مع بريد الهوتميل (17,109 مشاهده)
انشاء قاعدة بيانات وكيفية ربطها (16,909 مشاهده)
مفهوم قواعد البيانات 1 (16,383 مشاهده)
مميزات أوراكل (15,834 مشاهده)
اضافة الحركات للصور والنصوص (15,367 مشاهده)
ما هو المات لاب MATLAB؟ (15,214 مشاهده)
بدايات لغة الجافا (15,123 مشاهده)
أربعة مكونات رئيسية (15,093 مشاهده)
حذف حساب بريد إلكتروني (14,929 مشاهده)
كيف تجعل برنامجك أكثر تألقا وجمالا باستخدام أداة Active Skin- (14,808 مشاهده)
جديد مواد مع عشوائي
التحويل التلقائي للحروف ل- ل- ه إلى اسم الجلالة0---- (5,012 مشاهده)
النسبة المئوية لا تظهر بالخط العربي & الشدة وألف المد في لفظ الجلالة0---النسبة المئوية لا تظهر بالخط العربي & الشدة وألف المد في لفظ الجلالة0--- (4,479 مشاهده)
ضبط خيارات اللغة فى الـ Microsoft Word0--- (4,565 مشاهده)
استخدام لوحة المفاتيح في الـ Word0---- (4,887 مشاهده)
إضافة كلمة سر إلي ملفات الورد دون استخدام برامج0--- (4,485 مشاهده)
دمج المراسلات0-- (3,272 مشاهده)
وضع صورة كخلفية للنص0-- (4,092 مشاهده)
السماح للمستخدمين بتعديل أجزاء من ملف وورد محمي (Word2003)0--- (3,353 مشاهده)
كتابة الأرقام الكسرية ورموز المعادلات0-- (3,970 مشاهده)
درس كامل عن الدمج السهل من لوحة المفاتيح ف0-ي برنامج الـ Word (3,439 مشاهده)
دورة الأكسس: الدرس السادس : منوعات في أكسيس .0--- (8,772 مشاهده)
دورة الأكسيس : الدرس الرابع : العلاقات0---- (5,171 مشاهده)
أساسيات في Access0--0 (5,289 مشاهده)
تصميم تقرير لطباعة البيانات0---- (6,180 مشاهده)
تصميم نموذج استعراض البيانات‏0--تصميم نموذج استعراض البيانات‏0-- (4,704 مشاهده)
تصميم نموذج إدخال‎ ‎البيانات0--- (4,961 مشاهده)
إنشاء قوائم خاصة باستخدام الماكرو(1)0-- (4,038 مشاهده)
خطوات إنشاء الماكرو في تذييل النموذج (2)0-- (3,306 مشاهده)
خطوات إنشاء الماكرو في تذييل النموذج (1)0- (3,220 مشاهده)
استعلامات SQL في Access - تعديل الجداول وإضافة الحقول0- (4,478 مشاهده)
استعلامات SQL في Access - تحديث البيانات الجدولية0-- (3,889 مشاهده)
الاستعلامات الإجرائية -4 (استعلام الحذف)0--- (2,794 مشاهده)
الاستعلامات الإجرائية -2 (استعلام الإلحاق)0--- (2,989 مشاهده)
تصميم تقرير لطباعة الإجمالي0--- (3,266 مشاهده)
استعلامات التحديد Select Query مع أمثله (1)0--- (4,276 مشاهده)
روابط ذات صلة
اعلانات في الموقع على جميع الصفحات
ï»؟

ظ…ط³ط§ط­ط© ط§ط¹ظ„ط§ظ†ظٹط© ظ…طھط§ط­ط©

التطبيقات العاملة Processes ومسارات التنفيذ Threading

مستوى الدرس :مبتدئ


) التطبيقات العاملة Processes ومسارات التنفيذ Threading





* تعريف البروسس



عندما تقوم بتشغيل او تنفيذ برنامج، فان البرنامج سيكون بالذاكرة طيلة فترة عمله. في هذه الاثناء، نطلق عليه الاسم برنامج عامل Process. باختصار، أي برنامج يتم تنفيذه بالذاكرة يسمى بروسس Process. واذا كنت من مستخدمي Win 2000 او NT فتستطيع معرفة جميع البرامج العاملة Processes عن طريق خانة التبويب Processes الموجودة في النافذة Windows Task Manager والتي تستطيع فتحها بالضغط على المفاتيح Ctrl + Shift + Esc









* مسارات التنفيذ



اما مسارات التنفيذ Threading فهو موضوع متقدم قليلا واود ان اعطيك فكرة مبسطة عنه الان. كل Process يحتوي على ثريد Thread واحد (على الاقل). لان البروسس قد يحتوي على اكثر من ثريد Thread ولكن الثريد الواحد لا يكون تابع الا لبروسس واحد فقط.



العادة جرت عند الكتاب بتوضيح معنى المصطلح قبل التوغل في تفاصيله ولا اعلم لماذا نسيت تعريف الثريد قبل التحدث عنه! على العموم، الثريد Thread عبارة عن مسار تنفيذي. فاي عملية تنفيذية يقوم الـ Process بانجازها تتم في ثريد Thread. مثلا، لو كان البروسس يقوم باجراء عملية حسابية فان عملية التنفيذ تتم في مسار خاص لها. تسمى عملية التنفيذ هذه بالثريد.



ذكرت قبل قليل ان الـ Process الواحد قد يحتوي على اكثر من ثريد، أي ان البروسس الواحد يقوم بعملية تنفيذ اكثر من اجراء في وقت واحد. مثلا، قد يقوم برنامج معين بالقيام بعملية طباعة المستندات، والتدقيق الاملائي لها، واجراء عملية الحفظ في وقت واحد. لاحظ انني ذكرت ثلاثة عمليات 1) طباعة 2) تدقيق 3) تخزين . يعني ان هذا البرنامج يحتوي على ثلاثة مسارات تنفيذية (ثريدز) Threads هي: ثريد خاص لعملية الطباعة وثريد خاص للتدقيق الاملائي وثريد خاص للتخزين. بما ان هذه العمليات الثلاث تتم في وقت واحد، لذلك نطلق عليها 3 ثريدات تابعة لبروسس (برنامج) واحد. اما لو كانت هذه العمليات الثلاث لا تتم في وقت واحد (أي الطباعة ثم التدقيق ثم الحفظ) فان جميع هذه العمليات الثلاث تتم في ثريد واحد. اتمنى من صميم قلبي ان تكون فكرة الثريد قد اتضحت لك، لانني سأعود اليها لاحقا.





* نظرات متقدمة الى مبدأ الـ Multitasking



يطلق على نظام Windows بنظام متعدد المهام Multitasking. مبدأ تعدد المهام Multitasking بسيط وسهل الاستيعاب، وهو امكانية تشغيل اكثر من تطبيق في وقت واحد. فمن الواضح لمبرمجي –وحتى مستخدمي- Windows قابلية هذا النظام لتشغيل اكثر من برنامج او تطبيق في وقت واحد. وبما ان هذه المقالة موجهة للمبرمجين فسأوضح برمجيا كيف يستطيع نظام التشغيل Windows بعملية تشغيل اكثر من تطبيق في واحد رغم وجود ذاكرة Memory واحدة ومعالج Processor واحد (باستثناء المعالجات المتعددة لبعض الاجهزة).



حسنا، بعد تعريف مبدأ تعدد المهام ما رأيك لو اخبرتك ان نظام التشغيل Windows لا يستطيع تشغيل اكثر من تطبيق في وقت واحد!! أي ان مبدأ تعدد المهام MultiTasking عبارة عن شئ غير حقيقي! والذي يعمل دائما تطبيق واحد فقط! كيف ستكون ردت فعلك يا ترى؟؟



يبدو ان كلامي متعارض وقد يجعلك تسهر في التفكير اكثر من العاشقين! لذلك، سنعود الى الوراء وعدد ليس ببعيد من السنين الى ايام نظم 16 bit كاصدارات Windows 3.x حتى تفهم كيف تتم عملية تنفيذ اكثر من بروسس في وقت واحد.





* نظم 16 bit



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

فعندما تقوم بتنشيط البرنامج الثاني، يقوم نظام التشغيل باجراء جميع العمليات الازمة لاعادة انعاش واستمرار عملية تنفيذ البرنامج من النقطة التي وقف عندها. طبعا معظم هذه العمليات منخفضة المستوى low level وهي خاصة بنقل المسجلات Registers وساعة التنفيذ CPU Time واشياء خاصة بالمعالج وهي خارج عن موضوعنا الان.



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



والان سأثبت لك هذه الحقيقة بهذا المثال البسيط، قم بانشاء برنامج بسيط لطباعة ارقام في حلقة تكرارية كهذا البرنامج بلغة C او ما يشابهه باي لغة برمجة اخرى:






==================================

#include



void main ()

{

int iCounter = 0;



while (true)

printf ("r%d", iCounter++);

}

==================================




والان اريد منك تشغيل نسختين من هذا البرنامج، ووضع النافذتين متجانبتين على الشاشة. تلاحظ ان نسخة واحدة من النسختين يتم تنفيذها (النسخة النشطة) اما الاخرى فهي ساكنة وواقفة لا تتحرك. ولو تجعل النسخة الثانية هي النشطة ستتم عملية الايقاف المؤقت للاولى وستستمر الثانية بالعمل. وهذه طريقة تنفيذ اكثر من تطبيق –على قولتهم في وقت واحد!.





* نظم 32 bit



في نظم 32 بت والتي بدأت منذ اصدار Win 95 وما بعده اصبح عملية تنفيذ اكثر من تطبيق اكثر واقعية من نظم 16 بت. وقد تطورت ميكانيتها تطور كبير. فلو تقوم بعملية تشغيل نسختين من البرنامج السابق في وقت واحد، لن يكون هنالك وقف مؤقت! بل ستلاحظ ان كلا البرنامجين يعملان بشكل طبيعي. مع ذلك اريد ان اذكرك ان المظاهر خداعة! فالبرنامجان لا يعملان في وقت واحد، وانما تتم عملية التناوب بينهما بشكل استمراري.



لتوضيح فكرة عملية التناوب، راقب في الخطوات التالية كيف يقوم نظام التشغيل بتنفيذ تعليمات كلا البرنامجين Processes:



1) سيتحول نظام التشغيل الى النسخة الاولى ويبدأ بطباعة قيمة العداد iCounter وهي صفر

2) سينتقل نظام التشغيل الى النسخة الثانية ويبدأ بطباعة قيمة العداد iCounter وهي صفر

3) يعود نظام التشغيل الى النسخة الاولى ويطبع قيمة العداد iCounter وهي واحد

4) يعود نظام التشغيل الى النسخة الثانية ويطبع قيمة العداد iCounter وهي واحد

5) يعود نظام التشغيل مجددا الى النسخة الاولى ويطبع قيمة العداد iCounter وهي 2

وهكذا ... حتى تتم عملية انتهاء البرنامجين.





* نظم NT وفلسفة الأسبقية Priority



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

والحل الذي طوروه مصمموا نواة التشغيل Windows يعرف بالاسبقية Priority. وهي ببساطة شديدة اعطاء البرنامج النشط وقت اكثر وفرصة اكثر للمعالجة من البرامج الاخرى.



ساوضح مدى تأثير الاسبقية على المثال السابق، الخطوات التالية تعرض لك كيف تقوم نظم NT و 2000 بتنفيذ البرنامجين:



اذا كان النسخة الاولى هي النشطة:

1) سيتحول نظام التشغيل الى النسخة الاولى ويبدأ بطباعة قيمة العداد iCounter وهي صفر

2) سيزيد من قيمة العداد ويطبع قيمة iCounter وهي واحد

3) سيزيد من قيمة العداد ويطبع قيمة iCounter وهي 2

4) سيتحول نظام التشغيل الى النسخة الثانية ويطبع قيمة iCounter وهي صفر

5) يعود نظام التشغيل الى النسخة الاولى ويطبع قيمة iCounter وهي 3

6) سيزيد من قيمة العداد ويطبع قيمة iCounter وهي 4

7) سيزيد من قيمة العداد ويطبع قيمة iCounter وهي 5

8) سيتحول نظام التشغيل الى النسخة الثانية ويطبع قيمة iCounter وهي 1

9) يعود نظام التشغيل الى النسخة الاولى ويطبع قيمة iCounter وهي 6



وهكذا..



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



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



وهذه هي فلسفة الاسبقية التي ظهرت منذ اصدار NT وحتى اصدارات 2000. تستطيع التحكم بالاسبقية عن طريق الضغظ بالزر الفأرة الايمن على البروسس في خانة التبويب Processes في النافذة Windows Task Manager .

ايضا، تستطيع زيادة الاسبقية لبرنامجك اذا اردت عن طريق اجراءات متقدمة من اجراءات API والتي بصراحة شديدة لا اود اللعب معها كثيرا، في تتطلب مبرمجين شجعان! وحتى لو كنت من المستخدمين، تستطيع الغاء تقنية الاسبقية التي يوفرها نظام Win 2000 وتجعل عملية تنفيذ البرامج كما تعمل في اصدارات Win 9x وذلك عن طريق الخطوات التالية:

1) من ايقونة My Computer اضغط الزر الايمن ثم اختر Properties

2) حدد خانة التبويب Advanced ثم اضغط على الزر Performance Options

3) حدد BackGround Services ذا اردت الغاء تطبيق مبدأ الاسبقية. او Applications اذا رغبت غير ذلك.



اخيرا، اتمنى ان يكون التوضيح غير معقد! فان مثل هذه المسائل المتقدمة قد قضى المبرمج شهور طويلة –ان لم تكن اعوام- لتعلمها واستعيباها فارجوا ان تضع ذلك في ذهنك ومعرفة مدى الصعوبة التي اواجهها في توصيل مثل هذه المواضيع لك في مقالات او دروس مبسطة!

درس التطبيقات العاملة Processes ومسارات التنفيذ Threading

أضف هذه المادة في موقعك:
مواد مشابهة:
درس : كيفية استخدام وظائف API . درس : كيفية استخدام وظائف API .
درس : كيفية استخدام وظائف API .
(مرات المشاهدة: 4,034 مرات)
برمجة الويندوز باستخدام Win32 API function ( الدرس الأول ) برمجة الويندوز باستخدام Win32 API function ( الدرس الأول )
برمجة الويندوز باستخدام Win32 API function ( الدرس الأول )
(مرات المشاهدة: 3,325 مرات)
استخدام تنسيق ويندوز XP مع ادوات التحكم في تطبيقات الويندوز استخدام تنسيق ويندوز XP مع ادوات التحكم في تطبيقات الويندوز
استخدام تنسيق ويندوز XP مع ادوات التحكم في تطبيقات الويندوز
(مرات المشاهدة: 5,859 مرات)
برمجة الويندوز باستخدام Win32 API function ( الدرس الثاني ) برمجة الويندوز باستخدام Win32 API function ( الدرس الثاني )
برمجة الويندوز باستخدام Win32 API function ( الدرس الثاني )
(مرات المشاهدة: 2,339 مرات)
الاختلافات بين برامج الـ DOS وبرامج الـ Windows الاختلافات بين برامج الـ DOS وبرامج الـ Windows
الاختلافات بين برامج الـ DOS وبرامج الـ Windows
(مرات المشاهدة: 5,398 مرات)
اجراءات API و مقدمة عن الرسائل اجراءات API و مقدمة عن الرسائل
اجراءات API و مقدمة عن الرسائل
(مرات المشاهدة: 4,801 مرات)
برمجة الويندوز باستخدام Win32 API function ( الدرس الرابع ) برمجة الويندوز باستخدام Win32 API function ( الدرس الرابع )
برمجة الويندوز باستخدام Win32 API function ( الدرس الرابع )
(مرات المشاهدة: 2,008 مرات)
برمجة الويندوز باستخدام Win32 API function ( الدرس الثالث ) برمجة الويندوز باستخدام Win32 API function ( الدرس الثالث )
برمجة الويندوز باستخدام Win32 API function ( الدرس الثالث )
(مرات المشاهدة: 1,934 مرات)
برمجة الويندوز باستخدام Win32 API function ( مقدمة ) برمجة الويندوز باستخدام Win32 API function ( مقدمة )
برمجة الويندوز باستخدام Win32 API function ( مقدمة )
(مرات المشاهدة: 3,898 مرات)
برمجة الويندوز باستخدام Win32 API function ( الدرس الخامس ) برمجة الويندوز باستخدام Win32 API function ( الدرس الخامس )
برمجة الويندوز باستخدام Win32 API function ( الدرس الخامس )
(مرات المشاهدة: 2,028 مرات)

About
جميع الحقوق في هذا الموقع محفوظة وكل المواد على الاقسام ملك لاصحابها :Copyright © All rights reserved