有3个进程P1,P2和P3并发执行,P1进程需要使用互斥资源S3和S1,P2进程需要使用互斥资源S1和S2,P3进程需要使用互斥资源S2和S1,请问:
问答题   若对资源分配不加限制,会发生什么情况?为什么?
 
【正确答案】若对资源分配不加限制,譬如:
   Begin
   Cobegin
   Process P1:
   […]
   Process P2:
   [P(S1);
   P(S2);
   …
   V(S1);
   V(S2);]
   Process P3:
   [P(S2);
   P(S1);
   …
   V(S2);
   V(S1);]
   Coend;
   End
   显然,当P2执行完“P(S1)”时,P3执行了“P(S2)”之后,P2和P3两个进程就陷入了死锁状态(P2占用S1,同时申请试用S2,而P3占用S2,同时申请使用S1,两者构成了死锁)。这样,P2和P3两个进程陷入了死锁状态,P1进程也可能处于这个死锁状态中。
【答案解析】
问答题   为保证进程能执行到结束,应采用怎样的资源分配策略?
 
【正确答案】为保证进程能执行到结束,可以规定:
   第一,一个进程申请资源时,若它已经占有资源,必须首先释放占有的资源才可以申请其他资源。
   第二,静态分配资源,即进程在全部获得资源后,才能执行,只要有一个资源不能满足,系统就不分配任何资源给该进程使其等待。
   第三,第一和第二是破坏循环等待条件防止死锁,可以规定3个进程在申请资源时,按S1,S2,S3的次序顺序申请,即P1按S1→S3的顺序、P2按S1→S2的顺序、P3按S1→S3的顺序进行申请。
【答案解析】