3、2,P3,P4,P5,P0>。备注:安全序列可以有多个,但第一个运行进程绝对不会是P0、P2或P5。2作业:习题6.56个进程P0~P5。4种资源:A-15个,B-6个,C-9个,D-10个。T0时刻:当前已分配最大需求b)需求矩阵d)P5请求(3,2,3,3)ABCDABCDABCD不能被允许。P0202195557534因为:P1011122332122原可用=(6,3,5,4),P2410275443442若允许,则新的可用=P3100133322331(3,1,2,1)将不能再满P4110052214121足任一进程
4、要求。P5101144443433d)常见作业错误1:P5请求最大需求(4,4,4,4)都不死锁,则请求更小的(3,2,3,3)也不会死锁。d)常见作业错误2:P5请求量(3,2,3,3)没有超过系统可用资源量(6,3,5,4)或P5的尚需(3,4,3,3),所以不会死锁。3作业:习题6.6a)3个进程P0~P2竞争6种资源A~F。voidP0()voidP1()voidP2(){while(true){{while(true){{while(true){get(A);get(D);get(C);get(B);get(E);
5、get(F);get(C);get(B);get(D);//临界区(A,B,C)//临界区(D,E,B)//临界区(C,F,D)release(A,B,C);}release(D,E,B);}release(C,F,D);}}}}a)用资源分配图描述可能出现的死锁。ABE设现在:P0,P1,P2都P0P1已得到前2个资源,申请CP2D第3个资源时,死锁。F4作业:习题6.6b)b)改变某些请求的顺序来预防死锁。voidP0()voidP1()voidP2(){while(true){{while(true){{while(t
6、rue){get(A);get(D);get(C);get(B);互换,即:get(E);互换也可get(F);互换也可get(C);get(B);get(D);get(C);get(B);get(D);get(B);get(D);get(C);//临界区(A,B,C)//临界区(D,E,B)//临界区(C,F,D)release(A,B,C);}}release(D,E,B);}}release(C,F,D);}}例:P0的get(B)和get(C)互换。设P1,P2都已得到前2个资源,则P0请求C不能满足,不构成环和死锁
7、。ABE上述三个进程之一或之二的请求互换P0P1均可预防死锁,但若三个进程同时互换则仍然可能发生死锁。CP2D由于A、E、F不被多个进程竞争,因F此不必改变它们的请求顺序。5作业:习题6.154个进程,1种资源。P1P2P3P4请求矩阵:C=[3297]分配矩阵:A=[1132]问:最少需要多少个资源才能保证当前状态安全?解:需求矩阵:Need=[2165],安全序列:。最少还需要3个资源(即总共需要10个资源),才能保证当前状态安全,使所有进程都运行完。6