文章

59

粉丝

0

获赞

0

访问

9.0k

头像
2025 年 5 月第 1 次 408 月考试卷 - 第46题回答
操作系统
发布于2025年11月5日 18:35
阅读数 6

sem well_lock = 1;

sem pot_lock = 1;

sem pot_full = 0;

sem pot_empty = 10;

sem bucket = 3;

 

void elderly(){

while(true){

P(pot_fill);

P(pot_lock);

//喝水

V(pot_lock);

V(pot_empty);

}

}

 

void child(){

while(true){

P(pot_empty);

P(bucket);

P(well_lock);

//打水

V(well_lock);

P(pot_mutex);

//添水

V(pot_mutex)

V(bucket)//还桶

V(pot_fill);

}

}


评分及理由

(1)信号量定义部分得分及理由(满分2分)

得分:1分

理由:学生定义了5个信号量,基本对应了标准答案中的互斥和同步信号量。但是存在以下问题:

  • 信号量命名不规范,如"pot_fill"应为"pot_full"
  • 缺少"pot_mutex"的定义,但在代码中使用了
  • 基本思路正确,扣1分

(2)小和尚进程得分及理由(满分3分)

得分:1分

理由:学生的小和尚进程基本逻辑正确,但存在严重问题:

  • 缺少对水桶的释放操作(V(bucket)位置错误)
  • 缺少对水缸互斥信号量的正确使用(使用了未定义的pot_mutex)
  • 同步信号量的使用顺序基本正确
  • 由于存在严重逻辑错误,扣2分

(3)老和尚进程得分及理由(满分3分)

得分:0分

理由:学生的老和尚进程存在严重逻辑错误:

  • 完全缺少对水桶的申请和释放操作
  • 缺少从水缸取水的具体操作
  • 缺少喝水操作
  • 同步信号量的使用不完整
  • 由于存在多个严重逻辑错误,扣3分

题目总分:1+1+0=2分

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发