文章
43
粉丝
0
获赞
0
访问
1.0k

评分及理由
(1)信号量定义及初值(满分2分)
得分:1分
理由:学生定义了mutex1和mutex2两个互斥信号量,初值均为1,基本正确;定义了sitfull(应为sitfull)初值10,表示空闲座位数,正确;定义了sitremain(应为sitremain)初值0,表示已占用座位数,正确。但缺少对取号机互斥的明确信号量(虽然mutex1可能用于此,但未说明),且信号量命名不规范(如sitfull应为empty,sitremain应为full),扣1分。
(2)顾客进程实现(满分3分)
得分:1分
理由:顾客进程中,使用if判断座位数不符合同步原则(应用P操作),且P/V操作顺序混乱。正确逻辑应先P(empty)检查座位,再P(mutex1)取号,然后V(mutex1)释放取号机,之后V(full)增加等待顾客,最后P(service)等待叫号。学生代码中未正确定义和使用等待叫号的同步信号量,且P/V操作错误(如误用V(mutex2)和P(mutex2)),逻辑错误严重,扣2分。
(3)营业员进程实现(满分3分)
得分:1分
理由:营业员进程中使用while(TRUE)循环正确,但同步逻辑错误。正确逻辑应先P(full)检查是否有顾客,再叫号,然后V(service)通知顾客,最后服务。学生代码中错误使用V(mutex2)和P(mutex2)进行互斥,未正确定义和使用full及service信号量,且未实现座位区的互斥管理,逻辑错误严重,扣2分。
题目总分:1+1+1=3分
登录后发布评论
暂无评论,来抢沙发