首页 > 试题广场 >

某公司有两种零件A和B,最大数量各为N个。该公司将一个A和一

[问答题]

某公司有两种零件A和B,最大数量各为N个。该公司将一个A和一个B组装成一个新的产品销售,每次各取一个。有另外两个公司分别不断供应A,B(每次1个)。为保证正常生产,当某种零件的数量比另一种的数量超过M(M<N)个时,暂停对数量大的零件进货,补充数量少的的零件。

请采用信号量机制,用wait、signal操作描述上述问题中的同步和互斥关系。 (要求:用类C语言描述,给出信号量的定义、初始化,并加必要的注释)

3. 参考答案

Semaphore emptyA=N;emptyB=N;fullA=0;fullB=0;//说明:empty表示组装产品的公司可接受的零件数,full表示所进的零件数

The producer process A

do {

produce an item in nextp

wait (emptyA);

生产一个A零件

signa1 (fullA); //供应零件A

} while (1);

The producer process B

do {

produce an item in nextp

wait (emptyB);

生产一个B零件

signa1 (fullB); //供应零件B

} while (1);

The consumer process

do {

wait (fullA);//取零件A

wait (fullB);//取零件B

组装产品

if(emptyA.value-emptyB.value<M && emptyA.value<N)

signal (emptyA);

if(emptyB.value-emptyA.value<M && emptyA.value<N)

signal (emptyB);

销售产品

}  while (1);

评分标准: 共12分,期中变量(信号量)定义及其初始化占3分,其他部分9分(主要看程序框架)。

发表于 2017-05-12 00:57:54 回复(0)