问答题 某工厂有两个生产车间和一个装配车间,两个生产车间分别生产A、B两种零件,装配车间的任务是把A、B两种零件组装成产品。两个生产车间每生产一个零件后都要分别把它们送到装配车间的货架F1、F2上。F1存放零件A,F2存放零件B,F1和F2的容量均可以存放10个零件。装配工人每次从货架上取一个A零件和一个B零件后组装成产品。请用P、V操作进行正确管理。【南京大学1999年】
【正确答案】正确答案:本题是生产者.消费者问题的变形,生产者“车间A”和消费者“装配车间”共享缓冲区“货架F1”;生产者“车间B”和消费者“装配车间”共享缓冲区“货架F2”。因此,可为它们设置6个信号量,其中,empty1对应货架1上的空闲空间,其初值为10:full1对应货架l上面的A产品,其初值为0;empty2对应货架2上的空闲空间,其初值为10;ful12对应货架2上面的B产品,其初值为0:mutex1用于互斥地访问货架1,其初值为1;mutex2用于互斥地访问货架2,其初值为1。A车间的工作过程可描述为 while(1) { 生产一个产品A; p(empty1); P(mutex1); 将产品A存放到货架F1上; V(mutex1); V(fulll); } B车间的工作过程可描述为 while(1) { 生产一个产品B; P(empty2); P(mutex2); 将产品B存放到货架F2上, V(mutex2); V(full2); } 装配车间的工作过程可描述为 while(1) { P(full1); P(mutex1); 从货架F1上取一个A产品; V(mutex1); V(emptY1); P(full2); P(mutex2); 从货架F2上取一个B产品; V(mutex2); V(empty2); 将取得的A产品和B产品组装成产品; }
【答案解析】