死锁基本概述

死锁出现的条件

在这里插入图片描述
有死锁肯定同时满足这四个条件,但是这四个条件出现不一定出现死锁

举例:
在这里插入图片描述

死锁处理方法

  • 确保系统永远不会进入死锁状态
  • 运行系统进入死锁状态,然后恢复
  • 忽略这个问题,假装系统中从来没有发生死锁;用于大多数操作系统,包括unix。
死锁预防
1.限制申请方式
  • 互斥-共享资源不是必须的,必须占用非共享资源。

  • 占用并等待 -必须保证当一个进程请求的资源,它不持有任何其他资源。(只有申请的所有资源都能分配才申请成功)

    • 1.需要进程请求并分配其所有资源,它开始执行之前或允许进程请求资源仅当进程没有资源。
    • 2.缺点:资源利用率低:可能发生饥饿。因为进程在整个执行过程,在不同的阶段可能需要不同的资源,若一开始就占用后所有资源,会造成其他进程缺乏资源。
  • 无抢占-: 1.如果进程占有某些资源,并请求其它不能被立即分配的次元,则释放当前正在占有的资源
    2.被抢占资源添加到资源列表中
    3.只有当它能够过得旧的资源以及它请求新的资源,进程可以得到执行

  • 循环等待- 对所有资源类型进行排序,并要求每个进程按照资源的顺序进行申请。

2.死锁避免

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

银行家算法

背景:
在这里插入图片描述
算法前提条件:
在这里插入图片描述
也就是所有进程都能够正常的结束。通过safe或者unsafe来判断是否安全。

算法数据结构:
![在这里插入图片描述](https://img-blog.csdnimg.cn/013fbfe0c7a24afea8fb6630bdc370f5.png
算法设计:
在这里插入图片描述
其中FInish是判断一个进程是否有足够的资源来正常结束,true代表已结束

![在这里插入图片描述](https://img-blog.csdnimg.cn/886605cd963f47bf831e75892600607c.png
例子:
在这里插入图片描述
这个实例是安全的,因为可以给p2分配R3,然后p2会被释放,则Avaliable有资源来释放P1或者其它进程。
例子二:
分配前
在这里插入图片描述
分配后
在这里插入图片描述
这个就不是安全的,因为现有的资源满足不了四个进程的任意一个,所以上一次分配资源的操作时不安全的,所以操作系统不允许P1上次发的请求。

3.死锁检测
  • 允许系统进入死锁状态
  • 死锁检测算法(允许进程在运行中检测和判断死锁)
  • 恢复机制(若进入死锁)

IPC概述(进程间通信)

在这里插入图片描述
a图通过系统内核进行通信:间接通信
b通过共享内存进行通信:直接通信

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
同步分送表示发送完成才返回继续工作,否则阻塞。而异步是发送完就不管了,也不管是否发送成功,但是send会很快返回

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值