文章
167
粉丝
0
获赞
1
访问
14.8k
评分及理由
(1)信号量定义(满分1分):学生正确定义了四个信号量:empty(初始值N)、mutex(初始值1)、odd(初始值0)、even(初始值0),含义与标准答案一致。得1分。
(2)P1进程实现(满分2分):学生代码中P1先执行P(empty)判断缓冲区空单元,再执行P(mutex)获取缓冲区互斥锁,然后执行put操作,之后释放互斥锁V(mutex),最后根据生成的数奇偶性触发对应信号量(V(odd)或V(even))。逻辑与标准答案完全一致,但注意学生代码中produce(x)在P(empty)之后,而标准答案中produce()在P(empty)之前,但produce操作不涉及共享资源,顺序不影响同步互斥逻辑,因此不扣分。得2分。
(3)P2进程实现(满分2分):学生代码中P2先执行P(odd)等待奇数信号,再执行P(mutex)获取缓冲区互斥锁,然后执行getodd(),之后释放互斥锁V(mutex),最后执行countodd()。但缺少V(empty)释放空单元,这是一个逻辑错误,会导致缓冲区空单元无法回收,生产者可能最终阻塞。扣1分。得1分。
(4)P3进程实现(满分2分):学生代码中P3先执行P(even)等待偶数信号,再执行P(mutex)获取缓冲区互斥锁,然后执行geteven(),之后释放互斥锁V(mutex),最后执行counteven()。同样缺少V(empty)释放空单元,逻辑错误,扣1分。得1分。
题目总分:1+2+1+1=5分
登录后发布评论
暂无评论,来抢沙发