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