文章
92
粉丝
68
获赞
0
访问
11.2k
(1)是临界区,因为两个进程不能同时访问临街资源B。
(2)semephore empty =1 ,data=0;
P1(){
waiting(empty);
C1;
signal(data)
}
P2(){
waiting(data);
C2;
signal(empty)
}
(3)semephore mutex = 1;
semephore mutex = 1;
P1(){
waiting(mutex );
C3;
signal(mutex);
}
P2(){
waiting(mutex );
C3;
signal(mutex);
}
评分及理由
(1)得分及理由(满分2分)
学生回答“是临界区”,并给出了理由“两个进程不能同时访问临界资源B”。该回答正确指出了临界区的本质(互斥访问共享资源),与标准答案的核心思想一致。虽然表述较为简略,但关键点已涵盖。因此得满分2分。
(2)得分及理由(满分3分)
学生定义了两个信号量empty和data,并给出了对应的P、V操作(尽管函数名写为waiting/signal,但可识别为wait/signal)。其思路与标准答案不同,但属于生产者-消费者问题的经典变体(单缓冲),思路完全正确:empty=1确保B空时才能写,data=0确保B非空时才能读。同步关系描述正确,且信号量数量已尽可能少。因此得满分3分。
注:代码中函数名拼写错误(waiting)和信号量拼写错误(semephore)属于笔误,在操作系统概念考查中通常不因此扣分,因为核心同步逻辑正确。
(3)得分及理由(满分3分)
学生定义了一个信号量mutex=1,并在P1和P2执行C3前后正确使用了wait和signal操作来实现互斥。这与标准答案完全一致。因此得满分3分。
注:学生重复写了两次“semephore mutex = 1;”,属于冗余但不影响正确性,不扣分。
题目总分:2+3+3=8分
登录后发布评论
暂无评论,来抢沙发