文章
24
粉丝
0
获赞
0
访问
1.5k
评分及理由
(1)信号量定义得分及理由(满分1分)
得分:0.5分
理由:学生定义了mutex、full、odd、even四个信号量,其中mutex用于互斥是正确的,odd和even用于同步也是正确的。但是将缓冲区容量信号量命名为"full"是不合适的,标准答案使用"empty"表示空单元数量,这里使用"full"容易引起混淆,而且语义上应该是等待空单元而不是满单元。不过考虑到这是语义理解问题,不是核心逻辑错误,扣0.5分。
(2)P1进程实现得分及理由(满分2分)
得分:1分
理由:P1进程存在严重逻辑错误。在第一次识别中,外层有一个if(i%2==0)的判断,这个判断是多余的,会导致奇数无法被正确处理。在第二次识别中,虽然去掉了外层判断,但是P(mutex)和P(full)的顺序错误,应该先P(full)再P(mutex),否则可能产生死锁。另外,缺少对信号量的初始化。由于存在死锁风险这个严重逻辑错误,扣1分。
(3)P2进程实现得分及理由(满分2分)
得分:1分
理由:P2进程同样存在信号量获取顺序错误。应该先P(odd)再P(mutex),否则可能产生死锁。V(full)的位置是正确的。由于存在死锁风险这个严重逻辑错误,扣1分。
(4)P3进程实现得分及理由(满分2分)
得分:1分
理由:P3进程与P2存在相同的问题,应该先P(even)再P(mutex),否则可能产生死锁。V(full)的位置是正确的。由于存在死锁风险这个严重逻辑错误,扣1分。
题目总分:0.5+1+1+1=3.5分
登录后发布评论
暂无评论,来抢沙发