分类:
2012-06-09 14:55:47
一、死锁
死锁是指在多道程序系统中,一组进程中的每一个进程均无限期地等待该组进程中的另一个进程占有且永远不会释放的资源,这种现象称系统处于死锁状态,检测死锁。处于死锁状态的进程称为死锁进程。
二、产生死锁的原因
一是进程之间竞争资源,因为操作系统提供的资源数量是有限的,不能满足每个进程的需要;二是多道程序运行时,进程推进顺序不合理。
三、产生死锁的必要条件(即只要系统发生死锁时,比发生以下的条件之一)
互斥条件:资源是独占的且排他使用。进程互斥使用资源,即任一时刻一个资源只能给一个进程使用,其他进程若申请一个资源,而该资源被另一进程占有时,则申请者等待,直到资源被占用着释放。
不可剥夺条件:进程所获得的资源在未使用完毕之前,不能被其他进程强行剥夺,而只能由获得该资源的进程资源释放。
请求和保持条件:进程每次申请它所需要的一部分资源,在申请新的资源的同时,继续占用已分配到的资源。
循环等待条件:在发生死锁时,必然存在一个进程等待队列{p1,p2....p3},其中p1等待p2占有的资源,p2等待p3占用的资源,pn等待p1占用的资源,形成一个进程等待环路。
四、解决死锁的方法
解决死锁的方法有两种:一是不让死锁发生,二是可以允许死锁发生,发生后在加以解决,具体的办法有:预防死锁、避免死锁、检测死锁、解除死锁。
五、死锁预防的方法是破坏产生死锁的四个必要条件之一。
六、死锁避免
基本思想是系统对进程发出的每一个系统能够满足的资源申请进行动态检测,并根据检查结果决定是否分配资源,如果分配后系统可能发生死锁,则不予分配,否则予以分配。死锁避免算法有:银行家算法。
七、死锁检测与解除
操作系统可定时运行一个“死锁检测”程序,该程序按一定的算法去检测系统中是否存在死锁,检测死锁的实质是确定是否存在“循环等待”条件,检测算法确定死锁的存在并识别出与死锁有关的进程和资源,以供系统采取适当的解除死锁措施。
死锁解除:只要让某个进程释放一个或多个资源就可以解除死锁。死锁解除可以归为两类:剥夺资源(使用挂起/激活机制挂起一些进程,剥夺它们占有的资源给死锁进程,以解除死锁,待以后条件满足时,在激活被挂起的进程)、撤销进程(撤销死锁进程,将它们占有的资源分配给另一些死锁进程,直到死锁解除为止)。