操作系统导论 第七章 进程调度

第七章 进程调度

7.1 工作负载假设

在对进程调度策略进行探讨之前,我们先进行一些简化假设,这些假设与系统中运行的进程有关,被称之为工作负载。

  1. 每一个工作运行相同的时间
  2. 所有的工作同时到达
  3. 一旦开始,每个工作保持运行直到完成
  4. 所有工作只是用CPU
  5. 每个工作的运行时间是已知的

7.2 调度指标

为了衡量不同调度策略的优劣,我们需要定义一个指标,它将在接下来的讨论中发挥重要的作用。现在,我们把周转时间作为我们的指标,它的定义如下:

T周转时间 = T完成时间 - T到达时间

7.3 先进先出(FIFO)

理想状态下

我们先在工作负载的假设下,举一个简单的例子。

假设有三个任务A、B、C,他们在同时到达系统,到达时间设为0(T到达时间=0)

因为FIFO需要有工作的先来后到,我们假设到达顺序是A->B->C。

再假设A、B、C都运行相同的时间10s。

由以上假设我们得出,A在10s时完成,B在20s时完成,C在30s时完成,周转时间分别为10s,20s,30s。

则这三个任务的平均周转时间为

(10+20+30)/3=20

非理想状态下

现在,我们放宽一下假设1

  1. 每一个工作运行相同的时间

假设有三个任务A、B、C,到达时间和顺序不变。

A的运行时间为100s,B和C的运行时间为10s。

此时,只有A运行100s完成任务之后,才能运行B和C。

所以A的完成时间变为100s,B的完成时间变为100s+10s=110s,C的完成时间变为110s+10s=120s。

这时,这三个任务的平均周转时间为

(100+110+120)/3=110

分析

这样看起来,在理想状态下,FIFO策略还算合理,平均周转时间还在我们可以接受的范围内。

但是在非理想状态下,这样的平均周转时间相较于A的周转时间而言,是可以接受的,但相对于B和C的周转时间而言,却是难以忍受的。

这种问题被称为护航效应(convoy effert),一些耗时较少的潜在资源消费者被安排在重量级的资源消费者之后。

在现实生活中我们也会遇到这样的情况,比如在超市购物排队结账时,你

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值