处理机调度

  1. 调度层次
    1. 高级调度(作业调度)
    2. 中级调度(进程调度)
    3. 低级调度
  2. 作业调度
    1. FCSF先来先服务,作业等待时间得长短。比较有利于长作业(进程),而不利于短作业(进程)。
    2. SJF短作业优先,作业的运行时间。
      1. 优点:能有效的降低作业的平均等待事件,提高系统吞吐量。
      2. 缺点:对长作业不利;该算法完全未考虑作业的紧迫程度,因而不能保证紧迫性作业(进程)会被及时处理;由于作业(进程)的长短含主观因素,不一定能真正做到短作业优先。

处理机调度_第1张图片

    1. 高响应比优先  

优先权=等待时间+要求服务时间/要求服务时间

    1. RR轮转调度算法,时间片的确定要适中
    2. 多级反馈队列
    3. EDF最早截至时间优先

下图中有两个周期性任务,任务A的周期时间为20ms,每个周期的处理时间为10ms;任务B的周期时间为50ms,每个周期的处理时间为25ms

处理机调度_第2张图片

    1. LLF最低松弛度优先

松弛度=必须完成时间-其本身的运行时间-当前时间

进程切换条件:有任务完成;有任务松弛度降到0。

  1. 死锁
    1. 定义:是指多个进程在运行过程中因为争夺资源而造成的一种僵局,当进程处于这种状态时,若无外力作用,他们都将无法再向前推进
    2. 原因:竞争资源(不可抢占资源,可消耗资源),进程间推进顺序非法。
    3. 产生死锁得必要条件:互斥条件、请求和保持条件、不可抢占(不可剥夺)条件、环路等待条件
    4. 处理死锁的基本方法:
      1. 预防死锁:破坏产生死锁得必要条件,其中破坏互斥条件是最不实际的
        1. 破坏“请求和保持”条件:系统规定所有进程在开始运行之前,都必须一次性的申请其在整个运行过程所需的全部资源
        2. 破坏“不剥夺”条件
        3. 破坏“环路等待”条件:所有进程对资源的请求必须严格按照资源序号递增的次序提出
      2. 预防死锁:银行家算法、安全性算法
      3. 检测死锁:资源分配图,死锁定理
      4. 解除死锁:剥夺资源(从其他进程剥夺足够数量的资源给死锁进程以解除死锁状态。),撤销进程(最简单的是让全部进程都死掉;温和一点的是按照某种顺序逐个撤销进程,直至有足够的资源可用,使死锁状态消除为止。)
  2. 银行家算法
    1. 安全状态

处理机调度_第3张图片

    1. 银行家算法

处理机调度_第4张图片

T0时刻的安全性:用安全性算法对T0时刻的资源分配情况进行分析,存在着一个安全序列{P1,P3,P4,P2,P0},故系统是安全的

P1发出资源请求向量Request1(1,0,2),系统按银行家算法检查:

(1)Request1(1,0,2)<=Need1(1,2,2)

(2)Request1(1,0,2)<=Available1(3,3,2)

(3)系统先假定可为P1分配资源,并修改向量Available,Allocation1,Need1

(4)再利用安全性算法检查此时系统是否安全。如下表:

处理机调度_第5张图片

由安全性检查得知,能找到一个安全序列{P1,P3,P4,P0,P2},因此,系统是安全的,可以立即将P1所申请的资源分配给它。

死锁定理:S状态为死锁状态的充分条件是当且仅当S状态的资源分配图是不可完全简化的。<死锁定理>

你可能感兴趣的:(杂记)