决策模式

决策模式说明选择函数在执行的瞬间的处理方式,通常分为以下两类:

非抢占:一旦进入运行状态,就不会终止直到运行结束。

抢占:当前正在运行的进程可以被打断,并转移到就绪态。

一个调度算法是否能抢占,对进程的顺序有着极大的影响。

先来先服务FCFS

先来先服务是最简单的策略,也成为先进先出FIFO。首先它是一个非抢占的。如字面的意思,它根据进程到达时间决定先运行哪一个进程。

这里给出一个实际的例子。以表格的形式表现出在FIFO策略下各进程的情况。

简单说就是依次执行完成,从时间轴上来看

以表格的形式展现:

其中开始时间是上一个进程的结束时间

结束时间=开始时间+服务/执行时间

      周转周期=结束时间-到达时间

      带权周转时间=周转时间/服务时间

最短进程优先SPN

也称最短作业优先(Short Job First,SJF)。它也是一个非抢占的。是根据服务的时间经行选择。在这里要注意下到达时间的顺序。比如实例中单纯以大小来排序的话是E-A-C-D-B,但正确的排序一定是A-B为开头。以时间为顺序:

例子中A运行结束时间为3,这时只有B进程等待。所以A运行结束后直接运行B。B结束后时间点到9,CDE都在等待。这个时候就选择服务时间最少的E,然后是较少的C,最后是D。以表格的形式展示:

最短剩余时间优先SRT

SRT是针对SPN增加了抢占机制的版本,就好比例子中B运行时间非常长,在这期间其他所有的进程都在等待,如果将其中断,先处理所需时间少的,运行效率会有显著提升。一定要先明确SRT是抢占的。先给出时间为顺序的图:

1. A先运行至2,B到达等待。

2. A运行到3结束,B开始运行。

3. B开始运行,运行到4时,C进程到达,且C只需要4,此时B还需要5。所以先运行C,B继续等待。

4. C运行时间点到达6时,D到达,D需要5,进入等待,排在B后。

5. C运行结束,此时时间点是8,E到达,运行时间只要2,小于等待的BD,直接运行。

6. C运行结束,B开始运行。

7. B运行结束,D开始运行。

以表格的形式展现:

轮转RR

轮转也称时间片技术(time slicing,SL),对于轮转法,最重要的是时间片的长度。轮转算法以一个周期(q)产生中断,当中断发生时,当前运行的程序置于就绪队列(队尾)中,然后基于FCFS选择下一个就绪作业运行。在这里我们以时间片q=1举例。

q=1,所以一次只能运行一个时间片。

0:A1运转(右标表示运行了几个)

1:A2运转

2:B1运转,A3等待(B开始)

3:A3运转,B2等待

4:B2运转,C1等待,(A结束)

5:C1运转,B3等待(C开始)

6:B3运转,D1等待,C2等待

7:D1运转,C2等待,B4等待(D开始)

8:C2运行,B4等待,E1等待,D2等待

9:B4运行,E1等待,D2等待,C3等待

10:E1运行,D2等待,C3等待,B5等待(E开始)

11:D2运行,C3等待,B5等待,E2等待

12:C3运行,B5等待,E2等待,D3等待

13:B5运行,E2等待,D3等待,C4等待

14:E2运行,D3等待,C4等待,B6等待

15:D3运行,C4等待,B6等待(E结束)

16:C4运行,B6等待,D4等待

17:B6运行,D4等待(C结束)

18:D5运行,D6等待(B结束)

19:D6运行

20:D结束

表格展示:

高响应比优先HRRN

高响应比优先调度算法

高响应比优先调度算法主要用于作业调度,该算法是对FCFS调度算法和SJF调度算法的一种综合平衡,同时考虑每个作业的等待时间和估计的运行时间。在每次进行作业调度时,先计算后备作业队列中每个作业的响应比,从中选出响应比最高的作业投入运行。

响应比的变化规律可描述为:

响应比=(等待时间+服务时间)/服务时间

根据公式可知:

当作业的等待时间相同时,则要求服务时间越短,其响应比越高,有利于短作业。

当要求服务时间相同时,作业的响应比由其等待时间决定,等待时间越长,其响应比越高,因而它实现的是先来先服务。

对于长作业,作业的响应比可以随等待时间的增加而提高,当其等待时间足够长时,其响应比便可升到很高,从而也可获得处理机。克服了饥饿状态,兼顾了长作业。

原文:https://blog.csdn.net/xieminyao123/article/details/79116985

【调度】操作系统中调度算法(FCFS、RR、SPN(SJF)、SRT、HRRN)相关推荐

  1. 操作系统--时间片轮转调度算法(RR算法)

    操作系统–时间片轮转调度算法(RR算法) 实验内容: 模拟实现时间片轮转调度算法,具体如下: 设置进程体:进程名,进程的到达时间,服务时间,,进程状态(W--等待,R--运行,F--完成),进程间的链 ...

  2. 操作系统——时间片轮转调度算法(RR)

    RR算法总体思路流程图 主要数据结构及参数 typedef struct PCB {char name;//进程名int arrive_time;//到达时间float cpu_burst;//服务时 ...

  3. 操作系统:磁盘调度算法FCFS算法(c语言)

    实验题目: 磁盘调度算法FCFS算法 实验内容: 磁盘访问序列和磁头起始位置(自己输入数据),采用SSTF磁盘调度算法,求平均寻道长度. 实验目的: 本课程设计的目的是通过磁盘调度算法设计一个磁盘调度 ...

  4. 操作系统中调度算法(FCFS、RR、SPN、SRT、HRRN)

    决策模式 决策模式说明选择函数在执行的瞬间的处理方式,通常分为以下两类: 非抢占:一旦进入运行状态,就不会终止直到运行结束. 抢占:当前正在运行的进程可以被打断,并转移到就绪态. 一个调度算法是否能抢 ...

  5. 【操作系统】调度算法(FCFS、SJF、HRRN、RR、优先级调度、多级反馈队列)

    目录 1. 批处理.分时.实时系统 1. 批处理系统 2. 分时系统 3. 实时系统 2. 处理机调度级别 2.1 高级调度(作业调度) 2.2 中级调度 2.3 低级调度(进程调度) 3. 调度算法 ...

  6. CPU调度算法——FCFS算法/SJF算法/优先级调度算法/RR算法

    文章目录 一.先来先服务(FCFS)调度算法 二.最短作业优先(SJF)算法 1. 非抢占式SJF 2. 抢占式SJF 三.优先级调度算法 1. 非抢占式优先级调度算法 2. 抢占式优先级调度算法 四 ...

  7. 多级队列调度算法可视化界面_C++实现操作系统调度算法(FSFS,SJF,RR,多级反馈队列算法)...

    #include #include #include #include using namespace std; unsigned int q_id=0; //用于队列进程号的全局变量 unsigne ...

  8. 进程调度c语言 fcfs,计算机进程调度算法FCFS、RR、SJF的实现

    调度算法,在Linux环境下用C语言编写程序,模拟FCFS.RR.SJF等进程调度算法,以及利用信号量等方法解决哲学家就餐问题. 在主进程中,创建 20 个子线程,分别模拟进程调度算法FCFS.RR. ...

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

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

最新文章

  1. java 解析 csv 文件
  2. GPT-3等三篇论文获NeurIPS2020最佳论文奖 | AI日报
  3. Bootloader
  4. mybatis 使用in 查询时报错_使用mybatis的resultMap进行复杂查询 057
  5. php 限制登陆设备,登陆界面限制到只允许一台机器在线-PHP教程,PHP应用
  6. iOS如何查看静态库.a文件支持的cpu类型
  7. 使用应用编排服务一键式部署,持续集成利器--jenkins
  8. getter/setter_Getters / Setters。 邪恶。 期。
  9. Page.FindControl方法找不到指定控件的原因
  10. Service 的生命周期;两种启动方法和区别
  11. IE 7 Standard 模式问题总结
  12. Sublime 下配置vim模式 + VintageEx-master下载地址
  13. 解决VS2013+IE11调试DevExpress ASP.NET MVC的性能问题
  14. 程序员社区骂战:不满政治正确,LLVM元老宣布退出
  15. Android图片处理神器BitmapFun源码分析
  16. VS2005、vs2008+WinXPDDK+DDKWizard配置驱动开发环境
  17. 几款经典的免费小软件 -- 白领的左右手
  18. 超牛无损图片放大神器PhotoZoom
  19. 加载驱动时提示“驱动服务启动失败”或者“此驱动程序被阻止加载”
  20. tp6 导入excel文件

热门文章

  1. Dirac 测度 (Dirac measure)
  2. iOS录屏直播(三)AppGroup
  3. python for循环换行_python for循环换行_day08-循环之for循环
  4. 钙钛矿的容忍因子计算使用的离子半径的反证
  5. 往控制台打字(实例:游戏开局输入名字)
  6. Android从熄屏唤醒屏幕
  7. 夺命雷公狗—angularjs—10—angularjs里面的内置函数
  8. 关于EndNote如何将库中的文献导出Export和再次导入Inport其他文献库
  9. 你会在命令行下高效管理 Github 上的项目吗,用上这个神器后助你秒实现!
  10. Ncurses学习经历(八) 使用鼠标操作