Download as pdf or txt
Download as pdf or txt
You are on page 1of 16

‫السعر‬

‫‪1920‬‬ ‫كلية الهندسة المعلوماتية‬


‫عملي‬
‫نظري‬
‫السنة الرابعة‬
‫‪9‬‬

‫‪CPU Scheduling‬‬
‫‪5‬‬
‫د‪ .‬المثنى خضر‬
‫‪15/11/2023‬‬ ‫‪16‬‬

‫نظم تشغيل (‪)1‬‬

‫سنتعرف في هذه المحاضرة على تعريف جدولة ال ‪ cup‬واهميتها وخوارزميات الجدولة ال‪5‬‬

‫بعض المفاهيم األساسيّة‬

‫‪ ‬بداية ما هي جدولة ال ‪: CPU‬‬


‫هي أساس نظام التشغيل المتعدّد البرمجة ‪.‬‬
‫و هي ترتيب العمليات وتحديد اولويتها بهدف االستفادة بشكل اعظمي من استخدام ‪ CPU‬لنحصل على النتائج بشكل‬
‫اسرع (منع ‪ CPU‬من أن يصبح ‪ – idle‬خامل‪ )-‬من خالل تعدد البرمجة او ‪ Multi programing‬مثال ( تنفيذ إجرائية‬
‫أخرى موجودة في الذاكرة عندما تنتقل اإلجرائية من حالة التشغيل الى حالة االنتظار و سنتعرف على هذا الحقا بالتفصيل‪)..‬‬
‫‪ -‬في النظام وحيد المعالج‪ ،‬يمكن إجرائية واحدة فقط أن تُنفذ في الوقت نفسه‪.‬‬
‫تتناوب جميع العمليات تقريبًا بين حالتين في دورة مستمرة وهما ‪:‬‬

‫‪ : CPU Brust‬مقدار الوقت التي تستغرقه العملية في استخدام المعالج قبل ان تصبح غير جاهزة (ينتظر‬ ‫▪‬
‫المعالج ‪ I/O‬ليكمل التنفيذ)‪.‬‬

‫‪ : IO Brust‬مقدار الوقت التي تستغرقه البيانات في التنقل داخل او خارج النظام‬ ‫▪‬
‫يبدأ تنفيذ العملية مع دفقة معالج )‪ (CPU Burst‬يتبعها دفقة دخل وخرج )‪ (I/O Brust‬وهكذا بالتناوب حتى يطلب‬
‫النظام انهاء تنفيذ العملية ‪.‬‬

‫‪1‬‬
‫نظم تشغيل ‪ | 1‬عملي مشترك‬

‫عندما تصبح وحدة المعالجة المركزية خاملة‪ ،‬فإن مهمة مجدول وحدة المعالجة المركزية (المعروف أيضًا باسم المجدول‬

‫قصير األمد) هي اختيار إحدى العمليات الموجودة ضمن رتل الجاهزية وتخصيص المعالج لها ليتم تنفيذها ‪.‬‬

‫أنواع مجدول وحدة المعالجة المركزية‬

‫مجدول وحدة المعالجة المركزية (‪: )CPU Scheduler‬‬


‫يختار عملية من بين العمليات الجاهزة للتنفيذ في الذاكرة ( باالعتماد على خوارزمية الجدولة) ‪ ،‬و يخصص ‪ CPU‬لهذه‬
‫العملية ‪.‬‬
‫يوجد نوعان ‪ :‬شفعية و غير شفعية ‪.‬‬
‫الجدولة غير الشفعية (‪ :)non-preemptive‬عندما تُحجز ال ‪ CPU‬لعملية ما تحتفظ العملية بالمعالج حتى‬

‫انتهاء تنفيذها ‪ .‬تستخدم عند انتهاء العملية او عندما تتحول العملية من حالة التشغيل الى حالة االنتظار ‪.‬‬

‫الجدولة الشفعية ‪ :‬تتعلق بأولوية العمليات فتجبر العملية على المغادرة في أي وقت‪ .‬تستخدم عند التبديل من حالة‬

‫التشغيل الى حالة الجاهزية او عند التبديل من حالة االنتظار الى حالة الجاهزية‪.‬‬

‫‪ ‬نستنتج ان قرارات الجدولة قد تحدث في احدى حاالت العملية التالية‬


‫‪ .1‬التبديل بين حالة التشغيل الى حالة االنتظار ( غير شفعية)‬

‫‪ .2‬التبديل من حالة التشغيل الى حالة الجاهزية (شفعية)‬

‫‪ .3‬التبديل من االنتظار الى الجاهزية (شفعية)‬

‫‪ .4‬انتهاء تنفيذ عملية (غير شفعية)‬

‫‪2‬‬
‫‪/ITE.RBCs‬‬
‫نظم تشغيل ‪ | 1‬عملي مشترك‬

‫المرسل ‪Dispatcher‬‬

‫المرسل‪ :‬المرسل هو الوحدة التي تمنح التحكم في وحدة المعالجة المركزية للعملية المحددة بواسطة المجدول قصير‬
‫األمد و يجب أن يكون سريعاً قدر اإلمكان ‪.‬‬

‫‪ ‬تتضمن وظيفته‪:‬‬
‫‪ .1‬تبديل السياق (راجع المحاضرة الثالثة)‬
‫‪ .2‬االنتقال الى وضع المستخدم‬
‫‪ .3‬القفز الى الموقع الصحيح في وضع المستخدم إلعادة تشغيل هذا البرنامج‬

‫‪ :‬هو الوقت الذي يستغرقه المرسل إليقاف عملية أولى وبدء تشغيل عملية‬ ‫تأخير االرسال ‪dispatch latency‬‬
‫أخرى ‪.‬‬
‫يجب أن يكون المرسل سريعًا قدر اإلمكان‪ ،‬حيث يتم تشغيله على كل محول سياق فلهذا يكون زمن تأخير االرسال أكبر‬
‫من ال ‪ overhead‬في تبديل السياق ألنه يحوي على عملية تبديل السياق ‪.Context Switch‬‬

‫مقاييس الجدولة ‪Scheduling Criteria‬‬


‫هناك العديد من المعايير المختلفة التي يجب مراعاتها عند محاولة تحديد خوارزمية الجدولة "األفضل" لموقف وبيئة معينة‬
‫وهي ‪:‬‬
‫‪ -1‬استخدام وحدة المعالجة المركزية )‪: (CPU utilization‬‬
‫يجيب ان تكون وحدة المعالجة المركزية مشغولة قد اإلمكان أي انها ليست في حالة خمول (‪)idle‬‬
‫‪ -2‬اإلنتاجية )‪: (Throughput‬‬
‫عدد العمليات المنجزة لكل وحدة زمنية‬
‫‪ -3‬االستخدامية (‪: )Turnaround time‬‬
‫مقدار الوقت الالزم لتنفيذ إجرائية من لحظة وصولها وحتى انتهاء التنفيذ‬
‫‪ -4‬وقت االنتظار )‪: (Waiting time‬‬
‫مقدار الوقت الذي تنتظره العملية في رتل االنتظار (مجموع لحظات انتظار العملية خالل تنفيذها)‬
‫‪ -5‬وقت االستجابة (‪: )Response time‬‬
‫هو الوقت المستغرق من لحظة وصول العملية حتى بدء اول تنفيذ لها‪.‬‬

‫‪3‬‬
‫‪/ITE.RBCs‬‬
‫نظم تشغيل ‪ | 1‬عملي مشترك‬

‫‪ ‬تتمثل معايير امثلة خوارزمية الجدولة في الجدول التالي ‪:‬‬

‫المعيار‬ ‫القيمة المثالية‬


‫استخدام وحدة المعالجة المركزية‬
‫تسعى نحو اكبر قيمة‬
‫‪CPU utilization‬‬
‫اإلنتاجية )‪(Throughput‬‬ ‫تسعى نحو اكبر قيمة‬
‫وقت االنتظار )‪(Waiting time‬‬ ‫تسعى نحو اقل قيمة (‪)0‬‬
‫االستخدامية (‪)Turnaround time‬‬ ‫تسعى نحو اقل قيمة (‪)0‬‬
‫وقت االستجابة (‪)Response time‬‬ ‫تسعى نحو اقل قيمة (‪)0‬‬

‫‪ -Scheduling Algorithms ‬خوارزميات الجدولة‬


‫‪First-Come First-Serve Scheduling, FCFS .1‬‬
‫‪Shortest-Job-First Scheduling, SJF .2‬‬
‫‪Priority Scheduling .3‬‬
‫‪Round Robin Scheduling .4‬‬
‫‪Multilevel Queue Scheduling .5‬‬
‫‪Multilevel Feedback-Queue Scheduling .6‬‬

‫‪First-Come First-Serve Scheduling, FCFS‬‬


‫ان خوارزمية ‪ FCFS‬بسيطة جدا حيث تقوم بتنفيذ العملية التي تصل أوال حتى تنتهي ومن ثم تقوم بتنفيذ العملية التي‬
‫تليها وهكذا حتى انتهاء العمليات‪.‬‬
‫تؤدي خوارزمية ‪ FCFS‬الى أوقات انتظار طويلة خاصة اذا كانت العملية االولى تستغرق وقتا طويال لتنفيذها وستبين لنا‬
‫هذا في المثال ‪.‬‬
‫لنأخذ المثال التالي ‪:‬‬
‫لدينا في الجدول التالي أسماء العمليات وزمن تنفيذها ‪Burst Time‬‬

‫العملية‬ ‫‪Burst Time‬‬


‫‪P1‬‬ ‫‪24‬‬
‫‪P2‬‬ ‫‪3‬‬
‫‪P3‬‬ ‫‪3‬‬

‫نفرض ان العمليات ‪ P1,P2,P3‬تصل بالترتيب باللحظة نفسها أي باللحظة ‪0‬‬

‫‪4‬‬
‫‪/ITE.RBCs‬‬
‫نظم تشغيل ‪ | 1‬عملي مشترك‬

‫المطلوب ارسم مخطط غانت واحسب‬


‫‪ .1‬متوسط زمن االنتظار ‪Waiting time‬‬
‫‪ .2‬متوسط زمن االستخدامية ‪Turnaround time‬‬
‫‪ .3‬متوسط زمن االستجابة ‪Response Time‬‬

‫بداية نقوم برسم مخطط غانت‬

‫الية الرسم تعتمد على الخوارزمية التي انفذها ففي حالة ال ‪ FCFS‬ومن التعريف ستقوم بتنفيذ العملية ‪ P1‬حتى تنتهي‬
‫ومن ثم ‪ P2‬حتى تنتهي و ‪ P3‬حتى تنتهي وهذا ما يوضحه لنا المخطط السابق‬
‫االن لحساب متوسط زمن االنتظار نقوم أوال بحساب زمن انتظار كل عملية على حدى ‪.‬‬ ‫▪‬
‫نعل م ان زمن االنتظار هو مقدار الوقت التي تنتظره العملية في رتل االنتظار (جميع لحظات انتظار العملية خالل تنفيذها‬
‫منذ زمن وصولها )‬
‫وفي مثالنا وصلت العمليات جميعها في اللحظة ‪0‬‬
‫• ‪ P1‬وصلت في اللحظة ‪ 0‬وتم تنفيذها في اللحظة ‪ 0‬ف وقت انتظارها هو ‪0‬‬
‫• ‪ P2‬وصلت في اللحظة ‪ 0‬وتم تنفيذها في اللحظة ‪ 24‬ف وقت انتظارها هو ‪24‬‬
‫‪ P3‬وصلت في اللحظة ‪ 0‬وتم تنفيذها في اللحظة ‪ 27‬ف وقت انتظارها هو ‪27‬‬ ‫•‬
‫ومنه نستنتج ان متوسط زمن االنتظار هو مجموع ازمنة االنتظار على عدد العمليات‬
‫‪(0+24+27)/3=17‬‬
‫حساب زمن االستخدامية ‪ :Turnaround time‬مقدار الوقت الالزم لتنفيذ عملية من لحظة وصولها حتى انتهاء وقت‬
‫تنفيذها‬

‫وفي مثالنا وصلت العمليات جميعها في اللحظة ‪0‬‬

‫‪ P1‬وصلت في اللحظة ‪ 0‬وتم انتهاء تنفيذها في اللحظة ‪ 24‬زمن االستخدامية هو ‪24‬‬ ‫•‬
‫‪ P2‬وصلت في اللحظة ‪ 0‬وتم انتهاء تنفيذها في اللحظة ‪ 27‬زمن االستخدامية هو ‪27‬‬ ‫•‬
‫‪ P3‬وصلت في اللحظة ‪ 0‬وتم انتهاء تنفيذها في اللحظة ‪ 30‬زمن االستخدامية هو ‪30‬‬ ‫•‬

‫‪5‬‬
‫‪/ITE.RBCs‬‬
‫نظم تشغيل ‪ | 1‬عملي مشترك‬

‫ومنه نستنتج ان متوسط زمن االستخدامية هو مجموع االزمنة على عدد العمليات‬

‫‪(24+27+30)/3=27‬‬

‫االن حساب زمن االستجابة ‪ : Response time‬هو الوقت المستغرق من لحظة وصول العملية حتى بدء اول تنفيذ‬
‫لها‬

‫وفي مثالنا وصلت العمليات جميعها في اللحظة ‪0‬‬


‫‪ P1‬وصلت في اللحظة ‪ 0‬وتم تنفيذها ألول مرة في اللحظة ‪ 0‬فاذا زمن االستجابة هو ‪0‬‬ ‫•‬
‫• ‪ P2‬وصلت في اللحظة ‪ 0‬وتم تنفيذها ألول مرة في اللحظة ‪ 24‬فاذا زمن االستجابة هو ‪24‬‬
‫‪ P3‬وصلت في اللحظة ‪ 0‬وتم تنفيذها ألول مرة في اللحظة ‪ 27‬فاذا زمن االستجابة هو ‪27‬‬ ‫•‬

‫ومنه نستنتج ان متوسط زمن االستجابة هو مجموع ازمنة االستجابة على عدد العمليات‬

‫‪(0+24+27)/3=17‬‬

‫نالحظ ان زمن االستجابة يساوي زمن االنتظار الن الخوارزمية غير شفعية وال يوجد أولوية لتنفيذ‬
‫العمليات وال يوجد مقاطعة بالتنفيذ ‪.‬‬

‫‪Shortest-Job-First Scheduling, SJF‬‬


‫يستند مبدأ هذه الخوارزمية على مقارنة ال ‪ Burst time‬لكل عملية و تنفيذ العملية ذات ال ‪ Burst time‬األقصر أوالً ‪,‬‬
‫وعند تساوي ال ‪ Burst time‬مثال لعمليتين نستخدم خوارزمية ‪ FCFS‬أي ان العملية التي تدخل أوال سيتم تنفيذها ‪.‬‬
‫‪ -‬األصح تسميتها‪ :‬خوارزمية أقصر رشقة ‪ CPU‬تالية‪.‬‬
‫‪ ‬تنقسم ‪ SJF‬الى نوعين‬
‫‪( Preemptive‬شفعية )‬ ‫‪.1‬‬

‫‪(Non- Preemptive‬غير شفعية )‬ ‫‪.2‬‬

‫مثال ‪:‬‬

‫لدينا العمليات ‪ P1,P2,P3,P4‬تصل في اللحظة نفسها (اللحظة ‪ )0‬على الترتيب )من ‪ P1‬حتى ‪ )P4‬ولديها ال ‪Burst‬‬
‫احسب متوسط زمن االنتظار و االستجابة و االستخدامية باستخدام ‪SJF-Non‬‬ ‫‪ time‬الموضح في الجدول‬
‫‪.Preemptive‬‬

‫‪6‬‬
‫‪/ITE.RBCs‬‬
‫نظم تشغيل ‪ | 1‬عملي مشترك‬

‫العملية‬ ‫‪Burst Time‬‬


‫‪P1‬‬ ‫‪6‬‬
‫‪P2‬‬ ‫‪8‬‬
‫‪P3‬‬ ‫‪7‬‬
‫‪P4‬‬ ‫‪3‬‬
‫الحل‪:‬‬
‫حسب مبدأ الخوارزمية العملية ذات ال ‪ Burst time‬األقصر ستنفذ أوال‬
‫نرسم مخطط غانت‬

‫نحسب زمن االستجابة وزمن االنتظار وزمن االستخدامية كما فعلنا في ‪ ، FCFS‬فيكون ‪:‬‬

‫كما نعلم ان زمن االستجابة يساوي زمن االنتظار الن الخوارزمية غير شفعية ☺‬

‫مثال ‪: 2‬‬

‫ليكن لدينا العمليات ‪ P1,P2,P3,P4‬لها ازمنة وصول مختلفة ولديها ال ‪ Burst time‬الموضح في الجدول ارسم مخطط‬
‫غانت‬
‫احسب متوسط زمن االنتظار و االستجابة و االستخدامية باستخدام ‪.SJF- Preemptive‬‬

‫العملية‬ ‫زمن الوصول‬ ‫‪Burst Time‬‬


‫‪P1‬‬ ‫‪0‬‬ ‫‪8‬‬
‫‪P2‬‬ ‫‪1‬‬ ‫‪4‬‬
‫‪P3‬‬ ‫‪2‬‬ ‫‪9‬‬
‫‪P4‬‬ ‫‪3‬‬ ‫‪5‬‬

‫‪7‬‬
‫‪/ITE.RBCs‬‬
‫نظم تشغيل ‪ | 1‬عملي مشترك‬

‫الحل‪:‬‬
‫نالحظ هنا ان أوقات الوصول مختلفة وان الخوارزمية شفعية أي ان العملية يمكن مقاطعتها في أي وقت وإدخال عملية‬
‫أخرى حسب أولوية الخوارزمية واالولوية في ‪ SJF‬هي ال ‪ Burst time‬األقصر وفي مثالنا‬
‫وصلت ‪ P1‬في اللحظة ‪ 0‬وال يوجد عملية أخرى لمقارنة األولوية فنقوم بتنفيذها ‪ .‬وصلت العملية ‪ P2‬في اللحظة ‪ 1‬فنقوم‬
‫بمقارنة ال ‪ Burst time‬بين ‪ P1‬و ‪P2‬‬
‫ال ‪ Burst time‬ل ‪ P1‬هو ‪ 7‬وليس ‪ 8‬الن تم تنفيذها من اللحظة ‪ 0‬الى اللحظة ‪ 1‬فنقوم بمقارنة ال ‪ Burst time‬بين‬
‫‪P1‬و ‪ P2‬نالحظ ان ‪ P2‬هي صاحبة األولوية الن ‪ Burst time‬اصغر‪ 7>4 ,‬فتذهب ال ‪ P1‬الى رتل االنتظار و تنفذ‬
‫‪. P2‬‬
‫فنقوم بالمقارنة بين ‪P1‬و ‪P2‬و ‪ P3‬نستنتج ان ‪P2‬هي األصغر وتتابع تنفيذها وتذهب‬ ‫وصلت ال ‪ P3‬في اللحظة ‪2‬‬
‫‪ P3‬الى رتل االنتظار‬
‫وصلت ‪ P4‬في اللحظة ‪ 3‬نقوم بالمقارنة مع باقي العمليات ونستنتج ان ‪ P2‬هي األصغر فتتابع تنفيذها‬
‫ان عملية المقارنة تحدث في كل لحظة من الزمن والعملية ذات ال ‪ Burst time‬األقصر ستنفذ ‪.‬‬
‫فيكون مخطط غانت هو‬

‫نحسب زمن االنتظار‬

‫• ان العملية ‪ P1‬دخلت في اللحظة ‪ 0‬ونفذت في نفس اللحظة وفي اللحظة ‪ 1‬ذهبت الى رتل االنتظار ولم يعاد‬
‫تنفيذها حتى اللحظة ‪ 10‬واكملت تنفيذها فهي انتظرت من اللحظة ‪ 1‬حتى اللحظة ‪ 10‬فمجموع أوقات االنتظار هو‬
‫‪.9‬‬
‫• العملية ‪ P2‬وصلت في اللحظة ‪ 1‬ونفذت في نفس اللحظة حتى أكملت تنفيذها فمجموع أوقات االنتظار هو ‪0‬‬
‫• العملية ‪ P3‬وصلت في اللحظة ‪ 2‬ونفذت في اللحظة ‪ 17‬فمجموع أوقات االنتظار هو ‪15‬‬
‫• العملية ‪ P4‬وصلت في اللحظة ‪ 3‬ونفذت في اللحظة ‪ 5‬فمجموع أوقات االنتظار هو ‪2‬‬

‫حساب زمن االستجابة‬

‫نعلم ان زمن االستجابة هو الوقت المستغرق من لحظة وصول العملية حتى بدء اول تنفيذ لها ‪.‬‬
‫• العملية ‪ P1‬وصلت في اللحظة ‪ 0‬ونفذت في اللحظة ‪ 0‬فزمن االستجابة هو ‪0‬‬
‫• العملية ‪ P2‬وصلت في اللحظة ‪ 1‬ونفذت في اللحظة ‪ 1‬فزمن االستجابة هو ‪1‬‬
‫• العملية ‪ P3‬وصلت في اللحظة ‪ 2‬ونفذت في اللحظة ‪ 17‬فزمن االستجابة هو ‪15‬‬

‫‪8‬‬
‫‪/ITE.RBCs‬‬
‫نظم تشغيل ‪ | 1‬عملي مشترك‬

‫• العملية ‪ P4‬وصلت في اللحظة ‪ 3‬ونفذت في اللحظة ‪ 5‬فزمن االستجابة هو ‪2‬‬

‫حساب زمن االستخدامية‬

‫نعلم ان زمن االستخدامية مقدار الوقت الالزم لتنفيذ عملية من لحظة وصولها حتى انتهاء وقت تنفيذها‪.‬‬
‫• العملية ‪ P1‬وصلت في اللحظة ‪ 0‬و انهت تنفيذها في اللحظة ‪ 17‬فزمن االستجابة ‪17‬‬
‫• العملية ‪ P2‬وصلت في اللحظة ‪ 1‬و انهت تنفيذها في اللحظة ‪ 5‬فزمن االستجابة ‪4‬‬
‫• العملية ‪ P3‬وصلت في اللحظة ‪ 2‬و انهت تنفيذها في اللحظة ‪ 26‬فزمن االستجابة ‪24‬‬
‫• العملية ‪ P4‬وصلت في اللحظة ‪ 3‬و انهت تنفيذها في اللحظة ‪ 10‬فزمن االستجابة ‪7‬‬

‫فيكون المتوسط ألزمنة االنتظار و االستخدامية واالستجابة‬

‫نالحظ ان زمن االستجابة ال يساوي زمن االنتظار الن الخوارزمية شفعية ☺‬

‫‪Priority Scheduling‬‬
‫‪ -‬يستند مبدأ هذه الخوارزمية على تنفيذ العمليات تبعاً لرقم األولوية الذي يعطى لكل عملية ‪.‬‬
‫‪ -‬العملية ذات رقم األولوية األقل هي األولى بالتنفيذ(ذات األولوية األعلى)‪.‬‬
‫‪ -‬عند تساوي رقم األولوية نستخدم خوارزمية ‪FCFS‬‬
‫‪ -‬يمكن ان تكون شفعية او غير شفعية ‪.‬‬
‫‪ -‬تعتبر خوارزمية ‪ SJF‬هي حالة خاصة من خوارزمية األولوية ‪ Priority‬حيث يمثل رقم األولوية مقلوب ‪Burst Time‬‬
‫التالي المتوقع‬
‫‪ -‬إن أحد أبرز مشاكل خوارزمية األولوية ‪ Priority‬هي مشكلة ال ‪ Starvation‬أي ان العمليات ذات األولويات المنخفضة‬
‫يمكن أال تنفذ إلى األبد بسبب وجود عمليات ذات أولوية اعلى تسبقها تتولد باستمرار‪.‬‬
‫تم حل مشكلة ال ‪ Starvation‬من خالل ال ‪ Aging‬أي بزيادة أولوية هذه العمليات بشكل تدريجي التي تنتظر فترة‬
‫طويلة‪.‬‬

‫‪9‬‬
‫‪/ITE.RBCs‬‬
‫نظم تشغيل ‪ | 1‬عملي مشترك‬

‫مثال ‪:‬‬

‫اذا كانت األولويات تتراوح بين ‪( 0‬عالية) و ‪ ) 127‬منخفضة ) فمثال اذا كانت لدينا عملية ذات رقم أولوية كبير مثل ‪127‬‬
‫فسيكون تنفيذها صعب جدا فنلجأ إلى زيادة اولويتها من خالل االنقاص من رقم األولوية كل مدة من الزمن (من‪ 1‬الى‬
‫‪ 15‬دقيقة) ‪etc---- 60 – 105 --- 127‬‬

‫مثال على خوارزمية )‪Priority Scheduling(Non -preemptive‬‬

‫ليكن لدينا العمليات ‪ P1‬و ‪ P2‬و ‪ P3‬و ‪ P4‬و ‪ P5‬تصل في اللحظة نفسها (اللحظة ‪ ) 0‬على الترتيب ولها ‪Burst time‬‬
‫ورقم األولوية الموضح في الجدول التالي‬

‫العملية‬ ‫األولوية ‪Priority‬‬ ‫‪Burst Time‬‬


‫‪P1‬‬ ‫‪3‬‬ ‫‪10‬‬
‫‪P2‬‬ ‫‪1‬‬ ‫‪1‬‬
‫‪P3‬‬ ‫‪4‬‬ ‫‪2‬‬
‫‪P4‬‬ ‫‪5‬‬ ‫‪1‬‬
‫‪P5‬‬ ‫‪2‬‬ ‫‪5‬‬

‫احسب زمن االنتظار وزمن االستجابة وزمن االستخدامية ‪.‬‬


‫الحل ‪:‬‬
‫في خوارزمية ‪ Priority‬نرتب تنفيذ العمليات طبقا لرقم األولوية من األصغر الى األكبر ‪.‬‬

‫نرسم مخطط غانت‬


‫نحسب زمن االنتظار وزمن االستجابة وزمن االستخدامية كما في الخوارزميات السابقة فيكون‬

‫‪10‬‬
‫‪/ITE.RBCs‬‬
‫نظم تشغيل ‪ | 1‬عملي مشترك‬

‫خوارزمية )‪RR (Round-Robin‬‬


‫يقوم مبدأ هذه الخوارزمية على إعطاء مدة زمنية محددة لتنفيذ عملية تسمى ‪ Time Slice‬تأخذ من وقت ال ‪ CPU‬تكون‬
‫عادة من ‪ 10‬ميلي ثانية الى ‪ 100‬ميلي ثانية‬
‫حيث يقوم المجدول بالتقاط أول إجرائية بالرتل‪ ،‬ويعد المؤقت للمقاطعة بعد حصة زمنية واحدة‪ ،‬ثم يتم تنفيذها بمقدار‬
‫ال ‪time slice‬‬
‫‪ ‬اذا كان رشقة ‪ CPU‬لإلجرائية اقصر من ال ‪ :time slice‬تتخلى اإلجرائية عن ال ‪ CPU‬طوعاً وينتقل الى اإلجرائية‬
‫التالية في الرتل‪.‬‬
‫اما اذا كان رشقة ‪ CPU‬لإلجرائية اطول من ال ‪ time slice‬يقوم بتنفيذ العملية بمقدار ال ‪ time slice‬ويأخذ ما تبقى‬
‫منها الى نهاية الرتل (خوارزمية شفعية)‬
‫اذا كان لدينا ‪ n‬عملية في الرتل والمدة الزمنية ‪ q‬فلن تنتظر اكثر من ‪ )n-1) *q‬وحدة زمنية الى حين الحصة التالية‬

‫مالحظة‪ :‬يتم التعامل ضمن رتل الجاهزية وفق النمط ‪ ، FIFO‬حيث تضاف اإلجرائيات الجديدة إلى‬ ‫▪‬
‫نهاية الرتل‪.‬‬
‫مثال على خوارزمية ‪RR‬‬
‫ليكن لدينا العمليات ‪ P1‬و ‪ P2‬و ‪ P3‬تصل في اللحظة نفسها (اللحظة ‪ ) 0‬على الترتيب ولها ‪ Burst time‬الموضح في‬
‫الجدول التالي ‪:‬‬

‫األولوية ‪Priority‬‬ ‫‪Burst Time‬‬


‫‪P1‬‬ ‫‪24‬‬
‫‪P2‬‬ ‫‪3‬‬
‫‪P3‬‬ ‫‪3‬‬
‫احسب زمن االنتظار وزمن االستجابة وزمن االستخدامية علما ان ‪.q= 4ms‬‬
‫الحل ‪:‬‬
‫حسب مبدأ الخوارزمية تنفذ العملية بمقدار ‪. q‬‬
‫تدخل العملية ‪ P1‬وتنفذ بمقدار ‪ 4‬ونالحظ ان العملية لم تنتهي فتذهب الى نهاية الرتل وتدخل ‪ P2‬وتنفذ بمقدار ‪4‬‬
‫فنالحظ ان العملية تم تنفيذها و تتبعها ‪ P3‬فتنفذ بمقدار ‪ 4‬فنالحظ انه تم تنفيذها بالكامل فنعود الى ‪ P1‬وتنفذ بمقدار‬
‫‪ 4‬وبما ان ‪ P1‬وحيدة في الرتل ستتابع تنفيذها حتى النهاية ‪.‬فيكون مخطط غانت الموافق هو‬

‫‪11‬‬
‫‪/ITE.RBCs‬‬
‫نظم تشغيل ‪ | 1‬عملي مشترك‬

‫و نحسب زمن االنتظار واالستجابة واالستخدامية بنفس الطريقة المتبعة في الخوارزميات السابقة فيكون ‪:‬‬

‫الجدولة وفق ارتال متعددة المستويات‬


‫يتم تجزئة رتل االنتظار الى رتلين منفصلين‪:‬‬

‫‪ .1‬امامي (تفاعلي)‬
‫‪ .2‬خلفي (دفعي)‬

‫يملك كل رتل خوارزمية جدولة خاصة به‪.‬‬


‫مثال ‪:‬‬
‫االمامي خوارزمية ‪RR‬‬
‫الخلفي خوارزمية ‪FCFS‬‬
‫يتم تنفيذ الرتل االمامي ومن بعده يتم تنفيذ الرتل الخلفي لكن هذا االمر يمكن أن يسبب مشكلة ‪Starvation‬‬
‫يمكن حل هذه المشكلة عن طريق إعطاء كل رتل قيمة محددة من وقت ال ‪ CPU‬التي يمكن ان يستخدمها كل رتل‬
‫للجدولة بين عملياته ‪ 80%‬للرتل االمامي في حالة خوارزمية ‪ 20% RR‬للرتل الخلفي في حالة خوارزمية ‪FCFS‬‬

‫‪12‬‬
‫‪/ITE.RBCs‬‬
‫نظم تشغيل ‪ | 1‬عملي مشترك‬

‫مثال على جدولة وفق ارتال متعددة المستويات بتغذية راجعة في نظام متعدد‬
‫المعالجات (أو معالج متعدد النوى)‪:‬‬

‫لدينا العمليات ‪ P1,P2,P3,P4‬تصل في ازمنة وصول مختلفة على الترتيب )من ‪ P1‬حتى ‪ )P4‬ولديها ال ‪Burst time‬‬
‫الموضح في الجدول‬

‫العملية‬ ‫زمن الوصول‬ ‫‪Burst Time‬‬


‫‪P1‬‬ ‫‪0‬‬ ‫‪7‬‬
‫‪P2‬‬ ‫‪1‬‬ ‫‪60‬‬
‫‪P3‬‬ ‫‪2‬‬ ‫‪20‬‬
‫‪P4‬‬ ‫‪3‬‬ ‫‪40‬‬

‫ويوجد لدينا ارتال متعددة المستويات ‪:‬‬


‫• الرتل األول يجدول بخوارزمية ‪ RR‬والمدة الزمنية ‪q=8ms‬‬
‫• الرتل الثاني يجدول بخوارزمية ‪ RR‬والمدة الزمنية ‪q=16ms‬‬
‫• الرتل الثالث يجدول بخوارزمية ‪FCFS‬‬

‫الحل ‪:‬‬
‫تدخل العملية ‪ P1‬الى الرتل األول وتقوم بالتنفيذ بمقدار ‪ 8‬فيتم تنفيذ العملية ‪ P1‬بالكامل ‪.‬‬
‫عند اللحظة ‪ 7‬وهي اللحظة التي انتهت فيها ال ‪ P1‬تدخل ‪ P2‬ويتم تنفيذها بمقدار ‪ 8‬ويذهب ما تبقى منها الى الرتل‬
‫الثاني و بنفس الطريقة بالنسبة ل ‪ P3‬و ‪P4‬‬
‫في الرتل الثاني تتابع تنفيذها ال ‪ P2‬بمقدار ‪ 16‬ويذهب ما تبقى منها الى الرتل الثالث اما ال ‪ P3‬فتنفذ بمقدار ‪ 12‬وهو‬
‫الزمن المتبقي منها و ننتقل الى ‪ P4‬تنفذ بمقدار ‪ 16‬وتذهب الى الرتل الثالث‬
‫وفي الرتل الثالث تتابع ‪ P1‬تنفيذها حتى النهاية ويأتي دور ‪ P4‬ويتابع تنفيذها حتى النهاية‬

‫‪13‬‬
‫‪/ITE.RBCs‬‬
‫نظم تشغيل ‪ | 1‬عملي مشترك‬

‫ان الفرق بين الجدولة وفق ارتال متعددة المستويات بتغذية راجعة وفق نظام متعدد المعالجات (او معالج‬
‫متعدد النواة) و بين الجدولة وفق ارتال متعددة المستويات بتغذية راجعة وفق نظام وحيد النواة‬

‫في نظام متعدد المعالجات يتم تنفيذ العمليات في الرتل األول والثاني والثالث على التوازي ومخطط غانت يوضح هذه‬
‫االمر‬

‫حيث تم تنفيذ الجدولة في ‪83ms‬‬

‫اما نظام وحيد النواة فينتظر الرتل األول حتى يكمل تنفيذه ونفس االمر بالنسبة للرتل الثاني والثالث فيكون مخطط‬
‫غانت‬

‫تم تنفيذ الجدولة هنا بمقدار ‪127ms‬‬

‫‪JOEY DOESN'T SHARE FOOD‬‬


‫‪- joey Tribbiani‬‬

‫‪14‬‬
‫‪/ITE.RBCs‬‬
‫نظم تشغيل ‪ | 1‬عملي مشترك‬

‫مسألة على خوارزمية الجدولة ‪:‬‬ ‫▪‬

‫‪Process‬‬ ‫‪Brust time‬‬ ‫‪Priority‬‬

‫‪𝑃1‬‬ ‫‪10‬‬ ‫‪3‬‬

‫‪𝑃2‬‬ ‫‪1‬‬ ‫‪1‬‬

‫‪𝑃3‬‬ ‫‪2‬‬ ‫‪3‬‬

‫‪𝑃4‬‬ ‫‪1‬‬ ‫‪4‬‬

‫‪𝑃5‬‬ ‫‪5‬‬ ‫‪2‬‬

‫‪ -‬زمن الوصول لجميع التعليمات هو ‪. 0‬‬

‫‪ .3‬ارسم أربع مخططات غانت لتوضح تنفيذ العمليات باستخدام ‪:‬‬


‫))‪(non- preemptive priority, SJF, FCFS, and RR (quantum = 1‬‬

‫‪FCFS :‬‬

‫‪𝑃1‬‬ ‫‪𝑃2‬‬ ‫‪𝑃3‬‬ ‫‪𝑃4‬‬ ‫‪𝑃5‬‬


‫‪0‬‬ ‫‪10‬‬ ‫‪11‬‬ ‫‪13‬‬ ‫‪14‬‬ ‫‪19‬‬

‫‪SJF :‬‬

‫‪𝑃2‬‬ ‫‪𝑃4‬‬ ‫‪𝑃3‬‬ ‫‪𝑃5‬‬ ‫‪𝑃1‬‬


‫‪0‬‬ ‫‪1‬‬ ‫‪2‬‬ ‫‪4‬‬ ‫‪9‬‬ ‫‪19‬‬

‫‪Priority :‬‬

‫‪𝑃2‬‬ ‫‪𝑃5‬‬ ‫‪𝑃1‬‬ ‫‪𝑃3‬‬ ‫‪𝑃4‬‬


‫‪0‬‬ ‫‪1‬‬ ‫‪6‬‬ ‫‪16‬‬ ‫‪18‬‬ ‫‪19‬‬

‫تذكرة ‪ :‬رتبنا تصاعدياً بحسب الــ ‪. priority‬‬ ‫▪‬

‫‪15‬‬
‫‪/ITE.RBCs‬‬
‫نظم تشغيل ‪ | 1‬عملي مشترك‬

‫‪RR : ( quantum ) :‬‬

‫‪𝑃1‬‬ ‫‪𝑃2‬‬ ‫‪𝑃3‬‬ ‫‪𝑃4‬‬ ‫‪𝑃5‬‬ ‫‪𝑃1‬‬ ‫‪𝑃3‬‬ ‫‪𝑃5‬‬ ‫‪𝑃1 𝑃5 𝑃1 𝑃5‬‬
‫‪0‬‬ ‫‪1‬‬ ‫‪2‬‬ ‫‪3‬‬ ‫‪4‬‬ ‫‪5‬‬ ‫‪6‬‬ ‫‪7‬‬ ‫‪10‬‬
‫‪8‬‬ ‫‪9‬‬ ‫‪11‬‬ ‫‪12‬‬

‫‪𝑃1‬‬ ‫‪𝑃5‬‬ ‫‪𝑃1‬‬

‫‪12‬‬ ‫‪13‬‬ ‫‪14 .... 19‬‬ ‫تكرار بمقدار ‪ 1 ms‬في كل دخول وخروج‬

‫‪ .4‬ما هو الوقت المستغرق لكل عملية من عمليات الجدولة في السؤال األول ؟‬

‫‪FCFS‬‬ ‫‪RR‬‬ ‫‪SJF‬‬ ‫‪PRIORITY‬‬


‫‪𝑃1‬‬ ‫‪10‬‬ ‫‪19‬‬ ‫‪19‬‬ ‫‪16‬‬
‫‪𝑃2‬‬ ‫‪11‬‬ ‫‪2‬‬ ‫‪1‬‬ ‫‪1‬‬
‫‪𝑃3‬‬ ‫‪13‬‬ ‫‪7‬‬ ‫‪4‬‬ ‫‪18‬‬
‫‪𝑃4‬‬ ‫‪14‬‬ ‫‪4‬‬ ‫‪2‬‬ ‫‪19‬‬
‫‪𝑃5‬‬ ‫‪19‬‬ ‫‪14‬‬ ‫‪9‬‬ ‫‪6‬‬

‫‪ .5‬ما هو وقت االنتظار لكل عملية من عمليات الجدولة في السؤال األول ؟‬

‫‪FCFS‬‬ ‫‪RR‬‬ ‫‪SJF‬‬ ‫‪PRIORITY‬‬


‫‪𝑃1‬‬ ‫‪0‬‬ ‫‪9‬‬ ‫‪9‬‬ ‫‪16‬‬
‫‪𝑃2‬‬ ‫‪10‬‬ ‫‪1‬‬ ‫‪0‬‬ ‫‪0‬‬
‫‪𝑃3‬‬ ‫‪11‬‬ ‫‪5‬‬ ‫‪2‬‬ ‫‪16‬‬
‫‪𝑃4‬‬ ‫‪13‬‬ ‫‪3‬‬ ‫‪1‬‬ ‫‪18‬‬
‫‪𝑃5‬‬ ‫‪14‬‬ ‫‪9‬‬ ‫‪4‬‬ ‫‪1‬‬

‫‪ .6‬اي من عمليات الجدولة السابقة تمتلك أقل متوسط وقت انتظار؟‬


‫)‪SJF (Shortest Job First‬‬

‫‪- THE END -‬‬

‫‪16‬‬
‫‪/ITE.RBCs‬‬

You might also like