文章
120
粉丝
0
获赞
0
访问
61.5k

评分及理由
(1)信号量定义及初值(满分2分)
得分:2分
理由:学生定义了6个信号量,包括mutexA、mutexB、emptyA、fullA、emptyB、fullB,且初值设置正确(mutexA=1, mutexB=1, emptyA=M-x, fullA=x, emptyB=N-y, fullB=y),与标准答案一致。
(2)A进程的同步与互斥操作(满分3.5分)
得分:3.5分
理由:A进程中,首先P(fullA)检查A信箱是否有邮件(同步),然后P(mutexA)获取A信箱互斥锁(互斥),取出邮件后V(mutexA)释放互斥锁,V(emptyA)增加A信箱空闲空间(同步)。之后回答问题,然后P(emptyB)检查B信箱是否有空间(同步),P(mutexB)获取B信箱互斥锁(互斥),放入邮件后V(mutexB)释放互斥锁,V(fullB)增加B信箱邮件计数(同步)。所有同步和互斥操作顺序正确,与标准答案一致。注意:学生答案中在P(emptyB)前的注释“互斥访问B信箱已满”有误(应为同步操作),但注释错误不影响代码逻辑,不扣分。
(3)B进程的同步与互斥操作(满分3.5分)
得分:3.5分
理由:B进程中,首先P(fullB)检查B信箱是否有邮件(同步),然后P(mutexB)获取B信箱互斥锁(互斥),取出邮件后V(mutexB)释放互斥锁,V(emptyB)增加B信箱空闲空间(同步)。之后回答问题,然后P(emptyA)检查A信箱是否有空间(同步),P(mutexA)获取A信箱互斥锁(互斥),放入邮件后V(mutexA)释放互斥锁,V(fullA)增加A信箱邮件计数(同步)。所有同步和互斥操作顺序正确,与标准答案一致。注意:学生答案中在P(emptyA)前的注释“若A已满,则阻塞”正确,但P(emptyA)是同步操作而非互斥,注释不影响逻辑。
题目总分:2+3.5+3.5=9分
登录后发布评论
暂无评论,来抢沙发