您的位置:首页 > 其它

死锁的产生与避免

2017-03-29 22:02 169 查看
死锁产生的原因:

1、竞争资源,系统提供的资源数量有限,不能满足每个进程的需求;

2、多到程序运行时,进程推进顺序不合理;

产生死锁的必要条件:

1、互斥条件:资源是独占的且排他使用。进程互斥使用资源,即任意时刻一个资源只能给一个进程使用,其他进程若申请一个资源,而该资源被另一个进程占有时,则申请者等待,直到资源被占用者释放。

2、不可剥夺条件:进程所使用的资源在未使用完毕之前,不能被其他进程强行剥夺,而只能由获得该资源的进程释放。

3、请求和保持条件:进程每次申请它所需要的一部分资源,在申请新资源的同时,继续占用已分配到的资源。

4、循环等待条件:在发生死锁时,必然存在一个进程等待队列{p1,p2,……pn},其中p1等待p2占有的资源,p2等待p3占有的资源,……,pn等待p1占有的资源,形成一个进程等待环路。环路中每一个进程已占有的资源同时被另一个进程所申请,即前一个进程占有后一个进程所申请的资源。

解决死锁的的方法:

1、预防死锁。通过设置某些严格限制,破坏产生死锁的条件(出第一个条件以外的其他条件)以防止死锁的发生。这一方法会导致系统资源利用率过低。

2、避免死锁。在资源的动态分配过程中,采取某种方法防止系统进出入不安全的状态,从而避免死锁的发生。这种方法只需以较弱的限制条件为代价,并可获得较高的资源利用。

3、监测死锁。允许系统运行过程中发生死锁,即事先不采取任何预防,避免措施。但通过在系统中设置检测机制,可以检测出死锁是否真的发生,并能精确的确定与死锁有关的资源与进程,然后采取措施解除死锁。

4、解除死锁。这是与死锁检测相配套的措施,用于将进程从死锁状态下解脱出来。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息