23②此时,
eed1work,故:P1可执行完成。fi
ish1trueworkworkallocatio
1623100723③此时,
eed3work,故:P3可执行完成。fi
ish3trueworkworkallocatio
3723211934④此时,
eed4work,故:P4可执行完成。fi
ish4trueworkworkallocatio
4934002936结论:系统至少可以找到一个安全的执行序,如(P2,P1,P3,P4)可使各进程正常运行终结。(3)系统不能将资源分配给进程P1,因为虽然可利用资源还可以满足进程P1现在的需求,但是一旦分配给进程P1后,就找不到一个安全执行的序列保证各进程能够正常运行终结。所以进程P1应该进入阻塞状态。(4)系统满足进程P1和P2的请求后,没有立即进入死锁状态,因为这时所有进程没有提出新的资源申请,全部进程均没有因资源没有得到满足而进入阻塞状态。只有当进程提出资源申请且全部进程都进入阻塞状态时,系统才处于死锁状态。但最终会进入死锁状态。例2:某系统有同类资源m个,
个并发进程可共享该类临界资源。求:每个进程最多可申请多少个该类临界资源,保证系统一定不会发生死锁。解:设每个进程最多申请该类资源的最大量为x。每个进程最多申请x个资源,则
个进程最多同时申请的该类临界资源数为:
x。为保证系统不会发生死锁,应满足下列不等式:
x11≤m()则系统一定不会发生死锁。这是因为进程最多申请x个资源,最坏的情况是每个进程都已得到了x1个资源,现均申请要最后一个资源。只要系统至少还有一个资源就可使其中一个或几个进程得到所需的全部资源,在它们执行结束后归还的资源可供其他进程使用,因而不可以发生死锁。解不等式(),可得:x≤1m1
即:x的最大值为1m1
。因而,当每个进程申请资源的最大数值为1m1
时,系统肯定不会发生死锁。
4
f例3:设系统中有3中类型的资源(ABC)和5个进程P1、P2、P3、P4、P5,A类资源的数目为17,B类资源的数目为5,C类资源的数目为20。在T0时刻系统状态如下表所示。系统采用银行家算法实施死锁避免策略。
资源情况进程
MaxAB53022C961154A24423
Allocatio
B1000122544CA2
AvailableB3C3
P1P2P3P4P5
55444
(1)T0时刻是否为安全状态?若是,给出安全序列。(2)若在T0时刻进程P2请求资源(0,3,4),是否能实施资源分配?为什么?(3)在(2)的基础上,若进程P4请求资源(2,0,1),是否能实施资源分配?为什么?(1)由题目所给出的最大资源需求量和已分配的资源数量,可以计算出T0时刻r