عندما يريد الuser ان يشغل اكثر من process ال cpu لا يتحمل ان يشغلها جميعا في ان واحد..
لذالك هناك عدة طرق (algorithims) يستخدمها ال cpu لمعالجة هذه ال processes ...
وايضا هناك معايير للجدولة(scheduling criteria):
1-cpu utilization:وهي ان نحاول ان نجعل ال cpu busy as possible. نحاول استهلاكها بقدر الامكان ولا نجعلها في حالة idle .
2-throughput:وهي عدد ال process التي تنهي تنفذيها في وحدة زمنية معينة .
3-turnaround time(TAT): الوقت من بداية الexecute الى نهايته كم اخذ من الوقت لانجاز ال process.
4-waiting time:كم من الوقت كان ال process موجود او ينتظر في ال ready queu.
5-response time: وهي وقت الاستجابه او اول استجابة من الcpu.
ومن هنا يوجد لدينا سؤال مهم وهي:
Which cpu scheduler is better?
لانستطيع الاجابة بأي طريقة من الطرق التي سنعرضها لاحقا هي افضل طريقه من الاخري ولكن هناك معايير وهي لو كانت الطريقه التي نستخدمها:
1-maximize utilization: نجعل ال I/O busy.
2-maximize throughput: بمعنى اننا ننفذ عمليات كثيرة و jobs كثيرة.
3-minimize latency 4-fairness:ان يكون عادل وان لا يكون هناك مجاعة (starves).
والان نعرض ال scheduling algorithms:
اولا:FIRST-COME-FIRST-SERVED(FCFS)(FIFO)
وهذه الطريقة هي:
1-ابسط طريقة يستخدمها ال cpu في عملية الجدولة.
2-وهي uniprogramming.
3-تعتمد هذه الطريقة على ال arrival time اول procees ياتي لل cpu يعالج اولا ولو كان ال burst time لها طويل.
4-وهي non-preemptive: بمعنى ان ال cpu يعالج ال procees حتى ينتهي من معالجته ولا يقطعه حتى لو كان هناك process صغيره بالانتظار.
5-مشكلتها انها ليست عادلة(fairness) لل processes الصغيرة .
6-ومشكلتها ايضا:(one process can monopolize CPU) .
ثانيا:Shortest-job-first(SJR)scheduling
وهذه الطريقة:
1-ان كل process تاتي ومعها ال burst time لها.
2-ال process الصغيره هي الاولى في الدخول الى ال cpu .ولو كان في الcpu يوجد process كبيرة واتت بعدها مباشرة process صغيره يكون هناك حالتان:
أ)-none –preemptive: بمعنى ان ال cpu لا يقطع من معالجة ال process حتى ينتهي منها.
ب)-preemptive:وهي بان ال cpu تقطع معالجتها ل process لو اتت process اصغر منها ولكن لهذه النقطه لها شرط ايضا وهي:
1-انه لو اتت process صغيره اذهب وارى ال process الموجودة في ال cpu هل ال burst time لها اكبر من ال process الصغيره اذن اخرجها من ال cpu وال
process الصغيره تدخل الى الcpu ليتم معالجتها.
2- لو اتت process صغيره اذهب وارى ال process الموجودة في ال cpu هل ال burst time لها اقل من ال process الصغيره اذن لا اخرجها من ال cpu واكمل
معالجة ال process الموجودة.
3-- لو اتت process صغيره اذهب وارى ال process الموجودة في ال cpu هل ال burst time لها مساوي لل process الصغيره اذن نجعل ال cpu يكمل معالجته .وتستحدم طريقة FCFS
3- مشكلتها يحدث عندي مجاعه (starraving) لانه في تاجيل لل process الطويله لو كان هناك processes اقصر منها.
ثالثا:Round robin(RR):
وهذه الطريقة:
1- عادلة جدا يوجد بها time quantum وعادة تكون بين 10-100 ms لكل process لها وقت عند انتهاء الوقت يضيفها في نهاية ال ready queuوهكذا. ولو زادت عن 100 تتحول الى fcfs.
رابعا:priority scheduling:
وهي على حسب الاوليات وهي عبارة عن رقم تعطى لكل process والcpu يعالج ال process التي لها اعلى priority.
*مشكلتها:يوجد عندها مشكلة ال starvation لان ال processes التي لها اقل الاولويات never execute.
*ولحل هذه المشكله وهي ال(aging) وهي ان ال process كل ماكانت في ال ready queu وكل ما يزيد وقت ال aging يزيد ال priority.
وهناك طرق اخرى مثل..
Multilevel –feed back
ايمان السوادي
المصدر operating system concept
Comments (0)
You don't have permission to comment on this page.