文章
54
粉丝
21
获赞
0
访问
4.2k
semaphere tong=3;//桶的剩余个数
semaphere tub=1;//互斥使用水缸
semaphere a=0;//水缸中的剩余水桶数
semaphere b=10;//水缸中剩余可入水桶数
semaphere jin=1;//互斥使用水井
codebegain{
process old{//老和尚取水
while(1){
p(tub);
p(a);
p(tong);
取桶;
缸中取水喝;
v(b);
v(tub);
v(tong);
}
}
process young{//小和尚进程
while(1){
p(jin);
p(桶);
p(b);
取桶;
入井取水;
v(jin);
p(tub);
入缸放水;
v(a);
v(tub);
v(tong);
}
}
}
评分及理由
(1)信号量定义得分及理由(满分2分)
得分:1分
理由:学生定义了5个信号量,与标准答案数量一致,但存在以下问题:
- "semaphere"拼写错误,应为"semaphore"(扣0.5分)
- 信号量tong、tub、a、b、jin的命名不够规范,但功能基本对应(不扣分)
- 信号量a和b的初始值正确(不扣分)
- 信号量tong初始值正确(不扣分)
- 信号量jin初始值正确(不扣分)
(2)老和尚进程得分及理由(满分3分)
得分:1分
理由:老和尚进程存在严重逻辑错误:
- P操作顺序错误:应先检查水缸是否有水(P(a)),再申请水桶(P(tong)),最后申请水缸互斥(P(tub))(扣1分)
- 缺少从水缸取水的具体描述(扣0.5分)
- V操作顺序基本正确(不扣分)
- 缺少喝水操作的具体描述(扣0.5分)
(3)小和尚进程得分及理由(满分3分)
得分:1分
理由:小和尚进程存在严重逻辑错误:
- P操作顺序完全错误:应先检查水缸是否有空位(P(b)),再申请水桶(P(tong)),最后申请水井互斥(P(jin))(扣1分)
- "p(桶)"应为"p(tong)",存在语法错误(扣0.5分)
- 缺少从井中取水的具体描述(扣0.5分)
- V操作顺序基...
登录后发布评论
暂无评论,来抢沙发