并发性——死锁
死锁:多个进程因竞争资源而造成的一种僵局(Deadly Embrace),若无处力作用,这些进程将永远不能再向前推进。
产生进程死锁的的原因:
- 竞争系统资源
- 进程的推进顺序不当
产生死锁的必要条件:
- 互斥条件:一个资源只能由一个进程独自占有使用
- 请求和保持条件:进程请求资源得不到导致阻塞,自身占有资源却又不释放
- 非剥夺条件:自己占有的资源不能被其他进程强行夺走
- 循环等待条件:类似三角变的关系
处理死锁的基本方法:
- 预防死锁——破坏死锁的必要条件
此处需要注意的是,除却互斥条件不准被破坏外,其他条件都准允被破坏。
- 避免死锁——银行家算法和+安全性算法(没看懂此算法,求大神指点)
此处需要明确安全状态:指系统能按某种进程顺序(P1,P2,…,Pn),来为每个进程Pi分配其所需资源,直至满足每个进程对资源的最大需求,使每个过程都可顺利地完成。