ch处理机调度与死锁复习

上传人:n**** 文档编号:92819215 上传时间:2019-07-13 格式:PPT 页数:29 大小:780.50KB
返回 下载 相关 举报
ch处理机调度与死锁复习_第1页
第1页 / 共29页
ch处理机调度与死锁复习_第2页
第2页 / 共29页
ch处理机调度与死锁复习_第3页
第3页 / 共29页
ch处理机调度与死锁复习_第4页
第4页 / 共29页
ch处理机调度与死锁复习_第5页
第5页 / 共29页
点击查看更多>>
资源描述

《ch处理机调度与死锁复习》由会员分享,可在线阅读,更多相关《ch处理机调度与死锁复习(29页珍藏版)》请在金锄头文库上搜索。

1、第三章 处理机调度与死锁,3.1 处理机调度的层次 3.2 调度队列模型和调度准则 3.3 调度算法 3.4 实时调度 3.5 产生死锁的原因和必要条件 3.6 预防死锁的方法 3.7 死锁的检测与解除,1. 处理机调度的层次及频率,三种调度:高级调度(作业调度)、低级调度(进程调度)、中级调度 在上述三种调度中,进程调度的运行频率最高,在分时系统中通常是10100 ms便进行一次进程调度,因此把它称为短程调度。为避免进程调度占用太多的CPU时间,进程调度算法不宜太复杂。 作业调度往往是发生在一个(批)作业运行完毕,退出系统,而需要重新调入一个(批)作业进入内存时,故作业调度的周期较长,大约几

2、分钟一次,因此把它称为长程调度。由于其运行频率较低,故允许作业调度算法花费较多的时间。 中级调度的运行频率基本上介于上述两种调度之间,因此把它称为中程调度。,2一个典型的作业可分成三个作业步:, “编译”作业步,通过执行编译程序对源程序进行编译,产生若干个目标程序段; “连结装配”作业步,将“编译”作业步所产生的若干个目标程序段装配成可执行的目标程序; “运行”作业步,将可执行的目标程序读入内存并控制其运行。,3低级调度的功能,低级调度用于决定就绪队列中的哪个进程(或内核级线程,为叙述方便,以后只写进程)应获得处理机,然后再由分派程序执行把处理机分配给该进程的具体操作。 低级调度的主要功能如下

3、: (1) 保存处理机的现场信息。在进程调度进行调度时,首先需要保存当前进程的处理机的现场信息,如程序计数器、多个通用寄存器中的内容等,将它们送入该进程的进程控制块(PCB)中的相应单元。 (2) 按某种算法选取进程。低级调度程序按某种算法如优先数算法、轮转法等,从就绪队列中选取一个进程,把它的状态改为运行状态,并准备把处理机分配给它。 (3) 把处理器分配给进程。由分派程序(Dispatcher)把处理器分配给进程。此时需为选中的进程恢复处理机现场,即把选中进程的进程控制块内有关处理机现场的信息装入处理器相应的各个寄存器中,把处理器的控制权交给该进程,让它从取出的断点处开始继续运行。,4进程

4、调度方式,1) 非抢占方式:在采用这种调度方式时,一旦把处理机分配给某进程后,不管它要运行多长时间,都一直让它运行下去,决不会因为时钟中断等原因而抢占正在运行进程的处理机,也不允许其它进程抢占已经分配给它的处理机。直至该进程完成,自愿释放处理机,或发生某事件而被阻塞时,才再把处理机分配给其他进程。 2) 抢占方式:这种调度方式允许调度程序根据某种原则去暂停某个正在执行的进程,将已分配给该进程的处理机重新分配给另一进程。,5.抢占调度方式是基于一定原则,抢占调度方式是基于一定原则的,主要有如下几条: (1) 优先权原则。通常是对一些重要的和紧急的作业赋予较高的优先权。当这种作业到达时,如果其优先

5、权比正在执行进程的优先权高,便停止正在执行(当前)的进程,将处理机分配给优先权高的新到的进程,使之执行;或者说,允许优先权高的新到进程抢占当前进程的处理机。 (2) 短作业(进程)优先原则。当新到达的作业(进程)比正在执行的作业(进程)明显的短时,将暂停当前长作业(进程)的执行,将处理机分配给新到的短作业(进程),使之优先执行; 或者说,短作业(进程)可以抢占当前较长作业(进程)的处理机。 (3) 时间片原则。各进程按时间片轮流运行,当一个时间片用完后,便停止该进程的执行而重新进行调度。这种原则适用于分时系统、大多数的实时系统,以及要求较高的批处理系统。,6. 选择调度方式和调度算法的若干准则

6、,面向用户的准则: (1) 周转时间短。 (2) 响应时间快。 (3) 截止时间的保证。 (4) 优先权准则。 面向系统的准则 (1) 系统吞吐量高。 (2) 处理机利用率好。 (3) 各类资源的平衡利用。,7. 调 度 算 法,先来先服务 短作业(进程)优先调度算法 高优先权优先调度算法 基于时间片的轮转调度算法,计算各作业(或进程)的完成时间、周转时间、带权周转时间以及平均时间。 练习,FCFS算法比较有利于长作业(进程),而不利于短作业(进程)。下表列出了A、B、C、D四个作业分别到达系统的时间、要求服务的时间、开始执行的时间及各自的完成时间,并计算出各自的周转时间和带权周转时间。,图3

7、-4 FCFS和SJF调度算法的性能,8.FCFS调度算法特点,据此可知,FCFS调度算法有利于CPU繁忙型的作业,而不利于I/O繁忙型的作业(进程)。 CPU繁忙型作业是指该类作业需要大量的CPU时间进行计算,而很少请求I/O。通常的科学计算便属于CPU繁忙型作业。 I/O繁忙型作业是指CPU进行处理时需频繁地请求I/O。目前的大多数事务处理都属于I/O繁忙型作业。,9.SJ(P)F调度算法也存在不容忽视的缺点:,(1) 该算法对长作业不利,如作业C的周转时间由10增至16,其带权周转时间由2增至3.1。更严重的是,如果有一长作业(进程)进入系统的后备队列(就绪队列),由于调度程序总是优先调

8、度那些(即使是后进来的)短作业(进程),将导致长作业(进程)长期不被调度。 (2) 该算法完全未考虑作业的紧迫程度,因而不能保证紧迫性作业(进程)会被及时处理。 (3) 由于作业(进程)的长短只是根据用户所提供的估计执行时间而定的,而用户又可能会有意或无意地缩短其作业的估计运行时间,致使该算法不一定能真正做到短作业优先调度。,由上式可以看出: (1) 如果作业的等待时间相同,则要求服务的时间愈短,其优先权愈高,因而该算法有利于短作业。 (2) 当要求服务的时间相同时,作业的优先权决定于其等待时间,等待时间愈长,其优先权愈高,因而它实现的是先来先服务。 (3) 对于长作业,作业的优先级可以随等待

9、时间的增加而提高,当其等待时间足够长时,其优先级便可升到很高,从而也可获得处理机。 简言之,该算法既照顾了短作业,又考虑了作业到达的先后次序,不会使长作业长期得不到服务。因此,该算法实现了一种较好的折衷。当然,在利用该算法时,每要进行调度之前,都须先做响应比的计算,这会增加系统开销。,10高响应比优先调度算法中响应比及分析,11. 实现实时调度的基本条件,提供必要的信息: (1) 就绪时间。这是该任务成为就绪状态的起始时间,在周期任务的情况下,它就是事先预知的一串时间序列;而在非周期任务的情况下,它也可能是预知的。 (2) 开始截止时间和完成截止时间。对于典型的实时应用,只须知道开始截止时间,

10、或者知道完成截止时间。 (3) 处理时间。这是指一个任务从开始执行直至完成所需的时间。在某些情况下,该时间也是系统提供的。 (4) 资源要求。这是指任务执行时所需的一组资源。 (5) 优先级。 系统处理能力强 采用抢占式调度机制 具有快速切换机制: (1) 对外部中断的快速响应能力。为使在紧迫的外部事件请求中断时系统能及时响应,要求系统具有快速硬件中断机构,还应使禁止中断的时间间隔尽量短,以免耽误时机(其它紧迫任务)。 (2) 快速的任务分派能力。在完成任务调度后,便应进行任务切换。为了提高分派程序进行任务切换时的速度,应使系统中的每个运行功能单位适当地小,以减少任务切换的时间开销。,12.

11、常用的几种实时调度算法,1最早截止时间优先即EDF(Earliest Deadline First)算法 2最低松弛度优先即LLF(Least Laxity First)算法,13. 产生死锁的原因,产生死锁的原因可归结为如下两点: (1) 竞争资源。当系统中供多个进程共享的资源如打印机、公用队列等,其数目不足以满足诸进程的需要时,会引起诸进程对资源的竞争而产生死锁。 (2) 进程间推进顺序非法。进程在运行过程中,请求和释放资源的顺序不当,也同样会导致产生进程死锁。,14. 产生死锁的必要条件,虽然进程在运行过程中可能发生死锁,但死锁的发生也必须具备一定的条件。综上所述不难看出,死锁的发生必须

12、具备下列四个必要条件。 (1) 互斥条件:指进程对所分配到的资源进行排它性使用,即在一段时间内某资源只由一个进程占用。如果此时还有其它进程请求该资源,则请求者只能等待,直至占有该资源的进程用毕释放。 (2) 请求和保持条件:指进程已经保持了至少一个资源,但又提出了新的资源请求,而该资源又已被其它进程占有,此时请求进程阻塞,但又对自己已获得的其它资源保持不放。 (3) 不剥夺条件:指进程已获得的资源,在未使用完之前,不能被剥夺,只能在使用完时由自己释放。 (4) 环路等待条件:指在发生死锁时,必然存在一个进程资源的环形链,即进程集合P0,P1,P2,Pn中的P0正在等待一个P1占用的资源; P1

13、正在等待P2占用的资源,Pn正在等待已被P0占用的资源。,15. 处理死锁的基本方法,(1) 预防死锁:该方法是通过设置某些限制条件,去破坏产生死锁的四个必要条件中的一个或几个条件,来预防发生死锁。 (2) 避免死锁:它并不须事先采取各种限制措施去破坏产生死锁的四个必要条件,而是在资源的动态分配过程中,用某种方法去防止系统进入不安全状态,从而避免发生死锁。 (3) 检测死锁:这种方法并不须事先采取任何限制性措施,也不必检查系统是否已经进入不安全区,而是允许系统在运行过程中发生死锁。 但可通过系统所设置的检测机构,及时地检测出死锁的发生,并精确地确定与死锁有关的进程和资源; 然后,采取适当措施,

14、从系统中将已发生的死锁清除掉。 (4) 解除死锁:这是与检测死锁相配套的一种措施。当检测到系统中已发生死锁时,须将进程从死锁状态中解脱出来。,16安全状态,所谓安全状态,是指系统能按某种进程顺序(P1,P2,Pn)(称P1,P2,Pn序列为安全序列),来为每个进程Pi分配其所需资源,直至满足每个进程对资源的最大需求,使每个进程都可顺利地完成。如果系统无法找到这样一个安全序列,则称系统处于不安全状态。,安全状态之例,我们通过一个例子来说明安全性。假定系统中有三个进程P1、P2和P3,共有12台磁带机。进程P1总共要求10台磁带机,P2和P3分别要求4台和9台。 假设在T0时刻,进程P1、P2和P

15、3已分别获得5台、2台和2台磁带机,尚有3台空闲未分配,如下表所示:,由安全状态向不安全状态的转换,如果不按照安全序列分配资源,则系统可能会由安全状态进入不安全状态。 例如,在T0时刻以后,P3又请求1台磁带机,若此时系统把剩余3台中的1台分配给P3,则系统便进入不安全状态。因为此时也无法再找到一个安全序列,,17.利用银行家算法避免死锁,假定系统中有五个进程P0,P1,P2,P3,P4和三类资源A,B,C,各种资源的数量分别为10、5、7,在T0时刻的资源分配情况如图3-16所示。,图3-16 T0时刻的资源分配表,图3-17 T0时刻的安全序列,(1) T0时刻的安全性:利用安全性算法对T

16、0时刻的资源分配情况进行分析(见图 3-17所示)可知,在T0时刻存在着一个安全序列P1,P3,P4,P2,P0,故系统是安全的。,(2) P1请求资源:P1发出请求向量Request1(1,0,2),系统按银行家算法进行检查: Request1(1,0,2)Need1(1,2,2) Request1(1,0,2)Available1(3,3,2) 系统先假定可为P1分配资源,并修改Available,Allocation1和Need1向量,由此形成的资源变化情况如图3-16中的圆括号所示。, 再利用安全性算法检查此时系统是否安全。如图3-18所示。,图3-18 P1申请资源时的安全性检查,(3) P4请求资源:P4发出请求向量Request4(3,3,0),系统按银行家算法进行检查: Request4(3,3,0)Need4(4,3,1); Request4(3,3,0)Available(2,3,0),让P4等待。 (4) P0请求资源:P0发出请求向量Requst0(0,2,

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 大杂烩/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号