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

表6-1 进程资源申请表

次序
进程
申请量
1
C
2
2
A
4
3
B
2
4
A
2
5
C
1
6
B
2
……
……
……
按银行家算法为它分配资源:
问答题
写出执行完序号为6的申请时,各进程的状态和已占的资源数;
【正确答案】
【答案解析】执行完序号为6的申请时,各进程的状态和已占的资源数如表7-1所示:

表7-1 进程状态表

A等待
已占用资源4个
B就绪或运行
已占用资源4个
C等待
已占用资源2个

问答题
请估计系统是否会出现死锁,并简要说明理由。
【正确答案】
【答案解析】根据单项银行家算法,过程为: ①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。 不会产生死锁,因为银行家算法在任何时候均保证至少有一个进程能得到所需的全部资源;这样,得到资源的进程能及时归还资源供其他进程使用。