文章

75

粉丝

78

获赞

0

访问

4.2k

头像
2011年(408)计算机学科专业基础综合试题 - 第45题回答
操作系统
发布于2025年12月12日 17:17
阅读数 34


评分及理由

(1)得分及理由(满分8分)

学生作答整体思路正确,将问题识别为生产者-消费者模型,并设置了相应的同步信号量。但存在以下逻辑错误:

  1. 服务信号量使用错误:学生将service信号量初始化为1,并在顾客和服务员进程中分别进行P、V操作,这会导致多个顾客可能同时获得服务,破坏了“营业员空闲时选取一位顾客服务”的同步约束。正确的做法应是一个用于同步的信号量(如标准答案中的service_i),由顾客P等待,由营业员V唤醒。
  2. 顾客进程逻辑顺序错误:在第一次识别结果中,顾客进程在“等待叫号”后执行P(full); P(service);,这会导致full信号量被错误地多P一次,可能造成死锁或逻辑混乱。full信号量应由顾客在取号后V增加,由营业员P消耗。
  3. 缺少座位区互斥保护:标准答案中通过mutex保护座位区的入座和离座操作(虽然本题中因座位计数信号量emptyfull已能保证互斥,但严谨起见仍应说明),学生答案未体现对座位区操作的互斥,但此错误在本题中因信号量已能保证正确性,可不扣分。
  4. 第二次识别结果中顾客进程多了一个V(service):顾客在“获得服务”后执行V(service),这会导致服务信号量提前释放,可能让其他顾客错误地被唤醒。

综合来看,学生理解了基本的同步互斥框架(取号机互斥、座位计数),但在核心的“叫号-服务”同步关系上存在严重逻辑错误,导致无法正确实现“营业员叫号后顾客获得服务”的流程。因此扣除主要逻辑错误分。

得分:4分(满分8分)

题目总分:4分

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发