CSAPP-6-死锁

资源

  • 需要互斥(排他性)使用的资源叫做资源。
  • 资源可以是硬件设备或者一组信息。

进程对设备、文件进行互斥(排他Exclusive)的访问时候,可能会出现死锁。

资源的分类
  1. 可抢占资源:从拥有它的进程抢占而不会产生副作用,如存储器。
  2. 不可抢占资源:无法在不引起计算失败的情况下,把他从占有它的进程抢过来。如内存。

死锁与不可抢占资源有关。

使用资源的事件顺序
  1. 请求资源
  • 请求失败时:可能被阻塞,可能等待然后重试。不同操作系统的处理不同。
  1. 使用资源
  2. 释放资源
死锁的建模表示方法:资源分配图

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

死锁简介

  • 死锁定义:如果一个进程集合中的每个进程都在等待只能由该进程集合中的其他进程才能引发的事件,那么,该进程集合就是死锁的。
资源死锁
  • 定义: 每个进程所等待的事件时释放进程集合中其他进程已经占有的资源。也就是,这个进程集合中的每个进程都在等待另一个死锁进程已经占有的资源。
  • 资源死锁发生必须同时满足下面四个条件
    1. 互斥条件。
    2. 占有和等待条件。
    3. 不可抢占条件。
    4. 环路等待条件。

预防死锁就是通过破坏上面的条件实现的

鸵鸟算法:忽略死锁

  • 当死锁发生的频率低、严重性不高,可以选择忽略该问题。

死锁的检测与恢复

  • 系统允许思索发生,检测到死锁后,采取措施恢复。
死锁检测算法
  • 假设资源类型个数为m
  • E(E1,E2,E3…Ei)是现有资源向量,Ei代表资源类型i的资源个数。
  • A(A1,A2,A3…Ai)是可用资源向量,Ai表示当前可以使用的资源数(没有分配的资源)。
  • C是当前分配矩阵:Cij代表进程Pi所持有资源j的数量。
  • R请求矩阵:Rij代表Pi所需要的资源j的数量。
    在这里插入图片描述
    死锁检测算法
    1 ) 寻找一个没有被标记的进程Pi,满足Ri小于等于A
    2 ) 如果找到了这样的进程,将C矩阵的第i行向量加到A中,标记该进程,转到1 )
    3 ) 如果没有找到,算法终止
    算法结束时,没有被标记过的进程都是死锁进程。
    在这里插入图片描述
死锁的恢复:成功检测到死锁后的操作
  1. 利用抢占恢复:将某个资源从当前所有者那里转移给另一个进程。
  2. 利用回滚恢复:周期性的进程检查点检查。死锁发生后,从最近的检查的恢复。
  3. 通过杀死进程恢复:直接杀死一个或者若干个环中的进程。

死锁避免

假设一个进程请求资源,一次就请求所有资源。

  • 避免思索地算法基于一个安全状态的概念。
安全状态
  • 当前状态的定义:当前状态包括了E、A、C、R。如果没有死锁发生,并且所有进程突然请求对资源的最大需求,也还存在着某种调度次序能够使得一个进程运行完毕,则该状态是安全的。
    在这里插入图片描述
    在这里插入图片描述

安全状态与不安全状态的区别:从安全状态触发,系统能保证所有进程都能够完成;从不安全状态出发,就不能保证。

银行家算法
  • 已分配资源矩阵
  • 还需要的资源矩阵
  • E:系统现有资源
  • P: 系统已经分配资源
  • A:系统可用资源
    在这里插入图片描述
    检查安全性的算法步骤:
  1. 从需要的资源矩阵中,找到是否有资源数小于等于A的一行。如果不存在,会死锁,
  2. 如果找到了,假设他获得资源并结束,把他标记为终止,并且把他的已分配资源加到A上。
  3. 重复上面两步,如果所有进程标记都是终止,初始状态就是安全的,否则发生死锁。

思考?是否存在多个满足的进程,然后其中一个满足安全状态,一个不满足安全状态。

死锁预防

  1. 破坏互斥条件
  • 资源不被一个进程独占。采用脱机打印机技术,允许多个进程同时输出。真正使用打印机的是打印机守护进程。
  1. 破坏占有并等待条件。开始执行前,请求所需的全部资源。或者,在一个进程请求资源时候,先释放当前左右资源,再次尝试一次获得所需的全部资源。
  2. 破坏不可抢占条件
  3. 破坏环路等待条件。对资源进行编号。
条件处理方式
互斥一切都使用假脱机技术
占有和等待在开始之前就请求全部资源
不可抢占抢占资源
环路等待对资源进行编号
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Proxy(代理)是一种在计算机网络中广泛应用的中间服务器,用于连接客户端和目标服务器之间的通信。Proxy csapp是一个与计算机系统应用(Computer Systems: A Programmer's Perspective)相关的代理服务器。 Proxy csapp的设计目的是为了提供更高效的网络通信,增强系统的安全性,并提供更好的用户体验。在Proxy csapp中,客户端的请求首先会被发送到代理服务器,然后由代理服务器转发给目标服务器,并将目标服务器的响应返回给客户端。这种中间层的机制可以提供很多功能,如缓存、负载均衡、安全认证等。 在csapp中,Proxy csapp可以被用于优化网络数据传输的效率。代理服务器可以对客户端请求进行调度和协商,以减少网络延迟和数据传输量。通过缓存常用的数据和资源,代理服务器可以减少重复的数据传输和目标服务器的负载,提高网络性能和响应速度。 此外,Proxy csapp还可以提供安全的网络通信环境。代理服务器可以拦截和过滤网络流量,用于检测和阻止恶意攻击、垃圾邮件等网络安全威胁。代理服务器还可以对用户进行身份验证和授权,保护敏感数据的安全性。 最后,通过Proxy csapp可以实现更好的用户体验。代理服务器可以根据用户的需求进行个性化的服务,如按地理位置提供更快的网络连接、提供访问限制和控制等。代理服务器还可以对网络流量进行压缩和优化,提高网络传输效率,减少用户的等待时间。 总之,Proxy csapp在计算机系统应用中是一个重要的代理服务器,它可以提供高效的网络通信、增强系统的安全性,并带来更好的用户体验。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值