Skip to content

2024年 408 操作系统 第 46 题

操作系统2024年综合题8分

题目 ​

计算机系统中的进程之间往往需要相互协作以完成一个任务。在某网络系统中缓冲区 B 用于存放一个数据分组,对 B 的操作有 C1、C2、C3:

  • C1:将一个数据分组写入 B
  • C2:从 B 中读出一个数据分组
  • C3:对 B 中的数据分组进行修改

要求 B 为空时才能执行 C1,B 非空时才能执行 C2 和 C3。

请回答下列问题。

(1) 假设进程 P1 和 P2 均需执行 C1,实现 C1 的代码是否为临界区?为什么?(2 分)

(2) 假设 B 初始为空,进程 P1 执行 C1 一次,进程 P2 执行 C2 一次。请定义尽可能少的信号量,并用 wait()/signal() 操作描述 P1、P2 之间的同步或互斥关系,说明所用信号量的作用及初值。(3 分)

(3) 假设 B 初始不为空,进程 P1 和 P2 各执行 C3 一次,请定义尽可能少的信号量,并用 wait()/signal() 操作描述 P1 和 P2 之间的同步或互斥关系,说明所用信号量的作用及初值。(3 分)

最后更新:

⚠️ 这道题暂未配可视化,欢迎在 CodeBrick 反馈区告诉我们你想看哪道题