文章

94

粉丝

0

获赞

1

访问

14.3k

头像
2025 年 6 月第 1 次 408 月考试卷 - 第45题回答
操作系统
发布于2025年8月10日 17:58
阅读数 50

semaphore emptyA=2; //A 型产品可用空位
semaphore emptyB=2; //B 型产品可用空位
semaphore fullA=0; //A 型产品数量
semaphore fullB=0; //B 型产品数量
semaphore mutex=1; //缓冲区互斥锁

cobegin(){
进程P1(){
while(1){
生产A产品;
P(emptyA);
P(mutex);
把A产品放入缓冲区;
V(mutex);
V(fullA);
}
}



进程P2(){
while(1){
生产B产品;
P(emptyB);
P(mutex);
把B产品放入缓冲区;
V(mutex);
V(fullB);
}
}



进程C1(){
while(1){
P(fullA);
P(mutex);
把A产品从缓冲区取走;
V(mutex);
V(emptyA);
消费A产品
}
}


进程C2(){
while(1){
P(fullB);
P(mutex);
把B产品从缓冲区取走;
V(mutex);
V(emptyB);
消费B产品
}
}


}

(2)(2+1+2+1)*3=18


评分及理由

(1)得分及理由(满分5分)

得分:4分

理由:

  • 学生正确使用了信号量机制实现了同步和互斥,包括emptyA、emptyB、fullA、fullB和mutex的使用。
  • 生产者进程P1和P2的逻辑正确,消费者进程C1和C2的逻辑也正确。
  • 扣分点:学生使用了while(1)循环,而题目要求每个进程生产和消费3个产品,应该使用repeat-until或类似的有限循环结构。因此扣1分。

(2)得分及理由(满分2分)

得分:2分

理由:

  • 学生正确计算了总耗时为18个时间单位,与标准答案一致。
  • 虽然计算过程没有详细说明,但结果正确,因此不扣分。

题目总分:4+2=6分

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发