文章

393

粉丝

0

获赞

2

访问

35.3k

头像
2025年(408)计算机学科专业基础综合试题 - 第45题回答
操作系统
发布于2025年12月18日 19:15
阅读数 11

seamphore mutexchanzi=1  //表示甲乙对铲子的互斥访问

semaphore pot=0 //表示树坑

semaphore tong //表示丙可以给树苗浇水

甲(){

while(pot<3)

p (mutexchanzi)

挖坑

v(mutexchanzi)

v(pot)

}

乙(){

while(1)

p(pot)

放树苗

p(mutexchanzi)

填土

v(mutexchanzi)

v(tong)

}

丙(){

while(1)

p(tong)

浇水

}


评分及理由

(1)得分及理由(满分7分)

学生答案整体思路正确,实现了三人之间的基本同步关系:甲挖坑后乙才能放树苗填土,乙完成后丙才能浇水,且铁锹的互斥使用得到体现。但存在以下逻辑错误和表述问题:

  1. 信号量定义不完整:tong 未赋初值(应为0),且未说明其作用。
  2. 甲进程中的条件 while(pot<3) 错误。题目要求“当树坑数量小于3时,甲才可以挖树坑”,但学生使用了信号量 pot 来表示已挖好的坑(初始为0),此条件判断无法正确限制并发挖坑数不超过3,且未使用信号量机制实现该限制,属于逻辑错误。
  3. 乙进程中操作顺序有误:应先获取铁锹(p(mutexchanzi))再执行“放树苗并填土”的整体操作,因为填土需要铁锹。学生代码将“放树苗”置于获取铁锹之前,不符合资源使用逻辑。
  4. 语法/拼写错误:seamphore 拼写错误,p()v() 虽可接受,但题目要求用 wait()signal()

鉴于核心同步框架正确,但存在关键逻辑错误(特别是对挖坑数量的限制实现错误),扣3分。得分为:7 - 3 = 4分

题目总分:4分

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发