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

[نسخة منشورة][نسخة منشورة]
تم حذف المحتوى تمت إضافة المحتوى
طلا ملخص تعديل
طلا ملخص تعديل
سطر 1:
[[ملف:Process states.ru.svg|thumb|left|300px|Статусы процессов в современных ОС.]]
 
في الحاسوبية، '''عملية''' {{إنك|process}}، في الحاسوبية عملية هي [[كائن (علوم الحاسوب)|كائن]] برنامج قيد التنفيذ بالإضافة إلى القيم الحالية لكل من عداد البرنامج والسجلات {{إنك|register}} والمتغيرات {{إنك|variable}}. أي أنه لا يحوي فقط الكود ولكن أيضا فعالية البرنامج الحالية. مبدئيا لكل عملية [[وحدة CPUالمعالجة افتراضي,المركزية|وحدة معالجة مركزية]] افتراضية. ولكن في الواقع ال CPU الفعلي يتقلب بين العمليات التي تحتاج إلى هذا ال- CPU .
هذا التقلب يُسمى البرمجة المتعددة {{إنك|multiprogramming}}. وكذلك لكل عملية لها عداد برنامج افتراضي مخزن عندها وعند حيازتها لل- CPU تنسخ محتوى هذا العداد الى العداد الفعلي في ال- CPU وعند الانتهاء يُنسخ العداد الفعلي في داخل العداد الافتراضي للبرنامج لاستخدامه لاحقا .
يوجد فروق بين العملية والبرنامج فالفرق حاذق ولكنه حاسم وذلك لانلأن العملية هي فعالية من أي نوع ايأي عنده برنامج ومُدخل ومُخرج وحالة (state) . كما أن المُعالج (processor) الواحد قد تتشارك فيه عدة عمليات وكمية الوقت الذي يأخذه كل برنامج يتحدد بواسطة خوارزمية جدولة . وفي حالة أن نفس البرنامج تستخدمه عمليتان (اوأو اكثرأكثر) لا يغير من حقيقة انهماأنهما عمليتان منفصلتان .
 
==مصطلحات مهمة==
===حالة العملية===
[[File:Process modes.jpg|350px|thumb|الصورة توضح العلاقة بين حالات العملية ]]
بينما العملية تُنفذ تُغير حالاتها ,حالاتها، وحالة العملية مُعرفة جزئيا بأنها الفعالية الحالية للعملية . والعملية يمكن انأن تكون في احدأحد الحالات التالية :
# عملية "جديدة"، , ايأي أن العملية قيد الانتاج .
# عملية "مُشغلة"، ,أي اي انأن العملية تُنفذ .
# عملية "مُنتظرة"، , ايأي أن العملية تنتظر ظهور حادثة مثل اكتمال المُدخلات , اوأو وصول اشارة .
# عملية "جاهزة"، , ايأي أن العملية جاهزة لتأخذ حيز في المعالج .
# عملية "منتهية"، , ايأي أن العملية انهت عملها وتوقفت .
 
من الناحية المنطقيةالمنطقية، الحالتينالحالتان الثانية والرابعة هما نفس الامر اذ ان كليهما قابلان للتشغيل ولكن الحالة الرابعة لا تستطيع العمل لان المعالج المركزي ليس متفرغا للعملية وهي تكون دوما جاهزة حتى يتفرغ لها المعالج المركزي . اماأما الحالة الاولىالأولى ففيها تكون العملية فقط عندما تنتج وقبل ولوجها في الحالة الرابعة , وعندما العملية تأخذ حيز في المعالج المركزي ويُنفذ اوامرهاأوامرها تكون في الحالة الثانية يمكن أن تُقطع وذلك لانلأن المُجدول اختار عملية اخرىأخرى لينفذها المعالج المركزي , وفي حالة أنها تريد مُدخل من المستخدم فانها تنتقل للحالة الثالثة وعند اتمام الادخال تعود لتكون جاهزة ,جاهزة، لربما اخذت عملية اخرى حيزها ولما يحين دورها . وحين انتهاء العملية من تنفيذ البرنامج وتنهي عملها تنتقل للحالة الاخيرة الأخيرة.
===كتلة التحكم بالعملية===
[[File:المنشور3.jpg|thumb|كتلة التحكم بالعملية (PCB)]]
كل عملية في نظام التشغيل مُمثلة بواسطة كتلة التحكم بالعملية {{إنك|Process Control Block}} او بالاختصار PCB . وهي تحوي العديد من المعلومات المرتبطة بعملية مُعينة ,مُعينة، من ضمنها :
* حالة العملية : وقد تكون أيا من الحالات الانف ذكرها .
* عداد البرنامج : العداد يشير الى عنوان الامر التالي الذي يجب تنفيذه في هذه العملية .
* سجلات المعالج المركزي {{إنك | CPU registers}}: السجلات تختلف وكذا عددها وهذا يتعلق ببنية الحاسوب . ومن ضمنها : المُراكمات ,المُراكمات، سجلات الاستدلال ,الاستدلال، مؤشر المكدس ,المكدس، سجلات متعددة الاستخدامات بالاضافة لسجل الأعلام {{إنك | flag register }} . بالاضافة لعداد البرنامج معلومات الحالة هذه يجب حفظها عند ظهور مقاطعة وذلك للسماح لاحقا بأن تعمل العملية بشكل ملائم .
* معلومات لمُجدول المعالج المركزي : هذه المعلومات من ضمنها اولوية العملية ,العملية، مؤشرات لطوابير الجدولة واية معلومات اخرى متعلقة بالجدولة .
* معولومات لادارة الذاكرة : قد تحوي على معلومات مثل سجلات القاعدة والحد {{إنك|base and limit registers}} , جدول الصفحات أو جدول الاقسام حسب نظام الذاكرة المُستخدم في نظام التشغيل .
* معلومات حسابية : هذه المعلومات من ضمنها كمية وقت استخدام المعالج المركزي وايضا كمية وقت استخدام وقت الحقيقة ,الحقيقة، حدود الوقت ,الوقت، ارقام الحسابات ,الحسابات، رقم العملية او العمل ,العمل، وهكذا ...
* معلومات عن حالة المدخلات/المخرجات (I/O) : هذه المعلومات من ضمنها قائمة اجهزة المدخلات/المخرجات التي خُصصت للعملية ,للعملية، قائمة الملفات المفتوحة وهكذا .
باختصار , كتلة التحكم بالعملية هو مستودع ايَّة معلومة التي قد تختلف من عملية الى اخرى .
===خطوط===
{{Main|خيط (حاسوب)}}
العملية هي برنامج الذي يقوم بخط عمليات واحد . خط التحكم هذا يسمح للعملية بتنفيذ مهمة واحدة في لحظة مُعينة ,مُعينة، مثلا لا يستطيع المرئ ان يكتب الكلمة وفي نفس الوقت فحص املاء الكلمة خلال العملية الواحدة . معظم انظمة التشغيل وسعت مفهوم العملية بالسماح لها باستغلال اكثر من خط واحد وهذا سمح لها بتنفيذ عدة مهمات . وهذه الخاصية مهمة في انظمة فيها المعالج متعدد النواة وذلك لان في هذه الانظمة تسمح بأن تعمل الخطوط على التوازي . في أنظمة فيها الخطوط ,الخطوط، كتلة التحكم بالعملية موسع كذلك ليضم معلومات عن الخطوط لهذه العملية .
 
==جدولة العملية==
هدف البرمجة المتعددة هو وجود عملية مُشتغلة في كل لحظة ,لحظة، لرفع كمية وقت استخدام المعالج المركزي . وهدف مشاركة الوقت هو تحويل {{إنك | switch}} المعالج المركزي بين العمليات بوتيرة عالية حتى يتسنى للمُستخدم التفاعل مع كل برنامج حين كونها تعمل . حتى نصل الى هذه الاهداف '''مُجدول العمليات''' يختار عملية متاحة (لربما اختارها من مجموعة عمليات مُتاحة ) كي يُنفذ البرنامج على المعالج المركزي . في نظام العملية الواحدة لن يكون هنالك ابدا اكثر من عملية واحدة تعمل على المعالج , المعالج، وإن وجد اكثر من واحد تنتظر كل العمليات حتى تنتهي العملية الحالية ثم يختار المجدول احدها وهكذا .
===طوابير الجدولة===
حين بدأ العملية في النظام ,النظام، تُوضع في طابور عمل ,عمل، ويحوي هذا الطابور كل العمليات في النظام . العمليات القاطنة في الذاكرة الرئيسية وهي جاهزة وتنتظر ان يتم تنفيذها يحفظها النظام في قائمة تُسمى طابور الجاهزين . بشكل عام هذه القائمة تُحفظ بشكل [[قائمة متصلة]] . رأس طابور الجاهزين مؤشر لل-PCB الاول والنهائي في القائمة . وكل PCB عنده مؤشر الى ال PCB التالي في طابور الجاهزين . طوابير اخرى يستخدمها النظام وهي طابور الاجهزة ,الاجهزة، وطابور I\O وهو طابور للمُدخلات .
==أفعال على العملية==
===انتاج العملية===
تحتاج نُظم التشغيل ايجاد وسيلة بها تُنتج العمليات وتُنهيها حسب الحاجة ( يُستثنى من هذا بعض الاجهزة التي عندما تُشغل تكون كل عملياتها جاهزة ولا حاجة لانهائها او البدأ بجديدة مثل : المكرويف ) وما يلي هي الوسائل الرئيسية لانتاج العملية :
# ابتداء النظام.
# تنفيذ نداء النظام لانتاج العمليات بواسطة عملية قيد التنفيذ .
# طلب المستخدم لانتاج عملية جديدة .
# بدء عمل بالدفعات . (batch job)
في الحالة الاولى ,الاولى، عندما يُقلع النظام عادة ما يُنتج عدة عمليات ,عمليات، منها ما هو عمليات مُقدمة أي انها تتفاعل مع المُستخدم وتنفذ الاوامر من أجلهم ,أجلهم، واخرى هي للخلفية وهي غير مرتبطة بمستخدم مُعين ,مُعين، ولكن عندها وظيفة مُعينة . هذه العمليات تُسمى أيضا شياطين{{إنك | deamons}} . في نظام [[يونكس|UNIX]] يمكن بواسطة برنامج ps رؤية كل العمليات الفعَّالة اما في [[مايكروسوفت ويندوز|Windows]] فهذا بمساعدة [[مدير مهام ويندوز]] .
 
ثانيا ,ثانيا، بالاضافة الى العملية التي أُنتجت في وقت الاقلاع عمليات جديدة يمكن أن تُنتج لاحقا . بشكل عام يمكن للعملية الواحدة طلب انتاج عمليات اخرى من شأنها ان تعين العملية على قضاء عملها ,عملها، وهذا في خصوصا في حالة أنَّ العمل الذي على العملية فعله يمكن أن ينفذ بواسطة عمليات مرتبطة ومستقلة .
 
ثالثا, في الانظمة التفاعلية ,التفاعلية، يمكن للمستخدم ادخال امر به يبدأ عملية جديدة وكذا الامر بالنسبة لضغط ايقونة . وفي الحالتين العملية تبدأ وتنفيذ البرنامج في العملية يبدأ تنفيذه . في الانظمة التي تعتمد على الاوامر وشبيهة بنظام [[يونكس|UNIX]] تشغيل الامر X , يسمح للعملية بأن تستولي على الشباك الذي فيه بدأت . في [[مايكروسوفت ويندوز]] عند ابتداء عملية فانها لا تملك [[شباك(حاسوب)|شباكا]] ويمكنها انتاج واحد كهذا والمعظم يفعل هذا . في النظامين يمكن للمستخدم أن يكون عنده عدة شبابيك مفتوحة وكل واحدة منها تشغل عملية مُختلفة . وبإستخدام [[فأرة (حاسوب)|الفأرة]] يمكن للمستخدم اختيار شباك والتفاعل معه مثلا ادخال مُعطيات اذا لزم الامر .
 
الحالة الاخيرة لانتاج العمليات هي عمل بالدفعات وهي تختص بانظمة الدفعات {{إنك|batch systems}} المتواجدة في [[حاسوب كبير|الحواسيب الكبيرة]] . في هذه الانظمة يمكن للمستخدم ادخال دفعات العمل (ربما من بعيد) . عندما يقرر النظام انه يحوي الموارد الكافية لتشغيل عمل جديد ,جديد، تُنتج عملية جديدة لانتاج العملية وتشغل العمل التالي في طابور المُدخلات .
 
عمليا في كل هذه الحالات انتاج العملية يكون بواسطة وجود عملية فعالة التي تطلب من النظام بواسطة أمر نظام لانتاج عملية جديدة . وأمر النظام هذا يقول للنظام أن أنتج عملية جديدة ويومأ ,ويومأ، بشكل مباشر او غير مباشر ,مباشر، أي برنامج يشغل .
 
في نظام [[يونكس|UNIX]] هنالك أمر نظام واحد لانتاج العمليات وهو fork . أمر النظام هذا يستنسخ العملية التي أستدعته . بعدما استدعاء fork للعمليتين الابن والاب يوجد نفس صورة الذاكرة ,الذاكرة، نفس البيئة (وهي مجموعة من المتغيرات التي تحوي [[سلسلة (علم الحاسوب)|سلاسل]] وهي مُتاحة لكل العمليات ) ونفس الملفات المفتوحة . عادة ما يقوم الابن باستدعاء execve او امر مشابه ليغير صورة الذاكرة ويشغل برنامج جديد . ونقيضها نجده في نظام windows حيث أنه يوجد أمر واحد ,CreateProcessواحد،CreateProcess, يقوم بالاهتمام بانتاج البرنامج وايضا تحميل البرنامج الصحيح ,الصحيح، ولهذا الامر 10 عوامل (مُعطيات او مُدخلات) ومن ضمنها البرنامج الذي يجب تشغيله .
===إنهاء العملية===
العملية تنتهي عندما تنهي تنفيذ اخر أوامرها وتطلب من نظام التشغيل أن تتوقف . هنالك عدة حالات يمكن أن تسبب انهاء العملية اهمها :
# انهاء طبيعي (كما اسلفنا الذكر عندما تطلب العملية ذلك )
# انهاء لدخول البرنامج مُدخل خطأ لوجود علة في التنفيذ.
# انهاء بسبب خطأ قاتل {{إنك|fatal error}}
# العملية قُتلت بواسطة عملية اخرى .
الحالتين الاوليين الانهاء فيهما يكون تطوعي ,تطوعي، اما الاخيرين ففيهما الانهاء اجباري .
 
اغلب الاحيان تنتهي العملية لانها قد انهت تنفيذ برنامجها . في نظام [[يونكس|UNIX]] الانهاء يكون بواسطة الامر exit اما في [[مايكروسوفت ويندوز|windows]] بواسطة ExitProcess . السبب الثاني للانهاء هو خطأ قاتل مثلا عدم وجود الملف المرغوب بالوصول اليه وما الى ذلك من الاخطاء التي قد يقع بها بعض المستخدمين . السبب الثالث هو وجود خطأ في العملية مثلا محاولة تنفيذ عملية غير قانونية ومحاولة الوصول الى معلومات غير موجودة او محاولة القسمة على 0 . في بعض الانظمة العملية تخبر النظام انها تريد الاهتمام بالخطأ بنفسها ,بنفسها، وهذا يسبب توقف العملية بدل انهائها عند حدوث هذا الخطأ . والسبب الرابع للانهاء هو أن العملية تنفذ أمرا فيه على النظام ان ينهي عملية اخرى . في نظام [[يونكس|UNIX]] هذه الامر هو kill ,kill، وفي [[مايكروسوفت ويندوز|Windows]] هو TerminateProcess وفي كلتا الحالتين على القاتل ان يملك الصلاحية الملائمة لتنفيذ عملية القتل . في بعض الانظمة ,الانظمة، عند انتهاء العملية ينتهي معها كل عملية انتجتها هذه العملية ولكن لا يعمل أيا من [[يونكس|UNIX]] و [[مايكروسوفت ويندوز|windows]] بهذه الطريقة .
==مصادر==
<div dir="ltr">
* Abraham Silberschatz,Peter Baer Galvin ,Galvin، Greg Gagne . "Operating system Concepts" .
* [[أندرو تانينباوم|Andrew S. Tanenbaum]] . "Modern Operating Systems".
</div>
[[تصنيف:حوسبة متزامنة]]