死锁预防
预防死锁是设法至少破坏产生死锁的四个必要条件之一,严格的防止死锁的出现
破坏”互斥“条件
- ”互斥“条件是无法被破坏的。因此,在死锁里主要是破坏其他几个必要条件,而不去涉及破坏”互斥条件“。
破坏”占有并等待“条件
破坏”占有并等待“条件,就是在系统中不允许进程在已获得某种资源的情况下,申请其他资源。即要想出一个办法,阻止进程在持有资源的同时申请其他资源。
- 方法一:一次性分配资源,即创建进程时,要求它申请所需的全部资金,系统或满足其他的所有要求,或者什么也不给它。
- 方法二:要求每个进程提出新的资源申请前,释放它所占的资源。这样,一个进程在使用资源S时,须先把它占有的资源R释放掉,然后才能提出对资源S的申请,即使它可能很快又要用到资源R。
破坏”不可抢占“条件
破坏”不可抢占“条件就是允许对资源实行掠夺。
- 方法一:如果占有某些资源的一个进程进行进一步资源请求被拒绝,则该进程必须释放它最初占有的资源,如果有必要,可再次请求这些资源和另外的资源。
- 方法二:如果一个进程请求当前被另一个进程占有的一个资源,则操作系统可以抢占另一个进程,要求它释放资源。只有在任意两个进程的优先级都不相同的条件下,方法二才能预防死锁。
破坏”循环等待“条件
破坏”循环等待“条件的一种方法,是将系统中的所有资源统一编号,进程可在任何时刻提出资源申请,但所有申请必须按照资源的编号顺序(升序)提出。这样做就能保证系统不出现死锁。