操作系统 SRTF最短剩余时间优先调度算法
此算法是SJF调度的抢占版本。在SRTF中,进程的执行可以在一定的时间后停止。每当有进程到达时,短期调度器会在可用进程列表和正在运行的进程中选择剩余执行时间最短的进程进行调度。
一旦所有进程都在就绪队列中可用,就不会进行抢占,算法将按照SJF调度的方式工作。当进程从执行中移除并调度下一个进程时,进程的上下文将被保存在进程控制块中。此进程的下一次执行时将访问此PCB。
示例
在这个示例中,有五个作业P1、P2、P3、P4、P5和P6。它们的到达时间和执行时间如下表所示。
Process ID | Arrival Time | Burst Time | Completion Time | Turn Around Time | Waiting Time | Response Time |
---|---|---|---|---|---|---|
1 | 0 | 8 | 20 | 20 | 12 | 0 |
2 | 1 | 4 | 10 | 9 | 5 | 1 |
3 | 2 | 2 | 4 | 2 | 0 | 2 |
4 | 3 | 1 | 5 | 2 | 1 | 4 |
5 | 4 | 3 | 13 | 9 | 6 | 10 |
6 | 5 | 2 | 7 | 2 | 0 | 5 |
平均等待时间 = 24/6
根据表中给出的到达时间和运行时间准备甘特图。
- 由于在时间0时,唯一可用的进程是CPU执行时间为8的P1。这是列表中唯一可用的进程,因此安排它。
- 下一个进程在时间单位1处到达。由于我们使用的算法是SRTF,它是一种抢占式算法,当前执行被停止,调度程序检查具有最少执行时间的进程。 到目前为止,就绪队列中有两个可用的进程。操作系统已经执行了P1一个时间单位;P1的剩余执行时间为7个单位。P2的执行时间为4个单位。因此,根据算法,将进程P2安排到CPU上。
- 下一个进程P3在时间单位2处到达。此时,执行P3的过程被停止,并搜索剩余执行时间最少的进程。由于进程P3的剩余执行时间为2个单位,因此将优先考虑它。
- 下一个进程P4在时间单位3处到达。此时到达,调度程序将停止执行P4,并检查可用进程(P1、P2、P3和P4)中剩余执行时间最少的进程。P1和P2的剩余执行时间分别为7个单位和3个单位。
P3和P4的剩余执行时间均为1个单位。由于它们相等,因此调度将根据它们的到达时间进行。P3比P4早到达,因此将再次安排它。 - 下一个进程P5在时间单位4处到达。到目前为止,进程P3已完成执行,并且不再在列表中。调度程序将比较所有可用进程的剩余执行时间。由于进程P4的执行时间为1,在所有进程中最少,因此将安排它。
- 下一个进程P6在时间单位5处到达,到目前为止,进程P4已完成执行。此时,我们有4个可用进程,即P1(7)、P2(3)、P5(3)和P6(2)。P6的执行时间在所有进程中最少,因此安排P6。由于现在所有进程都可用,因此算法将与SJF相同。执行P6直到完成,然后安排剩余时间最少的进程。
所有进程到达后,不进行抢占,算法将作为SJF工作。