死锁问题
死锁问题,释放资源(回滚)进行解决。
死锁问题可能导致饥饿现象。
一组阻塞的进程持有一种资源等待获取另一个进程所占有的一个资源。
资源类型R1,R2,…,Rm
CPU cycles,memory space,I/O devices
每个资源类型Ri 有 Wi实例
可重复使用的资源
- 在一个时间只能一个进程使用且不能被删除
- 进程获得资源,后来释放由其他进程重用
- 内存也是资源,I/O通道,主和副存储器,设备和数据结构,如文件,数据库和信号量。也可以是抽象的资源,设备和数据结构,文件,数据库。
死锁特征(死锁耳洞必要条件)
- 互斥:在一个时间只能有一个进程使用资源
- 持有并等待:进程保持至少一个资源正在等待获取其他进程持有的额外资源。
- 无抢占:一个资源只能被进程完成了它的任务之后才能释放
- 循环等待,存在等待进程集合{P0, P1, 。。。 PN},P0正在等待P1所占有的资源
死锁处理办法
确保系统永远不会进入死锁状态。
运行系统进入死锁状态,然后回复。(开销很大)
忽略这个问题,假装系统中从来没有发生死锁;用于大多数操作系统,包括Unix。
银行家算法
发给你资源要确保能收得回来。