文章
166
粉丝
0
获赞
0
访问
10.0k
(1)是临界区,一个读出一个写入会导致数据的不一致性
(2)
semaphore mutex = 1;// 互斥使用b
semaphore full= 0;//实现p1p2同步
p1(){
wait(mutex); //互斥
写入B
signal(mutex);
signal(full) ; //跟p2同步
}
p2(){
wait(full);//非空不能读
wait(mutex);//互斥
读出B
signal(mutex);
}
(3)
semaphore mutex = 1; //p1 p2互斥进入修改数据
p1(){
wait(mutex);//请求互斥锁 与p2互斥进入
修改B //修改缓冲区
signal(mutex); //释放互斥锁
}
p2(){
wait(mutex);//请求互斥锁 与p1互斥进入
修改B //修改缓冲区
signal(mutex); //释放互斥锁
}
评分及理由
(1)得分及理由(满分2分)
得分:2分
理由:学生正确指出C1的代码是临界区,并解释了原因(读写出导致数据不一致性),与标准答案一致。
(2)得分及理由(满分3分)
得分:3分
理由:学生正确使用了两个信号量(mutex和full),并正确描述了P1和P2的同步与互斥关系。代码逻辑与标准答案一致,信号量的作用及初值也正确。
(3)得分及理由(满分3分)
得分:3分
理由:学生正确使用了一个信号量(mutex)来实现P1和P2的互斥访问,代码逻辑与标准答案一致,信号量的作用及初值也正确。
题目总分:2+3+3=8分
登录后发布评论
暂无评论,来抢沙发