死锁的处理-预防死锁

1.破坏互斥条件
SPOOLing技术:把独占设备在逻辑上改造成共享设备。
但是并不是所有的资源都可以改造成可共享使用的资源。并且为了系统安全,很多地方还必须保护这种互斥性。因此,很多时候都无法破坏互斥条件。
2.破坏不剥夺条件
方案一:当某个进程请求新的资源得不到满足的时候,他必须立即释放保持的所有资源,待以后需要时再重新申请。也就是说,及时某些资源尚未使用完,也需要主动释放,从而破坏了不可剥夺条件
方案二:当某个进程需要的资源被其他进程所占有的时候,可以由操作系统协助,将想要的资源强行剥夺。这种方式一般需要考虑各个进程的优先级。
缺点:比较复杂,可能造成前一阶段工作的失效。反复地申请和释放资源会增加系统的开销,降低系统吞吐量。
3.破坏请求和保持条件
采用静态分配方法:即进程在运行前一次申请完它所需要的全部资源,在它的资源未满足前,不让它投入运行。一旦投入运行后,这些资源就一直归它所有,该进程就不会再请求别的任何资源。
缺点:资源利用率极低,可能导致某些进程饥饿。
**4.破坏循环等待条件 **
采用顺序资源分配法:首先给系统中的资源编号,规定每个进程必须按编号递增的顺序请求资源,同类资源一次申请完成。
原理:一个进程只有已经占有小编号的资源的时候,才有资格申请更大编号的资源。拥有大编号的进程不可能逆向回来申请小编号的资源。
缺点;不方便增加新的设备,会导致资源的浪费,用户编程比较麻烦

猜你喜欢

转载自blog.csdn.net/nice_good_boy/article/details/118973908