CS330 - أنظمة التشغيل
مفهوم العملية، الجدولة، الاتصال بين العمليات، والإدارة
العملية هي برنامج قيد التنفيذ. هي وحدة العمل في معظم الأنظمة. العملية أكثر من مجرد كود البرنامج (قسم النص)؛ فهي تشمل النشاط الحالي الممثل بواسطة عداد البرنامج ومسجلات المعالج.
| البرنامج | العملية |
|---|---|
| كيان خامل مخزّن على القرص | كيان نشط مع عداد برنامج |
| ملف تنفيذي (كود) | برنامج تم تحميله في الذاكرة |
| ثابت | ديناميكي، له حالة |
| برنامج واحد | يمكن أن يكون له عمليات متعددة |
العملية تتضمن:
قسم النص والبيانات لهما حجم ثابت، بينما الكومة والمكدس يمكن أن ينموا ديناميكيًا. المكدس والكومة ينموان تجاه بعضهما ولكن يجب ألا يتداخلا!
أثناء تنفيذ العملية، تتغير حالتها. يمكن أن تكون العملية في إحدى الحالات التالية:
| الحالة | الوصف |
|---|---|
| جديدة | العملية قيد الإنشاء |
| جاهزة | العملية تنتظر أن تُسند إلى معالج |
| قيد التشغيل | يتم تنفيذ التعليمات |
| منتظرة | العملية تنتظر حدوث حدث ما (اكتمال إدخال/إخراج أو إشارة) |
| منتهية | العملية أنهت تنفيذها |
س: عملية في الحالة 'قيد التشغيل' يمكن أن تنتقل إلى أي من الحالات التالية؟
الإجابة: العملية قيد التشغيل يمكن أن تنتقل إلى:
كل عملية يتم تمثيلها في نظام التشغيل بواسطة كتلة التحكم في العملية (PCB)، وتسمى أيضًا كتلة التحكم في المهمة (TCB). تحتوي PCB على كل المعلومات المرتبطة بعملية محددة.
| الحقل | يحتوي على |
|---|---|
| حالة العملية | جديدة، جاهزة، قيد التشغيل، منتظرة، منتهية |
| عداد البرنامج | عنوان التعليمات التالية للتنفيذ |
| مسجلات المعالج | محتويات كل المسجلات الخاصة بالعملية |
| معلومات جدولة المعالج | الأولوية، مؤشرات قوائم الجدولة |
| إدارة الذاكرة | جداول الصفحات، حدود الذاكرة، جداول القطاعات |
| معلومات المحاسبة | وقت المعالج المستخدم، الوقت المنقضي، حدود الوقت |
| حالة الإدخال/الإخراج | قائمة أجهزة الإدخال/الإخراج المخصصة، الملفات المفتوحة |
جدول العمليات يختار من بين العمليات المتاحة للتنفيذ التالي على نواة المعالج. الهدف هو زيادة استغلال المعالج لأقصى حد وتبديل العمليات على المعالج بسرعة.
العمليات تنتقل بين القوائم المختلفة خلال عمرها.
| نوع الجدولة | الوظيفة | التكرار |
|---|---|---|
| طويلة المدى | تختار العمليات من مجموعة الوظائف لتحميلها في الذاكرة | غير متكرر (ثواني، دقائق) |
| قصيرة المدى | تختار من قائمة الانتظار الجاهزة للتنفيذ على المعالج | متكرر جدًا (أجزاء من الثانية) |
| متوسطة المدى | المبادلة - تزيل العملية من الذاكرة مؤقتًا | عند الحاجة |
يظهر التدفق بين قائمة الانتظار الجاهزة، المعالج، وقوائم انتظار الإدخال/الإخراج
عندما يبدل المعالج إلى عملية أخرى، يجب على النظام حفظ حالة العملية القديمة وتحميل الحالة المحفوظة للعملية الجديدة عبر تبديل السياق.
س: صف الإجراءات التي تقوم بها النواة لتبديل السياق بين العمليات.
الإجابة:
يمكن لعملية أن تنشئ عدة عمليات جديدة. العملية المنشئة هي الأم، والعمليات الجديدة هي الابنة، مكونة شجرة من العمليات.
س: ما هو الناتج عند الأسطر A, B, C, و D؟ (افترض PID الأم = ٢٦٠٠، PID الابنة = ٢٦٠٣)
الإجابة:
تنتهي العملية عندما تنتهي من تنفيذ آخر عبارة لها وتستدعي استدعاء النظام exit().
العمليات قد تكون مستقلة أو متعاونة. العمليات المتعاونة تحتاج آليات IPC لتبادل البيانات والمعلومات.
عدة مستخدمين قد يحتاجون نفس المعلومات
تقسيم المهمة إلى مهام فرعية تعمل بالتوازي
تقسيم وظائف النظام إلى عمليات منفصلة
المستخدم قد يعمل على مهام متعددة في وقت واحد
| الجانب | الخيارات |
|---|---|
| التسمية |
• مباشرة: send(P, message), receive(Q, message) • غير مباشرة: عبر صناديق بريد/منافذ |
| المزامنة |
• متزامنة (حجب) • غير متزامنة (عدم حجب) |
| التخزين المؤقت |
• سعة صفرية (لا تخزين مؤقت) • سعة محدودة (مخزن مؤقت محدود) • سعة غير محدودة (مخزن مؤقت غير محدود) |
نقطة نهاية للتواصل. تُعرف بعنوان IP + رقم المنفذ.
يسمح باستدعاء إجراءات على أنظمة بعيدة كما لو كانت محلية.
آلية جافا مشابهة لـ RPC لاستدعاء طرق على كائنات بعيدة.
س١. أي من التالي لا يُخزّن في PCB؟
س٢. الهدف الرئيسي من تعدد البرمجة هو تحسين:
س٣. عندما تنشئ عملية عملية جديدة باستخدام fork()، أي مما يلي يتم مشاركته؟
س٤. وقت تبديل السياق هو:
س٥. اشرح الفرق بين الجدولة طويلة المدى، متوسطة المدى، وقصيرة المدى. (٦ درجات)
س٦. كم عدد العمليات التي ينشئها هذا البرنامج؟ (٤ درجات)
٢⁴ = ١٦ عملية إجمالًا (بما في ذلك العملية الأم الأولية)
كل fork() تضاعف عدد العمليات.
س٧. ماذا يحدث عندما يحدث تبديل سياق إذا كان السياق الجديد محملًا بالفعل في مجموعة مسجلات؟ (٣ درجات)
إذا وفر العتاد مجموعات مسجلات متعددة وكان السياق الجديد محملًا بالفعل، فإن تبديل السياق يكون أسرع بكثير - فقط تبديل المؤشر إلى مجموعة المسجلات النشطة. لا حاجة لحفظ/استعادة قيم المسجلات من/إلى الذاكرة.
| المصطلح | التعريف |
|---|---|
| عملية | برنامج قيد التنفيذ؛ كيان نشط مع عداد برنامج |
| PCB | كتلة التحكم في العملية - هيكل بيانات يحتوي معلومات العملية |
| تبديل السياق | حفظ حالة عملية وتحميل حالة عملية أخرى |
| fork() | استدعاء نظام ينشئ عملية جديدة (ابنة) في يونكس |
| exec() | استدعاء نظام يستبدل ذاكرة العملية ببرنامج جديد |
| wait() | استدعاء نظام حيث تنتظر الأم اكتمال الابنة |
| IPC | الاتصال بين العمليات - آليات لتعاون العمليات |
| أنبوب | قناة اتصال أحادية الاتجاه بين العمليات |
| قائمة الانتظار الجاهزة | قائمة العمليات الجاهزة والمنتظرة للتنفيذ |
| درجة تعدد البرمجة | عدد العمليات في الذاكرة |