文章

7

粉丝

21

获赞

0

访问

818

头像
- 第46题回答
操作系统
发布于2025年6月16日 20:24
阅读数 103

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分

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发