OS学习(四)——进程调度

调度策略

调度指标一:周转时间

算法一:
先进先出(FIFO)

很好理解,字如其面。

eg.

缺点:

(假设ABC都在0时刻到达)

到达顺序:A,B,C。

平均周转时间:(100+110+120)/3=110s

算法二:
最短任务优先(Shortest Job First,SJF)

哪个任务短执行哪个。

假设ABC同时到达。

缺点:

A在0s到达,B和C在10s到达。

BC仍要等待A完成后再执行。

P2:15+24+1(进程调度)=40s

P3:18+24+36+1(进程切换)+1(进程调度)=80s

P1:24+36+30+12+1(切换)+1(切换)+1(调度)=105s

t=(40+80+105)/3=75s

算法三:
最短完成时间优先(Shortest Time-to-Complete First,STCF)

它抢占式地调度程序,即抢占一个工作,运行另一个工作。相对的,SJF是非抢占式的。

当新工作进入系统,STCF会确定谁的剩余时间最少并且调度该工作。

调度指标二:响应时间

SJF和STCF的响应时间都不咋地。

算法四:轮转(Round-Robin)

简单说来,就是不是一直做一个工作,A工作一会后B工作。

(时间片的长度必须是时钟中断周期的整数倍)

缺点:

若时间片太短,突然切换上下文会影响整体性能;时间片太长,响应时间不好。并且RR的周转时间不理想。

结合I/O

当工作发出I/O请求时,当前运行的程序会被阻塞,不使用CPU。这时,调度程序应在CPU上安排另一个工作。

eg.

A和B都需要50s的CPU时间,但A每运行10ms就发出I/O请求,假设每个I/O请求需要10ms,B不发出I/O请求。

如此实现重叠(overlap)。

但是有个最重要的问题:我们不知道每个工作的长度(时间),执行怎样的调度策略?

且听下回分解。

  • 9
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值