Process (computing)

Program vs. Process vs. ThreadScheduling, Preemption, Context Switching

In computing, a process is the instance of a computer program that is being executed by one or many threads. There are many different process models, some of which are lightweight, but almost all processes (even entire virtual machines) are rooted in an operating system (OS) process which comprises the program code, assigned system resources, physical and logical access permissions, and data structures to initiate, control and coordinate execution activity. Depending on the OS, a process may be made up of multiple threads of execution that execute instructions concurrently.[1][2]

While a computer program is a passive collection of instructions typically stored in a file on disk, a process is the execution of those instructions after being loaded from the disk into memory. Several processes may be associated with the same program; for example, opening up several instances of the same program often results in more than one process being executed.

Multitasking is a method to allow multiple processes to share processors (CPUs) and other system resources. Each CPU (core) executes a single process at a time. However, multitasking allows each processor to switch between tasks that are being executed without having to wait for each task to finish (preemption). Depending on the operating system implementation, switches could be performed when tasks initiate and wait for completion of input/output operations, when a task voluntarily yields the CPU, on hardware interrupts, and when the operating system scheduler decides that a process has expired its fair share of CPU time (e.g, by the Completely Fair Scheduler of the Linux kernel).

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

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

التمثيل

قائمة العمليات كما يعرضها برنامج htop
جدول العمليات كما يعرضه نظام KDE System Guard
جدول العمليات كما يعرضه نظام KDE System Guard

بشكل عام، تتكون عملية نظام الكمبيوتر من الموارد التالية (أو يقال إنها تمتلكها ):

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

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

إدارة المهام المتعددة والعمليات

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

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

تُسمى العمليات غالبًا "مهامًا" في أنظمة التشغيل المدمجة . ويُقصد بكلمة "عملية" (أو مهمة) "شيئًا يستغرق وقتًا"، على عكس "الذاكرة" التي تعني "شيئًا يشغل مساحة". [ ب ]

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

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

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

تُظهر مخططات الحالة حالات العملية المختلفة ، مع أسهم تشير إلى الانتقالات المحتملة بين الحالات.

تتطلب نواة نظام التشغيل التي تسمح بتعدد المهام أن تكون للعمليات حالات معينة . أسماء هذه الحالات غير موحدة، لكنها تؤدي وظائف متشابهة. [ 1 ]

  • أولاً، يتم "إنشاء" العملية عن طريق تحميلها من جهاز تخزين ثانوي ( محرك أقراص صلبة ، قرص مضغوط ، إلخ) إلى الذاكرة الرئيسية . بعد ذلك، يقوم مُجدول العمليات بتعيين حالة "الانتظار" لها.
  • أثناء "انتظار" العملية، فإنها تنتظر من المجدول إجراء ما يُسمى بتبديل السياق . يقوم تبديل السياق بتحميل العملية إلى المعالج وتغيير حالتها إلى "قيد التشغيل"، بينما تبقى العملية التي كانت "قيد التشغيل" سابقًا في حالة "انتظار".
  • إذا احتاجت عملية في حالة "التشغيل" إلى انتظار مورد ما (كالانتظار لإدخال المستخدم أو فتح ملف، على سبيل المثال)، فإنها تُعيّن إلى حالة "الحظر". وتُعاد حالة العملية إلى "الانتظار" عندما لا تعود العملية بحاجة إلى الانتظار (في حالة الحظر).
  • بمجرد انتهاء تنفيذ العملية، أو إنهاء نظام التشغيل لها، تصبح غير ضرورية. تُزال العملية فورًا أو تُنقل إلى حالة "الإنهاء". عند إزالتها، تنتظر فقط إزالتها من الذاكرة الرئيسية. [ 1 ] [ 3 ]

التواصل بين العمليات

عندما تحتاج العمليات إلى التواصل فيما بينها، يجب عليها مشاركة أجزاء من مساحات عناوينها أو استخدام أشكال أخرى من التواصل بين العمليات (IPC). على سبيل المثال، في مسار أوامر shell ، يجب أن يمر ناتج العملية الأولى إلى العملية الثانية، وهكذا. مثال آخر هو مهمة تم تقسيمها إلى عمليات متعاونة ولكنها مستقلة جزئيًا، ويمكن تشغيلها في وقت واحد (أي باستخدام التزامن، أو التوازي الحقيقي - النموذج الأخير هو حالة خاصة من التنفيذ المتزامن، وهو ممكن عندما تتوفر أنوية معالجة مركزية متعددة للعمليات الجاهزة للتنفيذ).

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

تاريخ

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

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

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

انظر أيضاً

ملحوظات

  1. تجمع بعض وحدات المعالجة المركزية الحديثة بين معالجين مستقلين أو أكثر في تكوين متعدد النوى ، ويمكنها تنفيذ عدة عمليات في وقت واحد. وهناك تقنية أخرى تُسمى تعدد الخيوط المتزامن (المستخدمة في تقنية Hyper-threading من إنتل ) تُحاكي التنفيذ المتزامن لعدة عمليات أو خيوط.
  2. تشير المهام والعمليات أساسًا إلى الكيان نفسه. وعلى الرغم من اختلاف تاريخهما المصطلحي نوعًا ما، فقد أصبحا يُستخدمان كمترادفين. اليوم، يُفضّل عمومًا استخدام مصطلح "العملية" على "المهمة"، باستثناء الإشارة إلى "تعدد المهام"، لأن المصطلح البديل "المعالجة المتعددة" يسهل الخلط بينه وبين "المعالج المتعدد" (وهو جهاز كمبيوتر مزود بوحدتي معالجة مركزية أو أكثر).

مراجع

  1. 1 2 3 4 سيلبرشاتز، أبراهام ؛ كاجن، جريج؛ جالفين، بيتر باير (2004). "الفصل 4. العمليات". مفاهيم نظام التشغيل مع جافا (  الطبعة السادسة). جون وايلي وأولاده . ISBN 0-471-48905-0.
  2. فاهاليا، أوريش (1996). "الفصل الثاني: العملية والنواة". أساسيات يونكس: آفاق جديدة . برنتيس هول. ISBN 0-13-101908-2.
  3. ستالينغز، ويليام (2005). أنظمة التشغيل: المكونات الداخلية ومبادئ التصميم ( الطبعة الخامسة). برنتيس هول. ISBN  0-13-127837-1.(وخاصة الفصل 3، القسم 3.2، "حالات العملية"، بما في ذلك الشكل 3.9 "انتقال حالة العملية مع حالات التعليق").

للمزيد من القراءة

  • لاور، هيو؛ نيدهام، روجر (أكتوبر 1978). "حول ازدواجية هياكل أنظمة التشغيل" . وقائع الندوة الدولية الثانية حول أنظمة التشغيل . IRIA.[ورقة بحثية تاريخية تصنف بنى أنظمة التشغيل متعددة العمليات إلى فئتين مزدوجتين.]
  • رمزي ح. أرباتشي-دوسو وأندريا س. أرباتشي-دوسو (2014). " أنظمة التشغيل: ثلاثة أجزاء سهلة ". منشورات أرباتشي-دوسو. الفصول ذات الصلة: التجريد: العملية، واجهة برمجة التطبيقات (API) للعملية
  • غاري د. نوت (1974) اقتراح لبعض أساسيات إدارة العمليات والتواصل البيني ، مجلة ACM SIGOPS لأنظمة التشغيل، المجلد 8، العدد 4 (أكتوبر 1974)، الصفحات  7-44