操作系统“死锁”总结笔记
1 死锁的简要解释
所谓死锁(Deadlock),是指多个进程在运行过程中因争夺资源而造成的一种僵局(DeadlyEmbrace),当进程处于这种僵持状态时,若无外力作用,它们都将无法再向前推进。
2 产生死锁的原因
(1)竞争资源(资源不足)。
(2)进程间推进顺序非法(请求和释放资源的顺序不当)。
3 产生死锁的必要条件
(1) 互斥条件:指进程对所分配到的资源进行排它性使用,即在一段时间内某资源只由一个进程占用。
(2) 请求和保持条件:指进程已经保持了至少一个资源,但又提出了新的资源请求,而该资源又已被其它进程占有,此时请求进程阻塞,但又对自己已获得的其它资源保持不放。
(3) 不剥夺条件:指进程已获得的资源,在未使用完之前,不能被剥夺,只能在使用完时由自己释放。
(4) 环路等待条件:指在发生死锁时,必然存在一个进程——资源的环形链,即进程集合{P0,P1,P2,…,Pn}中的 P0正在等待一个 P1占用的资源;P1正在等待 P2占用的资源,……,Pn正在等待已被 P0占用的资源。
4 处理死锁的基本方法
(1) 预防死锁:去破坏产生死锁的四个必要条件中的一个或几个条件。
(2) 避免死锁:在资源的动态分配过程中,用某种方法去防止系统进入不安全状态,从而避免发生死锁。
(3) 检测死锁:允许系统在运行过程中发生死锁,但通过系统所设置的检测机构,及时地检测出死锁的发生,并精确地确定与死锁有关的进程和资源; 然后,采取适当措施,从系统中将已发生的死锁清除掉。
(4) 解除死锁:与检测死锁相配套的一种措施,当检测到系统中已发生死锁时,须将进程从死锁状态中解脱出来。常用的实施方法是撤消或挂起一些进程,以便回收一些资源。
5 系统的安全状态
指系统能按某种进程顺序(P1,P2,…,Pn)(称〈P1,P2,…,Pn〉序列为安全序列),来为每个进程 Pi分配其所需资源,直至满足每个进程对资源的最大需求,使每个进程都可顺利地完成。
6 系统的不安全状态
如果系统无法找到这样一个安全序列,则称系统处于不安全状态。
7 常考题型知识点归纳
(1)系统处于安全状态时,一定不会发生死锁;系统处于不安全状态时,不一定会发生死锁;
(2)银行家算法中的数据结构间的关系:
可利用资源向量 Available
最大需求矩阵 Max
分配矩阵 Allocation
需求矩阵 Need
Need[i, j]=Max[i,j]-Allocation[i, j]
(3)常见“死锁”类型判断:
资源分配图简化法属于检测死锁
剥夺资源法、消进程法属于解除死锁
银行家算法属于避免死锁
资源静态分配属于预防死锁
其中,资源静态分配法预防死锁,是使死锁四个条件中的请求和保持条件不成立。
(4)系统资源
系统中的资源可以分为两类,一类是可剥夺资源,包括 处理机、CPU、内存;另一类资源是不可剥夺资源,如 磁带机 、打印机等
(5)为什么说互斥也是一种同步?
互斥指的是某种资源一次只允许一个进程使用,即你在使用的时候我不能使用;我在使用的时候你不能使用。这就是一种协调,一种"步伐"上的一致,因而也就是一种同步。
(6)互斥问题的软、硬件方法的异同?
软件方法是通过互斥地进入同类临界区来解互斥问题的,而硬件方法是设计相应的机器指令和机器指令执行的不可中断性来解互斥问题的。
(7)解除死锁,在选择撤消进程或抢占资源进程时,可考虑那些因素?
优先权;
进程已执行的时间;
估计剩余的执行时间;
已产生的输出量;
已获得的资源量和资源类型;
还需要的资源量;
进程的类型;
需要撤消的进程数目等。