C++ SJF CPU 调度程序

28 Aug 2024 | 5 分钟阅读

什么是作业最快的调度?

作业或进程调度方法遵循非抢占式调度原则,称为最短作业优先调度。在这种情况下,调度程序从等待列表中选择完成时间最短的作业或进程,并将其分配给 CPU。由于 SJF 比 FIFO 更优化,并减少了平均等待时间,从而提高吞吐量,因此它优于 FIFO。

抢占式和非抢占式 SJF 算法都是可能的。最短剩余时间优先调度是抢占式调度的另一个名称。在新进程出现时,抢占式方法中的现有进程仍在运行。如果新传入进程的突发时间小于当前进程的突发时间,调度程序将阻止执行突发时间较短的进程。

什么是周转时间、等待时间和完成时间?

  • 完成时间是进程完成运行所需的时间。
  • 周转时间是启动一个过程到完成它的时间段。
  • 周转时间等于完成一个过程并提交它所需的时间。
  • 周转时间与突发时间之间的延迟称为等待时间。
  • 周转时间减去突发时间等于等待时间。

算法

C++ 中 SJF 调度程序

输出

Processes  Burst Time	Waiting Time  Turn Around Time
   1	        5	        3	            8
   2	        3	        0	            3
   3	        6	        12	            18
   4	        5	        6	            11

Average waiting time = 5.25
Average turn around time = 10
........................................................
Process executed in 1.33 seconds
Press any key to continue.
  • 每当出现平局时,FCFS 调度决定谁胜出。
  • SJF 调度可以在抢占式和非抢占式模式下使用
  • 3-最短剩余时间优先是最短作业优先 (SRTF) 的抢占模式。