جدولة المعالج (CPU Scheduling) من المفاهيم الجوهرية في أنظمة التشغيل، وهي ما يجعل حاسوبك يبدو وكأنه ينفّذ برامج كثيرة في آنٍ واحد. هذه إحدى الصفحات التأسيسية لمسار أنظمة التشغيل.
لماذا نحتاج إلى الجدولة؟
في أي لحظة قد ترغب عمليات (Processes) كثيرة في استخدام المعالج، لكنّ نواة المعالج الواحدة تنفّذ تعليمة واحدة في اللحظة. مُجدوِل المعالج (Scheduler) هو جزء نظام التشغيل الذي يقرّر أي عملية تحصل على المعالج ومتى ولأي مدّة.
بتبديل المعالج بين العمليات بسرعة كبيرة، يخلق نظام التشغيل وهم التنفيذ المتوازي (Multitasking) حتى على نواة واحدة. جودة هذا القرار تؤثّر مباشرةً في استجابة النظام وإنصافه وكفاءته.
الجدولة الاستباقية مقابل غير الاستباقية
- غير استباقية (Non-Preemptive): تحتفظ العملية بالمعالج حتى تنتهي أو تتوقّف طوعًا (مثلًا لانتظار إدخال/إخراج). بسيطة، لكن عملية طويلة قد تُجوّع غيرها.
- استباقية (Preemptive): يستطيع نظام التشغيل انتزاع المعالج من عملية لإعطائه أخرى (عند انقضاء شريحة زمنية مثلًا). أكثر إنصافًا واستجابةً، وهي السائدة في الأنظمة الحديثة.
الخوارزميات الأساسية
- FCFS (الأوّل يأتي، الأوّل يُخدَم): تُنفَّذ العمليات بترتيب وصولها. بسيطة لكنّها قد تسبّب «تأثير القافلة»: عملية طويلة في المقدّمة تؤخّر الجميع.
- SJF (الأقصر أوّلًا): تُنفَّذ العملية ذات أقصر زمن تنفيذ أوّلًا، فتقلّل متوسّط الانتظار — لكنّها تتطلّب معرفة زمن التنفيذ مسبقًا، وقد تُجوّع العمليات الطويلة.
- Round Robin (الجولة الدوّارة): تحصل كل عملية على شريحة زمنية (Quantum) ثابتة بالتناوب. منصفة وممتازة للاستجابة التفاعلية، وهي الأساس في كثير من الأنظمة. حجم الشريحة مهمّ: صغيرة جدًا تزيد كلفة التبديل، كبيرة جدًا تقترب من FCFS.
- حسب الأولوية (Priority): كل عملية لها أولوية، والأعلى تُخدَم أوّلًا. مرنة، لكنّها قد تُجوّع منخفضي الأولوية — ويُعالَج ذلك بتقنية «الشيخوخة (Aging)» التي ترفع أولوية العملية كلما طال انتظارها.
كيف نقيّم مُجدوِلًا؟
نحكم على الخوارزميات بمقاييس متعدّدة، وغالبًا نوازن بينها:
- زمن الإنجاز (Turnaround): من الوصول إلى الانتهاء.
- زمن الانتظار (Waiting): مجموع ما تقضيه العملية منتظرةً في الطابور.
- زمن الاستجابة (Response): من الوصول إلى أوّل تنفيذ — الأهمّ في الأنظمة التفاعلية.
- الإنتاجية (Throughput): عدد العمليات المنجَزة في وحدة الزمن.
لا خوارزمية مثالية للجميع: خادم دُفعات يهتمّ بالإنتاجية، ونظام تفاعلي يهتمّ بزمن الاستجابة. الاختيار مفاضلة حسب هدف النظام.
الخطوات التالية
بعد الجدولة، ستتعمّق في الذاكرة الافتراضية والصفحات (Paging)، ثم تبديل السياق (Context Switching) والتزامن. ولأنّ الجدولة تدير العمليات، راجع كيف تتعامل معها عمليًا في العمليات في Linux.