进程 已占资源数 A B C D 最大需求数 A B C D 0 0 1 2 1 7 5 0 2 3 5 6 0 6 5 2 0 6 5 6 尚需资源数 A B C D 0 0 0 0 0 7 5 0 1 0 0 2 0 0 2 0 0 6 4 2 可用资源数 A B C D 1 5 2 0 P1 P2 P3 P4 P5 0 0 1 2 1 0 0 0 1 3 5 4 0 6 3 2 0 0 1 4
在这里,进程P1已经拥有足够资源,在执行完后可归还C和D资源,同时,进程P3可以得到足够的资源完成执行,其后,P2、P4、P5可以依次得到足够的资源来完成,因此,用银行家算法分配资源时,系统出于安全状态。安全序列为:P1,P3,P2,P4,P5 2) (1)Request2(0,4,2,0)<=Need
(2)Request2(0,4,2,0)<=Available
(3)试着分配资源,分配后的资源分配情况图如下表:
进程 已占资源数 A B C D P1 P2 P3 P4 P5 0 0 1 2 1 4 2 0 1 3 5 4 0 6 3 2 0 0 1 4 最大需求数 A B C D 0 0 1 2 1 7 5 0 2 3 5 6 0 6 5 2 0 6 5 6 尚需资源数 A B C D 0 0 0 0 0 3 3 0 1 0 0 2 0 0 2 0 0 6 4 2 可用资源数 A B C D 1 1 0 0 (4)应用安全性算法,找不到一个安全序列,因此系统将推迟给P2进程分配资源,P2进程将阻塞等待。
3、假设三个进程共享四个资源,每个进程一次只能预定或释放一个资源,每个进程最多需要两个资源,试证明这样做不会发生死锁。
答:在最坏情况下,三个进程各占用一个资源,并同时请求第二个资源。由于系统中还有一个未用的资源,所以三个进程中的一个可以被满足。另外两个进程在这个进程结束以后可以获取需要的资源,然后继续执行。因此,不会出现死锁。