مرجع
آخر الزيارات

عملية (حوسبة)

1٬464 كلمة•0 مشاهدة•🗒️ منذ 16 يوماً
باختصار: في الحاسوبية، العملية هي كائن برنامج قيد التنفيذ إلى جانب القيم الحالية لكل من عداد البرنامج والسجلات والمتغيرات . تجد هنا «إنتاج العملية»، «خطوط» و«حالة العملية» ضمن 8 أقسام.
المحتويات
  1. إنتاج العملية
  2. خطوط
  3. حالة العملية
  4. انهاء بسبب خطأ قاتل
  5. طوابير الجدولة
  6. كتلة التحكم بالعملية
  7. إنهاء العملية
  8. جدولة العملية
عملية (حوسبة)

على سبيل التعريف، في الحاسوبية، العملية هي كائن برنامج قيد التنفيذ إلى جانب القيم الحالية لكل من عداد البرنامج والسجلات والمتغيرات . أي أنه لا يحوي فقط الكود ولكن كذلك فعالية البرنامج الحالية. مبدئيا لكل عملية وحدة معالجة مركزية افتراضية. ولكن في الواقع ال CPU الفعلي يتقلب بين العمليات التي تحتاج إلى هذا ال- CPU. وتعرض الأقسام التالية جوانب أخرى من الموضوع.

وفي هذا الصدد، يوجد فروق بين العملية والبرنامج فالفرق حاذق ولكنه حاسم وذلك لأن العملية هي فعالية من أي نوع أي عنده برنامج ومُدخل ومُخرج وحالة (state). كما أن المُعالج (processor) الواحد قد تتشارك فيه عدة عمليات وكمية الوقت الذي يأخذه كل برنامج يتحدد بواسطة خوارزمية جدولة. وفي حالة أن نفس البرنامج تستعمله عمليتان (أو أكثر) لا يغير من حقيقة أنهما عمليتان منفصلتان.

ومن ناحية أخرى، هذا التقلب يُسمى البرمجة المتعددة . وكذلك لكل عملية لها عداد برنامج افتراضي مخزن عندها وعند حيازتها لل- CPU تنسخ محتوى هذا العداد إلى العداد الفعلي في ال- CPU وعند الانتهاء يُنسخ العداد الفعلي في داخل العداد الافتراضي للبرنامج لاستخدامه لاحقا.

مصطلحات مهمة

إنتاج العملية

كذلك، في الحالة الأولى، عندما يُقلع النظام عادة ما يُنتج عدة عمليات، منها ما هو عمليات مُقدمة أي انها تتفاعل مع المُستعمل وتنفذ الاوامر من أجلهم، واخرى هي للخلفية وهي غير مرتبطة بمستعمل مُعين، ولكن عندها وظيفة مُعينة. هذه العمليات تُسمى كذلك شياطين. في نظام UNIX يمكن بواسطة برنامج ps رؤية كل العمليات الفعَّالة اما في Windows فهذا بمساعدة مدير مهام ويندوز.

  • ابتداء النظام.
  • تنفيذ نداء النظام لإنتاج العمليات بواسطة عملية قيد التنفيذ.
  • طلب المستعمل لإنتاج عملية جديدة.
  • بدء عمل بالدفعات. (batch job)

وفي هذا الصدد، في نظام UNIX هنالك أمر نظام واحد لإنتاج العمليات وهو fork. أمر النظام هذا يستنسخ العملية التي أستدعته. بعدما استدعاء fork للعمليتين الابن والاب يوجد نفس صورة الذاكرة، نفس البيئة (وهي مجموعة من المتغيرات التي تحوي سلاسل وهي مُتاحة لكل العمليات) ونفس الملفات المفتوحة. عادة ما يقوم الابن باستدعاء execve أو امر مشابه ليغير صورة الذاكرة ويشغل برنامج جديد. ونقيضها نجده في نظام windows حيث أنه يوجد أمر واحد،CreateProcess، يقوم بالاهتمام بإنتاج البرنامج وايضا تحميل البرنامج الصحيح، ولهذا الامر 10 عوامل (مُعطيات أو مُدخلات) ومن ضمنها البرنامج الذي يجب تشغيله.

من جانب آخر، ثالثا، في الانظمة التفاعلية، يمكن للمستعمل ادخال امر به يبدأ عملية جديدة وكذا الامر بالنسبة لضغط ايقونة. وفي الحالتين العملية تبدأ وتنفيذ البرنامج في العملية يبدأ تنفيذه. في الانظمة التي تعتمد على الاوامر وشبيهة بنظام UNIX تشغيل الامر X، يسمح للعملية بأن تستولي على الشباك الذي فيه بدأت. في مايكروسوفت ويندوز عند ابتداء عملية فانها لا تملك شباكا ويمكنها إنتاج واحد كهذا والمعظم يفعل هذا. في النظامين يمكن للمستعمل أن يكون عنده عدة شبابيك مفتوحة وكل واحدة منها تشغل عملية مُختلفة. وبإستخدام الفأرة يمكن للمستعمل اختيار شباك والتفاعل معه مثلا ادخال مُعطيات إذا لزم الامر.

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

ومن ناحية أخرى، تحتاج نُظم التشغيل ايجاد وسيلة بها تُنتج العمليات وتُنهيها حسب الحاجة (يُستثنى من هذا بعض الاجهزة التي عندما تُشغل تكون كل عملياتها جاهزة ولا حاجة لانهائها أو البدأ بجديدة مثل: المكرويف) وما يلي هي الوسائل الرئيسية لإنتاج العملية:

من جانب آخر، ثانيا، إلى جانب العملية التي أُنتجت في وقت الإقلاع عمليات جديدة يمكن أن تُنتج لاحقا. بشكل عام يمكن للعملية الواحدة طلب إنتاج عمليات أخرى من شأنها ان تعين العملية على قضاء عملها، وهذا في خصوصا في حالة أنَّ العمل الذي على العملية فعله يمكن أن ينفذ بواسطة عمليات مرتبطة ومستقلة.

علاوةً على ذلك، الحالة الاخيرة لإنتاج العمليات هي عمل بالدفعات وهي تختص بانظمة الدفعات المتواجدة في الحواسيب الكبيرة. في هذه الانظمة يمكن للمستعمل ادخال دفعات العمل (ربما من بعيد). عندما يقرر النظام انه يحوي الموارد الكافية لتشغيل عمل جديد، تُنتج عملية جديدة لإنتاج العملية وتشغل العمل التالي في طابور المُدخلات.

خطوط

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

حالة العملية

من جانب آخر، عملية "مُنتظرة"، أي أن العملية تنتظر ظهور حادثة مثل اكتمال المُدخلات، أو وصول إشارة.

عملية "جديدة"، أي أن العملية قيد الإنتاج.

ومن جهة أخرى، بينما العملية تُنفذ تُغير حالاتها، وحالة العملية مُعرفة جزئيا بأنها الفعالية الحالية للعملية. والعملية يمكن أن تكون في أحد الحالات التالية:

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

عملية "منتهية"، أي أن العملية انهت عملها وتوقفت.

عملية "جاهزة"، أي أن العملية جاهزة لتأخذ حيز في المعالج.

عملية "مُشغلة"، أي أن العملية تُنفذ.

انهاء بسبب خطأ قاتل

العملية قُتلت بواسطة عملية أخرى.

وفي هذا الصدد، الحالتين الاوليين الإنهاء فيهما يكون تطوعي، اما الاخيرين ففيهما الإنهاء اجباري.

في هذا الإطار، اغلب الاحيان تنتهي العملية لانها قد انهت تنفيذ برنامجها. في نظام UNIX الإنهاء يكون بواسطة الامر exit اما في windows بواسطة ExitProcess. السبب الثاني للإنهاء هو خطأ قاتل مثلا عدم وجود الملف المرغوب بالوصول اليه وما إلى ذلك من الاخطاء التي قد يقع بها بعض المستعملين. السبب الثالث هو وجود خطأ في العملية مثلا محاولة تنفيذ عملية غير قانونية ومحاولة الوصول إلى معلومات غير موجودة أو محاولة القسمة على 0. في بعض الانظمة العملية تخبر النظام انها تريد الاهتمام بالخطأ بنفسها، وهذا يسبب توقف العملية بدل انهائها عند حدوث هذا الخطأ. والسبب الرابع للإنهاء هو أن العملية تنفذ أمرا فيه على النظام ان ينهي عملية أخرى. في نظام UNIX هذه الامر هو kill، وفي Windows هو TerminateProcess وفي كلتا الحالتين على القاتل ان يملك الصلاحية الملائمة لتنفيذ عملية القتل. في بعض الانظمة، عند انتهاء العملية ينتهي معها كل عملية انتجتها هذه العملية ولكن لا يعمل أيا من UNIX وwindows بهذه الطريقة.

طوابير الجدولة

أفعال على العملية

وفي السياق ذاته، حين بدأ العملية في النظام، تُوضع في طابور عمل، ويحوي هذا الطابور كل العمليات في النظام. العمليات القاطنة في الذاكرة الرئيسية وهي جاهزة وتنتظر ان يتم تنفيذها يحفظها النظام في قائمة تُسمى طابور الجاهزين. بشكل عام هذه القائمة تُحفظ بشكل قائمة متصلة. رأس طابور الجاهزين مؤشر لل-PCB الأول والنهائي في القائمة. وكل PCB عنده مؤشر إلى ال PCB التالي في طابور الجاهزين. طوابير أخرى يستعملها النظام وهي طابور الاجهزة، وطابور I\O وهو طابور للمُدخلات.

كتلة التحكم بالعملية

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

في هذا الإطار، باختصار، كتلة التحكم بالعملية هو مستودع ايَّة معلومة التي قد تختلف من عملية إلى أخرى.

حالة العملية: وقد تكون أيا من الحالات الانف ذكرها.

علاوةً على ذلك، معلومات لمُجدول المعالج المركزي: هذه المعلومات من ضمنها اولوية العملية، مؤشرات لطوابير الجدولة واية معلومات أخرى متعلقة بالجدولة.

في هذا الإطار، كل عملية في نظام التشغيل مُمثلة بواسطة كتلة التحكم بالعملية أو بالاختصار PCB. وهي تحوي الكثير من المعلومات المرتبطة بعملية مُعينة، من ضمنها:

وفي هذا السياق، سجلات المعالج المركزي : السجلات تختلف وكذا عددها وهذا يتعلق ببنية الحاسوب. ومن ضمنها: المُراكمات، سجلات الاستدلال، مؤشر المكدس، سجلات متعددة الاستخدامات بالإضافة لسجل الأعلام . بالإضافة لعداد البرنامج معلومات الحالة هذه يجب حفظها عند ظهور مقاطعة وذلك للسماح لاحقا بأن تعمل العملية بشكل ملائم.

ومن جهة أخرى، عداد البرنامج: العداد يشير إلى عنوان الامر التالي الذي يجب تنفيذه في هذه العملية.

من جانب آخر، معلومات عن حالة المدخلات/المخرجات (I/O): هذه المعلومات من ضمنها قائمة اجهزة المدخلات/المخرجات التي خُصصت للعملية، قائمة الملفات المفتوحة وهكذا.

في هذا الإطار، معلومات حسابية: هذه المعلومات من ضمنها كمية وقت استخدام المعالج المركزي وايضا كمية وقت استخدام وقت الحقيقة، حدود الوقت، ارقام الحسابات، رقم العملية أو العمل، وهكذا...

إنهاء العملية

وفي هذا الصدد، العملية تنتهي عندما تنهي تنفيذ اخر أوامرها وتطلب من نظام التشغيل أن تتوقف. هنالك عدة حالات يمكن أن تسبب انهاء العملية اهمها:

انهاء طبيعي (كما اسلفنا الذكر عندما تطلب العملية ذلك)

انهاء لدخول البرنامج مُدخل خطأ لوجود علة في التنفيذ.

جدولة العملية

إضافةً إلى ذلك، هدف البرمجة المتعددة هو وجود عملية مُشتغلة في كل لحظة، لرفع كمية وقت استخدام المعالج المركزي. وهدف مشاركة الوقت هو تحويل المعالج المركزي بين العمليات بوتيرة عالية حتى يتسنى للمُستعمل التفاعل مع كل برنامج حين كونها تعمل. حتى نصل إلى هذه الاهداف مُجدول العمليات يختار عملية متاحة (لربما اختارها من مجموعة عمليات مُتاحة) كي يُنفذ البرنامج على المعالج المركزي. في نظام العملية الواحدة لن يكون هنالك ابدا أكثر من عملية واحدة تعمل على المعالج، وإن وجد أكثر من واحد تنتظر كل العمليات حتى تنتهي العملية الحالية ثم يختار المجدول احدها وهكذا.

ما رأيك في هذه المقالة؟

📝 هل في هذه المقالة خطأ؟

إذا وجدت معلومة تحتاج تصحيحاً أو إضافة، أو أردت حذف المقالة، أرسل لنا طلباً وسنراجعه.