进程调度新要求:响应时间

响应时间

T响应时间 = T首次运行 - T到达时间

引入响应时间的原因:如果使用STCF的调度方式,可以使周转时间最短,但是,如果短任务很多,则没有长任务执行的机会,对长任务来说很“不公平”

轮转

轮转的思想:设置一个时间片,一个进程使用完一个时间片后,切换到下一个进程。

使用轮转算法,执行时间长的任务也有机会尽快的运行,从而较长的任务的响应时间也可以变短。

时间片长度必须是时钟中断周期的倍数。(任务的切换依赖于时钟中断,时钟中断将CPU的控制权交给操作系统)

这看起来又是一个完美的算法,是不是忽略了什么?时间片的长度是多少?

任务切换时,需要进行上下文切换,这是一部分时间成本。如果时间片太短,频繁的上下文切换会占用大量的时间;如果时间片太长,则响应时间也会变长。所以,时间片具体的长度,需要权衡。

轮转的周转时间

如果只考虑响应时间,在时间片合适的情况下,轮转是很好的算法。

现在,再来讨论一下轮转的周转时间

进程编号 到达时刻 执行时间
0 0 30
1 0 30
2 0 30

暂时不考虑上下文切换的时间成本

如果轮转时间为10,且每一个进程被调度的概率相同,则可能会有下面的运行情况:

时刻 0 10 20 30 40 50 60 70 80
运行的进程 0 1 2 0 1 2 0 1 2
进程编号 完成时间
0 70
1 80
2 90

平均周转时间 = (70 + 80 + 90)/3

如果不使用轮转,平均周转时间 = (30 + 60 + 90)/3

可见,如果要考虑周转时间,轮转并不是一个好的算法

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章