进程调度算法

文章目录

  • 先来先服务
  • 短作业优先调度算法(SJF)
  • 高优先权调度算法
  • 时间片轮转法:

先来先服务

按照作业/进程进入系统的先后次序进行调度,先进入系统者先调度;即启动等待时间最长的作业/进程。是一种最简单的调度算法,可用于作业调度,也可用于进程调度
优缺点:
先来先服务优缺点

  • 比较有利于长作业(进程),而不利于短作业(进程)
  • 有利于CPU繁忙型作业(进程) ,而不利于I/O繁忙型作业(进程)
  • 用于批处理系统,不适于分时系统

短作业优先调度算法(SJF)

概念:从队列中选出一个估计运行时间最短的作业优先调度,即可用于作业调度,也可用于进程调度

优缺点:

  • 对长作业不利。严重的是,若一长作业(进程)进入系统的后备队列(就绪队列),由于调度程序总是优先调度那些(即使是后进来的)短作业(进程),将导致长作业(进程)长期不被调度——饥饿
  • 完全未考虑作业(进程)的紧迫程度,因而不能保证紧迫性作业(进程)会被及时处理
  • 由于作业(进程)的长短只是根据用户所提供的估计执行时间而定的,而用户又可能会有意或无意地缩短其作业的估计运行时间,致使该算法不一定能真正做到短作业优先调度。

高优先权调度算法

可用于作业调度,也可用于进程调度

  • 优先调度算法的类型

    • 非抢占式优先权调度算法
      • 特点:系统一旦把处理机分配给就绪队列中优先权最高的进程后,该进程便一直执行下去,直至完成,或因发生某事件使该进程放弃处理机时,系统才将处理机重新分配给另一优先权最高的进程
      • 主要用于批处理系统中,也可用于某些对实时性要求不严的实时系统中
    • 抢占式优先权调度算法
      • 特点:把处理机分配给优先权最高的进程,但在执行期间,只要出现另一个优先权更高的进程,则进程调度程序就立即停止当前进程的执行,并将处理机分配给新到的优先权最高的进程
      • 注意:只要系统中出现一个新的就绪进程,就进行优先权比较
      • 能更好地满足紧迫作业的要求,故而常用于要求比较严格的实时系统中,以及对性能要求较高的批处理和分时系统中
  • 优先权类型
    高优先权调度算法,需要比较作业或进程的优先级,所以我们需要了解一下优先级
    优先权分为静态优先权、动态优先权

    • 静态优先权
      • 静态优先权在创建进程时确定,且在进程的整个运行期间保持不变。一般地,优先权是利用某一范围内的一个整数来表示的,例如,0∼7或0∼255, 又把该整数称为优先数
      • 确定进程优先权的依据有如下三个方面:
        • 进程类型:系统进程的优先权高于一般用户进程。
        • 进程对资源的需求:如进程的估计执行时间及内存需要量少的进程,应赋予较高的优先权。
        • 用户要求:由用户进程的紧迫程度和用户所付费用的多少来确定优先权。
    • 动态优先权
      • 概念:在创建进程时赋予的优先权是随进程的推进或随其等待时间的增加而改变,以获得更好的调度性能。可规定,在就绪队列中的进程,随其等待时间的增长,其优先权以速率a提高
      • 特征:具有相同优先权初值的进程,则最先进入就绪队列,其将因其动态优先权变得最高而优先获得处理机,此即FCFS算法
        具有各不相同的优先权初值的就绪进程,则优先权初值低的进程,在等待了足够的时间后,其优先权便可能升为最高,从而可以获得处理机
      • 注意:当采用抢占式优先权调度算法时,如果再规定当前进程的优先权以速率b下降,则可防止一个长作业长期地垄断处理机

时间片轮转法:

根据先来先服务的原则,将需要执行的所有进程按照到达时间的大小排成一个升序的序列,每次都给一个进程同样大小的时间片,在这个时间片内如果进程执行结束了,那么把进程从进程队列中删去,如果进程没有结束,那么把该进程停止然后改为等待状态,放到进程队列的尾部,直到所有的进程都已执行完毕

  • 进程的切换:
    时间片够用:意思就是在该时间片内,进程可以运行至结束,进程运行结束之后,将进程从进程队列中删除,然后启动新的时间片

    时间片不够用:意思是在该时间片内,进程只能完成它的一部分任务,在时间片用完之后,将进程的状态改为等待状态,将进程放到进程队列的尾部,等待cpu的调用

  • 关于时间片大小的选择

时间片过小,则进程频繁切换,会造成cpu资源的浪费
时间片过大,则轮转调度算法就退化成了先来先服务算法

(1)轮询调度的原理是每一次把来自用户的请求轮流分配给内部中的服务器,从1开始,直到N(内部服务器个数),然后重新开始循环。只有在当前任务主动放弃CPU控制权的情况下(比如任务挂起),才允许其他任务(包括高优先级的任务)控制CPU。其优点是其简洁性,它无需记录当前所有连接的状态,所以它是一种无状态调度。但不利于后面的请求及时得到响应。
(2)抢占式调度允许高优先级的任务打断当前执行的任务,抢占CPU的控制权。这有利于后面的高优先级的任务也能及时得到响应。但实现相对较复杂且可能出现低优先级的任务长期得不到调度。

在分时操作系统中,进程调度采用()算法
时间片轮转发

轮询任务调度与抢占式任务调度的区别?

抢占式调度优点是其简洁性,它无需记录当前所有连接的状态,所以它是一种无状态调度
轮询调度优点是其简洁性,它无需记录当前所有连接的状态,所以它是一种无状态调度
轮询调度实现相对较复杂
抢占式调度实现相对较复杂

你可能感兴趣的:(Linux)