文章
246
粉丝
0
获赞
0
访问
20.0k

评分及理由
(1)信号量定义得分及理由(满分3分)
学生定义了semaphore V1=1, V2=1,但只定义了两个信号量。标准答案需要三个信号量:mutex_y1、mutex_y2和mutex_z,分别保护y变量在thread1和thread3之间的访问、y变量在thread2和thread3之间的访问,以及z变量的访问。学生缺少对z变量的互斥保护,且对y变量的保护不完整。扣2分。
得分:1分
(2)thread1实现得分及理由(满分1分)
学生使用P(V1)和V(V1)保护了add(x,y)操作,这相当于保护了对y的访问。虽然信号量命名不同,但思路正确。不扣分。
得分:1分
(3)thread2实现得分及理由(满分1分)
学生使用P(V2)和V(V2)保护了add(y,z)操作,但这只能保护对z的访问,无法保护对y的访问。thread2需要同时保护y和z的访问。扣1分。
得分:0分
(4)thread3实现得分及理由(满分3分)
学生对z=add(z,w)操作使用了P(V2)/V(V2)保护,这是正确的。但对y=add(y,w)操作使用了P(V1)和P(V2),这存在以下问题:1)缺少对y的完整保护;2)可能产生死锁,因为thread3在持有V2的情况下又申请V1,而其他线程可能以相反顺序申请。扣2分。
得分:1分
题目总分:1+1+0+1=3分
登录后发布评论
暂无评论,来抢沙发