6.18
readcount同步
保护?
哲学家吃饭问题
https://wenku.baidu.com/view/90e0bb7f1711cc7931b716f9.html
管程
死锁
Bridge Crossing Example
互为条件的进程发生的死锁/饿死现象
四个必要条件:
- 占有和等待
死锁是两个/两个以上的进程之间的关系(注意可以两个以上)
必要条件都发生不一定导致死锁。
资源分配图是有向图,阐述了系统资源和进程状态情况,每个资源和进程使用情况。
什么时候会出现死锁:
- 图中没有环,则没有发生死锁。
- 一个实例,有环就死锁
- 多个实例,有环不一定死锁
对待死锁的态度:
- 不允许出现死锁
- 允许进入死锁但可以恢复
- 忽略系统进入死锁的情况
(据说现在的操作系统都是ignore的,如果出现死锁就reset系统)
怎么防止死锁:
- 能共享则共享(但打印机,扫描机这种就不能共享)
- 全部占有或全部等待【非常低的资源利用率,有可能饿死】
- P1 1,2,3,4,5(要么全部拿走,要么全都不拿走,如果它没法全拿走,那就只能留着等待)
- P2 2
- P3 5
- 抢占(系统成本非常高/不稳定)
- 循环等待(低资源利用率)
注:内容渐渐复杂,要多看PPT和课本
6/23
安全状态
确保每一次的系统切换不会进入非安全状态
如果会有环则不会分配
S1处于安全状态,可以找到这样的序列(定义)
所以不存在找不到的情况
7.5.3 银行家算法
成本最低