Professional Documents
Culture Documents
Process Management
3
د .المثنى خضر
24/10/2023 13
مفهوم اإلجرائيّة
• ال : Processهي البرنامج بعد تحميله إلى ال RAMو أثناء التنفيذ .
• يتم تنفيذ العديد من البرامج ضمن أنظمة التشغيل كـ Processيتم تخصيص قسم من الذاكرة لكل Process
حيث تدعى هذه المساحة بـ . Process address space
: Programهو passive entityمخزن على hard diskو هو ملف تنفيذي . executable file
: Processهو البرنامج عندما يتم تحميل الملف التنفيذي executable fileالخاص به إلى ال RAMفيصبح
. active entity
مالحظة :
عادة ما يتم وضع برنامج معين للتنفيذ من خالل :النقر على الماوس ضمن ال ، GUIأو من خالل
command lineباسم البرنامج المراد تنفيذه ،عندما يدخل البرنامج قيد التنفيذ يتحول عندها إلى
عملية أو عدة عمليات .
1
نظم تشغيل | 1عملي مشترك
اإلجرائية في الذاكرة
))))Satck
ألنها reborn value • ) ][int main (int argc , char *argv
))))Satck
ألنها parameters
))))Satck
• ; int *values
ألنها local variables
• ; int I
))))Heap
ألنها تحوي متحوالت ديناميكية
نالحظ أن المؤشر valuesيتم تخزينه ضمن ال Stackألنه متحول محلي ضمن التابع ، mainلكن ما ▪
يقوم بالتأشير عليه يتم تخزينه ضمن ال . heap
2
/ITE.RBCs
نظم تشغيل | 1عملي مشترك
يوجد في كال من الذاكرة الرئيسية و القرص الصلب جدول يحدد فيما إذا كان بايت معين ضمنه محجوز ▪
أم فارغ ،لذلك من الضروري استخدام التعليمة freeبعد الحجز الديناميكي في اللغة Cو ذلك لتحرير
المساحة من الذاكرة التي تم حجزها في الذاكرة ، RAMفي حال عدم تحريرها سيبقى الجدول الموجود
في ال RAMيعتقد أن المساحة التي تم حجزها ما زالت محجوزة و بالتالي سيتواجد مساحات في
الذاكرة من المفترض أن تكون فارغة و لكن الذاكرة تعتقد بأنها مملوءة و بالتالي لن يتم تخصيصها ألي
شيء مستقبالً ،تدعى هذه الظاهرة ب ( memory leakفي اللغة javaيتكفل ال garbage
collectorبمهمة تفريغ المساحات المحجوزة في نهاية التنفيذ تلقائياً ).
3
/ITE.RBCs
نظم تشغيل | 1عملي مشترك
• أثناء تنفيذ ال Processإما أن يحصل عليها interruptأو تصبح في حالة انتظار ل I/O eventsأو تنتهي .
4
/ITE.RBCs
نظم تشغيل | 1عملي مشترك
مالحظة :
-الحالة اإلجرائيّة ألي تعليمة:
جلبها من ال <---- fetch <----- hardإلى الذاكرة <----إنشاء ( أي نقوم بوضعها في ال - ) RAM
<----تنفيذ <----إنهاء .
-أبسط إجرائية (إنشاء ثم تنفيذ ثم إنهاء).
مالحظة :
عند المقاطعة ال يدخل برتل االنتظار ألنه ليس بحاجة لقراءة أو كتابة لذلك يعود لرتل الجاهزيّة .
5
/ITE.RBCs
نظم تشغيل | 1عملي مشترك
المجدول Scheduler
المجدول مسؤول عن اختيار ال processالتي سيتم نقلها إلى التنفيذ على المعالج وفق خوارزمية معينة و ذلك لتحقيق
االستخدام األعظمي للمعالج ،في حال كان المعالج multi-coreيكون لكل نواة مجدول خاص بها .
6
/ITE.RBCs
نظم تشغيل | 1عملي مشترك
• كلما كانت العملية أكبر complex processو نظام التشغيل معقد أكثر ،كلما زاد الوقت الالزم لعملية ال
context-switchو زاد الوقت المهدور من ال . CPU time
• في بعض المعالجات يوجد أكثر من مجموعة من السجالت ضمن المعالج و بالتالي يمكن االحتفاظ بعدة
process contextsضمن المعالج ذاته .
7
/ITE.RBCs
نظم تشغيل | 1عملي مشترك
مثال عن عمل ّية إنشاء عملية جديدة في نظام التشغيل (: )UNIX
تعليمة )( forkهي System Callإلنشاء , new processتنسخ ال address spaceالخاصة بالعمليّة األب ▪
لالبن ،و بعد تطبيق هذه العمليّة يتفرع عنها عمليتين :العمليّة األب و العمليّة الجديدة االبن .
تعليمة )( execهي System Callيتم استدعاءها بعد تعليمة )( ، forkمهمتها تبديل ال address space ▪
الذي تم نسخه من العملية األب ليصبح خاصاً بالبرنامج الجديد الخاص بالعمليّة الجديدة (مما يضمن تبديل
الكود "الخاص باألب في ال address spaceالمنسوخ" بالكود الخاص بالعملية االبن).
تعليمة )( waitتقوم بتنظيم بين عمل العمليات ال childو ال ، parentحيث يتم استدعاؤها في العملية ▪
األب و ذلك النتظار تنفيذ العملية االبن .
مالحظات :
▪ )( : forkتقوم بخلق عملية جديدة من العملية األب و بعدها تكمل العمليتان تنفيذ البرنامج بشكل
متوازي و منفصل ،حيث تقوم العملية )( forkبإرجاع :
: 0إذا كان التنفيذ غي إطار ال .Child process
( Child pidعدد موجب) :إذا كان التنفيذ في إطار ال . Parent process
عدد سالب :في حال فشل عملية ال )(. fork
▪ المقابل للتعليمة )( forkبالنظام windowsهي )( CreateProcessحيث تنسخ ال address
spaceمن ال processالمعرفة فيها لنسخة أخرى .
8
/ITE.RBCs
نظم تشغيل | 1عملي مشترك
• ال pid_tهي data typeفي لغة ال Cو تعني ال Process IDعرفنا من هذا النمط متحول pidو أسندنا له
)( forkو هي System callلخلق processجديدة (. )child process
• كل التعليمات بعد )( forkستنفذ مرتين ،مرة مع ال parent processو مرة مع ال . child process
• ال pidاآلن إما تحتوي على ال process idالخاص بال ( )childإذا نحن في تنفيذ العملية األب ،أو تحتوي
القيمة 0إذا نحن اآلن بتنفيذ العملية االبن .
• حالة تنفيذ العملية االبن (حالة : )pid = 0ستنفذ التعليمة execlpو هي من عائلة التعليمة )( execو
ستقوم باستبدال الكود المتبقي بالكود الخاص بالتعليمة ، lsلذلك لن يتم طباعة السطر ( )LINE Jو ذلك ألن
الكود الخاص بطباعة هذا السطر تم استبداله بالكود الخاص ب lsلذلك ستنفذ التعليمة lsو التي تقوم بعرض
محتويات المجلد الحالي .
9
/ITE.RBCs
نظم تشغيل | 1عملي مشترك
• حالة تنفيذ التعليمة األب (حالة )pid = child pid>0ستقوم هذه العملية بانتظار العملية االبن حتى تنتهي
ثم ستقوم بطباعة . parent code
• إذا الخرج الكلي للبرنامج هو خرج التعليمة lsأوالً تتم طباعة الجملة . parent code
بعض أنظمة التشغيل ال تسمح بوجود ال Childفي حال أن ال Parentأنهى عمله ،أي إذا أنهى ال Parentمهمته
فعلى كل ال Childrenأن تنتهي أيضاً و من هنا يأتي مصطلح ال : cascading terminationو يعني أنه عندما يتم
إنهاء عملية أب ما يتم إنهاء كل العمليات ال Childو ال Grandchildrenحتى آخر ابن ،حيث أن نظام التشغيل هو من
يبدأ بعملية اإلنهاء .
10
/ITE.RBCs
نظم تشغيل | 1عملي مشترك
• العمليات المترابطة تتطلب وجود تواصل ما بين هذه العمليات ). inter-process communication (IPC
• من الممكن أن تكون ال Cooperating processesعلى two systemsمثالً المتصفح و ال serverالذي
يتعامل معه كل منهما يخلق processتتواصل مع األخرى .
• و قد تكون ال Cooperating processesعلى . one system
11
/ITE.RBCs
نظم تشغيل | 1عملي مشترك
12
/ITE.RBCs
نظم تشغيل | 1عملي مشترك
.3ينشئ الخادم منفذي اتصال خاصين و يعيد المؤشر إلى أحدهما إلى العميل .
.4يستخدم العميل و الخادم مقبض المنفذ الثاني إلرسال الرسائل أو لعمليات االستماع إلى الردود .
13
/ITE.RBCs