《计算机操作系统》课件第6章 (2).ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《《计算机操作系统》课件第6章 (2).ppt》由用户(momomo)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机操作系统 计算机操作系统课件第6章 2 计算机 操作系统 课件
- 资源描述:
-
1、第 6 章死 锁6.1 死锁的概念6.2 死锁的预防和避免6.3 死锁的检测与解除6.4 避免死锁实现举例习题第 6 章死 锁引入多道程序设计技术后,在系统中可以同时驻留多个程序,多个程序在运行过程中可能需要使用系统中的资源,而系统中能提供的资源是有限的,所以,必然会出现多个进程对资源的竞争情况。故所谓死锁,就是指多个进程在运行过程中因竞争资源而造成的一种僵局,若无外力作用,这些进程将无法再向前推进。下面举个例子来说明死锁问题,假设系统中有P1、P2两个并发执行的进程,P1和P2在执行中同时需要R1和R2两类资源,6.1 死死锁锁的的概概念念第 6 章死 锁其中R1是输入机,R2是打印机,P1
2、和P2的执行过程如下:第 6 章死 锁从上面的申请释放过程可以看出,进程P1和P2在执行过程中有可能会出现这种情况:例如,P2首先得到R2,然后P1得到R1,接着P1申请R2,由于资源R2已经分配给了进程P2,所以进程P1因得不到R2而被阻塞(阻塞原因是:申请R2,等待P2唤醒);若P2继续运行,将要申请R1,此时R1分配给了进程P1,则占有R2资源的进程P2将阻塞在R1上,如果P2不能前进,则P1也不能继续下去,反之亦然。此时称这两个进程处在死锁状态。第 6 章死 锁6.1.1 死锁的形成原因死锁的形成原因计算机系统中的各种资源(包括硬件资源和软件资源)都由操作系统进行管理和分配。作业在运行
3、过程中所需要的资源,可以在调度到某个作业时,根据作业提出的要求(例如,需要多少主存空间和需要哪些外围设备等)来进行分配;此外也可以是在进程执行时,根据各个进程的执行情况动态地申请资源(例如,请求读某个文件、请求扩充主存区域以及请求使用打印机输出结果等)。第 6 章死 锁前面的章节中介绍的对各类资源的管理和分配技术,主要目的是要充分发挥各个资源的作用,提高资源的利用率。当多个进程竞争共享资源时,还可以采用必要的措施来实现资源的互斥使用和保证进程能在有限的时间内获得所需的资源。但是,这些管理和分配都是根据作业或进程对某类或某个资源的需求来进行分配和调度的,而没有考虑一个进程已经占有某些资源后又要申
4、请其他资源时会发生怎样的情况。实际上,计算机系统中有限的资源与众多请求系统分配资源的进程之间会存在着矛盾。第 6 章死 锁当若干进程需求资源的总数大于系统能提供的资源数时,多个进程间就会出现竞争资源的现象,如果对进程竞争的资源管理或分配不当就会引起死锁。死锁产生的根本原因在于系统中的资源不能满足所有进程的需要,如果系统中的资源足够多,多到可以满足所有进程的需求,那么系统中的进程就不会因申请资源而陷入阻塞状态,即不会产生死锁。第 6 章死 锁1资源分配图资源分配图计算机系统中拥有着大量的资源,这些资源是在操作系统的统一管理和控制下进行分配和回收的。在多道环境下,系统中多个进程共享系统资源,而系统
5、资源是有限的,所以会导致多个进程对于资源的竞争。为了便于理解死锁的概念,在这里引入一个新的内容资源分配图。第 6 章死 锁资源分配图是由一组结点N和一组边E所组成的点对集合,即G=(N,E),具有下述定义和限制:(1)N是两个互斥的子集,一组是进程结点P=P1,P2,P3,一组是资源结点R=R1,R2,R3,N=PR。(2)E中的每条边连接P中的一个结点和R中的一个结点。如果E中的一条边e=Pi,Rj,表示进程Pi请求资源Rj;第 6 章死 锁如果E中的一条边e=Rj,Pi,表示资源Rj已经分配给了进程Pi。在资源分配图中用圆圈代表进程,方框代表一类资源。由于一类资源可能有多个,在方框中用一个
6、点来代表一类资源中的一个资源。请求边是由进程指向资源,分配边是由资源指向进程。图6-1所示的是一个资源分配图,表示进程P1和P2共享两类资源R1和R2,其中R1类资源有2个,一个分配给了进程P1,R2资源分配给进程P2。图中有两条请求边(P1,R2)与(P2,R1)和两条分配边(R1,P1)与(R2,P2)。第 6 章死 锁图6-1 资源分配图第 6 章死 锁【例6-1】现假定有3类资源R1,R2,R3,其中R1和R3都只有1个资源,R2有2个资源。有3个进程P1,P2,P3,每个进程占用资源和等待资源的情况如表6-1所示。第 6 章死 锁表表6-1 进程和资源的分配情况进程和资源的分配情况第
7、 6 章死 锁于是,可做出如图6-2所示的资源分配图。图6-2 资源分配图第 6 章死 锁2.形成原因形成原因死锁产生的根本原因是由于系统资源不足以满足所有用户的所有的资源需求,因此,进程在执行过程中将会产生对资源的竞争使用情况。死锁的形成原因主要有以下两种:1)竞争资源系统中并发执行的进程共享着系统中的资源,系统中的资源数不足以满足所有进程的最大需求,所以进程间会竞争资源,从而才有可能出现进程间相互等待对方资源的情况。如图6-1所示,资源R2分配给了进程P2,而进程P1在运行时也需要资源R2,即请求R2。这样进程P1和P2就要竞争资源R2。第 6 章死 锁2)进程推进顺序不当进程具有异步性,
8、进程是以“停停走走”的步骤向前推进着,所以可能使得进程按着下述两种顺序向前推进。(1)进程推进顺序合理。如图6-3所示,有两个并发执行的进程P1和P2,共享两个资源R1和R2。X轴方向表示进程P1向前推进,Y轴方向表示进程P2向前推进,进程在推进过程中将申请或释放资源。在图6-3中如果进程P1和P2按照曲线、和的顺序向前推进,则两个进程都可以顺利完成,这种进程的推进顺序也不会引起死锁。第 6 章死 锁图6-3 进程推进顺序对死锁的影响第 6 章死 锁下面以曲线为例来分析一下进程执行过程:初始情况下资源R1和R2空闲。曲线表示进程P1先占有处理机执行,在执行过程中当执行到Request(R1)时
9、,表示进程P1将申请资源R1,此时R1空闲,进程P1得到满足可以继续执行;当执行到Request(R2)时,表示进程P1申请资源R2,也可以得到满足,继续执行;当执行到Release(R1)时,表示释放R1;当执行到Release(R2)时,表示释放R2;此后,进程P2将占有处理机。第 6 章死 锁P2占有处理机后,申请R2能够得到满足(P1执行结束已经释放了R1和R2,R1和R2空闲)继续执行,申请R1可以得到满足继续执行,释放R2,再释放R1。曲线、的情况和情况类似,进程都可顺利完成,不会陷入死锁状态。(2)进程推进顺序不当。如图6-3所示,如果进程P1和P2按照曲线的顺序推进,它们将会进
10、入阴影区。这时P1保持了R1,P2保持了R2,而P1和P2不论是谁占有处理机继续运行都将要申请另一个资源却又得不到,将进入阻塞状态,这时系统有可能死锁。第 6 章死 锁6.1.2 产生死锁的必要条件产生死锁的必要条件 死锁将会给计算机系统带来很大的麻烦,如果系统中并发执行的进程陷入死锁的状态,不仅涉及到死锁的那些进程无法再继续执行下去,而且还将妨碍其他进程的执行,甚至会导致系统的瘫痪。因此解决死锁就越发显得必要了。要解决死锁,应先分析在什么情况下可能发生死锁,从上述的例子中可以看出,产生死锁有如下4个必要条件。第 6 章死 锁1.互斥条件互斥条件并发执行的进程共享着系统中的资源,而进程对资源是
11、排它使用的,即在某段时间内每一个资源只能给一个进程使用。如果有某一个进程申请资源,该资源却被其他进程占有,则申请者必须等待,直到占有该资源的进程释放为止。2.不可剥夺条件不可剥夺条件不可剥夺,即不可抢占性,指的是当资源被某个进程占有后,除非此进程使用完毕释放了该资源,否则就不能被其他的进程强行抢占。第 6 章死 锁3.请求与保持条件请求与保持条件请求指的是进程申请资源,保持指的是进程已经拥有了部分资源。进程具有异步性,拥有部分资源就可以运行,那么在运行过程中必然要申请其他资源。4.环路等待条件环路等待条件一旦发生死锁,系统中的进程和资源之间必然形成了一条封闭的环路。如图6-2所示,各进程占用和
12、等待资源的情况没有形成环路,因而没有死锁发生。但是,如果进程P3又提出申请一个R2类资源的要求,由于当前R2中没有可被分配的资源,因此,要增加一条有向边P3R2,如图6-4所示。第 6 章死 锁图6-4 资源分配图(有环有死锁)第 6 章死 锁从图6-4中可看出进程P2在等待被进程P3占用的资源R3,进程P3在等待被进程P1或P2占用的资源R2,进程P1又在等待被进程P2占用的资源R1。于是,存在两条环路:P1R1P2R3P3R2P1P2R3P3R2P2这两条环路使进程P1,P2,P3等待资源的状态永远结束不了,这三个进程陷入死锁状态。因此,系统一旦发生死锁,进程和资源之间就形成了一条封闭的环
13、路。第 6 章死 锁图6-5 资源分配图(有环无死锁)第 6 章死 锁环路等待条件是死锁产生的必要条件而不是充分条件,即进程和资源之间形成环路却不一定会产生死锁。如图6-5所示,也存在一条环路:P1R1P3R2P1。但是,这条环路不形成死锁。因为进程P1和进程P3分别等待R1和R2类中的资源,由于进程P2和进程P4不再申请其他资源,它们能在有限时间里执行结束并归还 R1类和R2类资源,归还的资源可以分配给进程P1和进程P3。显然进程P1和进程P3也不会永远处于等待资源的状态。因此可以得出环路等待条件是死锁产生的必要条件而不是充分条件。第 6 章死 锁6.1.3 处理死锁的基本方法处理死锁的基本
14、方法上述是死锁的4个必要条件,即系统一旦发生死锁,上述条件必然成立;反之,如果上述条件之一不成立,则死锁就不会发生。根据上述分析,如果死锁发生,系统中的进程僵持不下,都处于阻塞的状态而无法运行结束,就会浪费大量的系统资源,甚至导致系统崩溃,因此必须要解决死锁问题。从理论上讲,解决死锁并不是很难,只要消除上述任一个条件就可以了。操作系统的设计者们研究了许多方法,主要提出了以下几种方法。第 6 章死 锁1.预防死锁预防死锁通过设置某些限制条件,破坏产生死锁的四个必要条件中的一个或几个条件,来预防发生死锁。预防死锁是一种比较容易实现的方法,已被广泛使用。但由于所施加的限制条件有时太严格,可能导致系统
15、资源利用率和系统吞吐量降低。2.避免死锁避免死锁不需要预先采取各种措施去破坏产生死锁的必要条件,而是在资源的动态分配过程中,采取某种措施去防止系统进入不安全状态,从而避免发生死锁。这种方法只需要在事先加以较弱的限制条件,便可获得较高的资源利用率及系统吞吐量,但在实现的过程中有一定的难度。在目前较完善的系统中,常用此方法来避免发生死锁。第 6 章死 锁3.检测死锁检测死锁这种方法预先并不采取任何措施,也不检查系统是否已经进入了不安全区,此法允许系统在运行过程中发生死锁。但可通过系统设置的检测机构,及时地检测出死锁的发生,并精确地确定与死锁有关的进程和资源,然后采取适当措施,从系统中将已经发生的死
16、锁清除掉。第 6 章死 锁4.解除死锁解除死锁这是与检测死锁相配套的一种措施,用于将进程从死锁的状态下解脱出来。常用的措施是撤销或挂起一些进程,以便回收一些资源,再将这些资源分配给已经处于阻塞状态的进程,使之转为就绪状态继续运行。第 6 章死 锁6.2.1 死锁的预防死锁的预防死锁的预防是解决死锁的一种静态策略,它是通过采取某些措施,破环死锁的4个必要条件,从而达到防止死锁的目的。6.2 死锁的预防和避免死锁的预防和避免 第 6 章死 锁1.破坏互斥条件破坏互斥条件死锁产生的4个必要条件中第1个条件是互斥条件,要使互斥使用资源的条件不成立,唯一的办法是允许进程共享资源。“只读”文件是一种很好的
17、共享资源,多个进程可以同时打开一个“只读”文件,同时对该文件执行“只读”操作,因而进程在使用“只读”文件时不会成为等待状态。但是,在计算机系统中大多数资源都是必须互斥使用的,这是由资源本身的固有特性决定的,要求进程对于某些资源的访问必须是排它的。第 6 章死 锁2.破坏不可剥夺条件不可剥夺条件是指不允许进程抢夺已经被分配的资源。为了使这个条件不成立,进程在运行过程中可能已经拥有了部分资源,在运行中还要请求新的资源,如果一个进程在请求新资源时,不能立即得到满足,那么在其改为阻塞状态之前,必须释放其占有的全部资源,以后如果再需要,再重新申请。这样就破坏了不可剥夺条件。抢夺策略的具体做法如下:(1)
18、若进程A申请的资源r已被进程B占用,则查看进程B的状态。如果进程B处于等待另一个资源的状态,那么就抢夺进程B已占的资源r并把r分配给进程A;如果进程B不是处于等待资源状态,则让进程A处于等待资源r的状态。第 6 章死 锁(2)一个等待资源的进程只有在得到自己所申请的新资源和所有被抢夺的老资源后才能继续执行。这种可抢夺的资源分配策略不是对所有资源都适用的,例如,对打印机、磁带机等就不能采用抢夺的方式,否则会造成使用混乱。目前抢夺式的分配策略只适用于主存空间和处理机。例如,当若干进程都请求扩充主存空间得不到满足而处于等待时,为防止永远等待的发生,系统就可抢夺某进程已占的主存空间分配给一个等待主存资
19、源的进程,使该进程得到足够的主存空间后能执行到结束,然后归还所占的全部主存空间,系统再把收回的主存空间分配给被抢夺了主存空间的进程或其他等待主存空间的进程,使它们能继续执行。第 6 章死 锁对处理机的分配中,“时间片轮转”和“可抢占的优先数调度”算法就是抢夺式的分配处理机的策略。此外,一个占有处理机的进程在申请其他资源得不到满足时,系统把该进程置成等待资源的状态,也就是抢夺了该进程使用处理机的权力,把处理机分配给其他的进程使用。通过破坏“不可剥夺”条件来实现预防死锁的目的是比较困难的,需要系统花费时间在进程之间进行资源的协调分配,此外,被剥夺资源的进程可能要长期处于等待的状态,系统吞吐量降低。
20、第 6 章死 锁3.破坏请求与保持条件破坏请求与保持条件操作系统将每个进程在执行过程中需要的全部资源一次性分配,这种资源分配的策略称为“静态分配”,该方法是预防死锁发生的最简单的方法。如果某个进程所需要的资源系统能全部满足,系统就一次性将所需的资源全部分配给该进程,这样,进程在运行过程中就不会再提出新的资源要求,当进程运行结束将释放其占有的全部资源。如果某个进程所需要的资源不能全部满足,那么系统将不分配给该进程任何资源,让该进程处于等待状态。通过这种方法,处于等待状态的进程不占有任何资源,运行状态的进程也不会因请求资源得不到满足而进入等待状态。这样,就破坏了请求与保持条件,系统也不会陷入死锁。
21、静态分配资源的策略实现起来简单,但却降低了资源的利用率。第 6 章死 锁4.破坏环路等待条件破坏环路等待条件操作系统在进行分配时,通过采用有序资源分配法来破坏环路等待条件。该方法的基本思想是把系统中所有资源顺序编号,例如,磁带机=1,打印机=2,输入机=3,等等。要求任何一个进程在申请两个以上的资源时,必须严格按照资源编号递增的顺序申请资源,即每个进程只有在较低编号的资源请求得到满足后,它才能提出对较高编号的资源的申请,否则系统不予分配。第 6 章死 锁进程PB,使用资源的顺序是R2,R1;若采用动态分配有可能形成环路条件,造成死锁。若采用有序资源分配法,R1的编号为1,R2的编号为2,则:P
22、A申请次序应是R1,R2;PB申请次序应是R1,R2。这样就破坏了环路等待条件,避免了死锁的发生。第 6 章死 锁采用按序分配策略的最大困难是怎样合理地给各个资源编号,通常应按大多数进程使用资源的次序来给资源顺序编号。但是,总会有一些进程使用资源的次序与系统确定的资源编号的顺序不一致,就会出现后使用的资源必须先申请,先得到的资源可能在较长的时间里是空闲的,明显降低了资源的使用率。例如,某个进程要先使用打印机,再使用磁带机,根据按序分配的思想,该进程必须先申请到磁带机以后才能申请打印机,从而造成磁带机的浪费。第 6 章死 锁6.2.2 系统的安全状态系统的安全状态 死锁的避免是不去理会死锁产生的
展开阅读全文