文章
359
粉丝
0
获赞
2
访问
33.5k
(1)是临界区
(2)seamphore mutex=1//表示缓冲区B
seamphore empty=0//表示缓冲区B初始为空
P1 (){
p (mutex)
执行C1
v(mutex)
v(empty)
}
P2(){
p(empty)
p(mutex)
执行C2
v(mutex)
}
(3)seamphore mutexB=1表示P1和P2对B缓冲区是互斥访问的
P1(){
p(mutexB)
执行C3
v(mutexB)
}
P2(){
p(mutexB)
执行C3
v(mutexB)
}
评分及理由
(1)得分及理由(满分2分)
得分:1分
理由:学生正确判断了C1代码是临界区,但没有给出解释原因。根据题目要求,需要说明为什么是临界区,学生只给出了结论没有分析,因此扣1分。
(2)得分及理由(满分3分)
得分:2分
理由:学生定义了正确的信号量数量,mutex用于互斥,empty用于同步。但信号量empty的初值应为1而不是0,因为缓冲区初始为空,P1应该能够立即执行C1。这个逻辑错误扣1分。代码结构基本正确,P1和P2的执行顺序合理。
(3)得分及理由(满分3分)
得分:3分
理由:学生正确使用了单个互斥信号量mutexB,初值设为1正确。代码结构完整,实现了P1和P2对缓冲区B的互斥访问,符合题目要求。
题目总分:1+2+3=6分
登录后发布评论
暂无评论,来抢沙发