1.分别解释死锁和饥饿的含义。
- 死锁:一组进程中的每个进程均等待此组进程中其他进程所占有的、因而永远无法得到的资源,这种现象称为进程死锁,简称死锁(deadlock)。
- 饥饿:当等待事件给进程的推进和响应带来明显的影响时,就称为发生进程饥饿。
简要说明
死锁:是指并发进程在请求资源时发生的无限期等待。
饥饿:在预计时间内,某个或某些进程永远得不到完成工作的机会。通常是由资源分配不公引起的。
2.对于死锁现象发生的四个结论。
- ① 参与死锁的进程数目至少为2;
- ② 参与死锁的所有进程均等待资源;
- ③ 参与死锁的进程至少有两个占有资源;
- ④ 参与死锁的进程是系统中当前正在运行的进程集合的一个子集。
3.死锁发生的四个必要条件是什么?
- ① 资源独占:一个资源在同一时刻只能被分配给一个进程。
- ② 不可剥夺:资源申请者不能强行地从资源占有者守中夺取资源,即资源只能由其占有者在使用完后自愿地释放。
- ③ 保持申请:进程在占有部分资源后还可以申请新的资源,而且在申请新资源的时候并不释放它已经占有的资源。
- ④ 循环等待:存在一个进程等待序列{P1,P2,…, Pn},其中P1等待P2所占有的某一资源,P2等待P3所占有的某一资源,…,Pn等待P1所占有的某一资源,形成一个进程等待环路。
当且仅当上述四个条件同时满足时,死锁才会发生。换言之,只要破坏上述四个条件中的任意一个,死锁就不会发生。
4.说明避免死锁与预防死锁的区别?
- 预防死锁是对于进程的资源申请命令施加限制。
- 避免死锁是在进程请求分配资源时进行动态检查,并根据检查结果决定是否实施资源分配。
避免死锁中,可把系统状态分为安全状态和不安全状态。
资料参考
- 书籍:《计算机操作系统教程》(第四版 编著:左万利 王英)
- 博客园:【Base】死锁产生的四个必要条件