评分及理由
(1)得分及理由(满分8分)
学生答案存在多处严重逻辑错误:
- 线程划分错误:题目明确T1执行A、E、F,T2执行B、C、D。但学生答案中Poster1(应代表T1)包含了执行B(属于T2),Poster2(应代表T2)包含了执行E(属于T1),这完全混淆了线程的任务分配。
- 同步逻辑错误:同步操作(wait/signal)的放置位置与操作之间的依赖关系不符。例如,signal(mutex_AC)被放在了A和B都执行完之后,这无法保证C在A完成后执行。wait(mutex_CE)被放在了F之前,但F依赖的是E完成,而非C完成,且E的执行本身也需要等待信号量。
- 循环结构错误:题目描述的是两个线程按特定顺序执行一系列操作,但学生答案为每个线程添加了`while(1)`无限循环,这改变了问题的性质,会导致操作被重复执行,不符合题意。
- 信号量使用不当:信号量被命名为“mutex”(互斥),但其实际应起到同步(即前驱关系)的作用。虽然名称不影响功能,但结合其错误的wait/signal位置,表明学生对同步关系的理解有偏差。
- 关键操作缺失或错位:在Poster2中,执行C之前没有等待A和B完成的信号(wait(mutex_AC)被错误地放在了最后),执行E之前没有等待C完成的信号,执行D的顺序也未受约束。
综上所述,学生的作答未能正确描述T1和T2之间的同步关系,代码逻辑与题目要求严重不符。虽然识别出需要两个信号量(AC和CE),但具体实现完全错误。
根据打分要求,逻辑错误需要扣分。本题满分8分,由于存在根本性的逻辑错误,仅能给予极少的分数以示对“识别出部分信号量”这一行为的认可,但核心同步逻辑完全错误。
得分:1分。
题目总分:1分
登录后发布评论
暂无评论,来抢沙发