3-14.
证明:假定会死锁,则根据死锁定义,N个进程之间相互等待,至少需要N个单位资源,又系统M个资源已分完,故所有进程需求总和大于或等于M+N,这与题中的所有进程需求总和小于M+N矛盾,故假设不成立。因此,在这种情况下不会死锁。
3-15. M1: …… V(s12); V(s13); V(s14);
M2: P(s12); …… V(s26); ……
M3: P(s13); …… V(s36); V(s38);
M4: P(s14); …… V(s47); ……
附加:m个同类资源,n个进程,每个进程的对资源的最大需求量:
当m>n时,每个进程最多可以请求 mn 个该类资源
当m=n时,每个进程最多可以请求1个该类资源 当m<n时,每个进程最多可以请求1个该类资源
(当m>n时,每个进程最多可以请求(m+n-1)/n个该类资源) 3-15
解答:
这是进程之间的同步问题。M2、M3和M4必须在接收到M1的消息后才能运行。同理,M6必须在M2和M3之后运行,M7必须在M4,M5之后运行,M8必须在M3、M7之后运行。如何保证呢?需设置相应的信号量来保证:S12,S13,S14,用来制约M2、M3和M4的运行;S26,S36,用来制约M6的运行;S47,S57,用来制约M7的运行;S38,