【操作系统】第三章--处理机调度与死锁--笔记与理解(1)

第三章–处理机调度与死锁–笔记与理解(1)

处理机调度的层次和调度算法的目标

处理机调度的层次
  1. 高级调度(长程调度/作业调度):调度对象为作业,根据算法,,决定调入内存的作业,创建进程、分配资源并放入就绪队列
  2. 中级调度(内存调度):提高内存利用率和系统吞吐量
  3. 低级调度(进程调度/短程调度):根据某种算法决定就绪队列中的哪个过程应获得处理机,并由分派程序将处理机分配给被选中的进程,进程调度运行频率越高,作业调度运行频率越低
处理机调度算法的目标
  1. 处理机调度算法的共同目标:
    1. 资源利用率:CPU利用率 = CPU有效工作时间 / (CPU有效工作时间 + CPU空闲等待时间)
    2. 公平性:应使诸进程都获得合理的CPU时间,不会发生进程饥饿的现象
    3. 平衡性:为使系统中的CPU和各种外部设备都能经常处于忙碌状态,尽可能保持系统资源使用的平衡性
    4. 策略强制执行:只要需要,就必须予以准确地执行,即使会造成某些工作的延迟也要执行(包括安全策略)
  2. 批处理系统的目标:
    1. 平均周转时间短:作业在外存后备队列上等待调度的时间 + 进程在就绪队列上等待进程调度的时间 + 进程在CPU上执行的时间 + 进程等待I/O操作完成的时间
    2. 系统吞吐量高
    3. 处理机利用率高
  3. 分时系统的目标:
    1. 响应时间快:请求信息从键盘输入开始直至传送到处理机的时间 + 处理机对请求信息处理时间 + 形成响应信息送到终端显示器时间
    2. 均衡性:系统响应时间的快慢应与用户所请求服务的复杂性相适应
  4. 实时系统的目标:
    1. 截止时间的保证(必须开始执行的最迟时间)
    2. 可预测性:可提高其实用性

作业与作业调度

批处理系统中的作业
  1. 作业和作业步:
    1. 作业:在批处理系统中以作业为基本单位从外存调入主存,包含程序和数据和一份作业说明书
    2. 作业步:每一个加工步骤
  2. 作业控制块(JCB):是作业在系统中存在的标志,保存了对作业进行管理和调度的全部信息
  3. 作业运行的三个阶段和三个状态:
    1. 收容阶段:把用户提交的作业通过某种输入方式或Spooling系统输入到键盘,再为其建立JCB,并放入作业后备队列中,此时作业为“后备状态”
    2. 运行阶段:作业被作业调度选中后,便为他分配必要的资源建立进程并放入就绪队列,进入就绪队列到运行结束前都是“运行状态”
    3. 完成阶段:作业运行完成或发生异常提前结束,即进入完成阶段
作业调度的主要任务(接纳调度)
  1. 接纳多少作业:取决于序度(允许多少个作业同时在内存中运行),根据计算机的系统规模、运行速度、作业大小以及能否获得较好的系统性能等情况做出适当的抉择的
  2. 接纳哪些作业:取决于所采用的调度算法
先来先服务和短作业优先调度算法
  1. 先来先服务(FCFS)调度算法:每次调度是从就绪队列中选择一个最先进入该队列的进程,为之分配处理机,使之投入运行
    • 优点:简单
    • 缺点:
      1. 平均等待时间波动较大
      2. I/O资源和CPU资源的利用率较低
  2. 短作业优先(SJF)调度算法:
    • 作业越短,优先级越高,将从外存的作业后备队列中选择若干个估计运行时间最短的作业,优先将他们调入内存运行
    • 优点:
      1. 降低了短进程的等待时间,平均周转时间和平均带权周转时间小
      2. 提高了系统的吞吐量
    • 缺点:
      1. 必须预知作业的运行时间
      2. 对长作业非常不利,完全忽视作业的等待时间,可能使作业等待时间过长,出现饥饿现象
      3. 人-机无法实现交互
      4. 未完全考虑作业的紧迫程度,故不能保证紧迫性作业得到及时处理
优先级调度算法和高响应比优先调度算法
  1. 优先级调度算法(PSA):基于作业的紧迫程度,由外部赋予作业相应的优先级,保证紧迫性作业优先运行,可作为作业调度算法和进程调度算法
  2. 高响应比优先调度算法(HRRN):既考虑了作业的等待时间,又考虑作业运行时间的调度算法。照顾了短作业,也不让长作业等待太长时间,改善了处理机调度的性能,但每次进行调度之前,都需要先进行响应比计算,会增加系统开销
    • 响应比R(优先权) = (等待时间 + 要求服务时间) / 要求服务时间 = 响应时间 / 要求服务时间

进程调度

进程调度的任务、机制和方式
  1. 进程调度的任务:

    1. 保存处理机的现场信息
    2. 按照某种算法选取进程
    3. 把处理机分配给进程
  2. 进程调度机制:

    1. 排队器:事先将系统中的所有就绪进程排成队列,方便调度程序
    2. 分派器:依据进程调度程序所选定的进程,从就绪队列取出,上下文切换后,将处理机分配给新选出的进程
    3. 上下文切换器:
      • 第一对上下文切换时,OS把当前进程的处理机寄存器内容保存到该进程的进程控制块内相应单元,再装入分派程序上下文,以便分派程序运行;
      • 第二次移除分派程序的上下文,把新选进程的CPU现场信息装入到处理机各个相应寄存器,以便新进程运行
        进程调度机制
  3. 进程调度方式

    • 非抢占方式:一旦把处理机分配给某进程,绝不因为时钟中断或任何其他因素去抢占当前正在运行进程的处理机,直至进程完成或阻塞,才把处理机分配给其他进程
      • 可能引起进程调度:
        1. 正在执行进程运行完毕或无法继续执行
        2. 因提出I/O请求而暂停执行
        3. 进程通信或同步过程中,,执行原语操作
      • 优势:
        1. 实现简单
        2. 系统开销小
      • 劣势:不适用于分时系统和大多数实时系统
    • 抢占方式:允许调度程序根据某种原则,去暂停正在执行的进程。防止进程长时间占用处理机,确保处理机为进程提供公平的服务,分时系统可以实现人-机交互,实时系统满足实时任务的需求
      • 原则:
        1. 优先权原则:允许优先级高的新到进程抢占当前进程的处理机
        2. 短进程优先原则:允许新到的短进程抢占当前长进程的处理机
        3. 时间片原则:各进程按时间片轮转运行,时间片用完则停止该进程的执行,重新进行调度
轮转调度算法
  • 让就绪队列上的每个进程每次仅运行一个时间片
  1. 轮转法的基本原理:根据FCFS将所有就绪进程排成就绪队列,并每隔一段时间产生一次中断,激活调度程序完成一次调度,每次将CPU分给队首进程,可保证有序的就绪队列中所有进程在一个确定的时间段,都可以得到一次CPU
  2. 进程切换时机:
    1. 时间片未完成进程便完成,立即激活调度程序,从就绪队列删除后,调度队首进程运行并启动一个新的时间片
    2. 时间片用完,调度程序被激活,但进程未完成,调度程序直接将他送至就绪队列尾部
  3. 时间片大小的确定:略大于一次典型的交互所需要时间,使大多数交互式进程能在一个时间片内完成,从而可以获得很小的相应时间
优先调度算法
  • 引入优先级,形成优先级调度算法
  1. 优先级调度算法的类型:
    1. 非抢占型优先级调度算法:一旦把处理机分配给进程,该进程便一直执行直到结束,或因某事主动放弃处理机,系统再将处理机重新分配给另一优先级高的进程
    2. 抢占式优先调度算法:处理机分配给优先级最高的进程,在进程运行过程中,一旦出现优先级更高的,则进行切换,即保证正在运行的进程是优先级最高的
  2. 优先级类型:
    1. 静态优先级:在创建时确定的在0~255之间某整数,在进程整个运行过程中保持不变
      • 依据:进程类型,系统进程一般高于用户进程
      • 进程对资源的需求:对资源需求少的应赋予较高的优先级
      • 用户要求:进程紧迫与用户所付费多少确定优先级
      • 优点:简单易行,系统开销小
      • 缺点:不够准确
    2. 动态优先级:创建进程之初先赋一个优先级,然后其值随进程的推进或等待时间增加而改变,以便获得更好的调度性能
多队列调度算法
  • 将系统中的进程就绪队列从一个拆分成若干个,将不同类型或性质的进程固定分配在不同的就绪队列,不同就绪队列采用不同的调度算法。一个就绪队列中不同进程和不同就绪队列本身可以设置不同优先级,系统针对不同用户进程的需求,可以提供多种调度策略
多级反馈队列
  • 不必事先知道各种进程所需的执行时间,可以较好地满足各种类型进程的需要,是目前公认的一种较好的进程调度算法
  1. 调度机制:
    1. 设置多个就绪队列:第一个队列优先级最高,时间片也最短,其余队列优先级逐个降低,时间片也变长
    2. 每个队列采用FCFS算法:先将他放在第一队列的末尾,按FCFS原则等待,若他在一个时间片内未完成,则放在下一个队列的末尾,当最后降到第N队列,便采用RR方式运行
    3. 按队列优先级调度,仅当第1~(i-1)所有队列均空时,才会调度第i队列的进程运行,若有优先级高进程,则将正执行进程放置i队尾,将处理机分配给高优先级进程
  2. 调度算法的性能:若规定第一个队列的时间片略大于多数人-机交互所需的时间时,便能较好地满足各种类型用户的需要
    1. 终端型用户
    2. 短批处理作业用户
    3. 长批处理作业用户
基于公平原则的调度算法
  1. 保证调度算法:向用户所作出的是明确的性能保证,可做到调度的的公平性,为保证公平性,须保证每个进程都获得相同的处理时间1/n
    • 实施该调度算法必须有的功能:
      1. 跟踪计算每个进程自创建以来已经执行处理时间
      2. 进程应获得处理机时间
      3. 进程获得处理机时间的比率
      4. 比较各进程的比率
      5. 选择比率小的将处理机分配给他
  2. 公平分配调度算法(公平分享调度算法):分配每个进程相同的处理机时间
    用户1有ABCD四个进程
    用户2只有E一个进程
    
    1. 保证两个用户能获得相同的处理机时间:
        A E B E C E D E A E B E C E C E ...
    2. 希望用户1所获得的处理机时间是用户2的2倍:
        A B E C D E A B E C D E A B E C D E ...

实时调度

实现实时调度的基本条件
  1. 提供必要的信息:
    1. 就绪时间
    2. 开始截止时间和完成截止时间
    3. 处理时间
    4. 资源要求
    5. 优先级:
      1. 某任务开始截止时间错过,势必引起故障,应赋予“绝对”优先级
      2. 某任务开始截止时间错过对人物运行无重大影响,应赋予“相对”优先级
  2. 系统处理能力强
  3. 采用抢占式调度机制:可满足HRT(硬实时)任务对截止时间的要求,在设计这种调度机制时,应使所有的实时任务任务较小,并执行完关键性程序和临界区后,能及时将自己阻塞起来,以便释放处理机攻调度程序去调度开始截止时间快到达的任务。若能预知任务开始截止时间,对实时任务调度可采用非抢占式
  4. 具有快速切换机制:
    1. 对中断的快速响应能力:以免耽误其他紧迫任务
    2. 快速的任务分派能力:系统每个运行单位适当小,减少切换开销
实时调度算法的分类
  1. 根据实时任务性质,分为HRT和SRT
  2. 根据调度方式:分为抢占式调度算法和非抢占式调度算法
    1. 非抢占式调度算法:
      1. 非抢占式轮转调度算法:由一台计算机控制若干相同能力(或相似)对象,为每个对象建立实时任务,排成一个轮转队列,使用轮转。每次任务完成挂在轮转队列尾部(可获得数十秒响应时间,用于要求不太严格的实时控制系统)
      2. 非抢占式优先调度算法:系统中含有少量具有一定要求的实时任务,采用非抢占式优先调度算法
    2. 抢占式调度算法
      1. 基于时钟中断的抢占式优先调度算法:实时任务到达时,若优先级高于当前进程,等到时钟中断再剥夺当前任务的执行
      2. 立即抢占的优先调度算法:一旦出现外部中断,当前任务未处于临界区便立即剥夺当前任务对的执行,将处理机分配给请求中断的紧迫任务

猜你喜欢

转载自blog.csdn.net/weixin_44321600/article/details/107521915
今日推荐