单处理器调度算法详解

调度算法(重点)

饥饿的理解

轮到该进程使用CPU时,另一个进程以某种原因抢先占用CPU(抢占)
几个人一起吃一块蛋糕,轮到你吃时,你后边的人抢到你前面吃掉了你的那一份,没吃到原本该你吃的东西,你会很饥饿

非抢占

FCFS、SPN、HRRN

抢占

RR、SRT、Feedback

开销小

FCFS、RR

有饥饿

SPN、SRT、Feedback

2.10.1 FCFS先来先服务
  • 按照请求cpu顺序执行
  • 对短进程不利,参考超市购物
  • 对I/O密集型不利,因为cpu需求小
  • 属于非抢占,无饥饿,响应时间可能很长
  • 早晨食堂排队买早餐就是先来先服务
2.10.2 RR时间片轮转调度算法RoundRobin
  • 在FCFS中加入加入时钟中断

  • 在分时系统或事务处理系统中特别有效

  • 属于抢占,无饥饿算法,性能与时间片设置密切

    • 时间片长:对长作业有利
    • 时间片短:对短作业有利
  • 对I/O密集型不利:I/O密集型进程每次短暂使用CPU后,都会再加入队列尾进行调度,而cpu密集型则可以占用cpu更长时间,I/O密集型进程所用时间大于预期时间。

    • 你早餐去食堂排队买两个鸡蛋(短作业),到你的时候买了一个鸡蛋饭卡没钱了(I/O中断),你只能去充卡,卡充好后(I/O满足),你再回来排队,只能从队尾排起
  • 改进的算法:URR

  • 新增I/O阻塞完成的进程队列队列,该队列优先级高于就绪队列,比RR更公平

    • 你早餐去食堂排队买两个鸡蛋(短作业),到你的时候买了一个鸡蛋饭卡没钱了(I/O中断),你只能去充卡,卡充好后(I/O满足),你再回来排队,可以只排因为充卡中断买鸡蛋的人排成的队,而不用去排没买过饭的人排成的队
  • 早晨食堂排队买早餐的基础上,增加一个时间限制,你30秒之内买不完饭就要重新排队…

2.10.3 短作业优先SJF/SPN/SPF
  • 该算法照顾短作业,所以必须事先知道谁“短”,所以该算法前提为所有进程执行时间已知
  • 属于非抢占、有饥饿算法
  • 减少了平均周转时间,因为非抢占,不适用于分时、事务处理系统
  • 用户估计不准时不能做到SJF
  • 早晨食堂排队买早饭,谁买东西快谁先买,但一个人正在买的时候另一个人不能插队
2.10.4 剩余时间最短者优先算法SRT
  • 选择预期剩余时间最短的进程,是在短作业优先的基础上增加了抢占机制
  • 属于抢占、有饥饿算法
  • 该进程必须记录进程已执行时间
  • 在平均周转时间上优于短作业优先,也需要预估进程执行时间
  • 早晨食堂排队买早饭,谁买东西快谁先买,如果小张还有1分钟才能买完,这时候来了一个还差59秒就能买完的人,新来的人就能插到小张前面买
2.10.5 HRRN 最高响应比优先算法
  • 当前进程执行完成时,下一个选用响应比最高的进程

  • 属于非抢占,有饥饿算法

  • 响应比=(waitTime+serveTime)/serveTime=1+waitTime/serveTime

  • 你去食堂是为了买早饭,你到食堂的排队时间+买饭时间再除以买饭时间就是响应比,这个值越大,你买早饭的效率就越低

  • 短作业serveTime小,waitTime/serveTime更大,响应比更大,优先调度

  • 长作业等待时间长了之后,waitTime/serveTime增大,响应比变大,优先调度

  • 该算法是一种动态优先级调整算法,结合了FCFS和SJF

  • 该算法既照顾了短进程,又不让长进程长时间饥饿

  • 该进程需要进行响应比计算,需要预估执行时间

  • 去食堂排队买早饭,小张急着上课,买东西快,或者小李买的慢,但是被插队了好几次,阿姨为了不让大家生气,允许他俩插队打饭

2.10.6 FeedBack 反馈调度算法
  • 该算法的思路是惩罚长进程,而像SJF、SRT、HRRN是给短进程优惠

  • 属于抢占、有饥饿算法

  • 设置多个优先级队列区别对待,各个队列中时间片可以不一样长,优先级高的队列时间片短

  • 新来的进程位于最高级优先级队列尾

  • 先执行优先级高队列中的进程,进程时间片用完还没执行完就会降级到优先级更低的队列尾

  • 一般优先级为i的队列时间片为2^i

  • 能够较好的满足各种类型用户需求

  • 终端型用户、短作业用户:交互作业常为短作业、在比较高的优先级队列就能执行完

  • 长进程用户:进程随着队列下降,分配的时间片足够执行完

  • 去食堂排队买早饭,有好几个窗口,但只有一个打饭阿姨,阿姨让大家排成一个队,轮流来第一个窗口打饭,在10秒内没打完饭的人去第二个窗口排队,等第一个窗口没人了,阿姨来第二个窗口帮大家打饭,20秒内没打完的人再去第三个窗口排队,第三个窗口可能时间限制是40秒,第四个第五个以此类推,要是这时候又来了一个人打饭,阿姨要回到第一个窗口在10秒内帮他打饭,打不完这个人也要挨个去更长时间的窗口排队

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值