在操作系统中,如何去衡量性能?我们先简化模型,只用一个性能指标去衡量——周转时间,周转时间的定义是任务完成时间减去任务到达系统的时间。
T周转时间 = T完成时间 - T到达时间
怎么理解呢?
以先进先出调度先发为例,看一个例子:
假设现在有3个任务几乎同时到达系统(但是也有个先后顺序),A比B早一点点,B比C早一点点,他们到达的时间相差无限小,我们看作趋近于0,那么T到达时间为0, 则周转时间等于完成时间。假设每个任务完成时间为10秒,A在第10秒完成,B在第20秒完成,C在第30秒完成,那么这3个任务的平均周转时间就是:
(10+20+30)/3 = 20s
看起来好像问题不大。
假设A要运行200秒,B和C都是运行10秒,那么系统的平均周转时间为:
(200+210+220)/3 = 210s
就好像你在超市买东西排队结账,你只买了一瓶饮料,但是你前面那个人买了一车东西。原本你只要10秒钟就能结完账出去。结果要等前面结完账要3分钟。
这就是FIFO算法的缺点。