文章
62
粉丝
0
获赞
0
访问
9.7k
semaphore A = 0, B = 0, C = 0, D = 0;
A()
{
...
V(A)
}
B()
{
...
V(B)
}
C()
{
P(A)
P(B)
...
V(C)
}
D()
{
...
V(D)
}
E()
{
P(C)
P(D)
...
}
评分及理由
(1)信号量定义及初值(满分2分)
学生定义了四个信号量A、B、C、D,初值均为0,这与标准答案中为每个同步关系设置信号量的思路不同。但学生使用的信号量数量(4个)与同步关系数量一致,且初值设置正确。这里不扣分,得2分。
(2)进程A、B、D的实现(满分1.5分)
进程A、B、D中直接执行操作后执行V操作,符合无前置依赖的要求。实现正确,得1.5分。
(3)进程C的实现(满分1.5分)
进程C中通过P(A)和P(B)等待A和B完成,然后执行操作并V(C),正确实现了C必须在A和B完成后执行的约束。得1.5分。
(4)进程E的实现(满分2分)
进程E中通过P(C)和P(D)等待C和D完成,正确实现了E必须在C和D完成后执行的约束。得2分。
题目总分:2+1.5+1.5+2=7分
注:虽然学生的信号量命名方式(直接使用任务名)与标准答案(使用关系命名)不同,但逻辑完全正确,且满足题目要求的同步关系,因此不扣分。
登录后发布评论
暂无评论,来抢沙发