文章
266
粉丝
21
获赞
1
访问
12.6k

评分及理由
(1)得分及理由(满分2分)
得分:0分
理由:学生回答"不是,P1和P2不可能同时执行C1"是错误的。题目明确要求B为空时才能执行C1,如果P1和P2同时检查到B为空,它们可能同时执行C1,这会导致数据竞争和不一致,因此C1的实现代码确实是临界区。学生未能正确理解临界区的概念和互斥访问的必要性。
(2)得分及理由(满分3分)
得分:2分
理由:学生定义了3个信号量(B、C2、mutex),比标准答案多了一个信号量,但整体逻辑基本正确。信号量B初值为1表示缓冲区可写,C2初值为0表示缓冲区不可读,mutex用于互斥访问缓冲区。P1和P2的执行顺序和同步关系基本正确,但信号量数量不是"尽可能少",扣1分。学生代码中V(C2)和V(B)的位置正确,能够实现同步要求。
(3)得分及理由(满分3分)
得分:3分
理由:学生正确使用了互斥信号量mutex-1(识别可能有误,应为mutex)来保护临界区,初值设为1。P1和P2在执行C3操作前都通过P操作获取互斥锁,执行完毕后通过V操作释放锁,确保了同一时刻只有一个进程能够修改缓冲区中的数据。这与标准答案的思路完全一致,实现了互斥访问的要求。
题目总分:0+2+3=5分
登录后发布评论
暂无评论,来抢沙发