- 调度层次
- 高级调度(作业调度)
- 中级调度(进程调度)
- 低级调度
- 作业调度
- FCSF先来先服务,作业等待时间得长短。比较有利于长作业(进程),而不利于短作业(进程)。
- SJF短作业优先,作业的运行时间。
- 优点:能有效的降低作业的平均等待事件,提高系统吞吐量。
- 缺点:对长作业不利;该算法完全未考虑作业的紧迫程度,因而不能保证紧迫性作业(进程)会被及时处理;由于作业(进程)的长短含主观因素,不一定能真正做到短作业优先。
-
- 高响应比优先
优先权=等待时间+要求服务时间/要求服务时间
-
- RR轮转调度算法,时间片的确定要适中
- 多级反馈队列
- EDF最早截至时间优先
下图中有两个周期性任务,任务A的周期时间为20ms,每个周期的处理时间为10ms;任务B的周期时间为50ms,每个周期的处理时间为25ms
-
- LLF最低松弛度优先
松弛度=必须完成时间-其本身的运行时间-当前时间
进程切换条件:有任务完成;有任务松弛度降到0。
- 死锁
- 定义:是指多个进程在运行过程中因为争夺资源而造成的一种僵局,当进程处于这种状态时,若无外力作用,他们都将无法再向前推进
- 原因:竞争资源(不可抢占资源,可消耗资源),进程间推进顺序非法。
- 产生死锁得必要条件:互斥条件、请求和保持条件、不可抢占(不可剥夺)条件、环路等待条件
- 处理死锁的基本方法:
- 预防死锁:破坏产生死锁得必要条件,其中破坏互斥条件是最不实际的
- 破坏“请求和保持”条件:系统规定所有进程在开始运行之前,都必须一次性的申请其在整个运行过程所需的全部资源
- 破坏“不剥夺”条件
- 破坏“环路等待”条件:所有进程对资源的请求必须严格按照资源序号递增的次序提出
- 预防死锁:银行家算法、安全性算法
- 检测死锁:资源分配图,死锁定理
- 解除死锁:剥夺资源(从其他进程剥夺足够数量的资源给死锁进程以解除死锁状态。),撤销进程(最简单的是让全部进程都死掉;温和一点的是按照某种顺序逐个撤销进程,直至有足够的资源可用,使死锁状态消除为止。)
- 预防死锁:破坏产生死锁得必要条件,其中破坏互斥条件是最不实际的
- 银行家算法
- 安全状态
-
- 银行家算法
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)再利用安全性算法检查此时系统是否安全。如下表:
由安全性检查得知,能找到一个安全序列{P1,P3,P4,P0,P2},因此,系统是安全的,可以立即将P1所申请的资源分配给它。
死锁定理:S状态为死锁状态的充分条件是当且仅当S状态的资源分配图是不可完全简化的。<死锁定理>