死锁

一、基本概念

操作系统中多道进程的并发执行可以改善系统的资源利用率,但也可能导致死锁的发生。如果有若干进程并发执行,它们不断申请、使用、释放系统资源,虽然系统的进程协调。通信机构会对它们进行控制,但也可能出现若干进程都相互等待对方释放资源才能继续进行,否则就阻塞的情况。此时,若不借助外界因素,谁也不能释放资源,谁也不能解除阻塞状态。根据这样的情况,操作系统中的死锁被定义为系统中两个或多个进程无限期地等待永远不会发生的条件,系统处于停滞状态,这种现象叫做进程死锁,这一组进程成为死锁进程,

二、产生死锁的几个例子:
1、竞争临时性资源引起的死锁例子如进程通信,如果消息通信按如下顺序进行:

P1:···Relese(S1);Request(S2);···

P2:···Relese(S2);Request(S1);···

并不可能发生死锁。但若改成下述的运行顺序:

P1:···Request(S2);Relese(S1);···

P2:···Request(S1);Relese(S2);···

则可能发生死锁。
2、竞争不可剥夺资源

在系统中所配置的不可剥夺资源,由于它们的数量不能满足诸进程运行的需要,会使进程在运行过程中,因争夺这些资源而陷于僵局。例如,系统中只有一台打印机R1和一台磁带机R2,可供进程P1和P2共享。假定PI已占用了打印机R1,P2已占用了磁带机R2,若P2继续要求打印机R1,P2将阻塞;P1若又要求磁带机,P1也将阻塞。于是,在P1和P2之间就形成了僵局,两个进程都在等待对方释放自己所需要的资源,但是它们又都因不能继续获得自己所需要的资源而不能继续推进,从而也不能释放自己所占有的资源,以致进入死锁状态。

由此,我们可以发现产生死锁的原因主要是:
1,因为系统资源不足;
2,进程运行推进的顺序不合适;
3,资源分配不当等。

三、关于死锁的一些结论
1,参与死锁的进程最少是两个,即两个以上进程才会出现死锁;
2,参与死锁的进程至少有两个已经占有资源;
3,参与死锁的所有进程都在等待资源;
4,参与死锁的进程是当前进程中所有进程的子集;
5,如果死锁发生,会浪费大量系统资源,甚至导致系统崩溃、

四、产生死锁的4个必要条件

(1) 互斥条件:一个资源每次只能被一个进程使用。
(2) 请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放。
(3) 不剥夺条件:进程已获得的资源,在末使用完之前,不能强行剥夺。
(4) 循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系。

五、死锁的预防–解决死锁的静态方法
1、破坏不可剥夺条件
在允许进程动态申请资源前提下规定,一个进程在申请新的资源不能立即得到满足二变为等待状态之前,必须释放已战友的全部资源,若需要再重新申请。
2、破坏”请求和保持“条件
要求每个进程在运行前必须一次性申请它所要求的所有资源,且仅当改进程所要资源均可满足时,才给予一次性分配。
3、破坏”循环等待“条件
即采用资源有序分配法,把系统中所有资源编号,进程在申请资源时必须严格按资源编号的递增顺序进行,否则操作系统不予分配。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值