死锁的概念:
计算机系统中多道程序并发执行时,两个或两个以上的进程由于竞争资源而造成的一种互相等待现象,如无外力作用,这些进程将永远不能再向前推进。
举个例子:一道桥上只能同时通过一个方向的车,但是此时两个方向的车同时进入桥上,互不相让,两边的车谁也动不了,相当于造成了死锁。
死锁的原因:
1.竞争资源引起的死锁 :
- 当系统中供多个进程所使用的资源,不足以同时满足它们的需要时,引起它们对资源的竞争而产生死锁。
2.进程推进顺序不当引起死锁
- 在多道程序系统中,并发的进程推进序列不可预测
- 有些推进顺序,进程可以顺利完成。而有些推进顺序,会引起进程无限期的等待永远不会发生的条件而不能向前推进,造成死锁。
如何避免死锁:
1.资源分配图算法
2.银行家算法