文章

9

粉丝

0

获赞

0

访问

5.6k

头像
2025 年 10 月第 1 次 408 月考试卷 - 第45题回答
操作系统
发布于2025年10月21日 21:35
阅读数 545

(1)mutex[k];//单个缓冲区不能同时被写入和读取

   block_empty[];//

   block_full[];//

(2)P{

   while(!block_empty[i]{

       p(mutex[i]);

       //将数据放入缓冲区

       v(block_full[i]);

       v(mutex[i]);

}

}

 

(3)C{

   while(!block_full[i]{

       p(mutex[i]);

       //从缓冲区取出数据

       v(block_empty[i]);

       v(mutex[i]);

}

}


评分及理由

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

学生只定义了一个互斥信号量数组mutex[k],但缺少关键的空缓冲区信号量(empty)、满缓冲区信号量(full)和指针互斥信号量(ptr_mutex)。定义的block_empty和block_full数组含义不明确,且未说明初始值。信号量定义不完整,无法正确实现同步互斥机制。扣4分。

得分:0分

(2)得分及理由(满分2分)

学生伪代码存在多处逻辑错误:未按环形缓冲区递增顺序写入;使用i作为固定索引而非动态指针;缺少对空缓冲区的申请操作;信号量使用错误(block_empty[i]作为条件判断而非信号量操作);缺少指针更新机制。代码无法正确实现生产者功能。扣2分。

得分:0分

(3)得分及理由(满分2分)

学生伪代码存在类似问题:未按环形缓冲区递增顺序读取;使用固定索引i;缺少对满缓冲区的申请操作;信号量使用错误;缺少指针更新机制。代码无法正确实现消费者功能。扣2分。

得分:0分

题...

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发