调度算法(FCFS,SJF(SPF),HRRN)

简介: 1

image.png

阅读本文应了解的知识:

非抢占式的调度算法,只有当前运行的进程主动放弃CPU时(正常/异常完成,或主动阻塞),才需要进行调度

  • 周转时间 = 完成时间 - 到达时间
  • 带权周转时间 = 周转时间/运行时间
  • 等待时间 = 周转时间 – 运行时间
  • 响应比=(等待时间+要求服务时间)/ 要求服务时间

FCFS-先来先服务

  • 算法思想: 公平
  • 规则:按照作业/进程到达顺序进行服务
  • 作业调度:考虑哪个作业先到到后备队列
  • 进程调度:考虑哪个进程先到达就绪队列
  • 是否抢占式:非抢占式
  • 优点:简单容易实现,公平
  • 缺点:不利于短作业,对长作业有利
  • 是否导致饥饿:不会
  • 周转时间 = 完成时间 - 到达时间
  • 带权周转时间 = 周转时间/运行时间
  • 等待时间 = 周转时间 – 运行时间

    J1->J2->J3->J4
作业 到达时间 所需服务时间 开始执行时间 完成时间 周转时间 带权周转时间
J1 0 20 0 20 20 1
J2 5 15 20 35 30 2
J3 10 5 35 40 30 6
J4 15 10 40 50 35 3.5

SJF-短作业优先(SPF短进程优先)

  • 算法思想: 追求平均等待时间,平均周转时间,平均带权周转时间最短
  • 规则:服务时间最短的优先得到服务
  • 作业调度:SJF短作业优先
  • 进程调度:SPF短进程优先
  • 是否抢占式:SJF和SPF是非抢占式的算法。但是也有抢占式的版本——最短剩余时间优先算法
  • 优点:“最短的”平均等待时间、平均周转时间(前提是所有进程同时可运行或者说所有进程几乎都同时到达)因为最短剩余时间优先算法得到的平均等待

    时间、平均周转时间还要更少

  • 缺点:不利于长作业,对短作业有利,由此可能产生饥饿现象
  • 是否导致饥饿:会,当短作业不断到来会导致长作业长时间得不到服务
  • 周转时间 = 完成时间 - 到达时间
  • 带权周转时间 = 周转时间/运行时间
  • 等待时间 = 周转时间 – 运行时间

    J1->J3->J4->J2
作业 到达时间 所需服务时间 开始执行时间 完成时间 周转时间 带权周转时间
J1 0 20 0 20 20 1
J2 5 15 35 50 45 3
J3 10 5 20 25 15 3
J4 15 10 25 35 20 2

HRRN-高相应比优先

  • 算法思想: 要综合考虑作业/进程的等待时间和要求服务时间
  • 规则:每次调度都计算各个作业/进程的响应比,选最高的进行服务
  • 是否抢占式:非抢占式
  • 优缺点:

    等待时间相同时,要求服务时间短的优先(SJF 的优点)

    要求服务时间相同时,等待时间长的优先(FCFS 的优点)

    对于长作业来说,随着等待时间越来越久,其响应比也会越来越大,从而避免了长作业饥饿的问题

  • 是否导致饥饿:不会
  • 周转时间 = 完成时间 - 到达时间
  • 带权周转时间 = 周转时间/运行时间
  • 等待时间 = 周转时间 – 运行时间
  • 响应比=(等待时间+要求服务时间)/ 要求服务时间=(开始时间-到达时间+服务)/服务
  • 开始时间指本次调度的作业的开始时间,即上一个完成的进程的完成时间

    响应比计算:
    0时刻:只有J1到达就绪队列,J1上处理机
    7时刻(J1完成):就绪队列中有 J2 (响应比=(20-5+15)/15=2)、 J3((20-10+5)/5=3)、 J4((20-15+10)/10=1.5), 
    8时刻(J3完成): J2((25-5+15)/15=2.3)、 J4((25-15+10)/10=2)
    12时刻(J2完成):就绪队列中只剩下 J4
    
      J1->J3->J2->J4
作业 到达时间 所需服务时间 开始执行时间 完成时间 周转时间 带权周转时间
J1 0 20 0 20 20 1
J2 5 15 25 40 35 2.3
J3 10 5 20 25 15 3
J4 15 10 40 50 35 3.5
目录
相关文章
|
4天前
|
数据采集 算法 机器人
软件体系结构 - 调度算法(3) 单调速率调度算法
【4月更文挑战第19天】软件体系结构 - 调度算法(3) 单调速率调度算法
18 0
|
算法 Linux 数据处理
《操作系统》—— 处理机调度算法
《操作系统》—— 处理机调度算法
|
3月前
|
算法 调度
详解操作系统四大常用的作业调度算法(FCFS丨SJF丨HRRN丨RR)
详解操作系统四大常用的作业调度算法(FCFS丨SJF丨HRRN丨RR)
691 0
|
1天前
|
弹性计算 负载均衡 算法
负载均衡调度算法
负载均衡调度算法介绍
6 2
|
18天前
|
资源调度 分布式计算 算法
【Hadoop Yarn】Hadoop Yarn 基于优先级的调度算法
【4月更文挑战第7天】【Hadoop Yarn】Hadoop Yarn 基于优先级的调度算法
|
2月前
|
弹性计算 负载均衡 算法
负载均衡调度算法介绍
介绍负载均衡调度算法
89 8
|
4月前
|
算法 调度
进程的调度算法有哪些
进程的调度算法有哪些
|
4月前
|
缓存 负载均衡 算法
xv6(16) 进程二:调度算法
进程二:调度算法
37 0
xv6(16)  进程二:调度算法
|
4月前
|
算法 调度 C语言
操作系统进程调度算法(c语言模拟实现)
操作系统进程调度算法(c语言模拟实现)
146 0
|
4月前
|
算法 调度
磁盘调度算法(OS)
磁盘调度算法(OS)
40 0