عملية (حوسبة): الفرق بين النسختين

تم إضافة 12 بايت ، ‏ قبل سنة واحدة
ط
[[ملف:Process states.en.svg|thumb|left|300px|حالات عملية حاسوبية في نظام تشغيل عصري.]]
 
في الحاسوبية، '''عملية''' {{إنج|process}} هي [[كائن (علوم الحاسوب)|كائن]] برنامج قيد التنفيذ بالإضافة إلى القيم الحالية لكل من عداد البرنامج والسجلات {{إنج|register}} والمتغيرات {{إنج|variable}}.<ref>{{مرجعاستشهاد ويب| مسار = https://d-nb.info/gnd/4235427-4 | عنوان = معلومات عن عملية (حوسبة) على موقع d-nb.info | ناشر = d-nb.info|مسار أرشيف= https://web.archive.org/web/20191210173716/https://d-nb.info/gnd/4235427-4|تاريخ أرشيف=2019-12-10}}</ref><ref>{{مرجعاستشهاد ويب| مسار = https://babelnet.org/synset?word=bn:03211034n | عنوان = معلومات عن عملية (حوسبة) على موقع babelnet.org | ناشر = babelnet.org| مسار أرشيف = https://web.archive.org/web/20190830163545/https://babelnet.org/synset?word=bn:03211034n | تاريخ أرشيف = 30 أغسطس 2019 }}</ref> أي أنه لا يحوي فقط الكود ولكن أيضا فعالية البرنامج الحالية. مبدئيا لكل عملية [[وحدة المعالجة المركزية|وحدة معالجة مركزية]] افتراضية. ولكن في الواقع ال CPU الفعلي يتقلب بين العمليات التي تحتاج إلى هذا ال- CPU.
هذا التقلب يُسمى البرمجة المتعددة {{إنج|multiprogramming}}. وكذلك لكل عملية لها عداد برنامج افتراضي مخزن عندها وعند حيازتها لل- CPU تنسخ محتوى هذا العداد إلى العداد الفعلي في ال- CPU وعند الانتهاء يُنسخ العداد الفعلي في داخل العداد الافتراضي للبرنامج لاستخدامه لاحقا.
يوجد فروق بين العملية والبرنامج فالفرق حاذق ولكنه حاسم وذلك لأن العملية هي فعالية من أي نوع أي عنده برنامج ومُدخل ومُخرج وحالة (state). كما أن المُعالج (processor) الواحد قد تتشارك فيه عدة عمليات وكمية الوقت الذي يأخذه كل برنامج يتحدد بواسطة خوارزمية جدولة. وفي حالة أن نفس البرنامج تستخدمه عمليتان (أو أكثر) لا يغير من حقيقة أنهما عمليتان منفصلتان.
# عملية "منتهية"، أي أن العملية انهت عملها وتوقفت.
 
من الناحية المنطقية، الحالتان الثانية والرابعة هما نفس الأمر إذ أن كليهما قابلان للتشغيل ولكن الحالة الرابعة لا تستطيع العمل لأن المعالج المركزي ليس متفرغا للعملية وهي تكون دوما جاهزة حتى يتفرغ لها المعالج المركزي. أما الحالة الأولى ففيها تكون العملية فقط عندما تنتج وقبل ولوجها في الحالة الرابعة، وعندما العملية تأخذ حيز في المعالج المركزي ويُنفذ أوامرها تكون في الحالة الثانية يمكن أن تُقطع وذلك لأن المُجدول اختار عملية أخرى لينفذها المعالج المركزي، وفي حالة أنها تريد مُدخل من المستخدم فانها تنتقل للحالة الثالثة وعند اتمام الادخالالإدخال تعود لتكون جاهزة، لربما اخذت عملية اخرى حيزها ولما يحين دورها. وحين انتهاء العملية من تنفيذ البرنامج وتنهي عملها تنتقل للحالة الأخيرة.
=== كتلة التحكم بالعملية ===
[[ملف:المنشور3.jpg|thumb|كتلة التحكم بالعملية (PCB)]]
كل عملية في نظام التشغيل مُمثلة بواسطة كتلة التحكم بالعملية {{إنج|Process Control Block}} اوأو بالاختصار PCB. وهي تحوي العديد من المعلومات المرتبطة بعملية مُعينة، من ضمنها :
* حالة العملية : وقد تكون أيا من الحالات الانف ذكرها.
* عداد البرنامج : العداد يشير إلى عنوان الامر التالي الذي يجب تنفيذه في هذه العملية.
* سجلات المعالج المركزي {{إنج | CPU registers}}: السجلات تختلف وكذا عددها وهذا يتعلق ببنية الحاسوب. ومن ضمنها : المُراكمات، سجلات الاستدلال، مؤشر المكدس، سجلات متعددة الاستخدامات بالاضافةبالإضافة لسجل الأعلام {{إنج | flag register}}. بالاضافةبالإضافة لعداد البرنامج معلومات الحالة هذه يجب حفظها عند ظهور مقاطعة وذلك للسماح لاحقا بأن تعمل العملية بشكل ملائم.
* معلومات لمُجدول المعالج المركزي : هذه المعلومات من ضمنها اولوية العملية، مؤشرات لطوابير الجدولة واية معلومات اخرى متعلقة بالجدولة.
* معولومات لادارة الذاكرة : قد تحوي على معلومات مثل سجلات القاعدة والحد {{إنج|base and limit registers}}، جدول الصفحات أو جدول الاقسام حسب نظام الذاكرة المُستخدم في نظام التشغيل.
* معلومات حسابية : هذه المعلومات من ضمنها كمية وقت استخدام المعالج المركزي وايضا كمية وقت استخدام وقت الحقيقة، حدود الوقت، ارقام الحسابات، رقم العملية اوأو العمل، وهكذا...
* معلومات عن حالة المدخلات/المخرجات (I/O) : هذه المعلومات من ضمنها قائمة اجهزة المدخلات/المخرجات التي خُصصت للعملية، قائمة الملفات المفتوحة وهكذا.
باختصار، كتلة التحكم بالعملية هو مستودع ايَّة معلومة التي قد تختلف من عملية إلى اخرى.
== أفعال على العملية ==
=== إنتاج العملية ===
تحتاج نُظم التشغيل ايجاد وسيلة بها تُنتج العمليات وتُنهيها حسب الحاجة ( يُستثنى من هذا بعض الاجهزة التي عندما تُشغل تكون كل عملياتها جاهزة ولا حاجة لانهائها اوأو البدأ بجديدة مثل : المكرويف ) وما يلي هي الوسائل الرئيسية لإنتاج العملية :
# ابتداء النظام.
# تنفيذ نداء النظام لإنتاج العمليات بواسطة عملية قيد التنفيذ.
في الحالة الاولى، عندما يُقلع النظام عادة ما يُنتج عدة عمليات، منها ما هو عمليات مُقدمة أي انها تتفاعل مع المُستخدم وتنفذ الاوامر من أجلهم، واخرى هي للخلفية وهي غير مرتبطة بمستخدم مُعين، ولكن عندها وظيفة مُعينة. هذه العمليات تُسمى أيضا شياطين{{إنج | deamons}}. في نظام [[يونكس|UNIX]] يمكن بواسطة برنامج ps رؤية كل العمليات الفعَّالة اما في [[مايكروسوفت ويندوز|Windows]] فهذا بمساعدة [[مدير مهام ويندوز]].
 
ثانيا، بالاضافةبالإضافة إلى العملية التي أُنتجت في وقت الاقلاعالإقلاع عمليات جديدة يمكن أن تُنتج لاحقا. بشكل عام يمكن للعملية الواحدة طلب إنتاج عمليات اخرى من شأنها ان تعين العملية على قضاء عملها، وهذا في خصوصا في حالة أنَّ العمل الذي على العملية فعله يمكن أن ينفذ بواسطة عمليات مرتبطة ومستقلة.
 
ثالثا، في الانظمة التفاعلية، يمكن للمستخدم ادخال امر به يبدأ عملية جديدة وكذا الامر بالنسبة لضغط ايقونة. وفي الحالتين العملية تبدأ وتنفيذ البرنامج في العملية يبدأ تنفيذه. في الانظمة التي تعتمد على الاوامر وشبيهة بنظام [[يونكس|UNIX]] تشغيل الامر X، يسمح للعملية بأن تستولي على الشباك الذي فيه بدأت. في [[مايكروسوفت ويندوز]] عند ابتداء عملية فانها لا تملك [[شباك(حاسوب)|شباكا]] ويمكنها إنتاج واحد كهذا والمعظم يفعل هذا. في النظامين يمكن للمستخدم أن يكون عنده عدة شبابيك مفتوحة وكل واحدة منها تشغل عملية مُختلفة. وبإستخدام [[فأرة (حاسوب)|الفأرة]] يمكن للمستخدم اختيار شباك والتفاعل معه مثلا ادخال مُعطيات اذاإذا لزم الامر.
 
الحالة الاخيرة لإنتاج العمليات هي عمل بالدفعات وهي تختص بانظمة الدفعات {{إنج|batch systems}} المتواجدة في [[حاسوب كبير|الحواسيب الكبيرة]]. في هذه الانظمة يمكن للمستخدم ادخال دفعات العمل (ربما من بعيد). عندما يقرر النظام انه يحوي الموارد الكافية لتشغيل عمل جديد، تُنتج عملية جديدة لإنتاج العملية وتشغل العمل التالي في طابور المُدخلات.
 
عمليا في كل هذه الحالات إنتاج العملية يكون بواسطة وجود عملية فعالة التي تطلب من النظام بواسطة أمر نظام لإنتاج عملية جديدة. وأمر النظام هذا يقول للنظام أن أنتج عملية جديدة ويومأ، بشكل مباشر اوأو غير مباشر، أي برنامج يشغل.
 
في نظام [[يونكس|UNIX]] هنالك أمر نظام واحد لإنتاج العمليات وهو fork. أمر النظام هذا يستنسخ العملية التي أستدعته. بعدما استدعاء fork للعمليتين الابن والاب يوجد نفس صورة الذاكرة، نفس البيئة (وهي مجموعة من المتغيرات التي تحوي [[سلسلة (علم الحاسوب)|سلاسل]] وهي مُتاحة لكل العمليات ) ونفس الملفات المفتوحة. عادة ما يقوم الابن باستدعاء execve اوأو امر مشابه ليغير صورة الذاكرة ويشغل برنامج جديد. ونقيضها نجده في نظام windows حيث أنه يوجد أمر واحد،CreateProcess، يقوم بالاهتمام بإنتاج البرنامج وايضا تحميل البرنامج الصحيح، ولهذا الامر 10 عوامل (مُعطيات اوأو مُدخلات) ومن ضمنها البرنامج الذي يجب تشغيله.
=== إنهاء العملية ===
العملية تنتهي عندما تنهي تنفيذ اخر أوامرها وتطلب من نظام التشغيل أن تتوقف. هنالك عدة حالات يمكن أن تسبب انهاء العملية اهمها :
# انهاء بسبب خطأ قاتل {{إنج|fatal error}}
# العملية قُتلت بواسطة عملية اخرى.
الحالتين الاوليين الانهاءالإنهاء فيهما يكون تطوعي، اما الاخيرين ففيهما الانهاءالإنهاء اجباري.
 
اغلب الاحيان تنتهي العملية لانها قد انهت تنفيذ برنامجها. في نظام [[يونكس|UNIX]] الانهاءالإنهاء يكون بواسطة الامر exit اما في [[مايكروسوفت ويندوز|windows]] بواسطة ExitProcess. السبب الثاني للانهاءللإنهاء هو خطأ قاتل مثلا عدم وجود الملف المرغوب بالوصول اليه وما إلى ذلك من الاخطاء التي قد يقع بها بعض المستخدمين. السبب الثالث هو وجود خطأ في العملية مثلا محاولة تنفيذ عملية غير قانونية ومحاولة الوصول إلى معلومات غير موجودة اوأو محاولة القسمة على 0. في بعض الانظمة العملية تخبر النظام انها تريد الاهتمام بالخطأ بنفسها، وهذا يسبب توقف العملية بدل انهائها عند حدوث هذا الخطأ. والسبب الرابع للانهاءللإنهاء هو أن العملية تنفذ أمرا فيه على النظام ان ينهي عملية اخرى. في نظام [[يونكس|UNIX]] هذه الامر هو kill، وفي [[مايكروسوفت ويندوز|Windows]] هو TerminateProcess وفي كلتا الحالتين على القاتل ان يملك الصلاحية الملائمة لتنفيذ عملية القتل. في بعض الانظمة، عند انتهاء العملية ينتهي معها كل عملية انتجتها هذه العملية ولكن لا يعمل أيا من [[يونكس|UNIX]] و [[مايكروسوفت ويندوز|windows]] بهذه الطريقة.
== مصادر ==
{{مراجع}}