如果一个作业正在处理中,那么它完成之前的时间不是最短吗?因为当它被抢占时,它最终会成为就绪运行队列的头部?
那么,这只是一个重复循环,直到作业完成,并产生开销吗?
较长的流程不会被忽略吗(就像 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 突发 < p1 剩余突发,因此 p2 获得 cpu
p2 -> from 3 to 4, remaining burst -> p1=12,p2 = 9
4 到达 p3,p3 突发 < p2 剩余突发 < p1 剩余突发,因此 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
关于scheduler - 最短剩余时间优先 (SRTF) 如何运作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63428403/