处理机调度与死锁
一、处理机调度的层次和调度算法的目标
处理机调度的层次
- 高级调度:又称长程调度或者作业调度,调度对象是作业
- 中级调度:又称内存调度,目的是提高内存利用率和系统吞吐量
- 低级调度:又称进程调度或者短程调度,调度对象是进程(或内核级线程)
处理机调度算法的目标
-
CPU利用率
![在这里插入图片描述]()
-
周转时间:指从作业被提交给系统开始,到作业完成为止的这段时间间隔。包括四部分时间:
- 作业在外存后备队列上等待调度的时间
- 进程在就绪队列上等待进程调度的时间
- 进程在CPU上执行的时间
- 进程等待I/O操作完成的时间
-
分时系统的目标
- 响应时间快:响应时间包括三部分(请求信息从输入直至传送到处理机的时间、处理机对请求信息处理的时间、相应信息回送到终端的显示器的时间)
- 均衡性:指系统的响应时间快慢与用户请求服务的复杂性相适应
-
实时系统的目标
- 截止时间的保证
- 可预测性
二、作业与作业调度
批处理系统中的作业
- 作业:包含程序、数据和作业说明书,系统根据作业说明书来对程序的运行进行控制
- 作业步:作业运行期间,每个作业必须经过若干个相对独立、又相互关联的顺序加工步骤(作业步)才能得到结束
- 作业控制块(JCB):管理和调度作业,是作业在系统中存在的标志
- 作业运行的三个阶段和三种状态
- 收容阶段(后备状态):作业通过某种输入方式或SPOOLing系统输入到硬盘上,再建立JCB,把它放到后备队列中
- 运行阶段(运行状态):一个作业从第一次进入就绪状态开始,直到它运行结束前
- 完成阶段(完成状态):作业运行完成或发生异常情况而提前结束
作业调度的主要任务
- 任务:根据作业控制块中的信息,审查系统能否满足用户作业的资源需求,以及按照一定的算法,从外存的后备队列中选取某些作业调入内存,并为它们创建进程、分配必要的资源。然后再将新创建的进程插入就绪队列,准备执行。
- 从后备队列中选取多少作业调入内存,取决于系统允许多少个作业同时在内存中运行
- 选择接纳哪些作业,取决于所采用的调度算法
先来先服务和短作业优先调度算法
- FCFS:系统按照作业到达的先后顺序进行调度,该算法可用于作业调度和进程调度
- SJF:以作业长短来计算优先级,作业越短,优先级越高
- SJF的缺点:对长作业非常不利,可能使作业等待时间过长,出现饥饿现象
优先级和高响应比优先调度算法
- PSA:基于作业的紧迫程度,由外部赋予作业相应的优先级
- HRRN:高响应比R p R_pRp相当于优先级
![在这里插入图片描述]()
三、进程调度
进程调度的任务、机制和方式
- 任务:
- 保存处理机的现场信息
- 按某种算法选取进程
- 把处理器分配给进程
- 调度机制
![在这里插入图片描述]()
- 进程调度方式
- 非抢占方式
- 抢占方式:优先权原则、短进程优先原则、时间片原则
轮转调度算法
- 即让就绪队列上的每个进程每次仅运行一个时间片
![在这里插入图片描述]()
优先级调度算法
- 优先级调度算法的类型
- 非抢占式优先级调度算法
- 抢占式优先级调度算法
- 优先级类型
- 静态优先级:整个运行期间不变
- 动态优先级:随着进程的推进或等待时间的增加而改变
多队列调度算法
- 将系统中的进程就绪队列从一个拆分成若干个,将不同类型或性质的进程固定在不同的就绪队列,不同的就绪队列采用不同的调度算法,一个就绪队列的进程可以设置不同的优先级,不同的就绪队列本身也可以设置不同的优先级
多级反馈队列调度算法
//TODO
基于公平原则的调度算法
- 假如系统中由两个用户,用户1有4个进程A、B、C、D,用户2有1个进程E,为保证两个用户有相同的处理机时间
![在这里插入图片描述]()
四、实时调度
实现实时调度的基本条件
- 提供必要信息:时间、资源、优先级
- 系统处理能力强
- 采用抢占式调度机制
- 具有快速切换机制
实时调度算法的分类
- 非抢占式轮转调度算法
- 非抢占式优先调度算法
- 基于时钟中断的抢占式优先级调度算法
- 立即抢占的优先级调度算法
![在这里插入图片描述]()
最早截止时间优先(EDF)算法
-
非抢占式调度方式用于非周期实时任务
![在这里插入图片描述]()
-
抢占式调度方式用于周期实时任务
任务A和任务B的周期时间分别为20ms和50ms,每个周期的处理时间分别为10ms和25ms![在这里插入图片描述]()
最低松弛度优先(LLF)算法
- 任务A要求每20ms执行一次,执行时间为10ms;任务B要求每50ms执行一次,执行时间为25ms
![在这里插入图片描述]()
![在这里插入图片描述]()
优先级倒置
//TODO
五、死锁概述
资源问题
- 可以引起死锁的资源:需要采用互斥访问、不可以被抢占的资源
- CPU和主存均属于可抢占性资源、这类资源不会引起死锁
计算机系统中的死锁
- 竞争不可抢占性资源引起死锁
- 竞争可消耗资源引起死锁
- 进程推进顺序不当引起死锁
- 资源分配图:方块代表可重用资源,圆圈代表进程。
进程 —> 文件:进程请求资源
文件 —> 进程:该资源已被分配给该进程
形成环路,说明进入死锁状态![在这里插入图片描述]()
死锁的定义、必要条件和处理方法
- 如果一组进程中的每个进程都在等待仅由该组进程中的其他进程才能引发的事件,那么该组进程是死锁的
- 产生死锁必须同时具备四个必要条件:
- 互斥条件:一段时间内,某资源只能被一个进程占用
- 请求和保持条件:进程已经保持了至少一个资源,又提出了新的资源请求,该资源已经被其他进程占用,此时请求进程被阻塞,但对自己已获得的资源保持不放
- 不可抢占条件:进程已获得的资源在未使用完之前不能被抢占
- 循环等待条件:在发生死锁时,必然存在一个进程——资源的循环链
- 处理死锁的四种方法:
- 预防死锁:破坏产生死锁的必要条件中的一个或几个
- 避免死锁:防止系统进入不安全状态
- 检测死锁
- 解除死锁
六、预防死锁
破坏“请求和保持”条件
- 第一种协议:所有进程在开始之前,必须一次性的申请其在整个运行过程中所需的全部资源
- 第二种协议:允许一个进程只获得运行初期所需的资源后,便开始运行。在运行过程中再逐步释放已分配给自己的、已用毕的全部资源
破坏“不可抢占”条件
- 当一个进程保持了某些不可抢占资源,提出新的资源请求得不到满足时,必须要释放它已经保持的所有资源,待以后需要时重新申请
破坏“循环等待”条件
- 对系统所有资源类型进行线性排序,并赋予不同的序号
F(tape drive) = 1;
F(disk drive) = 5;
F(printer) = 12;
七、避免死锁
系统安全状态
- 在T 0 T_0T0时刻系统是安全的,因为这时存在一个安全序列 {P 2 P_2P2,P 1 P_1P1,P 3 P_3P3}
![在这里插入图片描述]()
利用银行家算法避免死锁


八、死锁的检测与解除
死锁的检测
- 资源分配图
方框中的一个点表示一类资源中的一个资源
图中P 1 P_1P1进程已经分得了两个R 1 R_1R1资源,又请求一个R 2 R_2R2资源;P 2 P_2P2进程已经分得了一个R 1 R_1R1资源和一个R 2 R_2R2资源,又请求一个R 1 R_1R1资源![在这里插入图片描述]()
死锁定理
- 找出一个既不阻塞又非独立的进程结点,进行一系列简化
- 所有的简化顺序都会得到相同的不可简化图
- S为死锁状态的充分条件是:当且仅当S状态的资源分配图是不可完全简化的
死锁的解除
- 抢占资源:从一个或多个进程中抢占足够数量的资源,分配给死锁进程,以解除死锁状态
- 终止(或撤销)进程:终止(或撤销)系统中的一个或多个死锁进程,直到打破循环环路,使系统从死锁状态解脱出来














浙公网安备 33010602011771号