进程死锁

1、概念
各进程相互等待对方手里的资源,导致各进程都阻塞,无法向前推进的现象。
2、死锁产生的必要条件
(1)互斥条件
(2)不可剥夺条件(不能强行被夺走)
(3)请求和保持条件(已经至少保持了一个资源,同时一直请求另一个资源)
(4)循环等待条件(存在资源的循环等待链)
3、对不可剥夺资源的不合理分配就可能导致死锁
4、死锁的处理策略
(1)预防死锁
破坏产生死锁的四个必要条件中的一个或几个

  • 破坏互斥条件
    把只能互斥使用的资源改造为共享使用,如SPOOLing技术
    缺点:适用范围窄,很多互斥资源不能改造为共享资源
  • 破坏不可剥夺条件
    方案一:当某个进程请求的资源得不到满足时,主动释放所保持的资源
    方案二:当某个进程需要的资源被其他进程占有时,可由操作系统协作对想要的资源,强行剥夺,但是一般要考虑优先级
    缺点:实现复杂;可能造成某些工作前一阶段失败;增加系统开销;可能导致进程饥饿
  • 破坏请求和保持条件
    采用静态分配方法,进程运行前一次性请求完它所需的全部资源
    缺点:资源利用率低;可能导致某些进程饥饿
  • 破坏循环等待条件
    采用顺序资源分配法,首先给系统中的资源编号,规定每个进程必须按编号递增的顺序请求资源,同类资源一次性申请完,则只有可能小编号等待大编号的进程,不会出现大编号等待小编号进程的现象
    缺点:不方便增加新的设备;进程实际使用资源的顺序可能与编号不一致导致资源浪费;用户变成麻烦

(2)避免死锁
用某种方法防止系统进入不安全状态,如银行家算法

  • 安全序列、不安全状态与死锁的联系
    安全序列是指,如果系统按照这种序列分配资源,每个进程都能顺利完成,在安全状态下系统一定不会死锁,
    如果分配了资源后,系统找不出任何一个安全序列,则系统进入了不安全状态,在该状态下可能会发生死锁。

  • 银行家算法
    在进程提出资源申请时,先预判此次分配是否会导致系统进入不安全状态。如果会进入不安全状态,则不相应该请求,让该进程阻塞。

(3)死锁的检测和解除
允许死锁的发生,然后检测出死锁,再解除死锁

  • 死锁的检测
    用某种数据结构来保存资源的请求和分配信息(资源分配图)

  • 死锁的解除
    资源剥夺法,挂起某些死锁进程;
    撤销进程法;
    进程回退法;

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值