- 1、本文档共59页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第三章 处理机调度和死锁 处理机调度 进程数目处理机数目 动态分配 由处理机调度程序完成 作业提交?处理机调度?获得处理机,执行 3.1 处理机调度的基本概念 3.1高、中、低三级调度 1、高级调度(作业调度、长程调度、接纳调度) 将外存作业调入内存,创建PCB等,插入就绪队列。 一般用于批处理系统,分/实时系统一般直接入内存,无此环节。 调度特性 1.接纳作业数(内存驻留数) 太多――― 周转时间T长 太少――― 系统效率低 2.接纳策略:即采用何种调度算法:FCFS、短作业优先等 3.1.2调度的队列模型 一、仅有进程调度的调度队列模型 3.5产生死锁的原因和必要条件 所谓死锁(deadlock),是指多个进程在运行过程中因争夺资源而造成的一种僵局,当进程处在这种僵持状态时,若无外力作用,它们都将无法再向前推进。 3.5.1产生死锁的原因 二、进程推进顺序不当引起死锁 进程推进顺序合法 进程推进顺序非法 银行家算法之例 五个进程{P0,P1,P2,P3,P4},三种资源{A,B,C},数量分别为10、5、7,在T0时刻的资源分配情况: (1)T0时刻的安全性 利用安全性算法对T0时刻的资源分配情况进行分析,可得下表所示的T0时刻的安全性分析,从中得知,T0时刻存在着一个安全序列{P1,P3,P4,P2,P0},故系统是安全的: (2) P1请求资源 P1发出请求向量Request(1,0,2),系统按银行家算法进行检查: (1)Request1(1,0,2)≤Need(1,2,2) (2)Request1(1,0,2)≤Available(3,3,2) (3)系统先假定可为P1分配资源,并修改Available,Allocation和Need向量,由此形成的资源变化情况如图 (4)我们再利用安全性检查此时系统是否安全。 由所进行的安全性检查得知,可以找到一个安全序列{P1,P3,P4,P2,P0}。因此,系统是安全的,可以立即将P1所申请的资源分配给它。 (3)P4请求资源 P4发出请求向量Request(3,3,0),系统按银行家算法进行检查: (1)Request4(3,3,0)≤Need4(4,3,1)。 (2)Request4(3,3,0)Available(2,3,0),让P4等待。 (4) P0请求资源 P0发出请求向量Request0(0,2,0),系统按银行家算法进行检查: (1)Request0(0,2,0)≤Need0(7,4,3)); (2)Request0(0,2,0)≤Available(2,3,0), (3)进行安全性检查 可用资源Available{2,1,0}已不能满足任何进程的需要,故系统进入不安全状态,此时系统不分配资源。 3.7?死锁的检测和解除 3.7.1、 死锁的检测 系统必须须提供检测和解除死锁的手段: (1)保存有关资源的请求和分配信息; (2)提供算法以利用这些信息来检测系统是否进入死锁。 1、资源分配图(Resource Ailocation Graph) 系统死锁可利用资源分配图来描述。G=(N,E): (1)N分为两个互斥的子集,进程结点P=(P1,P2,…,Pn),资源结点R={r1,r2,…,rn},N=P∪R。 (2)E中的边e∈E,都连接着P中的一个结点和R中的一个结点,e={pi,rj}是资源请求边,由进程pi指向资源rj,它表示进程pi请求一个单位的rj资源。 3.7.1?死锁的检测 2、死锁定理 简化资源分配图来检测系统处于S状态时,是否为死锁状态。简化方法如下: (1)在资源分配图中,找出一个既不阻塞又非独立的进程结点pi。在顺利情况下,pi可获得所需资源而继续执行,直至运行完毕,再释放其所占有的全部资源。这相当于消去pi所有的请求边和分配边,使之成为孤立的结点。 2、死锁定理 S为死锁状态的充分条件是:当且仅当状态S的资源分配图是不可完全简化的。 3.7.1?死锁的检测 3、死锁检测中的数据结构 死锁检测中的数据结构,类似于银行家算法中的数据结构: ⑴ 可利用资源向量Available。它表示了m类资源中的每一类资源的可用数目。 ⑵ 把不占用资源的进程向量Allocation:=0记入表L中,即Li∪L。 ⑶ 从进程集合中找到一个Requesti≤Work的进程,做如下处理: ①将其资源分配图简化,释放出资源,增加工作向量Work :=Work+Allocation。 ②将它记入L表中。 3.7.1?死锁的检测 ⑷若不能把所有的进程都记入L表中,则表明系统状态S的资源分配图是不完全简化的,因此,该系统状态将发生死锁。 Work:=Available;
文档评论(0)