文章
100
粉丝
0
获赞
0
访问
3.8k

评分及理由
(1)得分及理由(满分2分)
得分:2分。
理由:学生明确指出C1的执行需要互斥(“P₁与P₂互斥执行C₁”),这与标准答案中“实现C1的代码是临界区”的核心观点一致。尽管表述简略,但准确回答了问题本质。
(2)得分及理由(满分3分)
得分:1分。
理由:学生识别出了P1和P2之间存在同步关系,并定义了一个初值为0的信号量S用于同步,这是正确的。但是,答案存在严重的逻辑错误和缺失:
1. 逻辑错误(扣2分):学生的代码只解决了同步问题(P1先C1,P2后C2),但完全没有解决互斥问题。根据题目要求,对缓冲区B的写入操作C1本身是临界区,需要互斥访问,而学生的代码中P1和P2的C1/C2操作没有使用互斥信号量保护,可能导致多个进程同时访问缓冲区,造成数据不一致。
2. 信号量命名不完整(“Semaphore =0;”),但根据上下文可判断其意图,属于表述瑕疵,不额外扣分。
因此,由于缺少关键的互斥保护机制,扣2分。
(3)得分及理由(满分3分)
得分:3分。
理由:学生定义了初值为1的信号量mutex用于互斥(“Semaphore mutex =1;”)。虽然只给出了信号量定义,没有写出具体的wait/signal操作代码,但题目第(3)问的核心要求是“定义尽可能少的信号量”并“说明所用信号量的作用及初值”。学生正确指出了解决两个进程互斥执行C3操作所需的互斥信号量及其初值,思路与标准答案完全一致。未写出的代码部分可视为省略,不扣分。
题目总分:2+1+3=6分
登录后发布评论
暂无评论,来抢沙发