操作系统之产生死锁的原理及必要条件

一、死锁的定义
1、在多道程序系统中,虽可以借助多个进程的并发执行提高资源利用率和系统吞吐量,但可能由于进程运行过程中因争夺资源而产生的一种僵局----死锁(Deadlock)。
当进程处于这种僵持状态时,若无外力作用,它们都将无法再向前推进。
2、死锁产生的原理:当一组进程中的每个进程都在等待某个事件发生,而且只有这组进程中的其他进程才能触发该事件,这组进程发生了死锁。
3、对于死锁的几个要点:
多道环境过程并发执行、竞争资源、进程无法向前推进(相互等待)造成进程阻塞(进程阻塞产生的原因:只是因为资源分配不足),死锁不具有可在现性(如果再次执行相同的一组进程,但是组内进程的执行顺序不同,不一定会产生死锁)。
4、产生死锁的原因:
竞争资源引起进程死锁
可剥夺和非剥夺性资源
1)可剥夺性资源
是指进程在获得这类资源后,该资源可以再被其他进程或系统剥夺,如处理机、内存等
不可剥夺性资源
2)是指当系统把这类资源分配给某个进程后,再不能强行收回,只能在进程用完后自行释放,如磁带机、打印机等
竞争非剥夺性资源
1)系统中的非剥夺性资源由于数量有限而不能满足进程运行的需要,进程在运行过程中因争夺这些资源而限入僵局竞争临时性资源
2)临时性资源区别于永久性资源,指由一个进程产生,被另一进程被另一进程使用后就再也无用的资源,也称为消耗性资源

进程推进顺序不当引起的死锁

在这里插入图片描述
若并发进程P1和P2按曲线④所示的顺序推进,它们将进入不安全区D内。此时P1保持了资源R1,P2保持了资源R2,系统处于不安全状态。因为这时两进程再向前推进,便可能发生死锁。
例如,当P1运行到P1Request(R2)时,将因R2已被P1占用而阻塞;当P2运行到P2Request(R1)时,也将因R1已被P1占用而阻塞,于是发生了进程死锁。
5、死锁产生的根本原因:
进程所需求的资源量>系统资源量
进程推进顺序不合理(非法)
6、产生死锁的四个必要条件
必要的意思就是都要满足,缺一不可,才能发生
第一、互斥条件:某种资源一次只允许一个进程访问,及该资源一旦分配给某个进程,其他进程就不能在访问直到该进程结束。
也就是说该进程访问的是临界资源。
第二、请求和保持条件:进程至少保持一种资源,但又提出了新的资源请求,而该资源又已经被其他进程占有。(占有且等待,占有本身所拥有的资源,等待其他进程释放自身所需要的资源)
第三、不可抢占条件:其他进程已经占有了某项资源,不可以因为这个进程也需要该资源就去把其他进程已经所拥有的资源抢占过来。
第四、环路等待条件:在发生死锁时,必然存在一个进程—资源循环等待的环形链。(每个进程都占有下一个进程所需要的至少一种资源)
当这四个条件都满足时,必然会造成死锁,发生死锁的进程无法进行下去,他们所持有的资源也无法释放,导致cpu吞吐率下降,产生浪费系统资源且影响计算机性能等不利事件。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值