接近用户
调度对象是作业
将作业从外存调入内存
主要用于多道批处理系统
引入目的是提高内存利用率和系统吞吐量
调度对象是进程
把暂时不能运行的进程调至内存外等待
实际上是存储器管理中的兑换功能
接近硬件
调度对象是进程
将进程从内存调入处理机
适用多道批、分时和实时处理系统
用户提交给系统的一项相对独立的工作
包含了通常的程序和数据,还配有一份作业说明书
每个作业都设置了一个作业控制块
内容包含:作业标志、用户名称、用户账号、作业类型、作业状态、调度信息、资源需求情况、资源使用情况等。
接纳多少作业
接纳哪些作业
保存CPU现场信息
按某种算法选取进程
把CPU分配给进程
排队器
分派器
上下文切换器
非抢占式调度
抢占式调度
优先级原则
短进程优先原则
时间片原则
资源利用率
公平性
平衡性
策略强制执行
平均周转时间(周转时间=等待时间+服务时间)
带权周转时间(带权周转时间=周转时间/服务时间)
系统吞吐量高
处理机利用率高
保证响应时间快
保证均衡性
保证满足截止时间的要求
保证可预测性
可用于作业调度,也可用于进程调度
优先考虑系统中等待时间最长的作业,不管执行时间长短
作业越短优先级越高
分为抢占式和非抢占式
缺点:
必须预先知道作业运行时间
对长作业不利,可能造成饥饿
无法实现人机交互
完全没有考虑作业的紧迫程度
优点是灵活
缺点是低优先级的进程可能永远不会被调用
分为抢占式和非抢占式
优先级的类型有静态优先和动态优先
高响应比优先算法HRRN
常用于分时系统
基于时间片的轮转,每个进程每次仅运行一个时间片
将就绪队列分为若干个,不同的就绪队列采用不同的调度算法
设置多个就绪队列
每个队列都采用FCFS调度算法
按队列优先级调度
保证调度算法
公平分享调度算法
两个进程都被阻塞,双方都希望对方能释放自己所需要的资源,但它们都会因为不能获得自己所需要的资源去继续运行而无法释放自己当下占有的资源,并且一直处于这样的僵持状态而形成死锁。
引起死锁的主要是采用互斥访问方法的不可抢占资源
可重用资源和可消耗资源(可消耗资源会引起死锁)
可抢占资源和不可抢占资源(不可抢占资源会引起死锁)
竞争不可抢占资源引起死锁
竞争可消耗资源引起死锁
进程推进顺序不当引起死锁
互斥条件
请求和保持条件
不可抢占条件
循环等待条件
预防死锁(事先限制)
避免死锁(分配时避免)
检测死锁(及时检测)
解除死锁(撤销进程)
该协议规定,所有进程在开始运行之前,必须一次性地申请其在整个运行过程中所需的全部资源。
优点:简单、易行、安全
缺点:资源被严重浪费,降低了资源利用率;进程会经常发生饥饿现象。
允许一个进程只获得运行初期所需的资源后,便开始运行。在运行过程中再逐步释放已分配给自己的、且已用完的全部资源,然后在请求新的所需资源。
当一个已经保持了某些不可抢占资源的进程提出新的资源请求而不能得到满足时,它必须释放已经保持的所有资源,待以后需要时再重新申请。
缺点:
增加了系统开销,降低了系统吞吐量;
工作流程被破坏。
对系统的所有资源类型进行线性排序,并赋予它们不同的序号
规定每个进程必须按序号递增的顺序请求资源
把系统的状态分为安全状态和不安全状态两种,当系统处于安全状态时可避免发生死锁,而当系统处于不安全状态时,则可能会进入死锁状态。
银行家算法中必须设置四个数据结构:
可利用资源向量Available
最大需求矩阵Max
分配矩阵Allocation
需求矩阵Need
银行家算法
安全性算法
死锁检测算法,用于检测系统状态,以确定系统中是否发生了死锁。
必要条件:
保存有相关资源的请求和分配信息;
嵌入一种算法,使其能够利用这些信息来检测系统是否进入死锁状态。
死锁解除算法,当确定系统中发生了死锁时,利用该算法将系统从死锁状态中解脱出来。
常用方法:
抢占资源,从一个或多个进程中抢占足够数量的资源,然后将它们分配给死锁进程,解除死锁状态。
终止死锁进程,终止一个系统中的一个或多个死锁进程,直至打破循环等待,使系统从死锁状态中解脱出来。