- 第46题回答
操作系统
发布于2025年6月16日 20:24
阅读数 404
semaphore N=0;//水缸中的水容量
semaphore M=3;//空水桶的个数
semaphore m1=1;//水井是否空闲
V1{ //小和尚取水
p(M);
P(N);
M=M-1;
打水;
P(m1);
V(m1);
放水;
N=N+1;
M=M+1;
}
V2{ //老和尚取水
p(M);
P(N);
P(m1);
M=M-1;
V(m1);
取水;
N=N-1;
M=M+1;
}
评分及理由
(1)得分及理由(满分8分)
得分:4分
理由:
- 学生正确使用了信号量来管理水桶(M=3)和水井(m1=1),这部分与标准答案一致,不扣分。
- 学生错误地使用了N来表示水缸中的水容量,但没有正确实现同步机制。标准答案中使用了vat_empty和vat_full两个信号量来实现同步,而学生仅使用了一个信号量N,这会导致同步逻辑不完整,扣2分。
- 学生在代码中直接对信号量M和N进行了加减操作(如M=M-1),这是错误的,因为信号量的操作必须通过P/V操作完成,扣1分。
- 学生在老和尚取水过程中错误地加上了对水井(m1)的互斥操作,这是不必要的,因为老和尚不需要使用水井,扣1分。
- 学生没有实现对水缸的互斥访问(mutex_vat),这会导致并发问题,扣1分。
题目总分:4分
登录后发布评论
暂无评论,来抢沙发