破坏必要条件中的一个,死锁便不会发生。
一、破坏互斥条件
互斥条件-对互斥使用的资源争抢导致死锁,但大多时候为了保证系统的安全性,还必须保护这种互斥性。
二、破坏不剥夺条件
不剥夺条件-进程所获得的资源在未使用完之前,不能由其他进程强行夺走,只能主动释放。
1.方法一:当某个进程请求新资源不能满足时,它必须立即释放保持的所有资源,某些资源即使未用完也要主动释放。
2.方法二:当进程所需资源被其它进程占有时,由操作系统协助,将该资源强行剥夺。(考虑进程优先级)
3.缺点
释放已获得的资源会造成前一阶段工作失效,适用易保存和恢复状态的资源-CPU资源
反复申请和释放资源会增加系统开销
可能会导致进程一直无法获得资源,导致进程饥饿
三、破坏请求和保持条件
请求和保持条件-进程已经保持了资源,但同时又请求新的资源,该资源被其他进程占有,进程进入阻塞,但会保持已有资源不放。
1.方法
静态分配-进程在运行前一次申请完它所需的全部资源,否则不运行。
2.缺点
会造成资源浪费、资源利用率低
可能导致某些进程饥饿
四、破坏循环等待条件
循环等待条件-进程资源的循环等待链,链中每个进程已获得的资源同时被下一个进程所请求。
1.方法
顺序资源分配法-给系统资源编号,进程必须按编号的顺序请求资源,可实现同类资源(编号相同的资源)一次性申请完,不会产生循环等待现象。
2.缺点
增加新设备需要重新分配所有编号
进程实际使用资源的顺序可能与编号顺序不一致,从而导致早分配晚使用,形成资源空闲浪费。
必须按次序申请,用户编程麻烦