问题 问答题

假设系统有同类资源10个,供A、B、C三个进程共享,A、B、C所需资源总数分别是8、4、9,它们申请资源的次序和数量如表6-1所示:

表6-1 进程资源申请表

次序进程申请量
1C2
2A4
3B2
4A2
5C1
6B2
………………
按银行家算法为它分配资源:

请估计系统是否会出现死锁,并简要说明理由。

答案

参考答案:

解析:根据单项银行家算法,过程为: ①C申请2个资源时,剩余资源可使各进程结束,所以这个分配是安全的,故将2个资源分配给C。 ②同理,A、B分别申请4、2个资源时,剩余资源可使各进程运行结束,所以这个分配也是安全的,故将4、2个资源分配给A、B。 ③A申请2个资源时,系统此刻剩余资源数为2,如果将这两个资源分配给A,系统就没有资源了。这时的A、B、C都还需要资源才可运行完,这样,A、B、C将都进入阻塞状态。所以P申请的这两个资源不能分配。 ④同理,接下来C欲申请1个资源也是不安全的分配,故不能进行分配。 ⑤B申请2个资源时,假定操作系统分配给它,B进程将运行结束,B释放的资源又可使A运行结束;A运行结束,释放的资源又可使C运行结束。所以这个分配是安全的,故2个资源分配给B。 不会产生死锁,因为银行家算法在任何时候均保证至少有一个进程能得到所需的全部资源;这样,得到资源的进程能及时归还资源供其他进程使用。

单项选择题
单项选择题