文章
35
粉丝
0
获赞
0
访问
1.2k
chair=10;mutex1=1;call=1;
chair为初始座位;mutex1为顾客对取号机的互斥信号量;call为营业员和顾客的同步信号量
process 顾客i{
p(chair);
p(mutex1);
//从取号机获得一个号码;
v(mutex1);
p(call);
v(chair);
//获得服务;
}
process 营业员 {
while(true){
v(call);
//为顾客服务;
}
}
评分及理由
(1)信号量定义部分(满分2分)
得分:1分
理由:学生定义了三个信号量:chair(初始值10,表示座位数)、mutex1(初始值1,用于取号机互斥)、call(初始值1,用于同步)。其中chair和mutex1的定义基本正确,但call的初始值应为0(因为初始时没有顾客等待叫号),这里存在逻辑错误。扣1分。
(2)顾客进程实现(满分3分)
得分:1分
理由:顾客进程基本框架正确,使用了P(chair)控制座位数量,P(mutex1)保护取号机。但存在以下严重逻辑错误:①P(call)操作位置错误,应该在获得号码后立即执行,而不是在V(chair)之前;②V(chair)操作位置错误,应该在获得服务后释放座位,而不是在等待叫号前;③缺少对座位区的互斥保护。扣2分。
(3)营业员进程实现(满分3分)
得分:1分
理由:营业员进程使用了while(true)循环结构正确,但存在以下逻辑错误:①V(call)操作应该在叫号后执行,而不是在服务前;②缺少对座位区的互斥操作;③缺少对座位计数的管理(P(full)/V(empty)等)。扣2分。
题目总分:1+1+1=3分
登录后发布评论
暂无评论,来抢沙发