处理机调度与死锁
3.1 处理机调度的层次和调度算法的目标
处理机调度的层次:高级调度(长程调度,作业调度),低级调度(进程调度,短程调度,运行频率最高),中级调度(内存调度)
处理机调度算法的共同目标:资源利用率,公平性,平衡性,策略强制执行
批处理系统的目标:平均周转时间短,系统吞吐量高,处理及利用率高
分时系统的目标:响应速度快,均衡性
实时系统的目标:截止时间的保证,可预测性
3.2 作业与作业调度
作业:在批处理系统中,是以作业为基本单位从外存调入内存的
作业步:每个作业都必须经过若干个相对独立,又相互关联的顺序加工步骤才能得到结果,我们把其中的每一个加工步骤称为一个作业步
作业运行的三个阶段和三种状态:收容阶段,运行阶段,完成阶段
作业调度的主要任务:接纳多少个作业,接纳那些作业
先来先服务(FCFS)调度算法:既可用于作业调度又可用于进程调度,系统将将按照作业到达的先后次序来进行调度,或者说它是优先考虑在系统中等待时间最长的作业而不管该作业所需执行时间的长短
短作业优先(SJF)的调度算法:SJF算法是以作业的长短来计算优先级,作业越短,其优先级越高。作业的长短是以作业所要求的运行时间来衡量的。
SJF缺点:必须预知作业的运行时间,对长作业非常不利 ,采用SJF算法时,人机无法实现交互,该调度算法完全未考虑作业的紧迫程度,故不能保证紧迫性作业能得到及时处理
优先级调度算法(PSA):基于作业的紧迫程度由外部赋予作业相应的优先级,调度算法是根据该优先级进行调度的
高响应比优先调度算法(HRRN):考虑了作业的等待时间又考虑了作业运行时间的调度算法
3.3 进程调度
进程调度的任务:保存处理机的现场信息,按某种算法选取进程,把处理器分配给进程
进程调度机制:排队器,分派器,上下文切换器
进程调度方式:非抢占方式,抢占方式
抢占方式主要原则:优先权原则,短进程优先原则,时间片原则
轮转调度算法基本原理:系统根据FCFS策略,将所有的就绪进程排成一个就绪队列,并可设置每隔一定时间间隔即产生一次中断,激活系统中的进程调度程序,完成一次调度,将CPU分配给队首进程,令其执行。当该进程的时间片耗尽或运行完毕时,系统再次将CPU喷配给新的队首进程(或新到达的紧迫进程)。
进程切换机制:若一个时间片尚未用完,正在运行的进程便已经完成,就立即激活调度程序,将他从就绪队列中删除,在调度就绪队列中队首的进程运行,并启动一个新的时间片;在一个时间片用完时,计时器中断处理程序被激活。如果进程尚未运行完毕,调度程序将把它送往就绪队列的末尾;
优先级调度算法的类型:非抢占式优先级调度算法,抢占式优先级调度算法
优先级类型:静态优先级(依据:进程类型,进程对资源的需求,用户要求),动态优先级
多级反馈队列(multileved feedback queue)调度算法:
调度机制:设置多个就绪队列,每个队列都采用FCFS算法,按队列优先级调度
调度算法的性能:终端行用户,短批处理作业用户,长批处理作业用户
基于公平原则的调度算法:
保证调度算法:跟踪计算每个进程自创建以来已经执行的处理时间;计算每个进程应获得的处理机时间,即自创建以来的时间除以n;计算进程获得处理机时间的比率,即进程实际执行的处理时间和应获得的处理机时间之比;比较个进程获得处理机时间的比率;调度程序应选择比率最小的进程将处理机分配给它,并让该进程一直运行,知道超过最接近它的进程比率为止;
3.4 实时调度
实现实时调度的基本条件:
1. 提供必要的信息:就绪时间,开始截止时间和完成截止时间,处理时间,资源要求,优先级
2. 系统处理能力强
3. 采用抢占式调度机制
4. 具有快速切换机制:对中断的快速响应能力,快速的任务分派能力
实时调度算法的分类:
1. 非抢占式调度算法:非抢占式转轮调度算法,非抢占式优先调度算法
2. 抢占式调度算法:基于时钟中断的抢占式优先级调度算法,立即抢占的优先级调度算法
最早戒指时间优先(EDF)算法
1. 非抢占式调度方式用于非周期实时任务
2.抢占式调度方式用于周期实时任务
最低松弛度优先(LLF)算法:该算法在确定任务的优先级时,根据的是任务的紧急(或松弛)程度
3.5 死锁概述
资源问题:
可重用性资源(可供用户重复使用多次的资源):每一个可重用性资源的单元只能分配给一个进程使用,不允许多个进程共享;进程在使用可重用性资源时,须按照这样的顺序:①请求资源,如果请求资源失败,请求进程将会被阻塞或循环等待②使用资源,进程对资源进行操作③释放资源,当进程使用完后自己释放资源;系统中每一类可重用性资源中的单元数目是相对固定的,进程在运行期间既不能创建也不能删除它
可消耗性资源(又称临时性资源):①每一类可消耗性资源的单元数目在进程运行期间是可以不断变化的,又是它可以有许多,有时可能为0。②进程在运行过程中,可以不断地创造可消耗性资源的单元,将它们放入该资源类的缓冲区中,以增加该资源类的单元数目。③进程在运行过程中,可以请求若干个可消耗性资源单元,用于进程自己的消耗,不再将它们返回给该资源类中。
可抢占性资源:某进程在获得这类资源后,该资源可以再被其他进程或系统抢占。
不可抢占性资源:一旦系统把某资源分配给进程后,就不能将他强行收回,只能在进程用完后自行释放。
计算机系统中的死锁
1. 竞争不可抢占性资源引起死锁
2. 竞争可消耗性资源引起死锁
3.进程推进顺序不当引起死锁
死锁的定义:如果一组进程中的每一个进程都在等待仅由该组进程中的其它进程才能引发的事件,那么该组进程是死锁的。
产生死锁的必要条件:互斥条件;请求和保持条件;不可抢占条件;循环等待条件;
处理死锁的方法:预防死锁;避免死锁;检测死锁;解除死锁;
3.6 预防死锁
破坏“请求和保持”条件;破坏“不可抢占”条件;破坏“循环等待”条件
3.7 避免死锁
系统安全状态:在死锁避免方法中,把系统的状态分为安全状态和不安全状态。当系统处于安全状态时,可避免发生死锁。反之,当系统处于不安全状态时,则可能进入到死锁状态。
利用银行家算法中的数据结构:可利用资源向量Available;最大需求矩阵Max;分配矩阵Allocation;需求矩阵Need;
3.8 死锁的检测与解除
死锁的解除:抢占资源;终止(或撤销)进程;
终止进程的方法:终止所有死锁进程;逐个终止进程;
选择终止进程考虑的因素:进程的优先级的大小;进程已执行了多少时间,还需要多少时间方能完成;进程在运行中已经使用资源的多少,以后还需要多少资源;进程的性质是交互式的还是批处理是的