文章

125

粉丝

0

获赞

1

访问

21.5k

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

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

cobegin(){
进程P1(){
for(int i=0;i<3;i++){
生产A产品;
P(emptyA);
P(mutex);
把A产品放入缓冲区;
V(mutex);
V(fullA);
}
}



进程P2(){
for(int i=0;i<3;i++){
生产B产品;
P(emptyB);
P(mutex);
把B产品放入缓冲区;
V(mutex);
V(fullB);
}
}



进程C1(){
for(int i=0;i<3;i++){
P(fullA);
P(mutex);
把A产品从缓冲区取走;
V(mutex);
V(emptyA);
消费A产品
}
}


进程C2(){
for(int i=0;i<3;i++){
P(fullB);
P(mutex);
把B产品从缓冲区取走;
V(mutex);
V(emptyB);
消费B产品
}
}


}

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


评分及理由

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

得分:5分

理由:学生的伪代码完全符合标准答案的要求,正确地使用了信号量机制实现了生产者和消费者之间的同步与互斥。每个进程的操作顺序(P操作、临界区操作、V操作)正确,且对不同类型的产品的生产和消费进行了正确的限制。代码逻辑清晰,无任何错误。

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

得分:2分

理由:学生的计算过程虽然简洁,但结果与标准答案一致,总耗时为18个时间单位。计算逻辑正确,符合题目要求。

题目总分:5+2=7分

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发