信号量在生产者-消费者及其变形问题中的应用

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
o d[
P fU; ( ) u
例 2 (0 9年考研 真 题 ) :2 0 三个 进 程 P 、2 P 1P 、 3互 斥 使用 一 个包 含 N ( > )个 单 元 的缓 冲 区 。P 每 次 刚 N0 l po u e ) 成 一个 正 整数 并 用 p t ) 入 缓 冲 区某 一 rd c ( 生 u (送 空单 元 中 ; 2每 次用 gt d ) 该 缓 冲 区 中取 出一 个 P eo ( 从 d 奇数 并 用 cu t d ) o no ( 统计 奇 数个 数 ; 3每 次用 gt e d P ee n v ( 从 该 缓 冲 区 中取 出一 个 偶 数 并 用 c u tvn ) 计 ) o ne e ( 统
从 缓 冲 区 2中取 m 记 录 :
Ve t ) ( y ; mp 2
Pe py (m t) ; Pnue)/ 入 缓 冲 区 (lt ;进 x/ 向共 享 缓 冲 区写 人 数 据 :
Vmue) ( t ; x Vfl;退 m 缓 冲区 ( 1/ u )/
】hl 1; w i () e 消 费 者 进 程 cnu r ( l2…n) osme j ,, j=
消 费数 据 :

Vmue) ( tx; Ve t ; 出 缓 冲 区 (mpy/机 制 实现 这 三个 进程 的 同步 与 互斥 活 动 , 说 明所定 义 的信号 量 的含义 。 并 分 析 :此 题 是典 型 的 生产者 一 费 者 变形 问题 , 消 三 个 进 程 共享 一个 N个 单元 的缓 冲 区 . 1 数 据 到缓 冲 P 送
Pm tx; 入 缓 冲 区 ( ue)/进 /
从共享缓冲区读m数据 :
单元 , 当于 是生 产者 ; 2 P 相 P 、 3分 别 从缓 冲单元 中取 数 据 . 当于 是消 费者 ; 相 定义 信号 量 S 1控 制 P 1与 P 2之 】hl( ; w i 1 e) 问 的 同步 :2控制 P S 1与 P 3之 问 的 同步 ,初 值均 为 0 33生 产者与 消 费者 问题 变形 问题 分 析 . ;mpy控 制 生 产者 与 消 费者 之 间 的 同步 ,初 值 为 N; e t 例 1 三个 进程 P ,2 P : lP , 3协作 解 决文 件打 印 问题 , m tx控制 进 程 间互斥 使 用缓 冲 区 .初值 为 1 ue 。用 P V P 将 文 件记 录从 磁盘读 入 内存 的缓 冲 区 1 1 .每 执行 一 操作 描 述进 程 活动 如下 : 次 读一 个记 录 :2将 缓 冲 区 1的 内容取 出放 到缓 冲区 P P l进 程 : 2中 :3将缓 冲区 2的 内容 打印 出来 , 执行 一 次打 印 P 每 X po u e ; = rd c0 Pe t) ( y; mp 个 记 录 。缓冲 区 的大小 和一 个记 录 大小 一样 。用 P 、 Pmue) ( t ; x V 操作 来保 证 文件 的 正确 打 印 。三个 进 程 工作 过程 如

计 算必 须等 待输 入进程 输入 的数 据 .输 出进 程要 输 出 号量 : 数 据必 须等 待计 算 进程 计算 完数 据 同步 信 号量 e pv表 示 空 缓 冲 单元 个 数 ,初 值为 It n 互 斥 是 指一 组 并 发 进 程 中 的一 个 或 多 个 程 序段 . 冈共 享 某共 有 资源 而 导致 它们 必须 以一 个 不允 许 交 叉 k; 执行 的单 位执 行 。 斥关 系亦称 间 接制约 关 系 , 互 即进 程 同步信 号量 fl表示 满 缓 冲单元 个 数 , 值 为 0 ul 初 : 互 斥信 号量 mue 示互 斥使 州 的 整个缓 冲池 . t x表 初 在逻 辑 上本 来 完 全独 立 . 毫无 关 系 . 只是 由于竞 争 同一

1信 号 量 机 制 和 P 操 作 含 义 . V
2 进程 同步 互斥 含义 .
同 步 指 两个 或 多个 进 程 为 了合 作 完 成 同一 任 务 . 在 执 行 速 度或 某 个 确 定 的 时序 点上 必 须 相互 协调 . 即 个进 程依 赖 于另 一个 进程 发送 的消息 .进 程 之 间体 现 了一 种相 互合 作 的关 系 .同 步关 系亦 称直 接制 约 关 系. 如输 入 进 程 、 算 进 程 和输 出进 程 , 计 计算 进 程 要 想
度为 k的有 界缓 冲 区 ( > ) 生 产者 向其 中存 放 产 品 , k0 . 消费 者从其 中取得 产 品 . 求 : 产者 不应 覆 盖一 个满 要 生 的缓 冲 区 : 消费者 不应 使用 一个 空 的缓 冲 区 ; 生产 者 消 费者 必须按 一种互 斥 的方 式访 问缓 冲 区 分 析 : 冲池 为满 时 , 产 者 等 待 消 费者 取 产 品 , 缓 生 缓 冲池为空 时 . 消费者 等 待生产 者 存放 产 品。 记 录型 朋 信号 量机 制解 决生产 者 和消 费者 问 题 .可设 置 i个 信
12 7
福 建 电

信 号 量 在 生产 者 一 费者 及 其 变 形 问题 中的应 用 消
李 洁 .张 瑜 慧
(宿 迁 学院 计 算机 科 学 系 江 苏 宿迁 2 3 0 2 8 0)
【 摘 要 】 生产 者一消费者 问题是操 作 系统 中进 程 同步互斥 的经典 l 。 其 之上 的 变形 问题在 实 际 : ' 在 q题
21 0 2年第 2期 值为 1 :

建 电

V( l ) fl u2 I 7 3进 程:
i儿_ ; u 2 J
13 7
用P v操 作描 述 生产 者和 消费 者进 程 活动 如下 :
生 产 者进 程 po ue l , m rd cr ( , … ) j 2 d[ o 生产产品 :
Pl 程 : 进
V m tx; ( ne)
P 2进 程 :
应 用 中非 常广 泛 , 用信 号 量机制描 述 此类 问题 , 并给 出相 应的 解决方 法。
【 关键 词 】 同步 ; : 互斥 ; 信号 量 ;V操 作 ; P 生产 者一消 费者
个 物理 资源 而互相 制约 。 如系 统 中只有 一 台打印 机 . 例 16 9 5年 .荷 兰学 者 Djs a 出 了利 用 信 号 量 机 有 两个 进程都 要使用 ,则 只能 是一个 进 程用 完 打印 机 i t 提 kr 制 解决进 程 同步 问题 .信 号量 正式 成为 有效 的进 程 同 之后 , 一个 进 程 才 能使 川 。 另 否则 . 两 个 进程 同时 刚 若 步 工具 .现 在信 号量 机制 被广 泛 的用 于单处 理机 和多 台打印机 . 则结 果交 织在 一起 . 法保 证 结果 的正 确 无 处 理机 系统 以及计 算 机 网络 中 信 号量 是一 个 确定 的 性 。 种互 斥关 系不 同于 同步关 系 . 这 它们 的运行 不具 有 二 元 组(,)其 中 T是 个初 始 状 态 为 空 的等 待 队列 , 时间 次序 的特征 . 先 向系统提 出 申请 . 就先 占有 资 ST , S 谁 谁 是 一个 具有 非 负 初值 的 整 型变量 当 S > 10时 . 示 系 源执行 。 表 统 中某 类 可 用 资源 的 数 目, S 0时. 绝对 值 表 示 等 当 < 其 3信 号 量 机 制 在 进 程 同步 互 斥 中 的应 用 . 待使 用某 类 资源 的进 程 的个数 信 号量 S的值 只 能 由 31 决步骤 .解 定 义在信 号 量上 的 P原语 和 v原 语来 改变 用信 号量机 制描 述进 程 同步互 斥基本 步骤 为 : P原 语 操作 的动 作是 : () 1 分析 进程 问 的 同步 互斥 关 系 ; 据实 际 问题 分 根 () 1 S减 l ; 析包 含 的进 程 间 的关 系 , 同步还 是 互 斥 . 是兼 有 . 是 还 ( ) S减 l 2若 后仍 大于或等 于零 . 则进程继 续执行 ; 分别 列 出进 程 的制 约关 系 ( ) S减 1 小 于零 , 该进 程 被 阻塞 后进 入与 3若 后 则 () 2 设相 应 同步 互 斥信 号 量 . 并说 明 含义 和 设定 初 该信号相 对 应 的队列 中 . 后转 进程调 度 。 然 值: 根据分 析 出的进程 同步互 斥关 系 , 别设定 相 应 的 分 v原语 操 作 的动作 是 : 信号 量 . 同步信 号量 和互斥 信 号 量分 别是 哪些 . 自的 各 () 1 S加 1 ; 含 义是什 么 . 初值 是多 少 ( ) 相加 结果 大 于零 , 进程 继续 执行 : 2若 则 ( ) P V操作 来描 述进 程 的活动 根据 进程 相应 3用 、 ( ) 相 加 结果 小 于或 等 于零 。 从该 信 号 的 等待 程 序算 法或 流 程控 制 . P、 3若 则 用 V操 作 和设 定 的信 号量 机 队列 中唤醒 一等 待进 程 .然后 再 返 回原 进 程继 续 执行 制来 描述 各进程 的活 动 或 转进 程调 度 32信号 量机 制描述 生 产者一 费者 问题 . 消 通 常, P操 作 意 味 着请 求 一 个 资 源 . V操 作 意 味着 生 产者 与 消费 者 问题 是 经 典 的 同步 问题 .其 中包 释 放一个 资 源 。在 一定 条件 下 , 作代 表挂 起进 程操 括 了 同步与互斥 .很 多 进程 之 问 的联 系问题 都 是在 此 P操 作 . v操 作 代表 唤醒 被挂起 进 程 的操 作 P 而 v操 作对 问题 上进 行演 变和扩 展 .因此 是操 作 系统 课程 中 的核 于 每一个 进 程来 说 . 只能进 行一 次 . 都 而且 必须 成 对使 心算 法 生产 者与 消费 者 问题 捕述 如下 :生产 者进 程 P 、2 … 、m, 1P 、 P 消费 者 进 程 C 、 2 … 、n共享 一 个 长 1C 、 C 州. P 在 V原语 执行 期 问不允许 有 中断 的发 生
下 图所示

P t; uO
I x = O f( %2 = )
! 。
2I竺
V( ) s; 2
es le
V( ) s; 1
分析 : 此题 中有 两 个 缓 冲 区 , 个 进 程 , 于 缓 冲 三 对 区 1 说 . 1 文件 记 录读 入 其 中 。 当于是 生 产者 , 来 P 将 相 P 2将 记 录 从缓 冲 区 l中取 出 . 当于 是 消 费者 : 于 相 对 缓 冲 区 2来 说 ,2将 数 据存 入 其 中 . 当于是 生 产者 , P 相 P 3将 数据 从 缓 冲 区 2取 出 . 当 于是 消 费者 : 点 在 相 难 于P 2进程 既是 一个 生产 者 又是 ~个 消 费者 . 可设 四个 信号 量分 别表 示两 类缓 冲区 的状 态 : 信号 量 e py , 示缓 冲 区 1 m tl 表 是否 为空 , 值为 1 初 ; 信号 量 e py , m t 表示缓 冲 区 2是 否为空 , 值为 1 2 初 ; 信 号量 fl . 示缓 冲 区 1 否 有记 录 可供 处理 . ul 表 1 是 初值为 1 : 信 号量 fl . 示缓 冲 区 2是 否有 记 录可 供 处理 . ul 表 2 初 值 为 1 : 用P V操 作 描述 进程 活 动如 下 :
相关文档
最新文档