文章
126
粉丝
0
获赞
3
访问
21.6k
评分及理由
(1)信号量定义及初值(满分2分)
得分:1分
理由:学生定义了mutex(取号机互斥)、empty(空座位数量)、full(座位上人的数量)和service(服务互斥)四个信号量,其中mutex、empty和full的初值设置正确(1分)。但service信号量的含义和初值设置错误:标准答案中服务同步应使用一个信号量(或针对每个顾客的信号量)来实现叫号同步,而学生将service用于互斥(初值1),这是逻辑错误(扣1分)。
(2)顾客进程实现(满分3分)
得分:1分
理由:顾客进程中,P(empty)和P(mutex)的顺序正确(获取空座位和取号机互斥),V(mutex)和V(full)的位置正确(释放取号机和增加等待人数)(得1分)。但缺少对座位区的互斥操作(标准答案中的mutex用于座位区,但学生未定义座位区互斥信号量,此处不重复扣分)。等待叫号部分直接使用“等待叫号”语句而未用P操作同步(应使用P(service_i)),且错误地使用P(service)进行互斥(扣1分)。此外,获得服务后未释放服务信号量(但营业员进程中有V(service),逻辑不匹配)(扣1分)。
(3)营业员进程实现(满分3分)
得分:1分
理由:营业员进程中,P(full)正确(检查是否有等待顾客)(得1分)。但缺少对座位区的互斥操作(标准答案中需要P(mutex)和V(mutex)保护座位区)(扣1分)。叫号后直接服务,未实现同步(应先V(service_i)再服务,但学生使用V(service)释放互斥信号量,顺序和含义错误)(扣1分)。V(empty)的位置正确(释放空座位)(得1分),但V(service)错误(应使用同步信号量而非互斥信号量)(扣1分)。
题目总分:1+1+1=3分
登录后发布评论
暂无评论,来抢沙发