الـ Scheduler في أنظمة التشغيل هو عبارة عن العنصر اللي بيحدد إزاي وإمتى المعالجات (CPUs) تستغل وقتها في تنفيذ البرامج المختلفة. يعني لو عندنا أكتر من برنامج شغال في نفس الوقت، الـ Scheduler هو اللي بيتحكم في توزيع وقت الـ CPU على البرامج دي.
الـ Scheduler في أنظمة التشغيل هو عبارة عن العنصر اللي بيحدد إزاي وإمتى المعالجات (CPUs) تستغل وقتها في تنفيذ البرامج المختلفة. يعني لو عندنا أكتر من برنامج شغال في نفس الوقت، الـ Scheduler هو اللي بيتحكم في توزيع وقت الـ CPU على البرامج دي.
خلينا نتخيل إننا قاعدين بنذاكر وفي نفس الوقت بنحاول نرد على رسايل مابعوتالنا في السوشيال ميديا وعاوزين نشغل حاجة نسمعها. عقلنا هنا بيقوم بدور الـ Scheduler فهو اللي بيحدد إزاي هيقسم وقتنا بين التلات حاجات دول. ممكن نذاكر شوية وبعدين نرد على الرسايل وبعدين نرجع تذاكر تاني ونشغل معاها حاجة. فنفس الموضوع بالظبط بالنسبة للـ CPU والبرامج اللي شغالة.
Process
قبل ما نتكلم باه عن الـ Process Scheduling ونعرف ازاي الـ OS بيـ Schedule الـ Process ويخليها تستغل الـ CPU وازاي يبقى مخصص لكل Process ؟ محتاجين نعرف ايه هي الـ Process , وكنا اتكلمنا عنها في ورقة قبل كده نقدر نشوفها من هنا:
وكنا اتكلمنا قبل كده برضو عن الـ Process Management:
Process Scheduling
فيه عندنا 3 أنواع من الـ Process Schedulers اللي أنظمة التشغيل بتستخدمهم:
الـ Long-Term Scheduler (Job Scheduler): وده المسؤول عن إنه يقرر انهي برنامج يدخل الـ Ready Queue، اللي هو Queue البرامج بتستنى فيه لحد ما الـ CPU يبقى فاضي ويبدأ يشتغل عليها. ده زي ما بنكون كده بنقرر إيه المواد اللي هنذاكرها في يومنا قبل ما نبدأ فعليا في مذاكرتها.
الـ Short-Term Scheduler (CPU Scheduler): ده بيكون المسؤول عن إنه يقرر انهي البرامج الموجودة في الـ Ready Queue هياخد الـ CPU ويبدأ يشتغل عليه فعليًا. او بمعنى اصح يعني مين اللي عليه الدور دلوقتي ياخد وقت من دماغك.
الـ Medium-Term Scheduler: وده بيشتغل في بعض الأنظمة اللي بتستخدم تقنية الـ Swapping. فبيقرر إمتى يوقف برنامج من الشغل ويطلعه برا الذاكرة (RAM) عشان يدي امكانية لباقي البرامج انها تشتغل على الـ CPU. وبعدين لما يبقى فيه مكان فاضي يرجعه تاني.
مصطلحات خاصة بالـ CPU Scheduling
الـ Arrival Time: هو الوقت اللي الـ Process بتدخل فيه الـ Ready Queue وتكون مستنية يكون ليها وقت الـ CPU وتشتغل عليه.
الـ Completion Time: ده الوقت اللي فيه الـ Process بتخلص الـ Execution بتاعها أو بتكون خلاص اتنفذت.
الـ Burst Time: وده الوقت اللي بتحتاجه الـ Process عشان تتنفذ على الـ CPU.
الـ Turn-Around Time: وده فرق الوقت بين الـ Completion Time والـ Arrival Time
الـ Waiting Time: وده فرق الوقت بين الـ Turn-Around Time والـ Burst Time
Scheduling Algorithms
فيه أكتر من خوارزمية ممكن الـ Scheduler يستخدمها، وكل واحدة ليها طريقة مختلفة في توزيع وقت الـ CPU على البرامج: