第三章处理机调度与死锁.ppt

上传人:本田雅阁 文档编号:3138894 上传时间:2019-07-16 格式:PPT 页数:96 大小:1.09MB
返回 下载 相关 举报
第三章处理机调度与死锁.ppt_第1页
第1页 / 共96页
第三章处理机调度与死锁.ppt_第2页
第2页 / 共96页
第三章处理机调度与死锁.ppt_第3页
第3页 / 共96页
第三章处理机调度与死锁.ppt_第4页
第4页 / 共96页
第三章处理机调度与死锁.ppt_第5页
第5页 / 共96页
点击查看更多>>
资源描述

《第三章处理机调度与死锁.ppt》由会员分享,可在线阅读,更多相关《第三章处理机调度与死锁.ppt(96页珍藏版)》请在三一文库上搜索。

1、第三章 处理机调度与死锁,3.1 处理机调度的基本概念,3.1.1 高级、中级和低级调度,1. 高级调度(High Scheduling),又称作业调度、长程调度:决定把外存上处于后备队列中的哪些作业调入内存,并为之创建进程、分配必要的资源,然后,再将新创建的进程排在就绪队列中。,1. 高级调度(High Scheduling),批处理系统:需作业调度 分时系统:无需作业调度 实时系统:通常无需作业调度,在每次执行作业调度时,都须做出以下两个决定: 1) 接纳多少个作业 2) 接纳哪些作业,1. 高级调度(High Scheduling),2. 低级调度(Low Level Schedulin

2、g),进程调度、短程调度:决定就绪队列中哪个进程应获得处理机,然后再由分派程序执行把处理机分配给该进程的具体操作。 三种类型的OS均需配置进程调度,2. 低级调度(Low Level Scheduling),进程调度方式: 1) 非抢占方式(Non-preemptive Mode) 进程一旦获得CPU则一直执行,直至完成或被阻塞。,采用非抢占方式,引起进程调度的因素: 正在执行的进程执行完毕, 或因发生某事件而不能再继续执行; 执行中的进程因提出I/O请求而暂停执行; 在进程通信或同步过程中执行了某种原语操作,如P操作(wait操作)、Block原语、Wakeup原语等。,2) 抢占方式(Pr

3、eemptive Mode) 正在执行的进程可以被中途剥夺CPU使用权,进程调度方式,抢占的原则有:,优先权原则。 (2) 短作业(进程)优先原则 (3) 时间片原则。,3. 中级调度(Intermediate-Level Scheduling),中级调度又称中程调度(Medium-Term Scheduling)。 引入的主要目的:是为了提高内存利用率和系统吞吐量(存储器管理的对换) 中程调度:将那些暂时不能运行的进程不再占用宝贵的内存资源,而将它们调至外存上去等待,把此时的进程状态称为就绪驻外存状态或挂起状态。当这些进程重又具备运行条件、且内存又稍有空闲时,由中级调度来决定把外存上的哪些又

4、具备运行条件的就绪进程,重新调入内存,并修改其状态为就绪状态,挂在就绪队列上等待进程调度。,3.1.2 调度队列模型,1. 仅有进程调度的调度队列模型,2. 具有高级和低级调度的调度队列模型,(1) 就绪队列的形式:优先权队列、无序链表等 (2) 设置多个阻塞队列:每个队列对应于某一种进程阻塞事件,该模型与上一模型的主要区别在于如下两个方面:,2. 具有高级和低级调度的调度队列模型,3. 同时具有三级调度的调度队列模型,3.1.3 选择调度方式和调度算法的若干准则,1. 面向用户的准则,(1) 周转时间短。,周转时间的长短是评价批处理系统性能、选择作业调度方式与算法的重要准则之一,周转时间:从

5、作业提交给系统开始,到作业完成为之的这段时间间隔(作业周转时间) 作业在外存后备队列上等待(作业)调度的时间 进程在就绪队列上等待进程调度的时间 进程在CPU上执行的时间 进程等待I/O操作完成的时间,(1) 周转时间短。,平均周转时间:,带权周转时间: W=T/TS 平均带权周转时间:,(1) 周转时间短。,(2) 响应时间快,响应时间的长短是评价分时系统性能、选择分时系统中进程调度算法的重要准则之一,响应时间:用户通过键盘提交一个请求开始,直至系统首次产生响应为止的时间,或者说直至屏幕上显示出结果为止的一段时间间隔 键盘输入的请求信息传送到处理机的时间 处理机对请求信息进行处理的时间 形成

6、的响应信息回送到终端显示器的时间,(3) 截止时间的保证,截止时间是评价实时系统性能的重要指标,是选择实时调度算法的重要准则,截止时间:某任务必须开始执行的最迟时间或必须完成的最迟时间,(4) 优先权准则,三种系统均可应用本准则,2. 面向系统的准则,(1) 系统吞吐量高 评价批处理系统 吞吐量:单位时间内所完成的作业数 (2) 处理机利用率好 大中型系统中要考虑 (3) 各类资源的平衡利用 大中型系统中要考虑,3.2 调度算法,调度算法:根据系统的资源分配策略所规定的资源分配算法,3.2.1 先来先服务和短作业(进程)优先调度算法,1. 先来先服务(FCFS)调度算法,特点:可用于作业调度、

7、也可用于进程调度 利于长作业(进程)、不利于短作业(进程) 利于CPU繁忙型作业,不利于I/O繁忙型的作业(进程),FCFS实例,1. 先来先服务调度算法,平均周转时间:,平均带权周转时间,2. 短作业(进程)优先调度算法,短作业优先(SJF)调度算法:从后备队列中选择一个或若干个估计运行时间最短的作业,将它们调入内存运行。 短进程优先(SPF)调度算法:从就绪队列中选出一估计运行时间最短的进程,将处理机分配给它,使它立即执行并一直执行到完成,或发生某事件而被阻塞放弃处理机时,再重新调度。,平均周转时间:,带权周转时间: W=T/TS,平均带权周转时间:,优点:有效的降低作业的平均等待时间,提

8、高了系统的吞吐量。 缺点:对长作业不利 完全未考虑作业的紧迫程度 作业的运行时间不能准确获得,2. 短作业(进程)优先调度算法,3.2.2 高优先权优先调度算法,1. 优先权调度算法的类型,非抢占式优先权算法,主要用于批处理系统中;也可用于某些对实时性要求不严的实时系统中。,这种抢占式的优先权调度算法,能更好地满足紧迫作业的要求,故而常用于要求比较严格的实时系统中, 以及对性能要求较高的批处理和分时系统中。,1. 优先权调度算法的类型,2) 抢占式优先权调度算法,2. 优先权的类型, 静态优先权是在创建进程时确定的,且在进程的整个运行期间保持不变。,1) 静态优先权,确定进程优先权的依据有如下

9、三个方面: (1) 进程类型。 (2) 进程对资源的需求。 (3) 用户要求。,1) 静态优先权,动态优先权是指,在创建进程时所赋予的优先权,是可以随进程的推进或随其等待时间的增加而改变的,以便获得更好的调度性能。,2) 动态优先权,3. 高响应比优先调度算法,优先权的变化规律可描述为:,由于等待时间与服务时间之和,就是系统对该作业的响应时间,故该优先权又相当于响应比RP。据此,又可表示为:,(1) 等待时间相同,则要求服务的时间愈短,其优先权愈高有利于短作业 (2) 当要求服务的时间相同时,则等待时间愈长,其优先权愈高先来先服务 (3) 长作业只要等待时间足够长,其优先级便可升到很高, 从而

10、也可获得处理机 (4) 响应比的计算增加了系统开销,3. 高响应比优先调度算法,例:,单道批处理系统中,一组作业的提交时刻和运行时间如表所示。采用高响应比优先调度算法,作业1到达时,没有其它作业到达,故作业1执行,作业1执行完成时刻为9.0,作业2、3均已到达,此时作业2、3的响应比分别是:作业2=1+0.5/0.5=2;作业3=1+0/0.2=1;即选择2运行,作业2执行完成时刻为9.5,作业3、4均已到达,其响应比分别是:作业3=1+0.5/0.2=3.5 作业4=1+0.4/0.1=5,即选择作业4运行。,最后只剩下作业3,执行,3.2.3 基于时间片的轮转调度算法, 时间片太大,每个进

11、程均可在时间片内执行完毕退化为FCFS,1. 时间片轮转法,确定时间片大小的考虑因素: 1、系统对响应时间的要求 2、就绪队列中进程的数目 3、系统的处理能力,2. 多级反馈队列调度算法,(1) 应设置多个就绪队列,优先级,(2) 当一个新进程进入内存后,首先将它放入第一队列的末尾,按时间片轮转法等待调度。当轮到该进程执行时,如它能在该时间片内完成,便可准备撤离系统;如果它在一个时间片结束时尚未完成,调度程序便将该进程转入第二队列的末尾,再同样地按时间片轮转法等待调度执行;如果它在第二队列中运行一个时间片后仍未完成,再依次将它放入第三队列,如此下去,当一个长作业(进程)从第一队列依次降到第n队

12、列后,在第n队列中便采取按时间片轮转的方式运行。,2. 多级反馈队列调度算法,(3) 仅当第一队列空闲时,调度程序才调度第二队列中的进程运行; 仅当第1(i-1) 队列均空时,才会调度第i队列中的进程运行。如果处理机正在第i队列中为某进程服务时,又有新进程进入优先权较高的队列(第1(i-1)中的任何一个队列),则此时新进程将抢占正在运行进程的处理机,即由调度程序把正在运行的进程放回到第i队列的末尾,把处理机分配给新到的高优先权进程。,2. 多级反馈队列调度算法,3. 多级反馈队列调度算法的性能,(1) 终端型作业用户。 (2) 短批处理作业用户。 (3) 长批处理作业用户。,3.3 实时调度,

13、实时系统,能及时响应外部事件的请求,在规定的时间内完成对该事件的处理,并控制所有实时任务协调一致地运行的计算机系统 分为实时控制系统和实时信息处理系统两类,实时任务,周期性实时任务、非周期实时任务 硬实时任务、软实时任务,3.3 实时调度,3.3.1 实现实时调度的基本条件,1. 提供必要的信息,(1) 就绪时间。 (2) 开始截止时间和完成截止时间。 (3) 处理时间。 (4) 资源要求。 (5) 优先级。,2. 系统处理能力强,假定系统中有m个周期性的硬实时任务,它们的处理时间为Ci,周期时间为Pi,则在单处理机情况下,必须满足下面的限制条件:,3.3.1 实现实时调度的基本条件,提高系统

14、处理能力的途径有二: 其一仍是采用单处理机系统, 但须增强其处理能力, 以显著地减少对每一个任务的处理时间 其二是采用多处理机系统。假定系统中的处理机数为N,则应将上述的限制条件改为:,2. 系统处理能力强,3. 采用抢占式调度机制,抢占机制 非抢占机制,3.3.1 实现实时调度的基本条件,4. 具有快速切换机制,该机制应具有如下两方面的能力: (1) 对外部中断的快速响应能力 (2) 快速的任务分派能力,3.3.1 实现实时调度的基本条件,3.3.2 实时调度算法的分类,1. 非抢占式调度算法,(1) 非抢占式轮转调度算法,3.3.2 实时调度算法的分类,1. 非抢占式调度算法,(2) 非抢

15、占式优先调度算法。,2. 抢占式调度算法,(1) 基于时钟中断的抢占式优先权调度算法,3.3.2 实时调度算法的分类,3.3.2 实时调度算法的分类,(2) 立即抢占(Immediate Preemption)的优先权调度算法,2. 抢占式调度算法,3.3.3 常用的几种实时调度算法,1. 最早截止时间优先即EDF(Earliest Deadline First)算法,根据任务的开始截止时间来确定任务的优先级,即可用于抢占式调度、也可用于非抢占式调度,1. 最早截止时间优先即EDF(Earliest Deadline First)算法,1. 最早截止时间优先即EDF(Earliest Dead

16、line First)算法,采用抢占式最早开始截至时间优先调度算法,0,10,20,30,40,90,70,50,60,80,100,110,120,A,B,C,E,D,A,2. 最低松弛度优先即LLF(Least Laxity First)算法,该算法是根据任务紧急(或松弛)的程度,来确定任务的优先级。任务的紧急程度愈高,为该任务所赋予的优先级就愈高, 以使之优先执行。 该算法主要用于可抢占调度方式中,2. 最低松弛度优先即LLF(Least Laxity First)算法,周期性实时任务A、B,A要求每20ms执行一次,执行时间10ms;B要求每50ms执行一次,执行时间25ms,在刚开始

17、时(t1=0),A1必须在20ms时完成,而它本身运行又需 10 ms,可算出A1的松弛度为10ms;B1必须在50ms时完成, 而它本身运行就需25 ms,可算出B1的松弛度为25 ms,故调度程序应先调度A1执行。,在t2=10 ms时,A2的松弛度可按下式算出: A2的松弛度=必须完成时间-其本身的运行时间-当前时间 =40 ms-10 ms-10 ms=20 ms 类似地,可算出B1的松弛度为15ms 故调度程序应选择B1运行。,在t3=30 ms时,A2的松弛度为(40-10-30)=0ms,而B1的松弛度为15ms。故抢占B1处理机而调度A2运行,依次计算下去,3.4 多处理机系统

18、中的调度,3.4.1 多处理器系统的类型,(1) 紧密耦合(Tightly Coupled) MPS:共享主存储器系统和I/O设备 (2) 松散耦合(Loosely Coupled) MPS:拥有独立的存储器和I/O设备,(1) 对称多处理器系统SMPS(Symmetric MultiProcessor System) (2) 非对称多处理器系统,3.4.1 多处理器系统的类型,3.4.2 进程分配方式,1. 对称多处理器系统中的进程分配方式 在SMP系统中,所有的处理器都是相同的,因而可把所有的处理器作为一个处理器池(Processor pool),由调度程序或基于处理器的请求, 将任何一个

19、进程分配给池中的任何一个处理器去处理。在进行进程分配时,可采用以下两种方式之一。 1) 静态分配(Static Assignment)方式:忙闲不均 2) 动态分配(Dynamic Assignment)方式,2. 非对称MPS中的进程分配方式 对于非对称MPS, 其OS大多采用主从(Master-Slave)式OS, 即OS的核心部分驻留在一台主机上(Master), 而从机(Slave)上只是用户程序, 进程调度只由主机执行。 每当从机空闲时, 便向主机发送一索求进程的信号, 然后, 便等待主机为它分配进程。 在主机中保持有一个就绪队列, 只要就绪队列不空, 主机便从其队首摘下一进程分配给

20、请求的从机。从机接收到分配的进程后便运行该进程, 该进程结束后从机又向主机发出请求。,3.4.2 进程分配方式,3.4.3 进程(线程)调度方式,1. 自调度(Self-Scheduling)方式 1) 自调度机制 直接由单处理机环境下的调度方式演变而来的 维护一个公共的进程或线程就绪队列 可采用在单处理机环境下所用的调度算法,如先来先服务(FCFS)调度算法、最高优先权优先(FPF)调度算法和抢占式最高优先权优先调度算法等。,2) 自调度方式的优点 1、很容易将单处理机环境下的调度机制移植到多处理机系统中 2、不会出现处理机空闲的情况,也不会发生处理器忙闲不均的现象有利于提高处理器的利用率。

21、,1. 自调度(Self-Scheduling)方式,3) 自调度方式的缺点,(1) 瓶颈问题:共享就绪队列 (2) 低效性:高速缓存使用效率低 (3) 线程切换频繁:合作型线程相互等待,1. 自调度(Self-Scheduling)方式,2. 成组调度(Gang Scheduling)方式,为解决自调度方式中线程被频繁切换的问题提出的,2. 成组调度(Gang Scheduling)方式,在成组调度时,为应用程序分配处理器时间的方式: 1) 面向所有应用程序平均分配处理器时间 2) 面向所有线程平均分配处理器时间,2. 成组调度(Gang Scheduling)方式,优点: 相互合作型进程或

22、线程,能并行执行,有效减少线程(进程)阻塞的发生,从而减少线程切换,改善系统性能 依次调度一组线程,显著减少调度频率,减小了调度开销,3. 专用处理器分配(Dedicated Processor Assigement)方式,在一个应用程序的执行期间,专门为该程序分配一组处理器,每一个线程一个处理器。这组处理器仅供该应用程序专用,直至该应用程序完成 在同时加工的应用程序中,其线程数的总和,不应超过系统中处理机的数目,3.5 产生死锁的原因和必要条件,死锁:多个进程在运行过程中因争夺资源而造成的一种僵局,3.5.1 产生死锁的原因,1. 竞争资源引起进程死锁,(1) 可剥夺和非剥夺性资源 (2)

23、竞争非剥夺性资源 (3) 竞争临时性资源,竞争非剥夺性资源,1. 竞争资源引起进程死锁,1. 竞争资源引起进程死锁,竞争临时性资源,2. 进程推进顺序不当引起死锁,1) 进程推进顺序合法,2) 进程推进顺序非法,3.5.2 产生死锁的必要条件,(1) 互斥条件 (2) 请求和保持条件 (3) 不剥夺条件 (4) 环路等待条件,3.5.3 处理死锁的基本方法,(1) 预防死锁。 (2) 避免死锁。 (3) 检测死锁。 (4) 解除死锁。,3.6 预防死锁的方法,3.6.1 预防死锁,(1) 摒弃“请求和保持”条件 资源分配方案:要么分配进程所需的所有资源,要么不分配资源,优点:简单、易于实现、安

24、全 缺点:资源严重浪费、进程延迟执行,3.6.1 预防死锁,(2) 摒弃“不剥夺”条件,资源分配方案:需要时才请求资源,一旦不能获得需要的资源,则释放所有已保持的资源,缺点:实现复杂、代价大 延长了进程的周转时间 增加了系统开销,降低了系统吞吐量,3.6.1 预防死锁,3. 摒弃“环路等待”条件,将所有资源按类型进行线性排队,并赋予不同序号。所有进程对资源的请求必须严格按照资源序号递增的次序提出。,缺点:各类资源所分配的序号需相对稳定,从而限制了新类型设备的增加 进程使用资源的顺序可能与系统规定的顺序不同 限制了用户简单、自主的编程,3.6.2 系统安全状态,1. 安全状态 所谓安全状态,是指

25、系统能按某种进程顺序(P1, P2, ,Pn)(称P1, P2, , Pn序列为安全序列),来为每个进程Pi分配其所需资源,直至满足每个进程对资源的最大需求,使每个进程都可顺利地完成。如果系统无法找到这样一个安全序列,则称系统处于不安全状态。 避免死锁的实质:在进行资源分配时,如何使系统不进入不安全状态。,系统中有三个进程P1、 P2和P3,共有12台磁带机。进程P1总共要求10台磁带机,P2和P3分别要求4台和9台。假设在T0时刻,进程P1、P2和P3已分别获得5台、2台和2台磁带机,尚有3台空闲未分配,如下表所示:,2. 安全状态之例, 如果不按照安全序列分配资源,则系统可能会由安全状态进

26、入不安全状态。,3. 由安全状态向不安全状态的转换,3.6.3 利用银行家算法避免死锁,1. 银行家算法中的数据结构,(1) 可利用资源向量Available 这是一个含有m个元素的数组,其中的每一个元素代表一类可利用的资源数目,其初始值是系统中所配置的该类全部可用资源的数目,其数值随该类资源的分配和回收而动态地改变。如果Availablej=K,则表示系统中现有Rj类资源K个。,(2) 最大需求矩阵Max 这是一个nm的矩阵,它定义了系统中n个进程中的每一个进程对m类资源的最大需求。如果Maxi,j=K,则表示进程i需要Rj类资源的最大数目为K。,1. 银行家算法中的数据结构,(3) 分配矩

27、阵Allocation 这也是一个nm的矩阵,它定义了系统中每一类资源当前已分配给每一进程的资源数。如果Allocationi,j=K,则表示进程i当前已分得Rj类资源的数目为K,1. 银行家算法中的数据结构,(4) 需求矩阵Need。这也是一个nm的矩阵,用以表示每一个进程尚需的各类资源数。如果Needi,j=K,则表示进程i还需要Rj类资源K个,方能完成其任务。,Needi,j=Maxi,j-Allocationi,j,1. 银行家算法中的数据结构,设Requesti是进程Pi的请求向量,如果Requestij=K,表示进程Pi需要K个Rj类型的资源。当Pi发出资源请求后,系统按下述步骤进

28、行检查: (1) 如果RequestijNeedi,j,便转向步骤2;否则认为出错,因为它所需要的资源数已超过它所宣布的最大值。 (2) 如果RequestijAvailablej,便转向步骤(3);否则, 表示尚无足够资源,Pi须等待。,2. 银行家算法,(3) 系统试探着把资源分配给进程Pi,并修改下面数据结构中的数值: Availablej=Availablej-Requestij; Allocationi,j=Allocationi,j+Requestij; Needi,j=Needi,j-Requestij;,2. 银行家算法,(4) 系统执行安全性算法,检查此次资源分配后,系统是否

29、处于安全状态。若安全,才正式将资源分配给进程Pi,以完成本次分配;否则, 将本次的试探分配作废,恢复原来的资源分配状态,让进程Pi等待。,2. 银行家算法,3. 安全性算法,(1) 设置两个向量: 工作向量Work: 它表示系统可提供给进程继续运行所需的各类资源数目,它含有m个元素,在执行安全算法开始时,Work=Available; Finish: 它表示系统是否有足够的资源分配给进程,使之运行完成。开始时先做Finishi=false; 当有足够资源分配给进程时, 再令Finishi=true。,(2) 从进程集合中找到一个能满足下述条件的进程: Finishi=false; Needi,

30、jWorkj; 若找到, 执行步骤(3), 否则,执行步骤(4),3. 安全性算法,(3) 当进程Pi获得资源后,可顺利执行,直至完成,并释放出分配给它的资源,故应执行: Workj=Worki+Allocationi,j; Finishi=true; go to step 2;,(4) 如果所有进程的Finishi=true都满足, 则表示系统处于安全状态;否则,系统处于不安全状态。,3. 安全性算法,例,在银行家算法中,若出现下面的资源分配情况,1)该状态是否安全? 2)若进程P2提出请求Request(1,2,2,2)后,系统能否将资源分配给它,解,系统是安全的,若进程P2提出请求Req

31、uest(1,2,2,2) Request2(1,2,2,2)Need2(2,3,5,6) Request2(1,2,2,2)Available(1,6,2,2) 假定系统将资源分配给它,则,系统进入不安全状态,故不能分配资源,3.7 死锁的检测与解除,3.7.1 死锁的检测,1. 资源分配图(Resource Allocation Graph),凡属于E中的一个边eE,都连接着P中的一个结点和R中的一个结点,e=pi, rj是资源请求边,由进程pi指向资源rj, 它表示进程pi请求一个单位的rj资源。e=rj, pi是资源分配边,由资源rj指向进程pi, 它表示把一个单位的资源rj分配给进程

32、pi。,2. 死锁定理,(1)在资源分配图中,找出一个既不阻塞又非独立的进程结点pi。在顺利情况下,pi可获得所需资源而继续执行,直至运行完毕,再释放其所占有的全部资源。这相当于消去pi所有的请求边和分配边,使之成为孤立的结点,2. 死锁定理,(2)pi释放资源后便可使p2获得资源而继续运行,直到p2完成后又释放出它所占有的全部资源。 (3)在进行一系列的简化后,若能消去图中所有的边,使所有进程都成为孤立结点,则称该图是可完全简化的;若不能通过任何过程使该图完全简化,则称该图是不可完全简化的。,3. 死锁检测中的数据结构,(1) 可利用资源向量Available,它表示了m类资源中每一类资源的

33、可用数目。 (2) 把不占用资源的进程(向量Allocation=0)记入L表中, 即LiL。 (3) 从进程集合中找到一个RequestiWork的进程,做如下处理: 将其资源分配图简化,释放出资源,增加工作向量Work=Work+Allocationi。 将它记入L表中。,(4) 若不能把所有进程都记入L表中, 便表明系统状态S的资源分配图是不可完全简化的。 因此,该系统状态将发生死锁。,3. 死锁检测流程,Work=Available,找进程Li:RequestiWork,其资源图能否简化,否,有死锁,结束,是,释放资源,Work=Work+Allocationi,L=LiL,还有进程吗,否,无死锁,结束,是,3.7.2 死锁的解除,(1) 剥夺资源 (2) 撤消进程,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1