一、产生死锁的必要条件
1)互斥条件。进程对其所要求的资源进行排它性控制,即一次只有一个进程可以使用一个资源。
2)请求和保持条件。进程已经保持了至少一个资源,但又提出了新的资源请求。
3)不剥夺条件。进程所获得的资源在未被释放之前,不能被其它进程强行剥夺。
4)环路条件。在发生死锁时,必然存在一个进程资源的循环等待链,
二 处理死锁的基本方法
1. 预防死锁
原理:设置某些限制条件,破坏产生死锁的四个必要条件中的一个或几个条件,来预防发生死锁。
1) 弃“互斥条件”。
优点:较简单、直观的。 缺点:导致系统资源利用率和系统吞吐量降低。
为了破坏资源使用的互斥条件,就要允许多个进程同时访问共享资源。但是这种方法受到资源本身固有特性的限制,对某些资源是行不通的。例如打印机,就不允许多个进程在其运行期间交替打印数据,打印机只能互斥使用。而文件,可能允许多个进程对其进行读访问,但只允许互斥地写访问。
总之:由于受限于资源本身,互斥条件难以破坏。
2) 弃“请求和保持”条件
策略:资源一次性分配。
优点:简单、易于实现,且很安全。 缺点:
1)资源严重浪费。一个