例如,当我阅读不同的调度算法时,例如First-Come-First-Serve
,Shortest Job First
,Priority Scheduling
,Round Robin
所有调度算法都是平均等待时间。
考虑运行时间为21,3,6,2(msecs)的进程。 First-Come-First-Serve
的平均等待时间为(0 + 21 + 24 + 30)/ 4 = 18.75毫秒,Shortest Job First
的平均等待时间为(0 + 2 + 5 + 11)/ 4 = 4.5毫秒。
这是否意味着Shortest Job First
更好?我知道第一个中的等待时间较长,但这并不是在等待,CPU忙于执行任务。就像21毫秒的任务一样,首先它完成然后紧挨着另一个等等。就像不应该花费相同的时间来完成任务而不管顺序如何?有什么想法吗?
答案 0 :(得分:2)
不,不意味着最短作业更好,SJF
最大限度地减少了average waiting time
的公平性。所有这些只是测量。
在单处理器系统上,是的,它需要相同的时间。
这一切都归结为系统的目的是什么,将要运行的工作类型是什么。
修改强>
在linux 2.6作为实际系统的示例中,实际任务的调度算法是SCHED_OTHER
,其优先考虑具有高平均睡眠时间的过程。 (即大部分时间都在等待一些i / o的工作)。我们希望尽量缩短他们的响应时间
并且系统通过为每个进程分配一个切片时间来共享CPU,而不像RR那样给出相等的切片时间。