预防死锁的方法是通过破坏产生死锁的四个必要条件中的一个或几个,以避免发生死锁。
1. 破坏互斥条件
为了破坏互斥条件,就要允许多个进程同时访问资源。但是这会受到资源本身固有特性的限制,有些资源根本不能同时访问,只能互斥访问。由此看来,通过破坏互斥条件来防止死锁的发生是不大可能的。互斥条件是非共享设备所必须的,不仅不能改变,还应加以保证,因此主要是破坏产生死锁的后三个条件。
2.破坏不可剥夺条件
当一个已保持了某些不可剥夺资源的进程请求新的资源而得不到满足时,它必须释放已经保持的所有资源,待以后需要时再重新申请。这意味着,一个进程已占有的资源会被暂时释放,或者说是被剥夺,或从而破坏了不剥夺条件。
该策略实现起来比较复杂,且需付出很大的代价。因为一个不可剥夺的资源在使用一段时间后被剥夺,可能会造成进程前一阶段工作的失效,即使是采取了某种防范措施,也还会使进程前后两次运行的信息不连续。还可能因为反复地申请和释放资源致使进程的执行被无限地推迟,这不仅延长了进程的周转时间,还会增加系统开销,降低系统吞吐量。
3.破环请求并保持条件
为了能破坏“请求和保持”条件,系统必须保证做到:当一个进程在请求资源时,它不能持有不可抢占资源。
4.破坏循环等待条件
为了破坏环路等待条件,可以采用有序资源分配法。有序资源分配法是将系统中的所有资源都按类型赋予一个编号, 要求每一个进程均严格按照编号递增的次序请求资源,同类资源一次申请完。对资源请求做了这种限制后,系统中不会再出现几个进程对资源的请求形成环路的情况。这种方法由于对各种资源编号后不宜修改,从而限制了新设备的增加;造成资源浪费;对资源按序使用也会增加程序编写的复杂性。
无
登录后开始许愿
暂无评论,来抢沙发