最短剩余时间优先 (SRTF) 如何工作?

How does Shortest Remaining Time First (SRTF) work?

如果正在处理一个作业,它完成之前的时间不是最短吗,因为当它被抢占时,它最终会成为就绪运行 队列的头部?

那么这是否只是一个重复的循环,直到作业完成,并产生间接费用?

不会忽略更长的流程(就像 SJF 一样)吗?

谢谢

不,正在处理的作业不一定具有最短的剩余时间。 SRTF 检查就绪队列中是否有一个进程具有较少的突发时间来完成抢占。假设您有 p1、p2 和 p3。 p1 的总突发数为 15 并在时间 0 到达,p2 的总突发数为 10 并在时间 3 到达,p3 的总突发数为 1 并在时间 4 到达。

使用 SRTF 的执行将是:

p1 -> from 0 to 3, remaining burst -> p1 = 12

3,到达p2,p2 burst < p1 remaining burst,所以p2得到cpu

p2 -> from 3 to 4, remaining burst -> p1=12,p2 = 9 

在 4 到达 p3,p3 burst < p2 remaining burst < p1 remaining burst,所以 p3 得到 cpu

p3-> from 4 to 5, remaining burst -> p2=9,p1=12
p2-> from 5 to 14, remaining burst -> p1=12
p1-> from 14 to 26, end