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

لا تغيير في الحجم ، ‏ قبل 6 سنوات
ط
تدقيق إملائي يستهدف حروف الجر (المزيد)
(إضافة قالب)
ط (تدقيق إملائي يستهدف حروف الجر (المزيد))
 
في الحاسوبية، '''عملية''' {{إنك|process}} هي [[كائن (علوم الحاسوب)|كائن]] برنامج قيد التنفيذ بالإضافة إلى القيم الحالية لكل من عداد البرنامج والسجلات {{إنك|register}} والمتغيرات {{إنك|variable}}. أي أنه لا يحوي فقط الكود ولكن أيضا فعالية البرنامج الحالية. مبدئيا لكل عملية [[وحدة المعالجة المركزية|وحدة معالجة مركزية]] افتراضية. ولكن في الواقع ال CPU الفعلي يتقلب بين العمليات التي تحتاج إلى هذا ال- CPU.
هذا التقلب يُسمى البرمجة المتعددة {{إنك|multiprogramming}}. وكذلك لكل عملية لها عداد برنامج افتراضي مخزن عندها وعند حيازتها لل- CPU تنسخ محتوى هذا العداد الىإلى العداد الفعلي في ال- CPU وعند الانتهاء يُنسخ العداد الفعلي في داخل العداد الافتراضي للبرنامج لاستخدامه لاحقا.
يوجد فروق بين العملية والبرنامج فالفرق حاذق ولكنه حاسم وذلك لأن العملية هي فعالية من أي نوع أي عنده برنامج ومُدخل ومُخرج وحالة (state). كما أن المُعالج (processor) الواحد قد تتشارك فيه عدة عمليات وكمية الوقت الذي يأخذه كل برنامج يتحدد بواسطة خوارزمية جدولة. وفي حالة أن نفس البرنامج تستخدمه عمليتان (أو أكثر) لا يغير من حقيقة أنهما عمليتان منفصلتان.
 
كل عملية في نظام التشغيل مُمثلة بواسطة كتلة التحكم بالعملية {{إنك|Process Control Block}} او بالاختصار PCB. وهي تحوي العديد من المعلومات المرتبطة بعملية مُعينة، من ضمنها :
* حالة العملية : وقد تكون أيا من الحالات الانف ذكرها.
* عداد البرنامج : العداد يشير الىإلى عنوان الامر التالي الذي يجب تنفيذه في هذه العملية.
* سجلات المعالج المركزي {{إنك | CPU registers}}: السجلات تختلف وكذا عددها وهذا يتعلق ببنية الحاسوب. ومن ضمنها : المُراكمات، سجلات الاستدلال، مؤشر المكدس، سجلات متعددة الاستخدامات بالاضافة لسجل الأعلام {{إنك | flag register }}. بالاضافة لعداد البرنامج معلومات الحالة هذه يجب حفظها عند ظهور مقاطعة وذلك للسماح لاحقا بأن تعمل العملية بشكل ملائم.
* معلومات لمُجدول المعالج المركزي : هذه المعلومات من ضمنها اولوية العملية، مؤشرات لطوابير الجدولة واية معلومات اخرى متعلقة بالجدولة.
* معلومات حسابية : هذه المعلومات من ضمنها كمية وقت استخدام المعالج المركزي وايضا كمية وقت استخدام وقت الحقيقة، حدود الوقت، ارقام الحسابات، رقم العملية او العمل، وهكذا...
* معلومات عن حالة المدخلات/المخرجات (I/O) : هذه المعلومات من ضمنها قائمة اجهزة المدخلات/المخرجات التي خُصصت للعملية، قائمة الملفات المفتوحة وهكذا.
باختصار، كتلة التحكم بالعملية هو مستودع ايَّة معلومة التي قد تختلف من عملية الىإلى اخرى.
===خطوط===
{{Main|خيط (حاسوب)}}
 
==جدولة العملية==
هدف البرمجة المتعددة هو وجود عملية مُشتغلة في كل لحظة، لرفع كمية وقت استخدام المعالج المركزي. وهدف مشاركة الوقت هو تحويل {{إنك | switch}} المعالج المركزي بين العمليات بوتيرة عالية حتى يتسنى للمُستخدم التفاعل مع كل برنامج حين كونها تعمل. حتى نصل الىإلى هذه الاهداف '''مُجدول العمليات''' يختار عملية متاحة (لربما اختارها من مجموعة عمليات مُتاحة ) كي يُنفذ البرنامج على المعالج المركزي. في نظام العملية الواحدة لن يكون هنالك ابدا اكثر من عملية واحدة تعمل على المعالج، وإن وجد اكثر من واحد تنتظر كل العمليات حتى تنتهي العملية الحالية ثم يختار المجدول احدها وهكذا.
===طوابير الجدولة===
حين بدأ العملية في النظام، تُوضع في طابور عمل، ويحوي هذا الطابور كل العمليات في النظام. العمليات القاطنة في الذاكرة الرئيسية وهي جاهزة وتنتظر ان يتم تنفيذها يحفظها النظام في قائمة تُسمى طابور الجاهزين. بشكل عام هذه القائمة تُحفظ بشكل [[قائمة متصلة]]. رأس طابور الجاهزين مؤشر لل-PCB الاول والنهائي في القائمة. وكل PCB عنده مؤشر الىإلى ال PCB التالي في طابور الجاهزين. طوابير اخرى يستخدمها النظام وهي طابور الاجهزة، وطابور I\O وهو طابور للمُدخلات.
==أفعال على العملية==
===انتاج العملية===
في الحالة الاولى، عندما يُقلع النظام عادة ما يُنتج عدة عمليات، منها ما هو عمليات مُقدمة أي انها تتفاعل مع المُستخدم وتنفذ الاوامر من أجلهم، واخرى هي للخلفية وهي غير مرتبطة بمستخدم مُعين، ولكن عندها وظيفة مُعينة. هذه العمليات تُسمى أيضا شياطين{{إنك | deamons}}. في نظام [[يونكس|UNIX]] يمكن بواسطة برنامج ps رؤية كل العمليات الفعَّالة اما في [[مايكروسوفت ويندوز|Windows]] فهذا بمساعدة [[مدير مهام ويندوز]].
 
ثانيا، بالاضافة الىإلى العملية التي أُنتجت في وقت الاقلاع عمليات جديدة يمكن أن تُنتج لاحقا. بشكل عام يمكن للعملية الواحدة طلب انتاج عمليات اخرى من شأنها ان تعين العملية على قضاء عملها، وهذا في خصوصا في حالة أنَّ العمل الذي على العملية فعله يمكن أن ينفذ بواسطة عمليات مرتبطة ومستقلة.
 
ثالثا، في الانظمة التفاعلية، يمكن للمستخدم ادخال امر به يبدأ عملية جديدة وكذا الامر بالنسبة لضغط ايقونة. وفي الحالتين العملية تبدأ وتنفيذ البرنامج في العملية يبدأ تنفيذه. في الانظمة التي تعتمد على الاوامر وشبيهة بنظام [[يونكس|UNIX]] تشغيل الامر X، يسمح للعملية بأن تستولي على الشباك الذي فيه بدأت. في [[مايكروسوفت ويندوز]] عند ابتداء عملية فانها لا تملك [[شباك(حاسوب)|شباكا]] ويمكنها انتاج واحد كهذا والمعظم يفعل هذا. في النظامين يمكن للمستخدم أن يكون عنده عدة شبابيك مفتوحة وكل واحدة منها تشغل عملية مُختلفة. وبإستخدام [[فأرة (حاسوب)|الفأرة]] يمكن للمستخدم اختيار شباك والتفاعل معه مثلا ادخال مُعطيات اذا لزم الامر.
الحالتين الاوليين الانهاء فيهما يكون تطوعي، اما الاخيرين ففيهما الانهاء اجباري.
 
اغلب الاحيان تنتهي العملية لانها قد انهت تنفيذ برنامجها. في نظام [[يونكس|UNIX]] الانهاء يكون بواسطة الامر exit اما في [[مايكروسوفت ويندوز|windows]] بواسطة ExitProcess. السبب الثاني للانهاء هو خطأ قاتل مثلا عدم وجود الملف المرغوب بالوصول اليه وما الىإلى ذلك من الاخطاء التي قد يقع بها بعض المستخدمين. السبب الثالث هو وجود خطأ في العملية مثلا محاولة تنفيذ عملية غير قانونية ومحاولة الوصول الىإلى معلومات غير موجودة او محاولة القسمة على 0. في بعض الانظمة العملية تخبر النظام انها تريد الاهتمام بالخطأ بنفسها، وهذا يسبب توقف العملية بدل انهائها عند حدوث هذا الخطأ. والسبب الرابع للانهاء هو أن العملية تنفذ أمرا فيه على النظام ان ينهي عملية اخرى. في نظام [[يونكس|UNIX]] هذه الامر هو kill، وفي [[مايكروسوفت ويندوز|Windows]] هو TerminateProcess وفي كلتا الحالتين على القاتل ان يملك الصلاحية الملائمة لتنفيذ عملية القتل. في بعض الانظمة، عند انتهاء العملية ينتهي معها كل عملية انتجتها هذه العملية ولكن لا يعمل أيا من [[يونكس|UNIX]] و [[مايكروسوفت ويندوز|windows]] بهذه الطريقة.
==مصادر==
<div dir="ltr">
298٬388

تعديل