OS 基础教程

进程管理

同步

死锁

内存管理

文件管理

original icon
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.knowledgedict.com/tutorial/os-sjf-scheduling.html

操作系统最短作业优先(SJF)调度


到目前为止,我们根据它们的到达时间(在FCFS调度中)调度这些进程。 但是,SJF调度算法根据其突发时间安排进程。

在SJF调度中,就绪队列中可用进程列表中的突发时间最短的进程将在下一个进行调度。

然而,预测一个过程所需的突发时间是非常困难的,因此这个算法在系统中很难实现。

SJF的优势

  • 最大吞吐量
  • 最低的平均等候时间和周转时间

SJF的缺点

  • 可能会面临饥饿问题
  • 这是不可实现的,因为一个进程的确切爆发时间不能预先知道。

有一些其它的技术可用来确定进程的CPU突发时间。 我们稍后会详细讨论它们。

示例

在以下示例中,有五个作业命名为:P1P2P3P4P5。 他们的到达时间和爆发时间在下表中给出。

PID 到达时间 突发时间 完成时间 周转时间 等待时间
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 21 12 4

因为,没有过程在时间0到达; 从时间01(第一个过程到达的时间)甘特图中会有一个空槽。

根据该算法,OS调度就绪队列中可用进程中具有最低突发时间的进程。

到目前为止,我们在就绪队列中只有一个进程,因此调度器会将它安排到处理器,而不管它的突发时间是多少。

这将被执行到8个单位的时间。 直到那时又有三个进程到达就绪队列,因此调度器将选择具有最低突发时间的进程。

在表中给出的过程中,接下来将执行P3,因为它在所有可用进程中具有最低的突发时间。

所以这就是程序如何以最短作业优先(SJF)调度算法进行。