欢迎来到天天文库
浏览记录
ID:51624588
大小:1.03 MB
页数:57页
时间:2020-03-26
《王万森全套配套课件计算机操作系统原理第2版 第5章 死锁及其对策.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第五章死锁及其对策5.1死锁的概念5.2死锁的产生及对策5.3死锁的预防5.4死锁的避免5.5死锁的检测和解除5.1死锁的概念5.1.1资源1.资源分类(1)根据资源的占用方式①可剥夺型资源:指另外的进程可以从拥有它的进程那里剥夺过去而为己用的资源,如计算机系统的处理机资源和内存等资源。②不可剥夺资源:指其他进程不能从当前占有它的进程能里强行抢占的资源,如,当一个进程正在进行光盘刻录时,另一进程就不能抢占刻录机资源(2)根据资源的使用方式①共享资源:该资源可以为几个进程共同使用,如处理机,内存等②独享资源:每次只能由一个进程单独使用的资源,如打印机、刻录机等(3
2、)根据资源的使用性质①永久性资源(可再用资源):被进程多次重复使用的资源,包括所有的硬件资源和可重入的代码过程等②临时性资源(消费型资源):指在进程同步和通信的过程中出现的消息、信号和数据等,它们由一个进程产生,另一个进程使用后就不再有用了5.1.2死锁定义死锁是指计算机系统中多道程序并发执行时,两个或两个以上的进程由于竞争系统资源而出现的一种相互等待的现象。此时,每个进程都“占用”一些其他进程正在等待的资源,而且,每个进程在得到对方资源前不会释放自己所得到的资源,从而造成所有进程都没有完全得到所有的资源,所有这些进程相互等待,谁也无法继续,称这些进程是死锁的,
3、相应的计算机处于死锁状态。一般来说,可以把死锁描述为:用并发进程P1,P2,…,Pn,它们共享资源R1,R2,…,Rm(n>0,m>0,n≥m)。其中,每个Pi(1≤i≤n)拥有资源Rj(1≤j≤m),直到不再有剩余资源。同时,各Pi又在不释放Rj的前提要求下得到Rk(1≤k≤m),从而造成资源的互相占用和互相等待。在没有外力驱动的情况下,改组并发进程停止往前推进,陷入永久等待状态。5.2死锁的产生及对策5.2.1死锁产生的原因临界资源分配不当引起的死锁(2)进程推进顺序不当引起的死锁1.临界资源分配不当引起进程死锁竞争非剥夺性资源2)竞争临时性资源3)竞争同一
4、类资源2.进程推进顺序不当引起死锁1)进程推进顺序合法2)进程推进顺序非法若并发进程P1和P2按曲线④所示的顺序推进,它们将进入不安全区D内。此时P1保持了资源R1,P2保持了资源R2,系统处于不安全状态。因为,这时两进程再向前推进,便可能发生死锁。例如,当P1运行到P1:Request(R2)时,将因R2已被P2占用而阻塞;当P2运行到P2:Request(R1)时,也将因R1已被P1占用而阻塞,于是发生了进程死锁。5.2.2产生死锁的必要条件互斥条件(2)占用并等待条件(3)不可剥夺条件(4)环路等待条件5.2.3死锁的描述1.资源分配图所谓资源分配图,是
5、用来描述进程、资源及它们之间关系的一种有向图。资源分配图由一个结点集合V和一个边际和E组成。结点集合V分成两种类型的结点P={P1,P2,…,Pn},由系统中的所有活动进程组成;R={R1,R2,…,Rm},由系统中的全部资源类型组成。在资源分配图中,一般用圆圈表示进程,方框代表某些资源,方框中的小圆点代表该类资源的一个单位,框中有几个小圆点就表示该类资源有几个可供分配的单位资源数量:R1资源有1个,R2类资源有2个,R3类资源有1个,R4类资源有3个。进程状态:进程P1占有1个R2资源,且等待1个R1资源进程P2占用R1和R2资源各1个,且等待1个R3资源进程
6、P3占用1个R3资源2.资源分配图示例3.环路与死锁根据资源分配图的定义,可以证明:如果资源分配图中没有环路,那么系统中就不存在死锁;如果有环路,就有可能存在死锁。有环路的情况下是否产生死锁使用如下条件判断:(1)如果每类资源的实体都只有一个,那么资源分配图中出现环路就说明发生死锁了,这中情况下,资源分配图中出现环路是死锁存在的充分必要条件(2)如果每类资源的实体不止一个,那么资源分配图中出现环路并不表明一定出现死锁,在这种情况下,资源分配图中出现环路只是死锁存在的必要条件,但不是充分条件5.2.4处理死锁的方法对死锁视而不见(2)预防死锁避免死锁检测和解除死锁
7、5.3死锁的预防对于非共享资源,必须要有互斥条件。例如一台打印机不能同时被多个进程共享,共享资源部要求互斥访问,因此它不会涉及死锁。系统中经常使用的资源是打印机、读卡机、公用数据等非共享资源,这些资源的独立性非但不能破坏反而更要保护,因此通过破坏互斥条件来预防死锁不是对所有资源都合适的。5.3.1破坏互斥条件破坏占用并等待条件即破坏部分分配条件,为了确保占用并等待条件不会再系统内出现,必须保证:当一个进程申请某个资源时,不能占用其他资源。使用以下两种方法实现这个目标:(1)预分配资源策略(2)“空手”申请资源策略5.3.2破坏占用并等待条件采用以上方法预防死锁的
8、优点:方法比较简单,易于
此文档下载收益归作者所有