最短剩余时间优先 (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
如果正在处理一个作业,它完成之前的时间不是最短吗,因为当它被抢占时,它最终会成为就绪运行 队列的头部?
那么这是否只是一个重复的循环,直到作业完成,并产生间接费用?
不会忽略更长的流程(就像 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