حتى الآن، كنا نقوم بجدولة العمليات وفقًا لوقت وصولها (في جدولة FCFS). ومع ذلك، تقوم خوارزمية جدولة SJF بجدولة العمليات وفقًا لوقت انفجارها.
أداة القطع في أوبونتو
في جدولة SJF، ستتم جدولة العملية ذات أقل وقت للاندفاع، من بين قائمة العمليات المتاحة في قائمة الانتظار الجاهزة، بعد ذلك.
ومع ذلك، من الصعب جدًا التنبؤ بوقت الاندفاع اللازم لعملية ما، وبالتالي يصعب جدًا تنفيذ هذه الخوارزمية في النظام.
مزايا SJF
- الحد الأقصى من الإنتاجية
- الحد الأدنى لمتوسط وقت الانتظار والاستجابة
عيوب SJF
- قد يعاني من مشكلة المجاعة
- إنه غير قابل للتنفيذ لأنه لا يمكن معرفة وقت الاندفاع الدقيق للعملية مسبقًا.
هناك تقنيات مختلفة متاحة يمكن من خلالها تحديد وقت انفجار وحدة المعالجة المركزية للعملية. وسنناقشها لاحقا بالتفصيل.
مثال
في المثال التالي، توجد خمس وظائف تسمى P1 وP2 وP3 وP4 وP5. ويرد في الجدول أدناه وقت وصولهم ووقت الانفجار.
معرف المنتج | وقت الوصول | وقت الانفجار | وقت الانتهاء | الفترة الزمنية | وقت الانتظار |
---|---|---|---|---|---|
1 | 1 | 7 | 8 | 7 | 0 |
2 | 3 | 3 | 13 | 10 | 7 |
3 | 6 | 2 | 10 | 4 | 2 |
4 | 7 | 10 | 31 | 24 | 14 |
5 | 9 | 8 | واحد وعشرين | 12 | 4 |
منذ ذلك الحين، لا تصل أي عملية في الوقت 0 وبالتالي؛ سيكون هناك فتحة فارغة في مخطط جانت من الوقت 0 إلى 1 (الوقت الذي تصل فيه العملية الأولى).
وفقًا للخوارزمية، يقوم نظام التشغيل بجدولة العملية التي لها أقل وقت للاندفاع بين العمليات المتاحة في قائمة الانتظار الجاهزة.
حتى الآن، لدينا عملية واحدة فقط في قائمة الانتظار الجاهزة ومن ثم سيقوم المجدول بجدولة هذه العملية للمعالج بغض النظر عن وقت انفجارها.
وسيتم تنفيذ هذا حتى 8 وحدات من الزمن. حتى ذلك الحين، لدينا ثلاث عمليات أخرى وصلت إلى قائمة الانتظار الجاهزة ومن ثم سيختار المجدول العملية ذات أقل وقت للاندفاع.
int إلى السلسلة في Java
من بين العمليات الواردة في الجدول، سيتم تنفيذ P3 بعد ذلك نظرًا لأنها تتمتع بأقل وقت للاندفاع بين جميع العمليات المتاحة.
هذه هي الطريقة التي ستستمر بها العملية أقصر مهمة أولاً (SJF) خوارزمية الجدولة.
متوسط وقت الانتظار = 27/5