文章

389

粉丝

5

获赞

19

访问

27.3k

头像
2017年计算机学科专业基础综合试题 - 第46题回答
操作系统
发布于2025年9月24日 21:48
阅读数 85


评分及理由

(1)信号量定义部分(满分3分)

得分:2分

理由:学生定义了三个信号量(cnum_s1、cnum_s2、cnum_s3),与标准答案的mutex_y1、mutex_y2、mutex_z对应,但信号量的命名和注释不够清晰(如“用于相关互斥”),且信号量定义语法有误(如typedef struct cnum_s1 = 1;应为semaphore cnum_s1=1;)。由于核心逻辑(三个信号量)正确,但语法和表述不规范,扣1分。

(2)thread1实现部分(满分1分)

得分:1分

理由:thread1中正确使用wait(cnum_s1)和signal(cnum_s1)保护对y的访问(与标准答案mutex_y1对应),逻辑正确,不扣分。

(3)thread2实现部分(满分2分)

得分:0分

理由:thread2中存在严重逻辑错误。代码重复执行w=add(y,z);两次,且第二次前添加了多余的wait(cnum_s3);,而标准答案中只需保护y和z的访问(mutex_y2和mutex_z)。此外,信号量操作顺序错误(应先wait(mutex_z)再wait(mutex_y2)),可能引发死锁。整体逻辑混乱,扣2分。

(4)thread3实现部分(满分2分)

得分:2分

理由:thread3中正确使用信号量保护z(cnum_s3对应mutex_z)和y(cnum_s1、cnum_s2对应mutex_y1、mutex_y2)的访问,操作顺序与标准答案一致(先保护z,再同时保护y),逻辑正确,不扣分。

题目总分:2+1+0+2=5分

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发