文章
95
粉丝
50
获赞
1
访问
12.2k

评分及理由
(1)得分及理由(满分8分)
学生答案整体思路正确,将问题建模为生产者-消费者问题,并使用了相应的同步互斥机制。信号量定义基本正确:empty=10表示空座位数,mutex=1用于取号机互斥,full=0表示等待顾客数,service=0用于顾客等待叫号。顾客进程和营业员进程的流程也基本符合要求。
但存在以下逻辑错误:
V(empty)。这是错误的,因为顾客离开座位(释放空位)的时机应该在营业员叫号之后、服务之前或服务过程中,而不是在顾客获得服务之后。标准答案中,营业员在叫号前通过P(full); P(mutex); 一位顾客离开座位区; V(mutex); V(empty);来释放座位资源。学生答案中顾客自己释放空位,会导致同步错误(例如,顾客释放空位后,新顾客可能进入,但营业员还未真正开始服务该顾客,座位计数会混乱)。此错误扣2分。V(service)(仅第一次识别结果中出现,第二次识别结果已无此操作)。如果存在,这是多余的,因为service信号量用于顾客等待营业员叫号,应由营业员释放(V(service)),顾客不应释放。但根据第二次识别结果,此错误已不存在,故不扣分。综上,扣除逻辑错误分3分,得分为5分。
题目总分:5分
登录后发布评论
暂无评论,来抢沙发