死锁与活锁

1 死锁概述

死锁主要是由于资源使用不当引发的。OS中存在很多不同类型的软硬件资源,而可以引发死锁的资源
主要是需要互斥访问的、不可被抢占的资源,即临界资源。下面先来简单了解下资源的分类。
资源分类
按照资源是否可重复使用划分,可以分为可重用资源与消耗性资源;按照资源在被使用过程中能否被抢
占划分,可以分为可抢占资源与不可抢占资源。

可重用资源

可重用资源是一种可供用户重复使用的资源。它具有如下性质:
每个可重用资源单元只能分配给一个进程使用,不允许多个进程共享
进程在使用可重用资源时,需按照“请求–>使用–>释放”顺序。若请求失败,则进行阻塞或忙等
系统中可重用资源单元数目是固定的,进程运行期间不能创建也不能销毁
计算机系统中大部分资源属于可重用资源。

消耗性资源

消耗性资源又称为临时性资源,是在进程运行期间由进程动态的创建与消耗的。它具有如下性质:
消耗性资源的单元数目在进程运行期间是不断变化的
进程在运行过程中可不断地创建消耗性资源单元
进程在运行过程中可不断申请消耗该资源单元,消耗完毕后无需再返回资源
典型的消耗性资源是用于进程通信的消息。

不可抢占资源

某资源被分配给某进程使用过程中,在该进程未主动出让的情况下,该资源使用权被其它进程剥夺。那
么该类型资源称为可抢占资源,例如,处理机、内存等属于可抢占资源。可抢占资源不会引发死锁。

死锁的定义

在这里插入图片描述
若一组进程中的每个进程都在等待“仅由该组进程中的其它进程才能引发的”事件,则该组进程是死锁
的,即Deadlock。

引发死锁的原因

为什么会出现死锁呢?主要有三个原因:

竞争不可抢占资源

系统中所拥有的不可抢占资源数量若不能满足多个进程运行的需要,使得进程在运行过程中会因争夺
资源而陷入僵局。

竞争可消耗资源

进程对于可消耗资源的创建与消耗过程设计不当,会使得进程的运行陷入等待的僵局。

进程推进不当

除了对资源的竞争可能会引发死锁外,进程在运行中对资源的申请与释放顺序不当也是引发死锁的一个
重要因素。

产生死锁的必要条件

一组进程在执行过程中能够发生死锁,其一定是同时具备了以下四个必要条件。

  • 互斥条件:一定存在对临界资源的竞争
  • 请求与保持条件:一个进程因请求资源而阻塞时,对已经获得的资源保持不放
  • 不剥夺条件:进程对于已获得的资源,在未主动出让其使用权时不能强行剥夺
  • 循环等待条件:这组进程间形成了一种头尾相接的循环等待临界资源的关系

若要使进程在运行过程中不产生死锁,只需要打破这四个必要条件中任意一个即可。不过,一旦发生
了死锁,系统是无法自行解开的,只能通过外力干预解除。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值