进程管理6(死锁问题、线程)

进程管理6(死锁问题、线程)

ID:46978883

大小:283.50 KB

页数:82页

时间:2019-12-02

进程管理6(死锁问题、线程)_第1页
进程管理6(死锁问题、线程)_第2页
进程管理6(死锁问题、线程)_第3页
进程管理6(死锁问题、线程)_第4页
进程管理6(死锁问题、线程)_第5页
资源描述:

《进程管理6(死锁问题、线程)》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、3.5死锁问题在多道程序系统中,多个进程并发运行,共享资源,从而提高了资源的利用率。但是若对资源的管理和使用不当,在一定条件下会导致系统发生一种随机性故障――死锁。在一些系统中,比如实时控制系统,系统一旦发生死锁将导致灾难性的后果。3.5.1死锁的基本概念资源死锁的定义产生死锁的原因产生死锁的必要条件处理死锁的基本方法资源的概念OS是计算机系统中资源的管理者,而进程是竞争资源的基本单位,故对系统中所有进程的资源分配工作,都由OS完成。研究资源分配时,我们必须搞清该资源是可以被几个进程同时使用

2、,还是只能为一个进程使用,资源的不同使用性质正是引起系统死锁的原因。根据资源性质:可剥夺(抢占)和不可剥夺(抢占)资源。可抢占资源—指资源占有进程虽然需要使用该资源,但另一个进程却强行把资源从占有者进程处抢来。不可抢占资源—指只有占用者进程不再需要使用该资源而主动释放资源外,其它进程不得在占有者进程使用资源过程中强行抢占。资源的分类根据使用方式:共享资源和独享资源。根据使用期限;永久资源和临时性资源。资源CPU、主存、硬盘:该类资源可为几个进程共同使用(可抢占)打印机,读卡机,磁带驱动器:可为某个进程独

3、享(不可抢占)可重复使用的资源由一个进程产生,被另外一个进程使用短暂时间之后便无用的资源死锁的定义死锁Deadlock:是计算机系统中多道程序并发执行时,两个或两个以上的进程由于竞争资源而造成的一种互相等待的现象(僵局),如无外力作用,这些进程将永远不能再向前推进。陷入死锁状态的进程称为死锁进程,所占用的资源或者需要它们进行某种合作的其它进程就会相继陷入死锁,最终可能导致整个系统处于瘫痪状态。判断1参与死锁的所有进程都占有资源2参与死锁的所有进程均正在等待资源3参与死锁的所有进程中至少有两个进程占有资

4、源4参与死锁的进程至少有两个参与死锁的进程最少是两个(两个以上进程才会出现死锁)参与死锁的进程至少有两个已经占有资源参与死锁的所有进程都在等待资源参与死锁的进程是当前系统中所有进程的子集注:如果死锁发生,会浪费大量系统资源,甚至导致系统崩溃关于死锁的一些结论产生死锁的原因1竞争资源。当系统中供多个进程所共享的资源,不足以同时满足它们的需要时,引起它们对资源的竞争而产生死锁;2进程推进的顺序不当。进程在运行过程中,请求和释放资源的顺序不当,导致进程的死锁。竞争资源1竞争非剥夺性资源:2竞争临时性资源打印

5、机R1磁带机R2P1P2P1S1S3P2P3S2P1:Release(S1);Request(S3)P2:Release(S2);Request(S1)P3:Release(S3);Request(S2)不可能发生死锁P1:Request(S3);Release(S1)P2:Request(S1);Release(S2)P3:Request(S2);Release(S3)可能发生死锁S1、S2、S3是临时资源例:进程P1、P2并发执行。共享资源R1、R2②P2Rel(R1)P2Rel(R2)P2Req(

6、R1)P2Req(R2)P1Req(R1)P1Req(R2)P1Rel(R1)P1Rel(R2)③④③③③②①①曲线4将进入不安全区域(进程推进顺序非法)死锁模型R1R2P1P2申请r2已分配给p2申请r1已分配给P1R2已经分配给P1、R1已经分配给P2产生死锁的四个必要条件⑴互斥条件:进程访问的是临界资源,那个资源一次只能被一个进程所使用。⑵不剥夺条件:一个资源仅能被占有它的进程所释放,而不能被其他进程剥夺。⑶部分分配:(请求和保持条件)一个进程在请求新的资源的同时,保持对某些资源的占有。⑷环路等

7、待条件:存在一个进程的环路链,链中每一个进程占用有着某个或某些资源,又在等待链中的另一个进程占有的资源。生产者—消费者问题avail-生产者用信号量,记录缓冲区空单元个数。Full—消费者信号量,记录产品个数。Mutex—互斥信号量。deposit(data)remove(data)beginbeginp(avail)p(full)p(mutex)p(mutex)送数据入缓冲区某取缓冲区中某单元单元数据v(full)v(avail)v(mutex)v(mutex)endend在前述若pv操作使用不当,会

8、引起死锁。把生产者进程两个p操作次序调换一下,先执行P(mutex),后执行P(avail)P(mutex)互斥P(avail)判断缓冲区满,不能送,从消费者执行。那么当缓存区满且消费者此时不再临界区中,执行到互斥P(mutex)后,消费者进程想进入临界区,但被阻塞在外。若生产者希望进入临界区,也被阻塞,于是两个进程无限止地相互等待对方来唤醒自己,两个进程陷入死锁。1、预防死锁:通过设置某些限制条件,去破坏死锁四个必要条件中的一个或多个,来

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。