调度算法(重点)

饥饿的理解

轮到该进程使用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秒内帮他打饭,打不完这个人也要挨个去更长时间的窗口排队

单处理器调度算法详解相关推荐

  1. 处理机调度算法详解----作业调度

    处理机调度算法详解----作业调度 ​ 在之前的理论篇中,我们也介绍了处理机调度的层次,不同的操作系统也会根据自己的设计目标来配置不同层次的调度算法,并且因为调度算法众多,如果全部糅杂在一起来讲,会让 ...

  2. (王道408考研操作系统)第二章进程管理-第二节4:调度算法详解2(RR、HPF和MFQ)

    文章目录 一:时间片轮转调度算法(RR) 二:优先级调度算法(HPF) 三:多级反馈队列调度算法(MFQ) 总结 进程调度算法也称为CPU调度算法,操作系统内存在着多种调度算法,有的调度算法适用于作业 ...

  3. (王道408考研操作系统)第二章进程管理-第二节3:调度算法详解1(FCFS、SJF和HRRN)

    文章目录 一:先来先服务调度算法(FCFS) 二:最短作业优先调度算法(SJF)和最短剩余时间优先算法(SRTN) (1)最短作业优先调度算法(SJF) (2)最短剩余时间优先算法(SRTN) 三:高 ...

  4. 操作系统中磁盘调度算法详解

    磁盘调度算法 (1)先来先服务 (2)最短寻道时间优先 (3)电梯算法 (4)单向扫描调度算法 (1) 磁盘调度 当多个访盘请求在等待时,采用一定的策略,对这些请求的服务顺序调整安排,旨在降低平均磁盘 ...

  5. Nachos进程数量限制128、ID号分配以及基于优先级的调度算法详解

    文章目录 写在前面 运行环境配置 最大线程限制 实现可回收的线程ID机制 基于优先级的先来先服务调度算法 修改完毕的nachos我已经上传了,需要的话可以点击这里下载,积分不够可以私信我,CSDN设置 ...

  6. 优先级结合时间片轮转算法c语言,先来先服务/段作业优先/时间片轮转/优先级调度算法详解...

    先来先服务调度算法 先来先服务(First Come First Served,FCFS),是一种简单的调度算法,它既适用于作业调度,也适用于进程调度.先来先服务算法是按照作业或进程到达的先后次序来进 ...

  7. linux多级反馈队列的实现,多级反馈队列调度算法详解

    通常在使用多级队列调度算法时,进程进入系统时被永久地分配到某个队列.例如,如果前台和后台进程分别具有单独队列,那么进程并不从一个队列移到另一个队列,这是因为进程不会改变前台或后台的性质.这种设置的优点 ...

  8. 调度算法—SJF调度算法详解

    吐槽 上课时操作系统没咋学,倒不是不想学,实在是老师讲的太乏味,照着PPT读,今天学习SJF时,发现不少博客写错了,居然直接将服务时间排序而不考虑到达时间,导致我一下陷入自我怀疑. SJF概念介绍 S ...

  9. 调度算法—FCFS调度算法详解

    FCFS概念介绍 FCFS,全称First come First Serve,中文名:先来先调度算法. 优点:简单,易实现: 缺点:对短作业不公平: FCFS代码实现 FCFS算法的实现步骤: 1.确 ...

最新文章

  1. 直击2018AWE:智能语言交互大厮杀、老品牌争先搭建平台、第三方平台迅速崛起
  2. mongoose操作mongodb
  3. 【安卓开发】启动另一个 Activity
  4. JS报错:Cannot read property 'type' of undefined
  5. Python直接调用C库的printf()函数打印一条消息
  6. go设置后端启动_Vue 之前后端分离的跨域
  7. mongodb 命令补充
  8. 1.7 Linux文件目录查看与编写内容
  9. switch/case语句中,每个case后{}的意义
  10. html文本添加超链接就换行,HTML - SegmentFault 思否
  11. Java根据城市拼音首字母排序并进行分组
  12. Fedora 9 感受
  13. 大灾变黑暗日子:静态分析和Roguelike游戏
  14. 【LeetCode】799.香槟塔
  15. CSP-J冲刺 P1359 租用游艇
  16. python人像精细分割_基于UNet网络实现的人像分割 | 附数据集
  17. NRF52840 SOC 在空气净化市场应用的发展趋势
  18. idea合并分支代码怎么操作呢?
  19. 2018华为暑假实习面试
  20. 福娃之路 | 五面阿里算法

热门文章

  1. AntiXSS v4.0中Sanitizer.GetSafeHtmlFragment等方法将部分汉字编码为乱码的解决方案
  2. poj 1185 火炮 (减少国家DP)
  3. poj1548Robots dfs实践
  4. linux安装thrift
  5. java根据系统时间拼凑文件名字
  6. oracle ogg11.2.0.3,ogg在oracle database 11.2.0.3上还是谨慎使用集成捕捉模式
  7. linux 内核同步--理解原子操作、自旋锁、信号量(可睡眠)、读写锁、RCU锁、PER_CPU变量、内存屏障
  8. Java虚拟机专题对象内存定位
  9. 并发库之CountDownLatch
  10. MapReduce之join操作