-
互斥条件(Mutual Exclusion):
- 每个资源要么已经分配给了一个进程,要么就是可用的。
- 如果一个进程请求一个已经被另一个进程占用的资源,那么系统必须决定是否允许这个请求。
-
请求和保持条件(Hold and Wait):
- 进程可以请求一些资源,而在等待获取这些资源的同时,可以继续持有已经分配到的资源。
- 这就可能导致一个进程在等待新的资源时阻塞其他进程。
-
不剥夺条件(No Preemption):
- 已经分配给进程的资源不能被强制性地从该进程中剥夺,只能在进程自愿释放资源的情况下才能被其他进程获取。
- 如果系统强制性地剥夺资源,可能会导致进程间的争抢和不公平。
-
循环等待条件(Circular Wait):
- 存在一个进程等待链,其中每个进程都在等待下一个进程所持有的资源。
- 形成的等待关系必须形成一个环路。
当这四个条件同时满足时,就可能导致系统发生死锁。防止死锁的方法通常包括破坏这四个条件中的至少一个。例如,通过使用资源分配图和安全序列来避免循环等待条件,或者通过实施抢占机制来破坏请求和保持条件。