文章
27
粉丝
0
获赞
0
访问
15.3k

评分及理由
(1)信号量定义部分得分及理由(满分2分)
学生定义了三个信号量:seat=10(表示座位数量)、getnum=1(表示取号机互斥)、Custom=0(表示等待顾客数)。这些信号量的含义和初值设置基本正确,符合题目要求。但缺少对座位区互斥的信号量(mutex),不过从后续代码看,学生可能认为seat已经包含了互斥功能。考虑到核心同步逻辑正确,此处不扣分。得2分。
(2)顾客进程实现得分及理由(满分3分)
顾客进程逻辑基本正确:先P(seat)检查座位,P(getnum)互斥取号,取号后V(getnum)释放取号机,V(Custom)增加等待顾客数。但存在两个问题:1)"等叫号"操作缺少对应的P操作,应该有一个等待信号量的操作;2)V(seat)释放座位的位置错误,应该在接受服务后释放,而不是在等叫号后立即释放。这两个问题属于逻辑错误,每个扣1分。得1分。
(3)营业员进程实现得分及理由(满分3分)
营业员进程逻辑基本正确:通过P(Custom)检查是否有等待顾客,然后叫号和服务。但缺少对座位区的互斥操作,且没有对应的信号量操作来通知特定顾客。此外,缺少与顾客进程"等叫号"对应的V操作。这些属于逻辑错误,扣2分。得1分。
题目总分:2+1+1=4分
登录后发布评论
暂无评论,来抢沙发