【操作系统】死锁
死锁是什么?
多个并发进程因争夺系统资源而产生相互等待的现象。
本质原因:
- 系统资源有限;
- 进程推进顺序不合理。
产生死锁产生的4个必要条件 :
- 互斥使用:一个资源每次只能被一个线程使用。这意味着如果一个线程已经获取了某个资源(比如锁),那么其他线程就必须等待,直到该线程释放资源。
- 不可抢占: 已经获得资源的线程在释放资源之前,不能被其他线程抢占。只有拥有资源的线程自己能够释放资源,其他线程无法将其强行抢占。
- 请求保持:一个线程在持有至少一个资源的情况下,又请求获取其他资源。这样的情况下,如果其他资源被其他线程持有并且不释放,就会导致请求线程等待,从而可能形成死锁。
- 循环等待: 存在一个进程链,使得每个进程都占有下一个进程所需的至少一种资源。
避免死锁的具体实现通常利用银行家算法。