计算机系统产生死锁的根本原因是资源有限且操作不当。
一种原因是系统提供的资源太少了,远不能满足并发进程对资源的
需求。这种竞争资源引起的死锁是我们要讨论的核心。另一种原因是由
于进程推进顺序的不合适引发的死锁。
产生死锁的四个必要条件:
1、互斥条件:在一段时间内,一个资源只能由一个进程独占使用,若别的进程也要求该资源,则须等待直至其占用者释放;
2.
不可抢占条件:进程所获得的资源在未使用完毕之前,资源申请
者不能强行从资源占有者手中夺取资源,而只能有该资源的占有者自行
释放;
3.占有且申请条件:进程至少已经占有一个资源,但又申请新的资
源;由于该资源已被另外的进程占用,此时该进程阻塞;但是它在等待
新资源时,仍继续占用已占有的资源;
4.循环等待条件:存在一个等待进程集合{P0,P1, …,Pn},P0正在
等待一个P1占用的资源,P1正在等待一个P2占用的资源,…,Pn正在等
待一个由PO占用的资源,形成一个进程等待环。
解决死锁的基本策略:
一是鸵鸟策略。鸵鸟策略,即一种不理睬死锁的策略。像鸵鸟那样把
头埋在沙子里,装住毫无问题。
二是预防策略。采用的办法是破坏产生死锁的四个必要条件中的一个
或多个,向进程施加适当的限制,使系统绝不会进入死锁状态。
三是避免策略。产生死锁的四个必要条件有可能成立,但在资源动态分配的过程中使用某种办法防止系统进人安全和死锁状态。
四是检测和解除。允许系统产生死锁,然后使用检测算法及时地发现并解除它。
四是检测和解除。允许系统产生死锁,然后使用检测算法及时地发现并解除它。
预防死锁的基本思想是打破死锁的四个必要条件中的一个或者几个。
1.打破互斥条件。允许进程同时访问某些资源。
2.打破不可抢占条件。允许进程强行从占有者那里夺取某些资源。
3.打破占有且申请条件。实行资源预先分配。
4.打破循环等待条件。实行资源有序分配策略。
以上是纯书本的概念和指导方针,具体的实现有待自己总结。书本
上怎么总是这些干讲的呢。。。