【进程管理】 之进程调度

目录

进程调度

调度的三个层次

进程调度的时机

进程调度的方式

调度算法

先来先服务策略(FCFS, First Come First Serve)

短作业优先策略(SJF, Shortest Job First)

高响应比优先算法( HRRN, Highest Response Ratio Next)

时间片轮转(RR,Round-Robin)

优先级调度策略

多级反馈队列调度算法


进程调度

调度:当作业任务太多而资源有限,为了是这些作业能够同步的完成,就需要按照某种规则来处理这些任务的顺序,做到一视同仁,全盘兼顾。这就称之为调度。

上面的"某种规则"就是非常重要的调度算法。

作业:操作系统中的作业是指计算机要完成的任务,通过程序实现。

调度的三个层次

高级调度:也称作业调度。由于内存的有限(我的才8G),有时无法将作业全部放入内存,一部分要放到外存。高级调度会从外存的后备队列中选一个或多个作业,调入内存中,创建PCB。(使进程处于创建态)

高级调度是对作业的调度,选中的作业将会为其创建进程.

中级调度:也称内存调度。还是由于内存不足的原因,当进程过多,内存无法支撑所有进程同时执行,就可以将一部分不重要不紧急的进程挂起(原语操作),放至外存中。等待进程重新具备了运行条件时并且内存有空闲时再重新调入内存。

暂时调入外存的进程处于挂起状。挂起时,进程的程序段和数据段会被放至外存中,而PCB加入挂起队列中(依旧在内存中),记录着进程的各种信息包括进程在外存的位置。(使进程处于挂起态)

低级调度:也称进程调度。按照某种策略选取就绪队列中的进程,将处理机的资源分配给它。使进程从就绪态处于运行态。

三层调度对比

要做什么调度发生在...发生频率对进程的影响
高级调度(作业调度)按照某种规则,选择后备队列中的作业,调入内存中为其创建进程。外存--->内存(面向作业)只调入一次,调出一次,比较低作业--->创建态--->就绪态
中级调度(内存调度)按照某种规则,从挂起队列中选择合适的进程调入内存中。外存--->内存(面向进程)多次调度调出,较高挂起态--->就绪态
低级调度(进程调度)按照某种规则,从就绪队列中选择合适的进程,为其分配处理机资源。内存--->CPU频率最高就绪态--->运行态

进程调度的时机

需要进行调度的时机:

进程主动放弃资源的情况:

  • 进程正常执行完毕

  • 进程遇到异常导致终止

  • 进程主动请求阻塞(等待I/O)

进程被迫放弃资源:

  • 进程时间片用完

  • 被优先级更高的进程抢占

不能进行进程切换的情况:

  • 进程处理中断时

  • 进程在进行原语操作时

  • 进程在访问操作系统内核临界资源时

进程调度的方式

非剥夺式(非抢占式):等待正在进行的进程运行直到它主动放弃资源,才会进行调度。这种方式实现简单,开销较小。但是无法及时的处理紧急任务。适合早期的批处理系统。

非剥夺式(非抢占式):当一个进程正在执行时,有一个紧急任务需要完成,则操作系统会将当前进程阻塞,立刻执行紧急进程。这种方式可以处理紧急任务,也可以实现时间片轮转,适合分时系统或者实时系统。

调度算法

调度算法的指标

CPU利用率 : 是指cpu忙碌的时间占总时间的比例。

公式:利用率 = 忙碌的时间/总时间。

系统吞吐量:单位时间内,完成作业的数量。

公式:系统吞吐量 = 完成作业的数量/完成作业的时间。

周转时间:是指作业提交到作业完成的总时间。

公式:周转时间 = 作业完成的时间 - 作业提交的时间。

平均周转时间 = 所有作业的周转时间之和 / 作业数量。

对于用户来说,只关心自己提交作业的周转时间,而操作系统注重平均周转时间.

思考: 一个长作业和一个短作业分别需要执行1分钟和9分钟,但是他们的周转时间都是10分钟,会怎么样?

为了客观公平的比较作业完成的满意度,提出了带权周转时间:

带权周转时间 = 作业周转时间 / 作业实际执行的时间.

从公式看.带权周转时间>=1.并且对于刚刚两个周转时间相同的作业来说,实际运行时间长的作业带权周转时间会更小,因此面对不同长度的作业,带权周转时间更能反映作业的满意度.

平均带权周转时间 = 所有作业带权周转时间之和 / 作业的数量.

等待时间: 是指进程/作业 等待处理机状态的时间之和。

对于进程来说,就是进程在创建之后,等待被服务的时间之和。但是等待I/O的时间也是被进程服务的,所以这个时间不算在内。

对于作业来说,作业先在外存的后备队列排队,因此还要加上排队的时间。

响应时间:是指计算机用户提交请求的时间到计算机首次响应的时间。

先来先服务策略(FCFS, First Come First Serve)
算法思想先到先得,出于公平的考虑
算法规则按照作业/进程到达的顺序执行
用于作业/进程作业:考虑哪个作业先到达外存的后备队列; 进程:考虑哪个进程先到达就绪队列
抢占/非抢占非抢占
优缺点优点:算法实现简单、公平 缺点:对长作业有利,对于短作业来说,短作业可能排在长作业之后,导致带权周转时间时间长
是否会导致饥饿不会
短作业优先策略(SJF, Shortest Job First)
算法思想追求最少的平均等待时间,最少的平均周转时间、最少的平均带权周转时间
算法规则最短的作业/进程优先得到服务(所谓“最短”,是指要求服务时间最短)
用于作业/进程即可用于作业调度,也可用于进程调度。用于进程调度时称为“短进程优先(SPF, Shortest Process First)算法”
抢占/非抢占短作业优先有俩种实现方式,一种是抢占式,一种是非抢占式
优缺点优点:最短的平均等待时间、平均周转时间 缺点:不公平,对短作业有利,长作业不利。会产生饥饿。
是否会导致饥饿

短作业优先的俩种算法:

非抢占式:每次调度时,选择已到达的进程中执行时间最短的进程。

在调度时才选择,意味着短作业到来时不会直接抢占正在执行的线程。

抢占式:当就绪队列改变时(有新的进程阻塞),就选择哪个进程的剩余时间最少,如果不是正在执行的进程最少,则选择最少的那个进程执行。所以这种方式又称为“最短剩余时间有限算法”(SRTN)

上面两种算法各有利弊,一个是对长作业有利,一个是对短作业有利,都不太合理。而下面这种高响应比优先算法就是同时照顾长作业和短作业。

高响应比优先算法( HRRN, Highest Response Ratio Next)

响应比 = (等待时间 + 运行时间)/ 运行时间 , >=1

算法思想综合考虑作业/进程的等待时间和执行时间
算法规则每次调度时,先计算作业的响应比,选择响应比高的作业先执行。
用于作业/进程作业/进程
抢占/非抢占非抢占式
优缺点综合考虑了作业的等待时间和执行时间。 当等待时间一致时,运行时间短的作业优先执行(SJF的特点) 当运行时间一致,等待时间越长的优先执行(FCFS的特点) 对于长作业来说,等待时间越长,其响应比也就越来越高,避免了饥饿问题。
是否会导致饥饿不会
时间片轮转(RR,Round-Robin)
算法思想公平地、轮流地为每个进程服务,让每个进程在一定时间内都能得到响应。
算法规则将就绪队列中的进程同意分配给一定的时间片,让他们轮流的执行,若时间片结束进程还没有完成任务,则继续加入就绪队列尾部等待下一个时间片的到来。
用于作业/进程用于进程
抢占/非抢占抢占式,当时间片结束(时钟中断)进程还没有终止时,剥夺该进程的执行权(被动放弃)给下一个进程
优缺点优点:公平,响应快,适合分时操作系统. 缺点:高频率的切换,使得进程切换的开销很大;不能及时处理紧急任务
是否导致饥饿不会

时间片如果过大,那么在时间片内,进程都可以完成任务,相当于FCFS策略;

时间片如果太小,则会增加进程的切换,而进程的切换开销就会变大(会切换PCB、数据段、程序段等)

优先级调度策略
算法优先处理紧急的、优先级较高的进程
算法规则调度时,优先选择优先级较高的进程
用于作业/进程作业、进程
抢占/非抢占与SJF一样,有抢占式和非抢占式俩种
优缺点优点:能够用优先级区分作业的紧急程度、重要程度,灵活性高适用于实时操作系统 缺点:会导致饥饿
是否导致饥饿

问题:如何合理的设置优先级?

通常:内核进程 > 用户进程

前台进程 > 后台进程 (前台进程需要及时响应,后台进程多用于数据的计算处理工作)

操作系统更偏好I/O型进程(I/O繁忙行进程)

因为I/O设备与CPU是两个设备,可以同时运行,如果I/O型进程可以优先执行,那么I/O设备才有概率更早执行,可以提高资源利用率。

与I/O型进程相对的是计算型进程(CPU繁忙行进程)

多级反馈队列调度算法

算法思想:针对前几种算法优缺点,折中平衡,使得尽可能的适用于各种各样的作业/进程。

算法规则:设置多级就绪队列,各级队列优先级从高到低,时间片从小到大。

新进程到来时,先加入第1级的队列中,按照FCFS原则排队等候,若时间片结束进程还未终止,则进入 下一级队列,如果此时已经是最后一级了,则回到这一级的队列末尾等待。

只有第k级队列为空时,才会为第k+1级对手的进程分配时间片。

该算法只能用于进程调度,属于抢占式调度策略。

优点:对各类进程相对公平(FCFS),每个新到达的进程都能快速得到相应(RR),短进程用很少的时间就可以完成(SJF);不必估计进程的实际运行时间,避免了用户造假。

缺点:有可能会造成饥饿。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值