第七章死锁 第7章死锁 Z.1死锁问题的提出 ■7.2死锁的必要条件 ■7.3死锁的预防 74死锁的避免和银行家算法 ■7.5死锁检测与恢复
第七章 死锁 第7章 死锁 ◼ 7.1 死锁问题的提出 ◼ 7.2 死锁的必要条件 ◼ 7.3 死锁的预防 ◼ 7.4 死锁的避免和银行家算法 ◼ 7.5死锁检测与恢复
第七章死锁 7.1死锁问题的提出 ■定义 死锁是计算机系统和进程所处的一种状态。 在系统中的一组进程由于竞争系统资源或由 于彼此通信而永远阻塞,称这些进程处于死 锁状态 ■死锁是多道程序系统中普遍存在的一种 现象
第七章 死锁 7.1 死锁问题的提出 ◼ 定义 ◼ 死锁是计算机系统和进程所处的一种状态。 在系统中的一组进程由于竞争系统资源或由 于彼此通信而永远阻塞,称这些进程处于死 锁状态 ◼ 死锁是多道程序系统中普遍存在的一种 现象
第七章死锁 7.1死锁问题的提出 死锁问题描述 例如:系统中存在的两个进程P1和P2,它们在执行 中都需要某种资源R1和R2(如磁盘和打印机);由 于对资源申请的顺序等其它原因,某时刻进程P1得 到了资源R1,进程P2得到了资源R2;而进程P1必 须得到R2才能继续执行,进程P2必须得到R1才能继 续执行,两个进程都占用了对方需要的资源,不能 释放,又都在等待对方占用的资源;这样的两个进 程只能永远的处于阻塞状态,成为死锁进程 这种情况也会发生在多个进程、多种资源上
第七章 死锁 7.1 死锁问题的提出 ◼ 死锁问题描述 ◼ 例如:系统中存在的两个进程P1和P2,它们在执行 中都需要某种资源R1和R2(如磁盘和打印机);由 于对资源申请的顺序等其它原因,某时刻进程P1得 到了资源R1,进程P2得到了资源R2;而进程P1必 须得到R2才能继续执行,进程P2必须得到R1才能继 续执行,两个进程都占用了对方需要的资源,不能 释放,又都在等待对方占用的资源;这样的两个进 程只能永远的处于阻塞状态,成为死锁进程。 ◼ 这种情况也会发生在多个进程、多种资源上
第七章死锁 进程的进展 释放输入机 释放打印机 禁区 死横点 占用输入机 危险区 占用打印机 占用输入机释放输入机 甲进程的进展 占用打印机释放打印机
第七章 死锁 乙进程的进展 甲进程的进展 X Y 占用打印机 占用输入机 释放输入机 释放打印机 占用输入机 占用打印机释放输入机释放打印机 死锁点 危险区禁区
第七章死锁 7.2死锁的必要条件 ■死锁的根本原因是竞争资源 ■资源:一个逻辑资源,简称资源,使之 可以引起一个进程进入等待状态的事物
第七章 死锁 7.2 死锁的必要条件 ◼ 死锁的根本原因是竞争资源 ◼ 资源:一个逻辑资源,简称资源,使之 可以引起一个进程进入等待状态的事物
第七章死锁 7.2死锁的必要条件 资源的类型 ■从资源的使用策略上分 ■可抢占资源 死锁的原因 不可抢占资源 ■从资源的使用方式上分 ■共享资源 独占资源 ■从资源的使用期限上分 永久资源 临时资源
第七章 死锁 7.2 死锁的必要条件 ◼ 资源的类型 ◼ 从资源的使用策略上分 ◼ 可抢占资源 ◼ 不可抢占资源 ◼ 从资源的使用方式上分 ◼ 共享资源 ◼ 独占资源 ◼ 从资源的使用期限上分 ◼ 永久资源 ◼ 临时资源 死锁的原因
第七章死锁 7.2死锁的必要条件 死锁的必要条件 互斥条件:一个资源一次只能被一个进程使用; 不可抢占条件:一个资源只能被占用它的资源释放, 不能被其它进程强行抢占 部分分配条件:一个进程已经占有了分给它的资源, 但仍要求其它资源; ■循环等待条件:系统中存在一个由若干进程形成的 环形请求链,其中每个进程均占有若干种资源的某 种,同时还要求下一个进程拥有的资源
第七章 死锁 7.2 死锁的必要条件 ◼ 死锁的必要条件 ◼ 互斥条件:一个资源一次只能被一个进程使用; ◼ 不可抢占条件:一个资源只能被占用它的资源释放, 不能被其它进程强行抢占; ◼ 部分分配条件:一个进程已经占有了分给它的资源, 但仍要求其它资源; ◼ 循环等待条件:系统中存在一个由若干进程形成的 环形请求链,其中每个进程均占有若干种资源的某 一种,同时还要求下一个进程拥有的资源
第七章死锁 7.3死锁的预防 ■死锁的预防就是破坏死锁的必要条件, 是它永远不能成立: 由资源本身的性 ■破坏互斥条件 质决定 ■破坏不可抢占条件 ■破坏部分分配条件 预先静态分配法 ■破坏循环等待条件 —有序资源使用法
第七章 死锁 7.3 死锁的预防 ◼ 死锁的预防就是破坏死锁的必要条件, 是它永远不能成立: ◼ 破坏互斥条件 ◼ 破坏不可抢占条件 ◼ 破坏部分分配条件 ◼ 破坏循环等待条件 由资源本身的性 质决定 ——预先静态分配法 ——有序资源使用法
第七章死锁 7.3死锁的预防 预先静态分配法 针对部分分配条件,在进程开始运行之前, 一次分配给所需要的全部资源 ■如果系统资源不能满足进程需要,则进程阻 塞直到得到所有的资源 ■缺点 降低了资源利用率 进程等待时间长
第七章 死锁 7.3 死锁的预防 ◼ 预先静态分配法 ◼ 针对部分分配条件,在进程开始运行之前, 一次分配给所需要的全部资源; ◼ 如果系统资源不能满足进程需要,则进程阻 塞直到得到所有的资源 ◼ 缺点 ◼ 降低了资源利用率 ◼ 进程等待时间长
第七章死锁 7.3死锁的预防 有序资源使用法 针对循环等待条件,系统中所有的资源按类 编号,进程只能按资源的编号顺序申请资源 ■如:进程P1已经申请到了资源R2,就不能 再申请R1,只能申请R3、R4 ■缺点 也存在资源浪费的情况 设备编号编排困难:要考虑大多数进程使用资源 的顺序;添加新的资源时要重新编号
第七章 死锁 7.3 死锁的预防 ◼ 有序资源使用法 ◼ 针对循环等待条件,系统中所有的资源按类 编号,进程只能按资源的编号顺序申请资源; ◼ 如:进程P1已经申请到了资源R2,就不能 再申请R1,只能申请R3、R4…… ◼ 缺点 ◼ 也存在资源浪费的情况 ◼ 设备编号编排困难:要考虑大多数进程使用资源 的顺序;添加新的资源时要重新编号