普 通 高 等 教 育 十 二 五 重 点 规 划 教 材 计 算 机 系 列 中 国 科 学 院 教 材 建 设 专 家 委 员 会 十 二 五 规 划 教 材 操 作 系 统 戴 仕 明 姚 昌 顺 主 编 姜 华 张 希 伟 副 主 编 郑 尚 志 梁 宝 华 参 编 参 编 周 进 钱 进

Size: px
Start display at page:

Download "普 通 高 等 教 育 十 二 五 重 点 规 划 教 材 计 算 机 系 列 中 国 科 学 院 教 材 建 设 专 家 委 员 会 十 二 五 规 划 教 材 操 作 系 统 戴 仕 明 姚 昌 顺 主 编 姜 华 张 希 伟 副 主 编 郑 尚 志 梁 宝 华 参 编 参 编 周 进 钱 进"

Transcription

1 科 学 出 版 社

2 普 通 高 等 教 育 十 二 五 重 点 规 划 教 材 计 算 机 系 列 中 国 科 学 院 教 材 建 设 专 家 委 员 会 十 二 五 规 划 教 材 操 作 系 统 戴 仕 明 姚 昌 顺 主 编 姜 华 张 希 伟 副 主 编 郑 尚 志 梁 宝 华 参 编 参 编 周 进 钱 进 参 编 北 京

3 内 容 简 介 本 书 由 浅 入 深 系 统 全 面 地 介 绍 了 计 算 机 系 统 中 的 一 个 重 要 系 统 软 件 操 作 系 统 (OS) 全 书 共 分 9 章, 主 要 内 容 包 括 操 作 系 统 引 论 进 程 管 理 处 理 机 调 度 与 死 锁 存 储 器 管 理 设 备 管 理 文 件 管 理 操 作 系 统 接 口 网 络 操 纵 系 统 及 UNIX 系 统 内 核 结 构 等 本 书 每 一 章 都 设 置 了 考 研 真 题 解 析 和 习 题 等 模 块, 以 便 于 读 者 掌 握 本 章 的 重 点 及 提 高 实 际 解 决 问 题 的 能 力 本 书 结 构 清 晰 易 教 易 学 实 例 丰 富 可 操 作 性 强 注 重 能 力 培 养 本 书 既 可 作 为 高 等 院 校 计 算 机 专 业 的 教 材, 也 可 作 为 计 算 机 技 术 各 类 培 训 班 的 培 训 教 程 此 外, 本 书 也 非 常 适 于 考 研 的 学 生 广 大 计 算 机 专 业 人 员 以 及 自 学 人 员 参 考 阅 读 图 书 在 版 编 目 (CIP) 数 据 操 作 系 统 / 戴 仕 明, 姚 昌 顺 主 编. 北 京 : 科 学 出 版 社,2011 ISBN Ⅰ. 1 操 Ⅱ. 1 戴 2 姚 Ⅲ. 1 操 作 系 统 - 研 究 生 - 入 学 考 试 - 自 学 参 考 资 料 Ⅳ. 1TP316 中 国 版 本 图 书 馆 CIP 数 据 核 字 (2011) 第 号 责 任 编 辑 : 赵 丽 欣 郭 丽 娜 / 责 任 校 对 : 刘 玉 靖 责 任 印 制 : 吕 春 珉 / 封 面 设 计 : 东 方 人 华 平 面 设 计 部 印 刷 科 学 出 版 社 发 行 各 地 新 华 书 店 经 销 * 2011 年 5 月 第 一 版 开 本 : / 年 5 月 第 一 次 印 刷 印 张 :25 印 数 : 字 数 : 定 价 :42.00 元 ( 如 有 印 装 质 量 问 题, 我 社 负 责 调 换 ) 销 售 部 电 话 编 辑 部 电 话 版 权 所 有, 侵 权 必 究 举 报 电 话 : ; ; 科 学 出 版 社

4

5 前 言 为 适 应 高 等 院 校 应 用 型 人 才 培 养 迅 速 发 展 的 趋 势 和 学 生 考 研 的 迫 切 需 求, 本 着 厚 基 础 重 能 力 求 创 新 的 总 体 思 想, 培 养 以 解 决 实 际 问 题 为 导 向 的 具 备 举 一 反 三 能 力 的 应 用 型 人 才, 满 足 当 前 教 育 改 革 的 迫 切 需 求, 我 们 编 写 了 本 书 1. 关 于 操 作 系 统 操 作 系 统 (Operating System,OS) 是 最 重 要 的 计 算 机 系 统 软 件, 同 时 也 是 计 算 机 科 学 领 域 最 活 跃 的 学 科 之 一, 其 发 展 极 为 迅 速 操 作 系 统 既 是 管 理 计 算 机 硬 件 与 软 件 资 源 的 程 序, 也 是 计 算 机 系 统 的 内 核 与 基 石 它 大 致 包 括 5 个 方 面 的 管 理 功 能 : 进 程 与 处 理 机 管 理 作 业 管 理 存 储 管 理 设 备 管 理 文 件 管 理 目 前 微 机 上 常 见 的 操 作 系 统 有 DOS OS/2 UNIX XENIX LINUX Windows Netware 等 2. 本 书 阅 读 指 南 全 书 共 分 9 章, 主 要 内 容 如 下 第 1 章 介 绍 了 操 作 系 统 的 发 展 过 程 基 本 特 性 功 能 及 结 构 设 计 第 2 章 介 绍 了 进 程 管 理, 包 括 进 程 与 线 程 的 基 本 概 念 进 程 的 控 制 同 步 通 信 等 问 题 第 3 章 介 绍 了 进 程 管 理 中 的 处 理 机 调 度 与 死 锁, 涉 及 处 理 机 调 度 的 概 念 调 度 算 法 及 多 处 理 机 系 统 的 调 度 问 题, 同 时 也 介 绍 了 死 锁 的 概 念 成 因 预 防 及 其 检 测 方 法 第 4 章 介 绍 了 存 储 器 管 理, 涉 及 程 序 的 装 入 和 链 接, 程 序 在 内 存 中 的 分 配 方 式 等 问 题 第 5 章 介 绍 了 设 备 管 理, 主 要 涉 及 I/O 系 统 的 分 类 及 控 制 方 式 设 备 分 配 处 理 算 法 和 磁 盘 存 储 器 的 管 理 等 问 题 第 6 章 介 绍 了 文 件 管 理, 主 要 涉 及 文 件 及 文 件 系 统 的 概 念 逻 辑 结 构, 在 外 存 的 分 配 方 式 及 文 件 的 共 享 与 保 护 机 制 和 目 录 管 理 等 问 题 第 7 章 介 绍 了 操 作 系 统 的 接 口, 主 要 包 括 联 机 命 令 接 口 系 统 调 用 和 图 形 化 用 户 界 面 接 口 第 8 章 介 绍 了 网 络 操 作 系 统 网 络 操 作 系 统 提 供 的 功 能 和 服 务 第 9 章 介 绍 了 一 个 操 作 系 统 的 实 例 UNIX 系 统 V 的 内 核 结 构 3. 本 书 特 色 与 优 点 科 学 出 版 社 (1) 结 构 清 晰, 知 识 完 整 内 容 详 实 系 统 性 强, 依 据 高 校 教 学 大 纲 组 织 内 容, 同 时 覆 盖 最 新 版 本 的 所 有 知 识 点, 并 将 实 际 经 验 融 入 基 本 理 论 之 中 (2) 学 以 致 用, 注 重 能 力 以 基 础 理 论 实 用 技 术 学 习 加 油 站 为 主 线 编 写, 每 一

6 ii 操 作 系 统 章 都 设 置 考 研 真 题 解 析, 以 便 于 读 者 掌 握 本 章 的 重 点 及 提 高 解 决 实 际 问 题 的 能 力 (3) 示 例 丰 富, 实 用 性 强 示 例 丰 富, 步 骤 明 确, 讲 解 细 致, 突 出 可 操 作 性 和 实 用 性 4. 本 书 读 者 定 位 本 书 既 可 作 为 大 专 院 校 的 教 材, 也 可 作 为 计 算 机 专 业 考 研 学 生 的 参 考 教 程 此 外, 本 书 也 非 常 适 于 计 算 机 领 域 的 教 师 研 究 人 员 以 及 自 学 人 员 参 考 阅 读 本 书 由 戴 仕 明 姚 昌 顺 任 主 编, 姜 华 张 希 伟 任 副 主 编, 郑 尚 志 梁 宝 华 周 进 钱 进 参 编, 全 书 框 架 结 构 由 何 光 明 拟 定 邵 世 智 云 邈 王 珊 珊 王 程 凌 史 春 联 赵 传 申 吴 婷 等 同 志 对 本 书 的 编 写 给 予 了 极 大 的 关 心 和 帮 助, 在 此 向 他 们 表 示 真 诚 的 感 谢 限 于 作 者 水 平, 书 中 难 免 存 在 不 妥 之 处, 恳 请 广 大 读 者 批 评 指 正

7 目 录 前 言 第 1 章 操 作 系 统 引 论 操 作 系 统 的 目 标 和 作 用 操 作 系 统 的 目 标 操 作 系 统 的 作 用 推 动 操 作 系 统 发 展 的 主 要 动 力 操 作 系 统 的 发 展 过 程 无 操 作 系 统 的 计 算 机 系 统 单 道 批 处 理 系 统 多 道 批 处 理 系 统 分 时 系 统 实 时 系 统 操 作 系 统 的 基 本 特 性 并 发 共 享 虚 拟 异 步 操 作 系 统 的 主 要 功 能 处 理 机 管 理 功 能 存 储 器 管 理 功 能 设 备 管 理 功 能 文 件 管 理 功 能 用 户 接 口 操 作 系 统 的 结 构 设 计 18 科 学 出 版 社 软 件 工 程 的 基 本 概 念 传 统 的 操 作 系 统 结 构 微 内 核 操 作 系 统 结 构 小 结 学 习 加 油 站 答 疑 解 惑 典 型 例 题 与 考 研 真 题 解 析 综 合 题 详 解 习 题 28 第 2 章 进 程 管 理 进 程 的 基 本 概 念 31

8 iv 操 作 系 统 程 序 的 顺 序 执 行 及 其 特 征 前 趋 图 程 序 的 并 发 执 行 及 其 特 征 进 程 的 特 征 与 状 态 进 程 控 制 块 进 程 控 制 进 程 的 创 建 进 程 的 终 止 进 程 的 阻 塞 与 唤 醒 进 程 的 挂 起 与 激 活 进 程 同 步 进 程 同 步 的 基 本 概 念 信 号 量 机 制 信 号 量 的 应 用 经 典 进 程 的 同 步 问 题 生 产 者 - 消 费 者 问 题 哲 学 家 进 餐 问 题 读 者 - 写 者 问 题 管 程 机 制 管 程 的 基 本 概 念 利 用 管 程 解 决 生 产 者 - 消 费 者 问 题 进 程 通 信 进 程 通 信 的 类 型 消 息 传 递 通 信 的 实 现 方 法 消 息 传 递 系 统 实 现 中 的 若 干 问 题 消 息 缓 冲 队 列 通 信 机 制 线 程 线 程 的 基 本 概 念 线 程 间 的 同 步 和 通 信 内 核 支 持 线 程 和 用 户 级 线 程 线 程 控 制 小 结 学 习 加 油 站 答 疑 解 惑 典 型 例 题 与 考 研 真 题 解 析 综 合 题 详 解 习 题 82 第 3 章 处 理 机 调 度 与 死 锁 处 理 机 调 度 的 基 本 概 念 86

9 目 录 v 高 级 中 级 和 低 级 调 度 调 度 队 列 模 型 选 择 调 度 方 式 和 调 度 算 法 的 若 干 准 则 调 度 算 法 先 来 先 服 务 和 短 作 业 ( 进 程 ) 优 先 调 度 算 法 高 优 先 权 优 先 调 度 算 法 基 于 时 间 片 的 轮 转 调 度 算 法 实 时 调 度 实 现 实 时 调 度 的 基 本 条 件 实 时 调 度 算 法 的 分 类 常 用 的 几 种 实 时 调 度 算 法 多 处 理 机 系 统 中 的 调 度 多 处 理 器 系 统 的 类 型 进 程 分 配 方 式 进 程 ( 线 程 ) 调 度 方 式 产 生 死 锁 的 原 因 和 必 要 条 件 产 生 死 锁 的 原 因 产 生 死 锁 的 必 要 条 件 处 理 死 锁 的 基 本 方 法 预 防 死 锁 的 方 法 预 防 死 锁 系 统 安 全 状 态 利 用 银 行 家 算 法 避 免 死 锁 死 锁 的 检 测 与 解 除 死 锁 的 检 测 死 锁 的 解 除 小 结 学 习 加 油 站 116 科 学 出 版 社 答 疑 解 惑 典 型 例 题 与 考 研 真 题 解 析 综 合 题 详 解 习 题 127 第 4 章 存 储 器 管 理 程 序 的 装 入 和 链 接 程 序 的 装 入 程 序 的 链 接 连 续 分 配 方 式 单 一 连 续 分 配 固 定 分 区 分 配 134

10 vi 操 作 系 统 动 态 分 区 分 配 动 态 重 定 位 分 区 分 配 对 换 基 本 分 页 存 储 管 理 方 式 页 面 与 页 表 地 址 变 换 机 构 两 级 和 多 级 页 表 基 本 分 段 存 储 管 理 方 式 分 段 存 储 管 理 方 式 的 引 入 分 段 系 统 的 基 本 原 理 信 息 共 享 段 页 式 存 储 管 理 方 式 虚 拟 存 储 器 的 基 本 概 念 虚 拟 存 储 器 的 引 入 虚 拟 存 储 器 的 实 现 方 法 虚 拟 存 储 器 的 特 征 请 求 分 页 存 储 管 理 方 式 请 求 分 页 中 的 硬 件 支 持 内 存 分 配 策 略 和 分 配 算 法 调 页 策 略 页 面 置 换 算 法 最 佳 置 换 算 法 和 先 进 先 出 置 换 算 法 最 近 最 久 未 使 用 (LRU) 置 换 算 法 Clock 置 换 算 法 请 求 分 段 存 储 管 理 方 式 请 求 分 段 中 的 硬 件 支 持 分 段 的 共 享 与 保 护 小 结 学 习 加 油 站 答 疑 解 惑 典 型 例 题 与 考 研 真 题 解 析 综 合 题 详 解 习 题 181 第 5 章 设 备 管 理 I/O 系 统 I/O 设 备 设 备 控 制 器 I/O 通 道 总 线 系 统 193

11 目 录 vii 5.2 I/O 控 制 方 式 程 序 I/O 方 式 中 断 驱 动 I/O 控 制 方 式 直 接 存 储 器 访 问 I/O 控 制 方 式 I/O 通 道 控 制 方 式 缓 冲 管 理 缓 冲 的 引 入 单 缓 冲 和 双 缓 冲 循 环 缓 冲 缓 冲 池 (Buffer Pool) 设 备 分 配 设 备 分 配 中 的 数 据 结 构 设 备 分 配 时 应 考 虑 的 因 素 设 备 独 立 性 独 占 设 备 的 分 配 程 序 SPOOLing 技 术 设 备 处 理 设 备 驱 动 程 序 的 功 能 和 特 点 设 备 驱 动 程 序 的 处 理 过 程 中 断 处 理 程 序 的 处 理 过 程 磁 盘 存 储 器 管 理 磁 盘 性 能 简 述 磁 盘 调 度 磁 盘 高 速 缓 存 (Disk Cache) 提 高 磁 盘 I/O 速 度 的 其 他 方 法 廉 价 磁 盘 冗 余 阵 列 小 结 学 习 加 油 站 答 疑 解 惑 224 科 学 出 版 社 典 型 例 题 与 考 研 真 题 解 析 综 合 题 详 解 习 题 230 第 6 章 文 件 管 理 文 件 和 文 件 系 统 数 据 项 记 录 和 文 件 文 件 类 型 和 文 件 系 统 模 型 文 件 操 作 文 件 的 逻 辑 结 构 文 件 逻 辑 结 构 的 类 型 顺 序 文 件 240

12 viii 操 作 系 统 索 引 文 件 索 引 顺 序 文 件 直 接 文 件 和 哈 希 文 件 外 存 分 配 方 式 连 续 分 配 链 接 分 配 索 引 分 配 目 录 管 理 文 件 控 制 块 和 索 引 结 点 目 录 结 构 目 录 查 询 技 术 文 件 存 储 空 间 的 管 理 空 闲 表 法 和 空 闲 链 表 法 位 示 图 法 成 组 链 接 法 文 件 共 享 与 文 件 保 护 基 于 索 引 结 点 的 共 享 方 式 利 用 符 号 链 实 现 文 件 共 享 磁 盘 容 错 技 术 数 据 一 致 性 控 制 事 务 检 查 点 并 发 控 制 重 复 数 据 的 数 据 一 致 性 问 题 小 结 学 习 加 油 站 答 疑 解 惑 典 型 例 题 与 考 研 真 题 解 析 综 合 题 详 解 习 题 278 第 7 章 操 作 系 统 的 接 口 联 机 命 令 接 口 联 机 命 令 的 类 型 键 盘 终 端 处 理 程 序 命 令 解 释 程 序 Shell 命 令 语 言 简 单 命 令 重 定 向 与 管 道 命 令 通 信 命 令 后 台 命 令 292

13 目 录 ix 7.3 系 统 调 用 系 统 调 用 的 基 本 概 念 系 统 调 用 的 类 型 系 统 调 用 的 实 现 小 结 习 题 297 第 8 章 网 络 操 作 系 统 计 算 机 网 络 概 述 计 算 机 网 络 的 拓 扑 结 构 计 算 机 广 域 网 络 计 算 机 局 域 网 络 开 放 系 统 互 连 参 考 模 型 客 户 / 服 务 器 模 式 客 户 / 服 务 器 模 式 的 形 成 及 其 优 点 两 层 结 构 的 客 户 / 服 务 器 模 式 三 层 结 构 的 客 户 / 服 务 器 模 式 的 引 入 两 层 客 户 / 服 务 器 与 三 层 客 户 / 服 务 器 的 比 较 网 络 操 作 系 统 的 功 能 数 据 通 信 功 能 资 源 共 享 功 能 网 络 管 理 功 能 应 用 互 操 作 功 能 网 络 操 作 系 统 提 供 的 服 务 电 子 邮 件 服 务 文 件 传 输 服 务 目 录 服 务 支 持 Internet 与 Intranet 的 功 能 和 服 务 Internet 简 介 Internet 提 供 的 信 息 服 务 323 科 学 出 版 社 Intranet 及 其 特 征 Windows NT Windows NT 的 发 展 过 程 Windows NT 的 优 良 性 能 网 络 文 件 / 打 印 服 务 目 录 服 务 数 据 安 全 管 理 小 结 习 题 334 第 9 章 UNIX 系 统 内 核 结 构 UNIX 系 统 概 述 335

14 x 操 作 系 统 UNIX 系 统 的 发 展 史 UNIX 系 统 的 特 征 UNIX 系 统 的 内 核 结 构 进 程 的 描 述 和 控 制 进 程 控 制 块 PCB 进 程 状 态 与 进 程 映 像 进 程 控 制 进 程 调 度 与 切 换 进 程 的 同 步 与 通 信 sleep 与 wakeup 同 步 机 制 信 号 (Signal) 机 制 管 道 机 制 消 息 机 制 共 享 存 储 区 机 制 信 号 量 集 机 制 存 储 器 管 理 请 求 调 页 管 理 的 数 据 结 构 换 页 进 程 请 求 调 页 设 备 管 理 字 符 设 备 缓 冲 区 管 理 块 设 备 缓 冲 区 管 理 内 核 与 驱 动 程 序 接 口 磁 盘 驱 动 程 序 磁 盘 读 写 程 序 文 件 管 理 UNIX 文 件 系 统 概 述 文 件 的 物 理 结 构 索 引 结 点 的 管 理 空 闲 磁 盘 空 间 的 管 理 文 件 表 的 管 理 目 录 管 理 小 结 学 习 加 油 站 答 疑 解 惑 典 型 例 题 与 考 研 真 题 解 析 综 合 题 详 解 习 题 383 参 考 文 献 386

15 第 1 章 操 作 系 统 引 论 计 算 机 系 统 由 硬 件 和 软 件 两 部 分 组 成, 操 作 系 统 是 配 置 在 硬 件 上 的 第 一 层 软 件, 在 计 算 机 系 统 中 占 据 重 要 的 地 位, 而 其 他 诸 如 汇 编 程 序 编 译 程 序 和 数 据 库 管 理 系 统 等 系 统 软 件, 以 及 大 量 的 应 用 软 件, 都 依 赖 于 操 作 系 统 的 支 持 因 此, 操 作 系 统 已 成 为 现 代 计 算 机 系 统 中 必 须 配 置 的 软 件 考 研 大 纲 (1) 操 作 系 统 的 概 念 特 征 功 能 和 提 供 的 服 务 (2) 操 作 系 统 的 发 展 与 分 类 (3) 操 作 系 统 的 运 行 环 境 1.1 操 作 系 统 的 目 标 和 作 用 在 计 算 机 系 统 上 配 置 操 作 系 统 (Operating System,OS) 的 主 要 目 标, 与 计 算 机 系 统 的 规 模 和 操 作 系 统 的 应 用 环 境 有 关 通 常, 对 于 配 置 在 大 中 型 计 算 机 系 统 中 的 操 作 系 统, 都 有 着 较 高 的 要 求, 相 应 地, 其 操 作 系 统 就 具 有 较 强 的 功 能 ; 而 对 应 用 于 实 时 工 业 控 制 环 境 下 的 操 作 系 统, 则 要 求 其 具 有 实 时 性 和 高 度 的 可 靠 性 操 作 系 统 的 目 标 目 前, 存 在 着 多 种 类 型 的 操 作 系 统, 不 同 类 型 的 操 作 系 统 其 目 标 各 有 所 侧 重 通 常 在 计 算 机 硬 件 上 配 置 的 操 作 系 统, 其 目 标 有 以 下 几 点 1. 方 便 性 配 置 操 作 系 统 后 可 使 计 算 机 系 统 更 方 便 使 用 一 个 未 配 置 操 作 系 统 的 计 算 机 系 统 是 极 难 使 用 的, 因 为 计 算 机 硬 件 只 能 识 别 0 和 1 这 样 的 机 器 代 码 而 如 果 配 置 了 操 作 系 统, 用 户 就 可 以 通 过 操 作 系 统 提 供 的 各 种 命 令 来 使 用 计 算 机 系 统 2. 有 效 性 科 学 出 版 社 在 未 配 置 操 作 系 统 的 计 算 机 中, 诸 如 CPU I/O 设 备 等 各 种 资 源 会 因 为 经 常 空 闲 而 得 不 到 充 分 利 用 ; 内 外 存 中 所 存 放 的 数 据 由 于 无 序 而 浪 费 存 储 空 间 配 置 了 操 作 系 统 后, CPU I/O 设 备 能 保 持 忙 碌 状 态 而 得 到 有 效 利 用, 而 且 内 外 存 的 数 据 因 有 序 存 储 节 约 了 存 储 空 间

16 2 操 作 系 统 3. 可 扩 充 性 随 着 超 大 规 模 集 成 电 路 (Very Large Scale Integrated Ciruits,VLSI) 技 术 的 迅 速 发 展, 计 算 机 硬 件 和 体 系 结 构 也 得 到 迅 速 发 展, 它 们 对 操 作 系 统 提 出 了 更 高 的 功 能 和 性 能 要 求 此 外, 计 算 机 网 络, 特 别 是 Internet 的 发 展, 也 对 操 作 系 统 提 出 了 新 的 要 求 因 此, 操 作 系 统 必 须 具 有 更 好 的 可 扩 充 性, 方 能 适 应 发 展 的 要 求 4. 开 放 性 20 世 纪 80 年 代 以 来, 由 于 计 算 机 网 络 的 发 展, 尤 其 是 局 域 网 (Local Area Network, LAN) 的 迅 速 发 展, 使 计 算 机 操 作 系 统 的 应 用 环 境 已 逐 步 由 单 机 环 境 转 向 网 络 环 境 为 使 来 自 不 同 厂 家 的 计 算 机 和 设 备 能 通 过 网 络 加 以 集 成 化, 并 能 正 确 有 效 地 协 同 工 作, 实 现 应 用 的 可 移 植 性 和 互 操 作 性, 必 须 具 有 统 一 的 开 放 环 境, 进 而 要 求 操 作 系 统 具 有 开 放 性 操 作 系 统 的 作 用 可 以 从 不 同 的 角 度 来 观 察 操 作 系 统 的 作 用 从 一 般 用 户 的 角 度, 可 以 把 操 作 系 统 看 成 是 用 户 与 计 算 机 硬 件 系 统 之 间 的 接 口 ; 从 资 源 管 理 的 角 度, 可 以 把 操 作 系 统 视 为 计 算 机 系 统 的 资 源 管 理 者 1. 操 作 系 统 作 为 用 户 与 计 算 机 硬 件 系 统 之 间 的 接 口 操 作 系 统 作 为 用 户 与 计 算 机 硬 件 系 统 之 间 接 口 的 含 义 是, 操 作 系 统 处 于 用 户 与 计 算 机 硬 件 系 统 之 间, 用 户 通 过 操 作 系 统 来 使 用 计 算 机 系 统 或 者 说, 用 户 在 操 作 系 统 的 帮 助 下, 能 够 方 便 快 捷 安 全 可 靠 地 操 纵 计 算 机 硬 件 和 运 行 自 己 的 程 序 应 注 意, 操 作 系 统 是 一 个 系 统 软 件, 因 而 这 种 接 口 是 软 件 接 口 图 1-1 是 操 作 系 统 作 为 接 口 的 示 意 图 由 图 可 看 出, 用 户 可 通 过 以 下 三 种 方 式 使 用 计 算 机 (1) 命 令 方 式 操 作 系 统 提 供 了 一 组 联 机 命 令 ( 语 言 ), 用 户 可 通 过 键 盘 输 入 有 关 命 令, 来 直 接 操 纵 计 算 机 系 统 (2) 系 统 调 用 方 式 操 作 系 统 提 供 了 一 组 系 统 调 用, 用 户 可 在 自 己 的 应 用 程 序 中 通 过 相 应 的 系 统 调 用 来 操 纵 计 算 机 (3) 图 标 和 窗 口 方 式 用 户 通 过 屏 幕 上 的 图 标 和 窗 口 来 操 纵 计 算 机 系 统 和 运 行 自 己 的 程 序 图 1-1 操 作 系 统 作 为 接 口 的 示 意 图

17 第 1 章 操 作 系 统 引 论 3 2. 操 作 系 统 作 为 计 算 机 系 统 资 源 的 管 理 者 在 一 个 计 算 机 系 统 中, 通 常 都 含 有 各 种 各 样 的 硬 件 和 软 件 资 源 归 纳 起 来 可 将 资 源 分 为 四 类 : 处 理 器 存 储 器 I/O 设 备 以 及 信 息 ( 数 据 和 程 序 ) 相 应 地, 操 作 系 统 的 主 要 功 能 也 正 是 针 对 这 四 类 资 源 进 行 有 效 的 管 理, 即 : 处 理 机 管 理, 用 于 分 配 和 控 制 处 理 机 ; 存 储 器 管 理, 主 要 负 责 内 存 的 分 配 与 回 收 ;I/O 设 备 管 理, 负 责 I/O 设 备 的 分 配 与 操 纵 ; 文 件 管 理, 负 责 文 件 的 存 取 共 享 和 保 护 可 见, 操 作 系 统 的 确 是 计 算 机 系 统 资 源 的 管 理 者 事 实 上, 当 今 世 界 上 广 为 流 行 的 一 个 关 于 操 作 系 统 作 用 的 观 点, 正 是 把 操 作 系 统 作 为 计 算 机 系 统 的 资 源 管 理 者 3. 操 作 系 统 用 作 扩 充 机 器 对 于 一 台 完 全 无 软 件 的 计 算 机 系 统 ( 即 裸 机 ), 即 使 其 功 能 再 强, 也 必 定 是 难 于 使 用 的 如 果 我 们 在 裸 机 上 覆 盖 上 一 层 I/O 设 备 管 理 软 件, 用 户 便 可 利 用 它 所 提 供 的 I/O 命 令, 来 进 行 数 据 输 入 和 打 印 输 出 此 时 用 户 所 看 到 的 机 器, 将 是 一 台 比 裸 机 功 能 更 强 使 用 更 方 便 的 机 器 通 常 把 覆 盖 了 软 件 的 机 器 称 为 扩 充 机 器 或 虚 机 器 如 果 我 们 又 在 第 一 层 软 件 上 再 覆 盖 上 一 层 文 件 管 理 软 件, 则 用 户 可 利 用 该 软 件 提 供 的 文 件 存 取 命 令 来 进 行 文 件 的 存 取 此 时, 用 户 所 看 到 的 是 一 台 功 能 更 强 的 虚 机 器 如 果 我 们 又 在 文 件 管 理 软 件 上 再 覆 盖 一 层 面 向 用 户 的 窗 口 软 件, 则 用 户 便 可 在 窗 口 环 境 下 方 便 地 使 用 计 算 机, 形 成 一 台 功 能 更 强 的 虚 机 器 由 此 可 知, 每 当 人 们 在 计 算 机 系 统 上 覆 盖 一 层 软 件 后, 系 统 的 功 能 便 增 强 一 级 由 于 操 作 系 统 本 身 包 含 了 若 干 个 层 次, 因 此 当 在 裸 机 上 覆 盖 操 作 系 统 后, 便 可 获 得 一 套 功 能 显 著 增 强 使 用 极 为 方 便 的 多 层 扩 充 机 器 或 多 层 虚 拟 机 推 动 操 作 系 统 发 展 的 主 要 动 力 在 操 作 系 统 出 现 后 的 短 短 40 年 中, 操 作 系 统 取 得 了 重 大 的 发 展, 其 主 要 动 力 可 归 结 为 以 下 四 个 方 面 1. 计 算 机 资 源 利 用 率 的 不 断 提 高 在 计 算 机 发 展 的 初 期, 计 算 机 系 统 特 别 昂 贵, 人 们 必 须 千 方 百 计 地 提 高 计 算 机 系 统 各 种 资 源 的 利 用 率, 这 成 为 最 初 发 展 的 动 力 由 此 形 成 了 能 自 动 地 对 一 批 作 业 进 行 处 理 的 批 处 理 系 统 2. 方 便 用 户 当 资 源 利 用 率 不 高 的 问 题 得 到 解 决 后, 用 户 在 上 机 调 试 程 序 时 的 不 方 便 性 便 成 为 主 要 矛 盾 于 是 人 们 又 开 始 想 方 设 法 改 善 用 户 上 机 调 试 程 序 时 的 条 件, 这 又 成 为 继 续 推 动 操 作 系 统 发 展 的 主 要 动 力 随 之 形 成 了 分 时 系 统, 或 称 为 多 用 户 系 统 3. 器 件 的 不 断 更 新 换 代 科 学 出 版 社 计 算 机 器 件 的 不 断 更 新, 使 得 计 算 机 性 能 不 断 提 高, 规 模 急 剧 扩 大, 从 而 推 动 了 操

18 4 操 作 系 统 作 系 统 的 功 能 和 性 能 也 迅 速 增 强 和 提 高 例 如, 当 微 机 由 8 位 发 展 到 16 位, 继 而 32 位 时, 相 应 微 机 的 操 作 系 统 也 就 由 8 位 发 展 到 16 位, 继 而 32 位, 此 时 相 应 的 操 作 系 统 的 功 能 和 性 能 也 都 有 了 显 著 的 提 高 和 增 强 4. 计 算 机 体 系 结 构 的 不 断 发 展 计 算 机 体 系 结 构 的 不 断 发 展, 也 推 动 着 操 作 系 统 的 不 断 发 展 并 产 生 新 的 操 作 系 统 类 型 例 如, 当 计 算 机 由 单 处 理 机 系 统 发 展 为 多 处 理 机 系 统 时, 相 应 地, 操 作 系 统 也 就 由 单 处 理 机 操 作 系 统 发 展 为 多 处 理 机 操 作 系 统 1.2 操 作 系 统 的 发 展 过 程 操 作 系 统 的 形 成 迄 今 已 有 50 多 年 的 时 间 在 20 世 纪 50 年 代 中 期, 出 现 了 第 一 个 简 单 的 批 处 理 操 作 系 统 ; 到 20 世 纪 60 年 代 中 期 产 生 了 多 道 程 序 批 处 理 系 统, 不 久 又 出 现 了 基 于 多 道 程 序 的 分 时 系 统 ;20 世 纪 80 年 代 至 90 年 代 是 微 型 机 多 处 理 机 和 计 算 机 网 络 大 发 展 的 年 代, 同 时 也 是 微 机 操 作 系 统 多 处 理 机 操 作 系 统 网 络 操 作 系 统 的 形 成 和 发 展 的 年 代 无 操 作 系 统 的 计 算 机 系 统 1. 人 工 操 作 方 式 1945 年 诞 生 的 第 一 台 计 算 机 到 20 世 纪 50 年 代 中 期 的 计 算 机, 属 于 第 一 代 计 算 机, 这 时 还 未 出 现 操 作 系 统 这 时 的 计 算 机 操 作 是 由 用 户 ( 即 程 序 员 ) 采 用 人 工 操 作 方 式 直 接 使 用 计 算 机 硬 件 系 统, 即 由 程 序 员 将 事 先 已 穿 孔 ( 对 应 于 程 序 和 数 据 ) 的 纸 带 ( 或 卡 片 ) 装 入 纸 带 输 入 机 ( 或 卡 片 输 入 机 ), 再 启 动 它 们 将 程 序 和 数 据 输 入 计 算 机, 然 后 启 动 计 算 机 运 行 当 程 序 运 行 完 毕 并 取 走 计 算 结 果 后, 才 让 下 一 个 用 户 上 机 这 种 人 工 操 作 方 式 有 以 下 两 方 面 的 缺 点 (1) 用 户 独 占 全 机 此 时, 计 算 机 及 其 全 部 资 源 只 能 由 上 机 用 户 独 占 (2) CPU 等 待 人 工 操 作 当 用 户 进 行 装 带 ( 卡 ) 卸 带 ( 卡 ) 等 人 工 操 作 时,CPU 及 内 存 是 空 闲 的 可 见, 人 工 操 作 方 式 严 重 地 降 低 了 计 算 机 资 源 的 利 用 率, 即 所 谓 的 人 机 矛 盾 随 着 CPU 速 度 的 提 高 和 系 统 规 模 的 扩 大, 人 机 矛 盾 变 得 日 趋 严 重 此 外, 随 着 CPU 速 度 的 迅 速 提 高 I/O 设 备 的 速 度 提 高 缓 慢, 又 使 CPU 与 I/O 设 备 之 间 速 度 不 匹 配 的 矛 盾 更 加 突 出 为 了 缓 和 上 述 矛 盾, 曾 先 后 出 现 了 通 道 技 术 和 缓 冲 技 术, 但 都 未 很 好 地 解 决 上 述 问 题, 直 至 后 来 引 入 了 脱 机 输 入 / 输 出 技 术, 才 获 得 了 较 为 令 人 满 意 的 结 果 2. 脱 机 输 入 / 输 出 (I/O) 方 式 为 了 解 决 人 机 矛 盾 及 CPU 和 I/O 速 度 不 匹 配 的 矛 盾,20 世 纪 50 年 代 末 出 现 了 脱 机 I/O 技 术 该 技 术 是 指 事 先 将 装 有 用 户 程 序 和 数 据 的 纸 带 装 入 纸 带 输 入 机, 在 一 台 外 围 机 的 控 制 下, 把 纸 带 上 的 数 据 输 入 到 磁 带 上 当 CPU 需 要 这 些 数 据 时, 直 接 从 磁 带 机 高 速 调 入 内 存

19 第 1 章 操 作 系 统 引 论 5 类 似 地, 当 CPU 需 要 输 出 时, 可 由 CPU 直 接 把 数 据 从 内 存 输 出 到 磁 带 上, 然 后 再 在 外 围 机 的 控 制 下, 将 磁 带 上 的 结 果 通 过 相 应 的 I/O 设 备 输 出 图 1-2 表 示 脱 机 I/O 过 程 由 于 数 据 I/O 是 在 外 围 控 制 机 的 控 制 下 完 成 的, 是 在 脱 离 主 机 的 情 况 下 进 行 的, 故 称 为 脱 机 I/O 方 式 图 1-2 脱 机 I/O 过 程 示 意 图 这 种 脱 机 I/O 方 式 的 主 要 优 点 如 下 (1) 减 少 了 CPU 的 空 闲 时 间 装 带 卸 带 以 及 将 数 据 从 低 速 I/O 设 备 送 到 高 速 磁 带 上, 都 是 在 脱 机 情 况 下 完 成 的, 不 占 用 主 机 时 间, 缓 和 了 人 机 矛 盾 (2) 提 高 了 I/O 速 度 CPU 运 行 时 需 要 的 数 据, 是 直 接 从 高 速 的 磁 带 或 磁 盘 上 读 取 的, 不 再 从 低 速 I/O 设 备 上 输 入, 缓 和 了 CPU 和 I/O 设 备 速 度 不 匹 配 的 矛 盾, 进 一 步 减 少 了 CPU 的 空 闲 时 间 单 道 批 处 理 系 统 1. 单 道 批 处 理 系 统 (Simple Batch Processing System) 的 处 理 过 程 早 期 的 计 算 机 系 统 非 常 昂 贵, 为 了 能 充 分 地 利 用 它, 应 尽 量 让 系 统 连 续 运 行, 以 减 少 空 闲 时 间 为 此, 通 常 是 把 一 批 作 业 以 脱 机 方 式 输 入 到 磁 带 上, 并 在 系 统 中 配 上 监 督 (Monitor) 程 序, 在 它 的 控 制 下 这 批 作 业 能 一 个 接 一 个 连 续 处 理 其 自 动 处 理 过 程 如 图 1-3 所 示 科 学 出 版 社 图 1-3 单 道 批 处 理 系 统 的 处 理 流 程

20 6 操 作 系 统 由 上 所 述 不 难 看 出, 单 道 批 处 理 系 统 是 在 解 决 人 机 矛 盾 和 CPU 与 I/O 设 备 速 度 不 匹 配 的 矛 盾 的 过 程 中 形 成 的 2. 单 道 批 处 理 系 统 的 特 征 单 道 批 处 理 系 统 是 最 早 出 现 的 一 种 操 作 系 统 严 格 地 说, 它 只 能 算 作 是 操 作 系 统 的 前 身 而 并 非 是 现 在 人 们 所 理 解 的 操 作 系 统 尽 管 如 此, 该 系 统 比 起 人 工 操 作 方 式 的 系 统 已 有 很 大 进 步 该 系 统 的 主 要 特 征 如 下 (1) 自 动 性 磁 带 上 的 一 批 作 业 能 自 动 地 依 次 运 行, 无 需 人 工 干 预 (2) 顺 序 性 磁 带 上 的 各 道 作 业 是 顺 序 进 入 内 存 的, 其 完 成 顺 序 与 它 们 的 进 入 顺 序 在 正 常 情 况 下 应 完 全 相 同, 即 先 进 入 内 存 的 作 业 先 完 成 (3) 单 道 性 内 存 中 仅 有 一 道 程 序 运 行, 即 监 督 程 序 每 次 从 磁 带 上 只 调 入 一 道 程 序 进 入 内 存, 只 有 其 运 行 结 束 或 发 生 异 常 时, 才 换 入 其 后 继 程 序 进 入 内 存 运 行 多 道 批 处 理 系 统 1. 多 道 程 序 设 计 的 基 本 概 念 在 单 道 批 处 理 系 统 中, 内 存 中 仅 有 一 道 作 业, 它 无 法 充 分 利 用 系 统 中 的 所 有 资 源, 系 统 性 能 较 差 为 了 进 一 步 提 高 资 源 的 利 用 率 和 系 统 吞 吐 量, 在 20 世 纪 60 年 代 中 期 又 引 入 了 多 道 程 序 设 计 技 术, 由 此 形 成 了 多 道 批 处 理 系 统 (Multiprogrammed Batch Processing System) 在 该 系 统 中, 用 户 所 提 交 的 作 业 都 先 存 放 在 外 存 上 并 排 成 一 个 队 列, 称 为 后 备 队 列 ; 然 后, 由 作 业 调 度 程 序 按 一 定 的 算 法 从 后 备 队 列 中 选 择 若 干 个 作 业 调 入 内 存, 使 它 们 共 享 CPU 和 系 统 中 的 各 种 资 源 具 体 地 说, 在 操 作 系 统 中 引 入 多 道 程 序 设 计 技 术 可 带 来 以 下 好 处 (1) 提 高 CPU 的 利 用 率 当 内 存 中 仅 有 一 道 程 序 时, 每 逢 该 程 序 在 运 行 中 发 出 I/O 请 求 后,CPU 空 闲, 必 须 在 其 I/O 完 成 后 才 继 续 运 行 ; 尤 其 因 I/O 设 备 的 低 速 性, 更 使 CPU 的 利 用 率 显 著 降 低 在 引 入 多 道 程 序 设 计 技 术 后, 由 于 同 时 在 内 存 中 装 有 若 干 道 程 序, 并 使 它 们 交 替 地 运 行, 这 样, 当 正 在 运 行 的 程 序 因 I/O 而 暂 停 执 行 时, 系 统 可 调 度 另 一 道 程 序 运 行, 从 而 保 证 了 CPU 处 于 忙 碌 状 态 (2) 可 提 高 内 存 和 I/O 设 备 利 用 率 为 了 能 运 行 较 大 的 作 业, 通 常 内 存 都 具 有 较 大 容 量, 但 由 于 80% 以 上 的 作 业 都 属 于 中 小 型 作 业, 因 此 在 单 道 程 序 环 境 下, 会 造 成 内 存 的 浪 费 类 似 地, 对 于 系 统 中 所 配 置 的 多 种 类 型 的 I/O 设 备, 在 单 道 程 序 环 境 下 也 不 能 充 分 利 用 如 果 允 许 在 内 存 中 装 入 多 道 程 序, 并 允 许 它 们 并 发 执 行, 则 无 疑 会 大 大 提 高 内 存 和 I/O 设 备 的 利 用 率 (3) 增 加 系 统 吞 吐 量 在 保 持 CPU I/O 设 备 不 断 忙 碌 的 同 时, 会 大 幅 度 地 提 高 系 统 的 吞 吐 量, 从 而 降 低 作 业 加 工 所 需 的 费 用 2. 多 道 批 处 理 系 统 的 特 征 (1) 多 道 性 在 内 存 中 可 同 时 驻 留 多 道 程 序, 并 允 许 它 们 并 发 执 行

21 第 1 章 操 作 系 统 引 论 7 (2) 无 序 性 多 个 作 业 完 成 的 先 后 顺 序 与 它 们 进 入 的 顺 序 之 间 并 无 严 格 的 对 应 关 系 (3) 调 度 性 作 业 从 提 交 给 系 统 开 始 直 至 完 成, 需 要 经 过 两 次 调 度 : 首 先 是 作 业 调 度, 即 按 一 定 的 作 业 调 度 算 法, 选 择 若 干 个 作 业 从 外 存 的 后 备 作 业 队 列 中 调 入 内 存 ; 其 次 是 进 程 调 度, 即 按 一 定 的 进 程 调 度 算 法, 从 已 在 内 存 的 作 业 中 选 择 一 个 作 业, 将 处 理 器 分 配 给 它, 使 之 执 行 3. 多 道 批 处 理 系 统 的 优 缺 点 (1) 资 源 利 用 率 高 由 于 内 存 中 驻 留 了 多 道 程 序, 它 们 可 共 享 资 源, 从 而 使 资 源 利 用 率 提 高 (2) 系 统 吞 吐 量 大 系 统 的 吞 吐 量 是 指 系 统 在 单 位 时 间 完 成 的 总 工 作 量 提 高 系 统 吞 吐 量 的 原 因 有 二 : 第 一,CPU 和 其 他 资 源 保 持 忙 碌 状 态 ; 第 二, 仅 当 作 业 完 成 或 运 行 不 下 去 时 才 进 行 切 换, 系 统 开 销 小 (3) 平 均 周 转 时 间 长 作 业 的 周 转 时 间 是 指 作 业 从 进 入 系 统 开 始, 直 至 其 完 成 并 退 出 系 统 位 置 所 经 历 的 时 间 在 批 处 理 系 统 中, 由 于 作 业 要 排 队 依 次 进 行 处 理, 因 而 周 转 时 间 较 长 (4) 无 交 互 能 力 用 户 一 旦 把 作 业 提 交 给 系 统 后, 直 至 作 业 完 成, 用 户 都 不 能 与 自 己 的 作 业 交 互, 这 对 修 改 和 调 试 程 序 极 为 不 便 4. 多 道 批 处 理 系 统 需 要 解 决 的 问 题 (1) 处 理 机 管 理 问 题 在 多 道 程 序 之 间, 应 如 何 分 配 被 它 们 共 享 的 处 理 机, 使 CPU 既 能 满 足 各 程 序 运 行 需 要, 又 能 提 高 其 利 用 率, 以 及 把 处 理 机 分 配 给 某 程 序 后 如 何 回 收 等 一 系 列 问 题 (2) 内 存 管 理 问 题 应 如 何 为 每 道 程 序 分 配 必 要 的 内 存 空 间, 使 它 们 各 得 其 所, 又 不 相 互 干 扰 等 问 题 (3) I/O 设 备 管 理 问 题 系 统 中 可 能 有 多 种 类 型 的 I/O 设 备 供 多 道 程 序 共 享, 应 如 何 分 配 这 些 I/O 设 备, 做 到 既 方 便 用 户 对 设 备 的 使 用, 又 能 提 高 设 备 的 利 用 率 (4) 文 件 管 理 问 题 在 现 代 计 算 机 系 统 中, 通 常 存 放 着 大 量 程 序 和 数 据 ( 以 文 件 形 式 存 放 ), 应 如 何 组 织 这 些 程 序 和 数 据, 才 能 使 它 们 既 方 便 用 户 使 用, 又 能 保 证 数 据 的 安 全 性 和 一 致 性 (5) 作 业 管 理 问 题 系 统 中 的 各 种 应 用 程 序, 有 的 属 于 计 算 型 的, 有 的 属 于 I/O 型 的, 有 些 作 业 既 重 要 又 紧 迫, 有 些 则 要 求 系 统 及 时 响 应, 这 时 应 解 决 如 何 组 织 这 些 作 业 的 问 题 为 此, 应 在 计 算 机 系 统 中 增 加 一 组 软 件, 用 以 对 上 述 问 题 进 行 妥 善 有 效 的 处 理 这 组 软 件 应 包 括 : 智 能 控 制 和 管 理 四 大 资 源 的 软 件, 合 理 地 对 各 类 作 业 进 行 调 度 的 软 件, 以 及 方 便 用 户 使 用 计 算 机 的 软 件 正 是 这 样 的 一 组 软 件 构 成 了 操 作 系 统 据 此, 操 作 系 统 可 以 定 义 为 一 组 控 制 和 管 理 计 算 机 软 硬 件 资 源, 合 理 地 对 各 类 作 业 进 行 调 度, 以 及 方 便 用 户 使 用 程 序 的 集 合 科 学 出 版 社

22 8 操 作 系 统 分 时 系 统 1. 分 时 系 统 (Time-Sharing System) 的 产 生 如 果 说, 推 动 多 道 批 处 理 系 统 形 成 和 发 展 的 主 要 动 力, 是 提 高 资 源 利 用 率 和 系 统 吞 吐 量, 那 么, 推 动 分 时 系 统 形 成 和 发 展 的 主 要 动 力, 则 是 用 户 的 需 求 或 者 说, 分 时 系 统 是 为 了 满 足 用 户 需 求 所 形 成 的 一 种 新 型 操 作 系 统 它 与 多 道 批 处 理 系 统 之 间, 有 着 截 然 不 同 的 性 能 差 别 用 户 的 需 求 具 体 表 现 在 以 下 几 个 方 面 (1) 人 机 交 互 每 当 程 序 员 写 好 一 个 新 程 序 时, 都 需 要 上 机 调 试, 而 且 可 能 要 边 调 试 边 修 改, 即 希 望 能 进 行 人 机 交 互 (2) 共 享 主 机 在 20 世 纪 60 年 代, 计 算 机 非 常 昂 贵, 只 能 多 个 用 户 共 享 一 台 计 算 机, 但 用 户 在 使 用 这 样 的 机 器 时 希 望 像 独 占 计 算 机 一 样 使 用, 不 仅 可 随 时 与 之 进 行 交 互, 而 且 感 觉 不 到 其 他 用 户 在 使 用 该 计 算 机 (3) 便 于 用 户 上 机 在 多 道 批 处 理 系 统 中, 用 户 上 机 前 必 须 把 自 己 的 作 业 邮 寄 或 亲 自 送 到 机 房, 这 对 于 外 地 或 远 方 的 用 户 是 极 为 不 便 的 用 户 希 望 通 过 自 己 的 终 端 直 接 将 作 业 传 送 到 机 器 上 进 行 处 理, 并 对 自 己 的 作 业 进 行 控 制 由 上 所 述 不 难 得 知, 分 时 系 统 是 指 在 一 台 主 机 上 连 接 了 多 个 带 有 显 示 器 和 键 盘 的 终 端, 同 时 允 许 多 个 用 户 通 过 自 己 的 终 端, 以 交 互 方 式 使 用 计 算 机, 共 享 主 机 资 源 2. 分 时 系 统 实 现 中 的 关 键 问 题 实 现 分 时 系 统 中 最 关 键 的 问 题 是 如 何 使 用 户 能 与 自 己 的 作 业 进 行 交 互, 即 当 用 户 在 自 己 的 终 端 上 输 入 命 令 时, 系 统 应 能 及 时 接 收 并 及 时 处 理 该 命 令, 再 将 结 果 返 回 给 用 户 此 后, 用 户 可 继 续 输 入 下 一 条 命 令, 此 即 人 机 交 互 应 强 调 指 出, 即 使 有 多 个 用 户 同 时 通 过 自 己 的 键 盘 输 入 命 令, 系 统 也 应 能 全 部 及 时 地 接 收 并 处 理 (1) 及 时 接 收 及 时 接 收 用 户 输 入 的 命 令 或 数 据 并 不 困 难, 只 要 在 系 统 中 配 置 一 个 多 路 卡 其 作 用 是 使 计 算 机 能 同 时 接 收 多 个 客 户 端 输 入 的 数 据, 此 外, 还 需 为 每 个 终 端 配 置 一 个 缓 冲 区, 用 以 暂 存 用 户 的 数 据 或 命 令 (2) 及 时 处 理 人 机 交 互 的 关 键, 是 使 用 户 输 入 命 令 后, 能 及 时 控 制 自 己 作 业 的 运 行, 或 修 改 自 己 的 作 业 为 此, 各 个 用 户 的 作 业 都 须 在 内 存 中, 且 能 频 繁 地 获 得 处 理 机 而 运 行, 否 则, 用 户 输 入 的 命 令 将 无 法 作 用 到 自 己 的 作 业 上 因 此, 前 面 介 绍 的 批 处 理 系 统 是 无 法 实 现 人 机 交 互 的 由 此 可 见, 为 实 现 人 机 交 互, 必 须 彻 底 改 变 原 来 批 处 理 系 统 的 运 行 方 式 首 先, 用 户 作 业 不 能 先 进 入 磁 盘, 再 调 入 内 存 因 为 作 业 在 磁 盘 上 不 能 运 行, 自 然 无 法 与 用 户 实 现 交 互, 因 此, 作 业 应 该 直 接 进 入 内 存 其 次, 不 允 许 一 个 作 业 长 期 占 用 处 理 机, 直 至 运 行 结 束 或 出 现 异 常 时 才 调 度 其 他 作 业 于 是 规 定 每 个 作 业 只 运 行 一 个 很 短 的 时 间 ( 如 0.1 秒, 我 们 称 之 为 时 间 片 ), 然 后 暂 停 该 作 业 的 运 行, 并 立 即 调 度 下 一 个 程 序 运 行 如 果 在 不 长 的 时 间 ( 如 3 秒 ) 内, 能 使 所 有 用 户 的 作 业 都 执 行 一 次 ( 一 个 时 间 片 的 时 间 ), 便 可 实 现 每 个 用 户 都 能 及 时 与 自 己 的 作 业 进 行 交 互, 从 而 可 使 用 户 的 请 求 得 到 及 时 响 应

23 第 1 章 操 作 系 统 引 论 9 3. 分 时 系 统 的 特 征 (1) 多 路 性 允 许 一 台 主 机 同 时 连 接 多 台 联 机 终 端, 系 统 按 分 时 原 则 为 每 个 用 户 服 务 (2) 独 立 性 每 个 用 户 独 占 一 个 终 端, 彼 此 独 立 操 作, 互 不 干 扰, 因 此, 用 户 感 觉 就 像 是 他 一 人 独 占 主 机 (3) 及 时 性 用 户 的 请 求 能 在 极 短 的 时 间 内 得 到 响 应, 此 间 隔 时 间 是 以 人 们 能 接 受 的 等 待 时 间 来 确 定 的 (4) 交 互 性 用 户 可 以 通 过 终 端 与 系 统 进 行 广 泛 的 人 机 对 话 实 时 系 统 所 谓 实 时, 是 表 示 及 时, 而 实 时 系 统 (Real-Time System) 是 指 系 统 能 及 时 ( 或 即 时 ) 响 应 外 部 事 件 的 请 求, 在 规 定 的 时 间 内 完 成 对 该 事 件 的 处 理, 并 控 制 所 有 实 时 任 务 协 调 一 致 地 运 行 1. 应 用 需 求 虽 然 多 道 批 处 理 和 分 时 系 统 已 经 能 获 得 较 为 令 人 满 意 的 资 源 利 用 率 和 响 应 时 间, 但 它 们 还 不 能 满 足 以 下 某 些 应 用 领 域 的 需 要 (1) 实 时 控 制 当 把 计 算 机 用 于 生 产 过 程 的 控 制, 以 形 成 以 计 算 机 为 中 心 的 控 制 系 统 时, 系 统 要 求 能 实 时 采 集 现 场 数 据, 并 对 采 集 的 现 场 数 据 进 行 及 时 处 理, 进 而 自 动 控 制 相 应 的 执 行 机 构, 使 某 些 参 数 ( 如 温 度 压 力 ) 能 按 预 定 的 规 律 变 化, 以 保 证 产 品 质 量 通 常 把 用 于 进 行 实 时 控 制 的 系 统 称 为 实 时 系 统 (2) 实 时 信 息 处 理 通 常, 人 们 把 用 于 对 信 息 进 行 实 时 处 理 的 系 统 称 为 实 时 信 息 处 理 系 统 该 系 统 由 一 台 主 机 连 接 成 百 上 千 台 终 端 组 成, 其 接 收 远 程 终 端 发 来 的 服 务 请 求, 对 信 息 进 行 检 索 和 处 理, 在 很 短 时 间 内 给 用 户 做 出 正 确 回 答 如 飞 机 或 火 车 的 订 票 系 统 和 情 报 检 索 系 统 等 2. 实 时 任 务 在 实 时 系 统 中 必 然 存 在 着 若 干 个 实 时 任 务, 这 些 任 务 通 常 与 某 个 ( 些 ) 外 部 设 备 相 关, 能 反 应 或 控 制 相 应 的 外 部 设 备, 因 为 带 有 某 种 程 度 的 紧 迫 性, 可 从 不 同 角 度 对 实 时 任 务 进 行 分 类 1) 按 任 务 执 行 时 是 否 呈 现 周 期 性 来 划 分 (1) 周 期 性 实 时 任 务 外 部 设 备 周 期 性 地 发 出 激 励 信 号 给 计 算 机, 要 求 它 按 指 定 周 期 循 环 执 行, 以 便 周 期 性 地 控 制 某 外 部 设 备 (2) 非 周 期 性 实 时 任 务 外 部 设 备 所 发 出 的 激 励 信 号 并 无 明 显 的 周 期 性, 但 都 必 须 联 系 着 一 个 截 止 时 间 (Deadline) 它 又 可 分 为 :1 开 始 截 止 时 间 任 务 在 某 时 间 以 前 必 须 开 始 执 行 ;2 完 成 截 止 时 间 任 务 在 某 时 间 以 前 必 须 完 成 2) 根 据 对 截 止 时 间 的 要 求 来 划 分 (1) 硬 实 时 任 务 (Hard Real-Time Task) 系 统 必 须 满 足 任 务 对 截 止 时 间 的 要 求, 否 则 可 能 出 现 难 以 预 测 的 结 果 科 学 出 版 社

24 10 操 作 系 统 (2) 软 实 时 任 务 (Soft Real-Time Task) 它 也 联 系 着 一 个 截 止 时 间, 但 并 不 严 格, 若 偶 尔 错 过 了 任 务 的 截 止 时 间, 对 系 统 产 生 的 影 响 也 不 会 太 大 3. 实 时 系 统 与 分 时 系 统 特 征 的 比 较 我 们 可 以 从 以 下 几 个 方 面 考 虑 分 时 系 统 和 实 时 系 统 的 差 别 实 时 系 统 分 为 实 时 信 息 系 统 和 实 时 控 制 系 统 两 种 (1) 实 时 信 息 处 理 系 统 与 分 时 系 统 一 样 都 能 为 多 个 用 户 服 务 系 统 按 分 时 原 则 为 多 个 终 端 用 户 服 务 ; 而 对 实 时 控 制 系 统, 则 表 现 为 经 常 对 多 路 现 场 信 息 进 行 采 集, 以 及 对 多 个 对 象 或 多 个 执 行 机 构 进 行 控 制 (2) 实 时 信 息 处 理 与 分 时 操 作 系 统 一 样, 每 个 用 户 各 占 一 个 终 端, 彼 此 独 立 操 作, 互 不 干 扰 ; 实 时 系 统 中 信 息 的 采 集 和 对 对 象 的 控 制 也 是 彼 此 互 不 干 扰 的 (3) 实 时 信 息 系 统 对 响 应 时 间 的 要 求 与 分 时 系 统 类 似, 都 是 以 人 所 能 接 受 的 等 待 时 间 来 确 定 的 ; 而 实 时 控 制 系 统 的 响 应 时 间, 则 是 以 控 制 对 象 所 能 接 受 的 延 迟 来 确 定 的 (4) 分 时 系 统 是 一 种 通 用 系 统, 主 要 用 于 运 行 终 端 用 户 程 序, 因 此 它 具 有 较 强 的 交 互 能 力 ; 而 实 时 操 作 系 统 虽 然 也 有 交 互 能 力, 但 不 及 前 者 (5) 分 时 系 统 要 求 系 统 可 靠, 相 比 之 下, 实 时 系 统 要 求 可 靠 性 更 高 1.3 操 作 系 统 的 基 本 特 性 前 面 介 绍 的 三 种 基 本 的 操 作 系 统, 虽 然 各 有 自 己 的 基 本 特 征, 但 它 们 也 都 具 有 并 发 共 享 虚 拟 和 异 步 这 四 个 基 本 特 征 并 发 并 行 性 和 并 发 性 (Concurrence) 是 两 个 既 相 似 又 有 区 别 的 概 念 并 行 性 是 指 两 个 或 多 个 事 件 在 同 一 时 刻 发 生 ; 而 并 发 性 是 指 两 个 或 多 个 事 件 在 同 一 时 间 间 隔 内 发 生 在 多 道 程 序 环 境 下, 并 发 性 是 指 在 一 段 时 间 内, 宏 观 上 有 多 个 程 序 在 同 时 运 行, 但 在 单 处 理 机 系 统 中, 每 一 时 刻 却 仅 能 有 一 道 程 序 执 行, 故 微 观 上 这 些 程 序 只 能 是 分 时 地 交 替 执 行 如 果 在 计 算 机 系 统 中 有 多 个 处 理 机, 则 这 些 可 以 并 发 执 行 的 程 序 便 可 被 分 配 到 多 个 处 理 机 上, 实 现 并 行 执 行, 即 利 用 每 个 处 理 机 来 处 理 一 个 可 并 发 执 行 的 程 序, 这 样, 多 个 程 序 便 可 同 时 执 行 应 当 指 出, 通 常 的 程 序 是 静 态 实 体, 它 们 不 能 并 发 执 行 为 使 多 个 程 序 能 并 发 执 行, 系 统 必 须 分 别 为 每 个 程 序 建 立 进 程 简 单 地 说, 进 程 是 指 在 系 统 中 能 独 立 运 作 并 作 为 资 源 分 配 的 基 本 单 位, 它 是 由 一 组 机 器 指 令 数 据 和 堆 栈 等 组 成 的, 是 一 个 活 动 实 体 多 个 进 程 之 间 可 以 并 发 执 行 和 交 换 信 息 一 个 进 程 在 运 行 时 需 要 一 定 的 资 源, 如 CPU 存 储 空 间 及 I/O 设 备 等 在 操 作 系 统 中 引 入 进 程 的 目 的, 是 使 多 个 程 序 能 并 发 执 行 例 如, 引 入 进 程 后, 若 分 别 为 计 算 程 序 和 I/O 程 序 各 建 立 一 个 进 程, 则 这 两 个 进 程 可 并 发 执 行 由 于 在 系 统 中 具 备 使 计 算 程 序 和 I/O 程 序 同 时 运 行 的 硬 件 条 件, 因 而 可 实 现 并 行 工 作, 提 高 系 统 资 源 利 用 率 和 系 统 吞 吐 量, 改 善 系 统 性 能

25 第 1 章 操 作 系 统 引 论 11 长 期 以 来, 进 程 都 是 操 作 系 统 中 可 以 拥 有 资 源 和 独 立 运 行 的 基 本 单 位 直 到 20 世 纪 80 年 代 中 期, 人 们 才 提 出 了 比 进 程 更 小 的 单 位 线 程 (Threads) 通 常 在 一 个 进 程 中 包 含 了 若 干 个 线 程 在 引 入 线 程 的 操 作 系 统 中, 通 常 都 是 把 进 程 作 为 资 源 分 配 的 基 本 单 位, 而 把 线 程 作 为 独 立 运 行 的 基 本 单 位 由 于 线 程 比 进 程 小, 基 本 不 拥 有 系 统 资 源, 故 而 运 行 起 来 更 为 轻 松, 因 此 近 年 来 推 出 的 操 作 系 统 都 引 入 了 线 程 共 享 在 操 作 系 统 环 境 下, 所 谓 共 享 (Sharing) 是 指 系 统 中 的 资 源 可 供 内 存 中 多 个 并 发 执 行 的 进 程 ( 线 程 ) 共 同 使 用 由 于 资 源 属 性 的 不 同, 进 程 对 资 源 共 享 的 方 式 也 不 同, 目 前 主 要 有 以 下 两 种 资 源 共 享 方 式 1. 互 斥 共 享 方 式 系 统 中 的 某 些 资 源, 如 打 印 机 磁 带 机, 虽 然 它 们 可 以 提 供 给 多 个 进 程 ( 线 程 ) 使 用, 但 为 使 所 打 印 或 记 录 的 结 果 不 致 造 成 混 淆, 规 定 在 一 段 时 间 内 只 允 许 一 个 进 程 ( 线 程 ) 访 问 该 资 源 为 此, 当 一 个 进 程 A 要 访 问 某 资 源 时, 必 须 先 提 出 请 求, 如 果 此 时 该 资 源 空 闲, 系 统 便 可 将 之 分 配 给 进 程 A 使 用, 此 后, 若 再 有 其 他 进 程 也 要 访 问 该 资 源 时 ( 只 要 A 未 用 完 ) 则 必 须 等 待 仅 当 A 进 程 访 问 完 并 释 放 该 资 源 后, 才 允 许 另 一 进 程 对 该 资 源 进 行 访 问 我 们 把 这 种 资 源 共 享 方 式 称 为 互 斥 式 共 享, 而 把 在 一 段 时 间 内 只 允 许 一 个 进 程 访 问 的 资 源 称 为 临 界 资 源 或 独 占 资 源 计 算 机 系 统 中 的 大 多 数 物 理 设 备, 以 及 某 些 软 件 中 所 用 的 栈 变 量 和 表 格, 都 属 于 临 界 资 源, 它 们 要 求 被 互 斥 地 共 享 2. 同 时 访 问 方 式 系 统 中 还 有 另 一 类 资 源, 允 许 在 一 段 时 间 内 由 多 个 进 程 同 时 对 它 们 进 行 访 问 这 里 所 谓 的 同 时 往 往 是 宏 观 上 的, 而 在 微 观 上, 这 些 进 程 可 能 是 交 替 地 对 该 资 源 进 行 访 问 典 型 的 可 供 多 个 进 程 同 时 访 问 的 资 源 是 磁 盘 设 备, 一 些 可 用 重 入 码 编 写 的 文 件, 也 可 以 被 同 时 共 享, 即 若 干 个 用 户 同 时 访 问 该 文 件 并 发 和 共 享 是 操 作 系 统 的 两 个 最 基 本 的 特 征, 它 们 又 是 互 为 存 在 的 条 件 一 方 面, 资 源 共 享 是 以 程 序 ( 进 程 ) 的 并 发 执 行 为 条 件 的, 若 系 统 不 允 许 程 序 并 发 执 行, 自 然 不 存 在 资 源 共 享 问 题 ; 另 一 方 面, 若 系 统 不 能 对 资 源 共 享 实 施 有 效 管 理, 协 调 好 诸 进 程 对 共 享 资 源 的 访 问, 也 必 然 影 响 到 程 序 并 发 执 行 的 程 度, 甚 至 根 本 无 法 并 发 执 行 虚 拟 科 学 出 版 社 操 作 系 统 中 所 谓 的 虚 拟 (Virtual), 是 指 通 过 某 种 技 术 把 一 个 物 理 实 体 变 为 若 干 个 逻 辑 上 的 对 应 物 物 理 实 体 ( 前 者 ) 是 实 的, 即 实 际 存 在 的 ; 而 后 者 是 虚 的, 是 用 户 感 觉 上 的 东 西 相 应 地, 用 于 实 现 虚 拟 的 技 术, 称 为 虚 拟 技 术 在 操 作 系 统 中 利 用 了 多 种 虚 拟 技 术, 分 别 用 来 实 现 虚 拟 处 理 机 虚 拟 内 存 虚 拟 外 部 设 备 和 虚 拟 信 道 等 在 虚 拟 处 理 机 技 术 中, 是 通 过 多 道 程 序 设 计 技 术, 让 多 道 程 序 并 发 执 行 的 方 法, 来 分 时 使 用 一 台 处 理 机 的 此 时, 虽 然 只 有 一 台 处 理 机, 但 它 能 同 时 为 多 个 用 户 服 务, 使 每 个 终 端 用 户 都 认 为 是 有 一 个 CPU 在 专 门 为 其 服 务 即 利 用 多 道 程 序 设 计 技 术, 把 一 台

26 12 操 作 系 统 物 理 上 的 CPU 虚 拟 为 多 台 逻 辑 上 的 CPU, 也 称 为 虚 拟 处 理 机, 我 们 把 用 户 所 感 觉 到 的 CPU 称 为 虚 拟 处 理 器 类 似 地, 可 以 通 过 虚 拟 存 储 器 技 术, 将 一 台 机 器 的 物 理 存 储 器 变 为 虚 拟 存 储 器, 以 便 从 逻 辑 上 来 扩 充 存 储 器 的 容 量 此 时, 虽 然 物 理 内 存 的 容 量 可 能 不 大 ( 如 32MB), 但 它 可 以 运 行 比 它 大 得 多 的 用 户 程 序 ( 如 128MB) 这 使 用 户 所 感 觉 到 的 内 存 容 量 比 实 际 内 存 容 量 大 得 多, 认 为 该 机 器 的 内 存 至 少 也 有 128MB 当 然 这 时 用 户 所 感 觉 到 的 内 存 容 量 是 虚 的 我 们 把 用 户 所 感 觉 到 的 存 储 器 称 为 虚 拟 存 储 器 我 们 还 可 以 通 过 虚 拟 设 备 技 术, 将 一 台 物 理 I/O 设 备 虚 拟 为 多 台 逻 辑 上 的 I/O 设 备, 并 允 许 每 个 用 户 占 用 一 台 逻 辑 上 的 I/O 设 备, 这 样 便 可 使 原 来 仅 允 许 在 一 段 时 间 内 由 一 个 用 户 访 问 的 设 备 ( 即 临 界 资 源 ), 变 为 在 一 段 时 间 内 允 许 多 个 用 户 同 时 访 问 的 共 享 设 备 例 如, 原 来 的 打 印 机 属 于 临 界 资 源, 而 通 过 虚 拟 设 备 技 术, 可 以 把 它 变 为 多 台 逻 辑 上 的 打 印 机, 供 多 个 用 户 同 时 打 印 此 外, 也 可 以 把 一 条 物 理 信 道 虚 拟 为 多 条 逻 辑 信 道 ( 虚 信 道 ) 在 操 作 系 统 中, 虚 拟 的 实 现 主 要 是 通 过 分 时 使 用 的 方 法 显 然, 如 果 n 是 某 物 理 设 备 所 对 应 的 虚 拟 的 逻 辑 设 备 数, 则 虚 拟 设 备 的 平 均 速 度 必 然 是 物 理 设 备 速 度 的 1/n 异 步 在 多 道 程 序 环 境 下, 允 许 多 个 进 程 并 发 执 行, 但 只 有 进 程 在 获 得 所 需 的 资 源 后 方 能 执 行 在 单 处 理 机 环 境 下, 由 于 系 统 中 只 有 一 个 处 理 机, 因 而 每 次 只 允 许 一 个 进 程 执 行, 其 余 进 程 只 能 等 待 当 正 在 执 行 的 进 程 提 出 某 种 资 源 要 求 时, 如 打 印 请 求, 而 此 时 打 印 机 正 在 为 其 他 某 进 程 打 印, 由 于 打 印 机 属 于 临 界 资 源, 因 此 正 在 执 行 的 进 程 必 须 等 待, 且 放 弃 处 理 机, 直 到 打 印 机 空 闲, 并 再 次 把 处 理 机 分 配 给 该 进 程 时, 该 进 程 方 能 继 续 执 行 可 见, 由 于 资 源 等 因 素 的 限 制, 使 进 程 的 执 行 通 常 都 不 是 一 气 呵 成, 而 是 以 停 停 走 走 的 方 式 运 行 内 存 中 的 每 个 进 程 在 何 时 能 获 得 处 理 机 运 行, 何 时 又 因 提 出 某 种 资 源 请 求 而 暂 停, 以 及 进 程 以 怎 样 的 速 度 向 前 推 进, 每 道 程 序 总 共 需 多 少 时 间 才 能 完 成 等, 都 是 不 可 预 知 的 由 于 各 用 户 程 序 性 能 的 不 同, 比 如, 有 的 侧 重 于 计 算 而 较 少 需 要 I/O; 而 又 有 的 程 序 其 计 算 少 而 I/O 多 这 样, 很 可 能 是 先 进 入 内 存 的 作 业 后 完 成, 而 后 进 入 内 存 的 作 业 先 完 成 或 者 说, 进 程 是 以 人 们 不 可 预 知 的 速 度 向 前 推 进, 此 即 进 程 的 异 步 性 (Asynchronism) 尽 管 如 此, 但 只 要 运 行 环 境 相 同, 作 业 经 多 次 运 行, 都 会 获 得 完 全 相 同 的 结 果 因 此, 异 步 运 行 方 式 是 允 许 的, 是 操 作 系 统 的 一 个 重 要 特 征 1.4 操 作 系 统 的 主 要 功 能 操 作 系 统 的 主 要 任 务, 是 为 多 道 程 序 的 运 行 提 供 良 好 的 运 行 环 境, 以 保 证 多 道 程 序 能 有 条 不 紊 高 效 地 运 行, 并 能 最 大 限 度 地 提 高 系 统 资 源 利 用 率 和 方 便 用 户 的 使 用 为 实 现 上 述 任 务, 操 作 系 统 应 该 具 有 这 样 几 方 面 的 功 能 : 处 理 机 管 理 存 储 器 管 理 设 备 管 理 和 文 件 管 理 为 了 方 便 用 户 使 用 操 作 系 统, 还 需 向 用 户 提 供 方 便 的 用 户 接 口 此 外,

27 第 1 章 操 作 系 统 引 论 13 由 于 当 今 的 网 络 已 相 当 普 及, 已 有 越 来 越 多 的 计 算 机 接 入 网 络 中, 为 了 方 便 计 算 机 联 网, 又 在 操 作 系 统 中 增 加 了 面 向 网 络 的 服 务 和 功 能 处 理 机 管 理 功 能 传 统 的 系 统 中, 对 处 理 机 的 管 理, 可 归 结 为 对 进 程 的 管 理, 在 引 入 线 程 的 操 作 系 统 中, 则 相 应 地 包 含 对 线 程 的 管 理 因 此, 处 理 机 管 理 的 主 要 功 能, 是 创 建 和 撤 销 进 程 ( 线 程 ), 对 诸 进 程 ( 线 程 ) 进 行 协 调, 实 现 进 程 ( 线 程 ) 之 间 信 息 的 交 换, 以 及 按 照 一 定 的 算 法 把 处 理 机 分 配 给 进 程 ( 线 程 ) 1. 进 程 控 制 在 传 统 的 多 道 程 序 环 境 下, 要 使 作 业 运 行, 必 须 先 为 它 创 建 一 个 或 几 个 进 程, 并 为 之 分 配 必 要 的 资 源 当 进 程 运 行 结 束 时, 立 即 撤 销 该 进 程, 以 便 能 及 时 回 收 该 进 程 所 占 用 的 各 类 资 源 进 程 控 制 的 主 要 功 能 是 为 作 业 创 建 进 程 撤 销 已 结 束 的 进 程, 以 及 控 制 进 程 在 运 行 过 程 中 的 状 态 转 换 在 现 代 操 作 系 统 中, 进 程 控 制 还 应 具 有 为 一 个 进 程 创 建 若 干 个 线 程 的 功 能 和 撤 销 ( 终 止 ) 已 完 成 任 务 的 线 程 的 功 能 2. 进 程 同 步 为 使 多 个 进 程 能 有 条 不 紊 地 运 行, 系 统 中 必 须 设 置 进 程 同 步 机 制 进 程 同 步 的 主 要 任 务 是 为 多 个 进 程 ( 线 程 ) 的 运 行 进 行 协 调 有 两 种 协 调 方 式 :1 进 程 互 斥 方 式, 这 是 指 诸 进 程 ( 线 程 ) 在 对 临 界 资 源 进 行 访 问 时, 应 采 用 互 斥 方 式 ;2 进 程 同 步 方 式, 指 在 相 互 合 作 去 完 成 共 同 任 务 的 诸 进 程 ( 线 程 ) 间, 由 同 步 机 构 对 它 们 的 执 行 次 序 加 以 协 调 为 了 实 现 进 程 同 步, 系 统 中 必 须 设 置 进 程 同 步 机 制 最 简 单 的 用 于 实 现 进 程 互 斥 的 机 制, 是 为 每 一 个 临 界 资 源 配 置 一 把 锁, 当 锁 打 开 时, 进 程 ( 线 程 ) 可 以 对 该 临 界 资 源 进 行 访 问 ; 而 当 锁 关 上 时, 则 禁 止 进 程 ( 线 程 ) 访 问 该 临 界 资 源 3. 进 程 通 信 在 多 道 程 序 环 境 下, 为 了 加 速 应 用 程 序 的 运 行, 应 在 系 统 中 建 立 多 个 进 程, 并 且 再 为 一 个 进 程 建 立 若 干 个 线 程, 由 这 些 进 程 ( 线 程 ) 相 互 合 作 去 完 成 一 个 共 同 的 任 务 而 在 这 些 进 程 ( 线 程 ) 之 间, 又 往 往 需 要 交 换 信 息 例 如, 有 三 个 相 互 合 作 的 进 程, 它 们 是 输 入 进 程 计 算 进 程 和 打 印 进 程 输 入 进 程 负 责 将 所 输 入 的 数 据 传 送 给 计 算 进 程 ; 计 算 进 程 利 用 输 入 数 据 进 行 计 算, 并 把 计 算 结 果 传 送 给 打 印 进 程 ; 最 后, 由 打 印 进 程 把 计 算 结 果 打 印 出 来 进 程 通 信 的 任 务 就 是 用 来 实 现 在 相 互 合 作 的 进 程 之 间 的 信 息 交 换 当 相 互 合 作 的 进 程 ( 线 程 ) 处 于 同 一 计 算 机 系 统 时, 通 常 在 它 们 之 前 采 用 的 是 直 接 通 信 方 式, 即 由 源 进 程 利 用 发 送 命 令 直 接 将 消 息 (message) 挂 到 目 标 进 程 的 消 息 队 列 上, 然 后 由 目 标 进 程 利 用 接 收 命 令 从 其 消 息 队 列 中 取 出 消 息 4. 调 度 科 学 出 版 社 在 后 备 队 列 上 等 待 的 每 个 作 业, 通 常 都 要 经 过 调 度 才 能 执 行 在 传 统 的 操 作 系 统 中, 包 括 作 业 调 度 和 进 程 调 度 两 步 作 业 调 度 的 基 本 任 务 是 从 后 备 队 列 中 按 照 一 定 的 算 法,

28 14 操 作 系 统 选 择 出 若 干 个 作 业, 为 它 们 分 配 其 必 需 的 资 源 ( 首 先 是 分 配 内 存 ) 在 将 它 们 调 入 内 存 后, 便 分 别 为 它 们 建 立 进 程, 使 它 们 都 成 为 可 能 获 得 处 理 机 的 就 绪 进 程, 并 按 照 一 定 的 算 法 将 它 们 插 入 就 绪 队 列 而 进 程 调 度 的 任 务, 则 是 从 进 程 的 就 绪 队 列 中 选 出 一 新 进 程, 把 处 理 机 分 配 给 它, 并 为 它 设 置 运 行 现 场, 使 进 程 投 入 执 行 值 得 提 出 的 是, 在 多 线 程 操 作 系 统 中, 通 常 是 把 线 程 作 为 独 立 运 行 和 分 配 处 理 机 的 基 本 单 位, 为 此, 须 把 就 绪 线 程 排 成 一 个 队 列, 每 次 调 度 时, 从 就 绪 线 程 队 列 中 选 出 一 个 线 程, 把 处 理 机 分 配 给 它 存 储 器 管 理 功 能 存 储 器 管 理 的 主 要 任 务, 是 为 多 道 程 序 的 运 行 提 供 良 好 的 环 境, 方 便 用 户 使 用 存 储 器, 提 高 存 储 器 利 用 率 以 及 能 从 逻 辑 上 扩 充 内 存 为 此 存 储 器 管 理 应 具 有 如 下 几 项 功 能 1. 内 存 分 配 内 存 分 配 的 主 要 任 务, 是 为 每 道 程 序 分 配 内 存 空 间, 使 它 们 各 得 其 所 ; 提 高 存 储 器 的 利 用 率 ; 允 许 正 在 运 行 的 程 序 申 请 附 加 的 内 存 空 间, 以 适 应 程 序 和 数 据 动 态 增 长 的 需 要 操 作 系 统 在 实 现 内 存 分 配 时, 可 采 取 静 态 和 动 态 两 种 方 式 在 静 态 分 配 方 式 中, 每 个 作 业 的 内 存 空 间 是 在 作 业 装 入 时 确 定 的 ; 在 作 业 装 入 后 的 整 个 运 行 期 间, 不 允 许 该 作 业 再 申 请 新 的 内 存 空 间, 也 不 允 许 作 业 在 内 存 中 移 动 ; 在 动 态 分 配 方 式 中, 每 个 作 业 所 要 求 的 基 本 内 存 空 间, 也 是 在 装 入 时 确 定 的, 但 允 许 作 业 在 运 行 过 程 中, 继 续 申 请 新 的 附 加 内 存 空 间, 以 适 应 程 序 和 数 据 的 动 态 增 长, 也 允 许 作 业 在 内 存 中 移 动 为 了 实 现 内 存 分 配, 在 内 存 分 配 的 机 制 中 应 具 有 以 下 结 构 和 功 能 (1) 内 存 分 配 数 据 结 构, 该 结 构 用 于 记 录 内 存 空 间 的 使 用 情 况, 作 为 内 存 分 配 的 依 据 (2) 内 存 分 配 功 能, 系 统 按 照 一 定 的 内 存 分 配 算 法, 为 用 户 程 序 分 配 内 存 空 间 (3) 内 存 回 收 功 能, 系 统 对 于 用 户 不 再 需 的 内 存, 通 过 用 户 的 释 放 请 求, 去 完 成 系 统 的 回 收 功 能 2. 内 存 保 护 内 存 保 护 的 主 要 任 务 是 确 保 每 道 用 户 程 序 都 只 在 自 己 的 内 存 空 间 内 运 行, 彼 此 互 不 干 扰 为 了 确 保 每 道 程 序 都 只 在 自 己 的 内 存 区 中 运 行, 必 须 设 置 内 存 保 护 机 制 一 种 比 较 简 单 的 内 存 保 护 机 制, 是 设 置 两 个 界 限 寄 存 器, 分 别 用 于 存 放 正 在 执 行 程 序 的 上 界 和 下 界 系 统 需 对 每 条 指 令 所 要 访 问 的 地 址 进 行 检 查, 如 果 发 生 越 界, 便 发 出 越 界 中 断 请 求, 以 停 止 该 程 序 的 执 行 如 果 这 种 检 查 完 全 用 软 件 实 现, 则 每 执 行 一 条 指 令, 便 须 增 加 若 干 条 指 令 去 进 行 越 界 检 查, 这 将 显 著 降 低 程 序 的 运 行 速 度 因 此, 越 界 检 查 都 由 硬 件 实 现 当 然, 对 发 生 越 界 后 的 处 理, 还 需 与 软 件 配 合 来 完 成 3. 地 址 映 射 一 个 应 用 程 序 ( 源 程 序 ) 经 编 译 后, 通 常 会 形 成 若 干 个 目 标 程 序, 这 些 目 标 程 序 再 经 过 链 接 便 形 成 了 可 装 入 程 序 这 些 程 序 的 地 址 都 是 从 0 开 始 的, 程 序 中 的 其 他 地 址

29 第 1 章 操 作 系 统 引 论 15 都 是 相 对 于 起 始 地 址 计 算 的 ; 由 这 些 地 址 所 形 成 的 地 址 范 围 称 为 地 址 空 间, 其 中 的 地 址 称 为 逻 辑 地 址 或 相 对 地 址 此 外, 由 内 存 中 的 一 系 列 单 元 所 限 定 的 地 址 范 围 称 为 内 存 空 间, 其 中 的 地 址 称 为 物 理 地 址 在 多 道 程 序 环 境 下, 每 道 程 序 不 可 能 都 从 0 地 址 开 始 装 入 ( 内 存 ), 这 就 致 使 地 址 空 间 内 的 逻 辑 地 址 和 内 存 空 间 中 的 物 理 地 址 不 相 一 致 为 使 程 序 能 正 确 运 行, 存 储 器 管 理 必 须 提 供 地 址 映 射 功 能, 以 将 地 址 空 间 中 的 逻 辑 地 址 转 换 为 内 存 空 间 中 与 之 对 应 的 物 理 地 址 该 功 能 应 在 硬 件 的 支 持 下 完 成 4. 内 存 扩 充 存 储 器 管 理 中 的 内 存 扩 充 任 务, 并 非 是 去 扩 大 物 理 内 存 的 容 量, 而 是 借 助 于 虚 拟 存 储 技 术, 从 逻 辑 上 去 扩 充 内 存 容 量, 使 用 户 所 感 觉 到 的 内 存 容 量 比 实 际 内 存 容 量 大 得 多 ; 或 者 是 让 更 多 的 用 户 程 序 能 并 发 运 行 这 样, 既 满 足 了 用 户 的 需 要, 改 善 了 系 统 的 性 能, 又 基 本 上 不 增 加 硬 件 投 资 为 了 能 在 逻 辑 上 扩 充 内 存, 系 统 必 须 具 有 内 存 扩 充 机 制, 用 于 实 现 以 下 功 能 (1) 请 求 调 入 功 能 允 许 在 装 入 部 分 用 户 程 序 和 数 据 的 情 况 下, 便 启 动 程 序 运 行 在 程 序 运 行 过 程 中, 若 发 现 要 继 续 运 行 时 所 需 程 序 和 数 据 未 装 入 内 存, 可 向 操 作 系 统 请 求 从 磁 盘 将 所 需 部 分 调 入 内 存, 以 便 继 续 运 行 (2) 置 换 功 能 若 发 现 在 内 存 中 已 无 足 够 的 空 间 来 装 入 需 要 调 入 的 程 序 和 数 据 时, 系 统 应 能 将 内 存 中 一 部 分 暂 时 不 用 的 数 据 调 出 至 磁 盘 上, 以 腾 出 空 间 将 所 需 调 入 的 部 分 装 入 内 存 设 备 管 理 功 能 设 备 管 理 用 于 管 理 计 算 机 系 统 中 所 有 的 外 围 设 备, 设 备 管 理 的 主 要 任 务 是 完 成 用 户 进 程 提 出 的 I/O 请 求 ; 为 用 户 进 程 分 配 其 所 需 的 I/O 设 备 ; 提 高 CPU 和 I/O 设 备 的 利 用 率 ; 提 高 I/O 速 度 ; 方 便 用 户 使 用 I/O 设 备 为 实 现 上 述 任 务, 设 备 管 理 应 具 有 缓 冲 管 理 设 备 分 配 和 设 备 处 理, 以 及 虚 拟 设 备 等 功 能 1. 缓 冲 管 理 CPU 运 行 的 高 速 性 和 I/O 的 低 速 性 间 的 矛 盾 自 计 算 机 诞 生 时 起 便 已 存 在 而 随 着 CPU 速 度 大 幅 度 的 提 高, 此 矛 盾 更 为 突 出, 严 重 降 低 了 CPU 的 利 用 率 如 果 在 I/O 设 备 和 CPU 之 间 引 入 缓 冲, 则 可 有 效 地 缓 和 CPU 和 I/O 设 备 速 度 不 匹 配 的 矛 盾, 提 高 CPU 的 利 用 率, 进 而 提 高 系 统 吞 吐 量 因 此, 在 现 代 计 算 机 系 统 中, 都 毫 无 例 外 地 在 内 存 中 设 置 了 缓 冲 区, 而 且 还 可 通 过 增 加 缓 冲 区 容 量 的 方 法, 来 改 善 系 统 的 性 能 对 于 不 同 的 系 统, 可 以 采 用 不 同 的 缓 冲 区 机 制 最 常 见 的 缓 冲 区 机 制 有 单 缓 冲 机 制 能 实 现 双 向 同 时 传 送 数 据 的 双 缓 冲 机 制, 以 及 能 供 多 个 设 备 同 时 使 用 的 公 用 缓 冲 池 机 制 上 述 这 些 缓 冲 区 都 将 由 操 作 系 统 中 的 缓 冲 管 理 机 制 来 管 理 2. 设 备 分 配 科 学 出 版 社 设 备 分 配 的 基 本 任 务, 是 根 据 用 户 进 程 的 I/O 请 求 系 统 的 现 有 资 源 情 况 以 及 按 照

30 16 操 作 系 统 某 种 设 备 分 配 策 略, 为 之 分 配 其 所 需 的 设 备 如 果 在 I/O 设 备 和 CPU 之 间, 还 存 在 着 设 备 控 制 器 和 I/O 通 道 时, 还 须 为 分 配 出 去 的 设 备 分 配 相 应 的 控 制 器 和 通 道 为 了 实 现 设 备 分 配, 系 统 中 应 设 置 设 备 控 制 表 控 制 器 控 制 表 等 数 据 结 构, 用 于 记 录 设 备 及 控 制 器 的 标 识 符 和 状 态 据 这 些 表 格 可 以 了 解 指 定 设 备 当 前 是 否 可 用, 是 否 忙 碌, 以 供 进 行 设 备 分 配 时 参 考 在 进 行 设 备 分 配 时, 应 针 对 不 同 的 设 备 类 型 而 采 用 不 同 的 设 备 分 配 方 式 对 于 独 占 设 备 ( 临 界 资 源 ) 的 分 配, 还 应 考 虑 到 该 设 备 被 分 配 出 去 后, 系 统 是 否 安 全 设 备 使 用 完 后, 应 立 即 由 系 统 回 收 3. 设 备 处 理 设 备 处 理 程 序 又 称 为 设 备 驱 动 程 序 其 基 本 任 务 是 用 于 实 现 CPU 和 设 备 控 制 器 之 间 的 通 信, 即 由 CPU 向 设 备 控 制 器 发 出 I/O 命 令, 要 求 它 完 成 指 定 的 I/O 操 作 ; 反 之 由 CPU 接 收 从 控 制 器 发 来 的 中 断 请 求, 并 给 予 迅 速 的 响 应 和 相 应 的 处 理 处 理 过 程 如 下 : 设 备 处 理 程 序 首 先 检 查 I/O 请 求 的 合 法 性, 了 解 设 备 状 态 是 否 空 闲, 了 解 有 关 的 传 递 参 数 及 设 置 设 备 的 工 作 方 式 然 后, 便 向 设 备 控 制 器 发 出 I/O 命 令, 启 动 I/O 设 备 去 完 成 指 定 的 I/O 操 作 设 备 驱 动 程 序 还 应 能 及 时 响 应 由 控 制 器 发 来 的 中 断 请 求, 并 根 据 该 中 断 请 求 的 类 型, 调 用 相 应 的 中 断 处 理 程 序 进 行 处 理 对 于 设 置 了 通 道 的 计 算 机 系 统, 设 备 处 理 程 序 还 应 能 根 据 用 户 的 I/O 请 求, 自 动 地 构 成 通 道 程 序 文 件 管 理 功 能 在 现 代 计 算 机 管 理 中, 总 是 把 程 序 和 数 据 以 文 件 的 形 式 存 储 在 磁 盘 和 磁 带 上, 供 用 户 使 用 为 此, 操 作 系 统 中 必 须 配 置 文 件 管 理 机 构, 其 主 要 功 能 : 对 文 件 存 储 空 间 的 管 理 目 录 管 理 文 件 的 读 / 写 管 理 以 及 文 件 的 保 护 1. 文 件 存 储 空 间 的 管 理 由 文 件 系 统 对 诸 多 文 件 及 文 件 的 存 储 空 间 实 施 统 一 的 管 理 其 主 要 任 务 是 为 每 个 文 件 分 配 必 要 的 外 存 空 间, 提 高 外 存 的 利 用 率, 并 能 有 助 于 提 高 文 件 系 统 的 运 行 速 度 为 此, 系 统 应 设 置 相 应 的 数 据 结 构, 用 于 记 录 文 件 存 储 空 间 的 使 用 情 况, 以 供 分 配 存 储 空 间 时 参 考 ; 系 统 还 应 具 有 对 存 储 空 间 进 行 分 配 和 回 收 的 功 能 为 了 提 高 存 储 空 间 的 利 用 率, 对 存 储 空 间 的 分 配, 通 常 是 采 用 离 散 分 配 方 式, 以 减 少 外 存 零 头, 并 以 盘 块 为 基 本 分 配 单 位 盘 块 的 大 小 通 常 为 512B~1KB 2. 目 录 管 理 为 了 使 用 户 能 方 便 地 在 外 存 上 找 到 自 己 所 需 的 文 件, 通 常 由 系 统 为 每 个 文 件 建 立 一 个 目 录 项 目 录 项 包 括 文 件 名 文 件 属 性 文 件 在 磁 盘 上 的 物 理 位 置 等 由 若 干 个 目 录 项 又 可 构 成 一 个 目 录 文 件 目 录 管 理 的 主 要 任 务, 是 为 每 个 文 件 建 立 其 目 录 项, 并 对 众 多 的 目 录 项 加 以 有 效 地 组 织, 以 实 现 方 便 地 按 名 存 取 用 户 只 须 提 供 文 件 名, 即 可 对 该 文 件 进 行 存 取 其 次, 目 录 管 理 还 应 能 实 现 文 件 共 享, 这 样, 只 需 在 外 存 上 保 留 一 份 该 共 享 文 件 的 副 本 此 外, 还 应 能 提 供 快 速 的 目 录 查 询 手 段, 以 提 高 对 文 件 的 检 索 速 度

31 第 1 章 操 作 系 统 引 论 文 件 的 读 / 写 管 理 和 保 护 (1) 文 件 的 读 / 写 管 理 该 功 能 是 根 据 用 户 的 请 求, 从 外 存 中 读 取 数 据 ; 或 将 数 据 写 入 外 存 在 进 行 文 件 读 ( 写 ) 时, 系 统 先 根 据 用 户 给 出 的 文 件 名, 去 检 索 文 件 目 录, 从 中 获 得 文 件 在 外 存 中 的 位 置 然 后, 利 用 文 件 读 ( 写 ) 指 针, 对 文 件 进 行 读 ( 写 ) 一 旦 读 ( 写 ) 完 成, 便 修 改 读 ( 写 ) 指 针, 为 下 一 次 读 ( 写 ) 做 好 准 备 由 于 读 和 写 操 作 不 会 同 时 进 行, 故 可 合 用 一 个 读 / 写 指 针 (2) 文 件 保 护 为 了 防 止 系 统 中 的 文 件 被 非 法 窃 取 和 破 坏, 在 文 件 系 统 中 必 须 提 供 有 效 的 存 取 控 制 功 能, 以 实 现 下 述 目 标 :1 防 止 未 经 核 准 的 用 户 存 取 文 件 ;2 防 止 冒 名 顶 替 存 取 文 件 ;3 防 止 以 不 正 确 的 方 式 使 用 文 件 用 户 接 口 为 了 方 便 用 户 使 用 操 作 系 统, 操 作 系 统 又 向 用 户 提 供 了 用 户 与 操 作 系 统 的 接 口 该 接 口 通 常 是 以 命 令 或 以 系 统 调 用 的 形 式 呈 现 给 用 户 的 在 较 晚 出 现 的 操 作 系 统 中, 又 向 用 户 提 供 了 图 形 接 口 1. 命 令 接 口 (1) 联 机 用 户 接 口 这 是 为 联 机 用 户 提 供 的, 它 由 一 组 键 盘 操 作 命 令 及 命 令 解 释 程 序 所 组 成 当 用 户 在 终 端 或 控 制 台 上 每 输 入 一 条 命 令 后, 系 统 便 立 即 转 入 命 令 解 释 程 序, 对 该 命 令 加 以 解 释 并 执 行 该 命 令 在 完 成 指 定 功 能 后, 控 制 又 返 回 到 终 端 或 控 制 台 上, 等 待 用 户 输 入 下 一 条 命 令 这 样, 用 户 可 通 过 先 后 输 入 不 同 命 令 的 方 式, 来 实 现 对 作 业 的 控 制, 直 至 作 业 完 成 (2) 脱 机 用 户 接 口 该 接 口 是 为 批 处 理 作 业 的 用 户 提 供 的, 故 也 称 为 批 处 理 用 户 接 口 该 接 口 由 一 组 作 业 控 制 语 言 JCL 组 成 批 处 理 作 业 的 用 户 不 能 直 接 与 自 己 的 作 业 交 互 作 用, 只 能 委 托 系 统 代 替 用 户 对 作 业 进 行 控 制 和 干 预 这 里 的 作 业 控 制 语 言 JCL 便 是 提 供 给 批 处 理 作 业 用 户 的, 为 实 现 所 需 功 能 而 委 托 系 统 代 为 控 制 的 一 种 语 言 用 户 用 JCL 把 需 要 对 作 业 进 行 的 控 制 和 干 预 事 先 写 在 作 业 说 明 书 上, 然 后 将 作 业 连 同 作 业 说 明 书 一 起 提 供 给 系 统 当 系 统 调 度 到 该 作 业 运 行 时, 又 调 用 命 令 解 释 程 序, 对 作 业 说 明 书 上 的 命 令 逐 条 地 解 释 执 行 如 果 作 业 在 执 行 过 程 中 出 现 异 常 现 象, 系 统 也 将 根 据 作 业 说 明 书 上 的 指 示 进 行 干 预 这 样, 作 业 一 直 在 作 业 说 明 书 的 控 制 下 运 行, 直 至 遇 到 作 业 结 束 语 句 时, 系 统 才 停 止 该 作 业 的 运 行 2. 程 序 接 口 科 学 出 版 社 该 接 口 是 为 用 户 程 序 在 执 行 中 访 问 系 统 资 源 而 设 置 的, 是 用 户 程 序 取 得 操 作 系 统 服 务 的 唯 一 途 径 它 是 由 一 组 系 统 调 用 组 成, 每 一 个 系 统 调 用 都 是 一 个 能 完 成 特 定 功 能 的 子 程 序, 每 当 应 用 程 序 要 求 操 作 系 统 提 供 某 种 服 务 ( 功 能 ) 时, 便 调 用 具 有 相 应 功 能 的 系 统 调 用 早 期 的 系 统 调 用 都 是 用 汇 编 语 言 提 供 的, 只 有 在 用 汇 编 语 言 书 写 的 程 序 中, 才 能 直 接 使 用 系 统 调 用 ; 但 在 高 级 语 言 以 及 C 语 言 中, 往 往 提 供 了 与 各 系 统 调 用 一 一 对 应 的 库 函 数, 这 样, 应 用 程 序 便 可 通 过 调 用 对 应 的 库 函 数 来 使 用 系 统 调 用 但 在 近 几 年

32 18 操 作 系 统 所 推 出 的 操 作 系 统 中, 如 UNIX 和 OS/2 版 本 中, 其 系 统 调 用 本 身 已 经 采 用 C 语 言 编 写, 并 以 函 数 形 式 提 供, 故 在 用 C 语 言 编 制 的 程 序 中, 可 直 接 使 用 系 统 调 用 3. 图 形 接 口 用 户 虽 然 可 以 通 过 联 机 用 户 接 口 来 取 得 操 作 系 统 的 服 务, 但 这 时 要 求 用 户 能 熟 记 各 种 命 令 的 名 字 和 格 式, 并 严 格 按 照 规 定 的 格 式 输 入 命 令, 这 既 不 方 便 又 浪 费 时 间, 于 是, 图 形 用 户 接 口 便 应 运 而 生 图 形 用 户 接 口 采 用 了 图 形 化 的 操 作 界 面, 用 非 常 容 易 识 别 的 各 种 图 标 (Icon) 来 将 系 统 的 各 项 功 能 各 种 应 用 程 序 和 文 件, 直 观 逼 真 地 表 示 出 来 用 户 可 用 鼠 标 或 通 过 菜 单 和 对 话 框, 来 完 成 对 应 用 程 序 和 文 件 的 操 作 此 时 用 户 已 完 全 不 必 像 使 用 命 令 接 口 那 样 去 记 住 命 令 名 及 格 式, 从 而 使 用 户 从 繁 琐 且 单 调 的 操 作 中 解 脱 出 来 1.5 操 作 系 统 的 结 构 设 计 操 作 系 统 是 一 个 大 型 系 统 软 件, 其 结 构 设 计 经 历 了 四 代 变 革 第 一 代 的 操 作 系 统 是 无 结 构 的 ; 第 二 代 操 作 系 统 采 用 模 块 式 结 构 ; 第 三 代 操 作 系 统 是 层 次 式 结 构 ; 进 入 20 世 纪 90 年 代 中 期 后, 微 内 核 操 作 系 统 结 构 开 始 流 行 由 于 现 代 的 操 作 系 统 都 非 常 庞 大, 已 不 能 再 用 早 期 手 工 作 坊 式 的 开 发 方 法, 于 是 引 入 了 工 程 学 的 基 本 原 理 和 方 法, 形 成 了 软 件 工 程 学 软 件 工 程 的 基 本 概 念 1. 软 件 的 含 义 所 谓 软 件, 是 指 当 计 算 机 运 行 时, 能 提 供 所 要 求 的 功 能 和 性 能 的 指 令 以 及 程 序 的 集 合, 该 程 序 能 够 正 确 地 处 理 信 息 的 数 据 结 构 作 为 规 范 软 件, 还 应 具 有 描 述 程 序 功 能 需 求 以 及 程 序 如 何 操 作 使 用 的 文 档 如 果 说, 硬 件 是 物 理 部 件, 那 么, 软 件 则 是 一 种 逻 辑 部 件, 它 具 有 与 硬 件 完 全 不 同 的 特 点 2. 软 件 工 程 的 含 义 软 件 工 程 是 指 运 用 系 统 的 规 范 的 和 可 定 量 的 方 法, 来 开 发 运 行 和 维 护 软 件 或 者 说, 是 采 用 工 程 的 概 念 原 理 技 术 和 方 法 来 开 发 与 维 护 软 件, 其 目 的 是 为 了 解 决 在 软 件 开 发 中 所 出 现 的 编 程 随 意 软 件 质 量 不 可 保 证 以 及 维 护 困 难 等 问 题 传 统 的 操 作 系 统 结 构 操 作 系 统 是 一 个 十 分 复 杂 的 大 型 软 件 为 了 控 制 该 软 件 的 复 杂 性, 在 开 发 操 作 系 统 时, 先 后 引 入 了 分 解 模 块 化 抽 象 和 隐 蔽 等 方 法 开 发 方 法 的 不 断 发 展, 促 进 了 操 作 系 统 结 构 的 更 新 换 代 这 里, 我 们 把 第 一 代 至 第 三 代 的 操 作 系 统 结 构, 称 为 传 统 的 操 作 系 统 结 构, 而 把 微 内 核 的 操 作 系 统 结 构 称 为 现 代 操 作 系 统 结 构 1. 无 结 构 操 作 系 统 在 早 期 开 发 操 作 系 统 时, 设 计 者 只 是 把 注 意 力 放 在 功 能 的 实 现 和 获 得 高 的 效 率 上,

33 第 1 章 操 作 系 统 引 论 19 缺 乏 首 尾 一 致 的 设 计 思 想 此 时 的 操 作 系 统 是 为 数 众 多 的 一 组 过 程 的 集 合, 各 过 程 之 间 可 以 相 互 调 用, 在 操 作 系 统 内 部 不 存 在 任 何 结 构, 因 此, 这 种 操 作 系 统 是 无 结 构 的, 也 有 人 把 它 称 为 整 体 系 统 结 构 此 时 程 序 设 计 的 技 巧, 只 是 如 何 编 制 紧 凑 的 程 序, 以 便 有 效 地 利 用 内 存, 对 GOTO 语 句 的 使 用 不 加 任 何 限 制, 所 设 计 出 的 操 作 系 统 既 庞 大 又 杂 乱, 缺 乏 清 晰 的 程 序 结 构 一 方 面 使 所 编 制 出 的 程 序 错 误 很 多, 给 调 试 工 作 带 来 很 多 困 难 ; 另 一 方 面 也 使 程 序 难 以 阅 读 和 理 解, 增 加 了 维 护 人 员 的 负 担 2. 模 块 化 操 作 系 统 结 构 1) 模 块 化 结 构 模 块 化 程 序 设 计 技 术, 是 最 早 (20 世 纪 60 年 代 ) 出 现 的 一 种 程 序 设 计 技 术 该 技 术 是 基 于 分 解 和 模 块 化 原 则 来 控 制 大 型 软 件 的 复 杂 度 的 为 使 操 作 系 统 具 有 较 清 晰 的 结 构, 操 作 系 统 不 再 是 由 众 多 的 过 程 直 接 构 成, 而 是 将 操 作 系 统 按 其 功 能 划 分 为 若 干 个 具 有 一 定 独 立 性 和 大 小 的 模 块 每 个 模 块 具 有 某 方 面 的 管 理 功 能, 如 进 程 管 理 模 块 存 储 器 管 理 模 块 I/O 设 备 管 理 模 块 和 文 件 管 理 模 块 等, 并 规 定 好 各 模 块 间 的 接 口, 使 各 模 块 之 间 能 通 过 该 接 口 实 现 交 互, 然 后 再 进 一 步 将 各 模 块 细 分 为 若 干 个 具 有 一 定 管 理 功 能 的 子 模 块, 如 把 进 程 管 理 模 块 又 分 为 进 程 控 制 进 程 同 步 进 程 通 信 和 进 程 调 度 等 子 模 块, 同 样 也 要 规 定 各 子 模 块 之 间 的 接 口 若 子 模 块 较 大 时, 再 进 一 步 将 它 细 分 图 1-4 所 示 是 由 模 块 子 模 块 等 组 成 的 模 块 化 操 作 系 统 结 构 图 1-4 模 块 化 操 作 系 统 结 构 科 学 出 版 社 2) 模 块 化 操 作 系 统 的 优 缺 点 采 用 模 块 化 结 构 的 操 作 系 统 较 之 无 结 构 的 操 作 系 统 具 有 如 下 优 点 (1) 提 高 了 操 作 系 统 设 计 的 正 确 性 可 理 解 性 和 可 维 护 性 在 设 计 模 块 化 操 作 系 统 时, 尽 可 能 使 各 个 模 块 具 有 高 内 聚 低 耦 合 的 特 征, 这 样 不 仅 使 操 作 系 统 具 有 清 晰 的 结 构, 更 易 于 保 证 操 作 系 统 设 计 的 正 确 性, 也 使 操 作 系 统 变 得 更 易 理 解 和 维 护 (2) 增 强 了 操 作 系 统 的 可 适 应 性 模 块 化 操 作 系 统 中 的 模 块, 都 具 有 相 对 的 独 立 性, 可 以 根 据 不 同 应 用 环 境 的 需 求 选 用 相 应 的 功 能 模 块 来 组 成 所 需 的 系 统, 即 量 体 裁 衣 当 计 算 机 结 构 和 应 用 需 求 发 生 变 化 时, 可 通 过 修 改 模 块 和 增 加 模 块 来 构 成 一 个 能 满 足 新 需 求 的 操 作 系 统 (3) 加 速 了 操 作 系 统 的 开 发 过 程 在 进 行 模 块 化 操 作 系 统 的 设 计 时, 将 一 个 操 作 系 统 划 分 为 若 干 模 块 并 设 计 好 模 块 间 的 接 口 后, 便 可 将 这 些 模 块 交 由 不 同 的 开 发 小 组 去 完 成, 从 而 使 设 计 组 的 许 多 人 齐 头 并 进

34 20 操 作 系 统 模 块 化 结 构 设 计 的 缺 点 如 下 (1) 在 开 始 设 计 操 作 系 统 时, 对 模 块 的 划 分 及 对 接 口 的 规 定 并 不 精 确, 而 且 还 可 能 存 在 错 误, 因 而 很 难 保 证 按 此 规 定 所 设 计 出 的 模 块 会 完 全 正 确, 这 将 使 在 把 这 些 模 块 装 配 成 操 作 系 统 时 发 生 困 难 (2) 从 功 能 观 点 来 划 分 模 块 时, 未 能 将 共 享 资 源 和 独 占 资 源 加 以 区 别, 由 于 管 理 上 的 差 异, 又 会 使 模 块 间 存 在 着 复 杂 的 依 赖 关 系 使 操 作 系 统 结 构 变 得 不 清 晰 3. 分 层 式 操 作 系 统 结 构 1) 有 序 分 层 的 基 本 概 念 从 改 进 设 计 方 式 上 说, 应 使 我 们 的 每 一 步 设 计 都 是 建 立 在 可 靠 的 基 础 上 我 们 可 以 从 物 理 机 器 开 始, 在 其 上 面 先 添 加 一 层 具 有 一 定 功 能 的 软 件 A 1, 由 于 A 1 是 建 立 在 完 全 确 定 的 物 理 机 器 上 的, 在 经 过 精 心 设 计 和 几 乎 是 穷 尽 无 遗 的 测 试 后, 可 以 认 为 A 1 是 正 确 的 ; 然 后 再 在 A 1 上 添 加 一 层 新 软 件 A 2,, 如 此 一 层 一 层 地 自 底 向 上 增 添 软 件 层, 每 一 层 都 实 现 若 干 功 能, 最 后 总 能 构 成 一 个 能 满 足 需 要 的 操 作 系 统 分 层 式 结 构 设 计 的 基 本 原 则 是 : 每 一 层 都 仅 使 用 其 底 层 所 提 供 的 功 能 和 服 务, 这 样 可 使 系 统 的 调 试 和 验 证 都 变 得 容 易, 例 如, 在 调 试 第 一 层 软 件 A 1 时, 由 于 它 只 使 用 了 物 理 机 器 提 供 的 功 能, 因 此 它 将 与 其 所 有 的 高 层 软 件 A 2,,A n 无 关 ; 同 样, 在 调 试 A 2 时, 它 也 只 使 用 了 A 1 和 物 理 机 器 所 提 供 的 功 能, 而 与 其 高 层 软 件 A 3,,A n 无 关, 这 样, 一 旦 发 现 A i 出 现 错 误 时, 通 常 该 错 误 只 会 局 限 于 A i, 因 为 它 与 所 有 高 层 的 软 件 无 关, 而 A i 层 以 下 的 各 层 软 件, 又 都 经 过 仔 细 的 调 试 2) 层 次 的 设 置 (1) 程 序 嵌 套 通 常 操 作 系 统 的 每 个 功 能 的 实 现, 并 非 是 只 用 一 个 程 序 便 能 完 成 的, 而 是 要 经 由 若 干 个 软 件 层 才 有 可 能 完 成 因 此 在 划 分 操 作 系 统 层 次 时, 首 先 要 考 虑 在 实 现 操 作 系 统 的 每 个 功 能 时 所 形 成 的 程 序 嵌 套 例 如, 作 业 调 度 模 块 须 调 用 进 程 控 制 模 块 ; 在 为 某 作 业 创 建 一 进 程 时, 进 程 控 制 模 块 又 需 调 用 内 存 管 理 模 块 为 新 进 程 分 配 内 存 空 间, 可 见, 进 程 控 制 模 块 应 在 内 存 管 理 模 块 之 上 ; 而 作 业 调 度 模 块 又 应 在 更 高 层 (2) 运 行 频 率 在 分 层 结 构 中, 各 层 次 软 件 的 运 行 速 度 是 不 同 的, 因 为 A 1 层 软 件 能 直 接 在 物 理 机 器 上 运 行, 故 它 有 最 高 的 运 行 速 度 随 着 层 次 的 增 高, 其 相 应 软 件 的 运 行 速 度 就 随 之 下 降, 因 而 A n 层 软 件 的 运 行 速 度 最 低 为 了 提 高 操 作 系 统 的 运 行 效 率, 应 该 将 那 些 经 常 活 跃 的 模 块 放 在 最 接 近 硬 件 的 A 1 层, 如 时 钟 管 理 和 进 程 调 度, 通 常 都 放 在 A 1 层 (3) 公 用 模 块 应 把 供 多 种 资 源 管 程 程 序 调 用 的 公 用 模 块, 设 置 在 最 低 层, 否 则, 会 使 比 它 低 的 层 次 模 块 由 于 无 法 调 用 它 而 需 另 外 配 置 相 应 功 能 的 模 块 例 如, 用 于 对 信 号 量 进 行 操 作 的 原 语 Signal 和 Wait (4) 用 户 接 口 为 方 便 用 户 ( 程 序 ), 操 作 系 统 向 用 户 提 供 了 用 户 与 操 作 系 统 的 接 口, 如 命 令 接 口 程 序 接 口 以 及 图 形 用 户 接 口 这 些 接 口 应 设 置 在 操 作 系 统 的 最 高 层, 直 接 供 用 户 使 用 微 内 核 操 作 系 统 结 构 微 内 核 (MicroKernel) 操 作 系 统 结 构 是 20 世 纪 80 年 代 后 期 发 展 起 来 的 由 于 它 能

35 第 1 章 操 作 系 统 引 论 21 有 效 地 支 持 多 处 理 机 运 行, 故 非 常 适 用 于 分 布 式 的 系 统 环 境 当 前 比 较 流 行 的 能 支 持 多 处 理 机 运 行 的 操 作 系 统, 几 乎 都 采 用 微 内 核 的 结 构 值 得 提 出 的 是, 在 与 微 内 核 技 术 形 成 和 发 展 的 同 时, 客 户 / 服 务 器 技 术, 面 向 对 象 技 术 也 在 迅 速 发 展, 它 们 已 渗 透 到 软 件 的 许 多 领 域 中, 并 把 它 们 应 用 到 基 于 微 内 核 结 构 的 操 作 系 统 中, 由 此 形 成 的 操 作 系 统 结 构, 具 有 以 微 内 核 为 核 心, 以 客 户 / 服 务 器 为 基 础, 并 且 采 用 面 向 对 象 程 序 设 计 方 法 的 特 征 1. 客 户 / 服 务 器 模 式 (Client-Server Model) 1) 基 本 概 念 为 了 提 高 操 作 系 统 的 灵 活 性 和 可 扩 充 性 而 将 操 作 系 统 划 分 为 两 部 分, 一 部 分 是 用 于 提 供 各 种 服 务 的 一 组 服 务 器 ( 进 程 ), 另 一 部 分 是 用 来 处 理 客 户 和 服 务 器 之 间 通 信 的 内 核 如 用 于 提 供 进 程 管 理 的 进 程 服 务 器 提 供 存 储 器 管 理 的 存 储 器 服 务 器 提 供 文 件 管 理 的 文 件 服 务 器 等, 所 有 这 些 服 务 器 ( 进 程 ) 都 运 行 在 用 户 态 当 有 一 用 户 进 程 ( 现 在 称 为 客 户 进 程 ) 要 求 读 文 件 的 一 个 盘 块 时, 该 进 程 便 向 文 件 服 务 器 ( 进 程 ) 发 出 一 个 请 求 ; 当 服 务 器 完 成 了 该 客 户 的 请 求 后, 便 给 该 客 户 回 送 一 个 响 应 即 由 内 核 来 接 收 客 户 的 请 求, 再 将 该 请 求 送 至 相 应 的 服 务 器, 同 时 也 接 收 服 务 器 的 应 答, 并 将 此 应 答 回 送 给 请 求 客 户 图 1-5 表 示 出 在 单 机 环 境 下 的 客 户 / 服 务 器 模 式 此 外, 在 内 核 中 还 应 具 有 其 他 一 些 机 构, 用 于 实 现 与 硬 件 紧 密 相 关 的 和 一 些 基 本 的 功 能 图 1-5 单 机 环 境 下 的 客 户 / 服 务 器 模 式 2) 客 户 / 服 务 器 模 式 的 优 点 (1) 提 高 了 系 统 的 灵 活 性 和 可 扩 充 性 在 客 户 / 服 务 器 模 式 的 结 构 中, 操 作 系 统 大 部 分 功 能 是 由 相 对 独 立 的 服 务 器 来 实 现 的, 用 户 可 以 根 据 需 要, 选 配 其 中 的 部 分 或 全 部 服 务 器 ; 而 且 还 可 随 着 计 算 机 硬 件 和 操 作 系 统 技 术 的 发 展, 相 应 地 更 新 服 务 器 (2) 提 高 了 操 作 系 统 的 可 靠 性 由 于 所 有 的 服 务 器 都 是 运 行 在 用 户 态, 它 们 不 能 直 接 访 问 硬 件, 因 此, 当 某 些 服 务 器 出 现 错 误 时, 通 常 仅 仅 影 响 它 们 本 身, 不 会 导 致 整 个 系 统 瘫 痪 (3) 可 运 行 于 分 布 式 系 统 中 基 于 客 户 / 服 务 器 模 式 的 操 作 系 统, 既 可 用 于 单 处 理 机 操 作 系 统 中, 又 适 用 于 计 算 机 网 络 和 分 布 式 系 统 中 客 户 与 服 务 器 之 间 的 通 信 就 是 先 由 客 户 机 发 送 消 息, 然 后 再 接 收 服 务 器 发 来 的 响 应 2. 面 向 对 象 的 程 序 设 计 技 术 (Object-Orientated Programming) 科 学 出 版 社 1) 面 向 对 象 技 术 的 基 本 概 念 面 向 对 象 技 术 是 20 世 纪 80 年 代 初 出 现 并 很 快 流 行 起 来 的 该 技 术 是 基 于 抽 象 和 隐 蔽 原 则 来 控 制 大 型 软 件 的 复 杂 度 的 所 谓 对 象, 是 指 在 现 实 世 界 中 具 有 相 同 属 性 服 从 相 同 规 则 的 一 系 列 事 物 的 抽 象, 而 把 其 中 的 具 体 事 物 称 为 对 象 的 实 例 操 作 系

36 22 操 作 系 统 统 中 的 各 类 实 体 如 进 程 线 程 消 息 存 储 器 等, 都 使 用 了 对 象 这 一 概 念, 相 应 地, 便 有 了 进 程 对 象 线 程 对 象 存 储 器 对 象 等 概 念 2) 面 向 对 象 技 术 的 优 点 (1) 可 修 改 性 和 可 扩 充 性 由 于 隐 蔽 了 表 示 实 体 的 数 据 和 操 作, 因 而 可 以 改 变 对 象 的 表 示 而 不 会 影 响 其 他 部 分, 从 而 可 以 方 便 地 改 变 老 的 对 象 和 增 加 新 的 对 象 (2) 继 承 性 继 承 性 是 面 向 对 象 技 术 所 具 有 的 重 要 特 性 继 承 性 是 指 子 对 象 可 以 继 承 父 对 象 的 属 性, 这 样 在 创 建 一 个 新 的 对 象 时, 便 可 减 少 大 量 的 时 空 开 销 (3) 正 确 性 和 可 靠 性 由 于 对 象 是 构 成 操 作 系 统 的 基 本 单 元, 可 以 独 立 地 对 它 进 行 测 试, 这 样 比 较 易 于 保 证 其 正 确 性 和 可 靠 性, 从 而 比 较 容 易 保 证 整 个 系 统 的 正 确 性 和 可 靠 性 3. 微 内 核 技 术 1) 微 内 核 技 术 的 引 入 所 谓 微 内 核 技 术, 是 指 精 心 设 计 的 能 实 现 现 代 操 作 系 统 核 心 功 能 的 小 型 内 核, 它 与 一 般 的 操 作 系 统 ( 程 序 ) 不 同, 它 更 小 更 精 炼, 它 不 仅 运 行 在 核 心 态, 而 且 开 机 后 常 驻 内 存, 它 不 会 因 内 存 紧 张 而 被 置 换 出 内 存 微 内 核 并 非 是 一 个 完 整 的 操 作 系 统, 而 是 为 构 建 通 用 操 作 系 统 提 供 一 个 重 要 基 础 由 于 在 微 内 核 操 作 系 统 结 构 中, 通 常 都 采 用 了 客 户 / 服 务 器 模 式, 因 此 操 作 系 统 的 大 部 分 功 能 和 服 务, 都 是 由 若 干 服 务 器 来 提 供 的, 如 文 件 服 务 器 作 业 服 务 器 和 网 络 服 务 器 等 2) 微 内 核 的 基 本 功 能 微 内 核 所 提 供 的 功 能, 通 常 都 是 一 些 最 基 本 的 功 能, 如 进 程 管 理 存 储 器 管 理 进 程 间 通 信 和 低 级 I/O 功 能 (1) 进 程 管 理 在 具 有 微 内 核 结 构 的 操 作 系 统 中, 把 进 程 作 为 资 源 分 配 的 基 本 单 位, 一 个 进 程 拥 有 若 干 个 线 程, 再 把 线 程 作 为 独 立 运 行 和 调 度 的 基 本 单 位 同 一 进 程 中 的 各 线 程 可 以 共 享 进 程 的 资 源, 允 许 这 些 线 程 并 发 执 行 进 程 管 理 也 包 括 实 现 进 程 间 和 线 程 间 的 同 步 (2) 存 储 器 管 理 通 常 在 微 内 核 中 都 提 供 了 虚 拟 存 储 器 管 理 功 能, 用 于 为 进 程 分 配 必 要 的 运 行 空 间, 并 从 逻 辑 上 扩 充 内 存 的 容 量, 以 满 足 更 多 用 户 的 需 求 内 存 分 配 和 回 收 的 基 本 单 位 是 固 定 大 小 的 页 每 当 进 程 要 访 问 的 页 不 在 内 存 中 时, 便 通 过 缺 页 中 断 进 入 微 内 核, 由 微 内 核 将 缺 页 调 入 内 存 (3) 进 程 通 信 管 理 为 实 现 进 程 之 间 的 通 信, 在 微 内 核 中 采 用 了 消 息 传 递 机 制, 客 户 进 程 利 用 发 送 命 令 将 一 份 消 息 发 送 到 一 个 指 定 的 服 务 器 的 消 息 队 列 上 ; 服 务 器 进 程 利 用 接 收 命 令 从 消 息 队 列 上 取 出 消 息 (4) I/O 设 备 管 理 在 微 内 核 中, 为 每 一 个 连 接 到 主 机 上 的 I/O 设 备 配 置 一 个 设 备 驱 动 程 序, 用 以 实 现 设 备 的 I/O 处 理, 因 此, 通 常 在 微 内 核 中 都 有 若 干 个 I/O 设 备 驱 动 程 序 1.6 小 结 本 章 为 操 作 系 统 的 引 论, 概 述 了 操 作 系 统 的 发 展 过 程 基 本 特 征 和 主 要 功 能 最 后

37 第 1 章 操 作 系 统 引 论 23 一 节 介 绍 了 操 作 系 统 的 结 构 设 计, 从 传 统 的 操 作 系 统 结 构 设 计 到 现 在 流 行 的 微 内 核 操 作 系 统 结 构 设 计, 使 读 者 对 操 作 系 统 有 了 一 个 从 理 论 到 实 践 的 综 合 认 识 1.7 学 习 加 油 站 答 疑 解 惑 1. 操 作 系 统 的 基 本 概 念 是 什 么 操 作 系 统 是 计 算 机 系 统 中 的 一 个 系 统 软 件, 是 能 有 效 地 组 织 和 管 理 计 算 机 系 统 中 的 硬 件 和 软 件 资 源, 合 理 地 组 织 计 算 机 工 作 流 程, 控 制 程 序 的 执 行, 并 向 用 户 提 供 各 种 服 务 功 能, 使 得 用 户 能 够 灵 活 方 便 有 效 地 使 用 计 算 机, 并 使 整 个 计 算 机 系 统 能 高 效 地 运 行 的 一 组 程 序 模 块 的 集 合 操 作 系 统 追 求 的 主 要 目 标 包 括 四 个 方 面 : 方 便 性 有 效 性 可 扩 充 性 和 开 放 性 2. 操 作 系 统 分 为 哪 几 个 发 展 阶 段 历 史 上, 操 作 系 统 的 发 展 经 历 了 手 工 操 作 阶 段 联 机 批 处 理 系 统 脱 机 批 处 理 系 统 多 道 程 序 系 统 分 时 系 统 实 时 系 统 网 络 操 作 系 统 分 布 式 操 作 系 统 和 PC 操 作 系 统 等 阶 段 3. 操 作 系 统 功 能 和 特 征 是 什 么 (1) 操 作 系 统 的 功 能 : 从 资 源 管 理 的 角 度 来 说, 操 作 系 统 的 主 要 任 务 是 对 系 统 中 的 硬 件 软 件 实 施 有 效 的 管 理, 以 提 高 系 统 资 源 的 利 用 率 计 算 机 硬 件 资 源 主 要 是 指 处 理 机 主 存 储 器 和 外 部 设 备, 软 件 资 源 主 要 是 指 信 息 ( 文 件 系 统 ) 因 此, 操 作 系 统 的 主 要 功 能 相 应 地 就 有 处 理 机 管 理 存 储 管 理 设 备 管 理 和 信 息 管 理 从 用 户 使 用 的 角 度 来 说, 操 作 系 统 为 用 户 提 供 了 用 户 接 口 (2) 操 作 系 统 的 特 征 : 并 发 性 共 享 性 虚 拟 性 和 不 确 定 性 4. 操 作 系 统 结 构 是 什 么 (1) 无 结 构 无 结 构 方 法 中, 操 作 系 统 是 一 组 过 程 的 集 合, 每 个 过 程 都 有 一 组 定 义 好 的 接 口, 过 程 之 间 相 互 调 用 而 不 受 约 束,UNIX 操 作 系 统 核 心 层 就 是 典 型 的 无 结 构 模 型 (2) 层 次 式 操 作 系 统 由 若 干 层 组 成, 每 层 完 成 特 定 的 功 能, 并 且 该 层 的 功 能 仅 仅 依 赖 于 其 下 层 的 功 能 这 是 目 前 大 多 数 操 作 系 统 的 构 造 方 式 (3) 客 户 / 服 务 器 模 型 ( 微 内 核 模 型 ) 操 作 系 统 由 内 核 和 外 核 服 务 器 进 程 组 成, 微 内 核 提 供 最 基 本 最 必 要 的 服 务 而 操 作 系 统 的 其 他 功 能 由 运 行 在 核 外 的 服 务 器 完 成 该 模 型 具 有 模 块 化 和 结 构 化 的 特 征, 模 块 之 间 和 上 下 层 之 间 的 通 信 通 过 消 息 的 传 递 实 现 5. 多 道 程 序 设 计 的 概 念 和 特 点 是 什 么 科 学 出 版 社 多 道 程 序 设 计 技 术 是 指 在 一 个 计 算 机 系 统 的 主 存 储 器 内, 同 时 允 许 多 个 程 序 进 入,

38 24 操 作 系 统 这 些 程 序 是 并 发 执 行 的, 但 实 际 上, 在 某 一 时 刻, 操 作 系 统 中 只 有 一 个 程 序 在 运 行 多 道 程 序 设 计 环 境 具 有 以 下 特 点 : 独 立 性 随 机 性 和 资 源 共 享 性 典 型 例 题 与 考 研 真 题 解 析 试 题 1 ( 中 山 大 学 ) 操 作 系 统 是 对 进 行 管 理 的 软 件 A. 软 件 B. 硬 件 C. 计 算 机 资 源 D. 应 用 程 序 分 析 : 本 题 考 查 操 作 系 统 的 定 义 操 作 系 统 是 系 统 软 件, 它 管 理 着 计 算 机 的 软 硬 件 资 源 软 件 资 源 是 指 计 算 机 中 的 应 用 程 序 和 数 据 解 答 :C 试 题 2 ( 复 旦 大 学 ) 以 现 代 操 作 系 统 为 例, 解 释 操 作 系 统 作 为 用 户 / 计 算 机 接 口 的 论 断 分 析 : 本 题 考 查 操 作 系 统 从 用 户 和 计 算 机 系 统 接 口 角 度 的 定 义 操 作 系 统 作 为 用 户 与 计 算 机 硬 件 系 统 之 间 接 口 的 含 义 : 操 作 系 统 处 于 用 户 与 计 算 机 硬 件 系 统 之 间, 用 户 通 过 操 作 系 统 来 使 用 计 算 机 系 统 或 者 说, 用 户 在 操 作 系 统 帮 助 下, 能 够 方 便 快 捷 安 全 可 靠 地 操 纵 计 算 机 硬 件 和 运 行 自 己 的 程 序 应 注 意, 操 作 系 统 是 一 个 系 统 软 件, 因 而 这 种 接 口 是 软 件 接 口 解 答 : 在 计 算 机 系 统 组 成 的 四 个 层 次 中, 硬 件 是 最 低 层 操 作 系 统 处 于 用 户 与 计 算 机 系 统 硬 件 之 间, 用 户 通 过 操 作 系 统 来 使 用 计 算 机 对 多 数 计 算 机 而 言, 在 机 器 语 言 级 的 体 系 结 构 ( 包 括 指 令 系 统 存 储 组 织 I/O 和 总 线 结 构 ) 上 编 程 是 相 当 困 难 的, 尤 其 是 I/O 操 作 为 了 让 用 户 和 程 序 员 在 使 用 计 算 机 时 不 涉 及 硬 件 细 节, 使 程 序 员 与 硬 件 细 节 独 立 开 来, 需 要 建 立 一 种 高 度 抽 象 这 种 抽 象 就 是 为 用 户 提 供 一 台 等 价 的 扩 展 计 算 机, 这 样 的 计 算 机 称 为 虚 拟 计 算 机, 简 称 虚 拟 机 操 作 系 统 作 为 虚 拟 机 为 用 户 使 用 计 算 机 提 供 了 方 便, 用 户 可 不 必 了 解 计 算 机 硬 件 工 作 的 细 节, 通 过 操 作 系 统 来 使 用 计 算 机, 操 作 系 统 就 成 了 用 户 和 计 算 机 之 间 的 接 口 试 题 3 ( 西 北 工 业 大 学 ) 操 作 系 统 提 供 给 程 序 员 的 接 口 是 A. 进 程 B. 系 统 调 用 C. 库 函 数 D. B 和 C 分 析 : 程 序 员 编 写 程 序 通 常 使 用 系 统 调 用 和 库 函 数 解 答 :D 试 题 4 ( 武 汉 理 工 大 学 ) 选 出 下 面 描 述 的 是 哪 一 类 操 作 系 统 : 1. 该 操 作 系 统 具 有 很 强 的 交 互 性, 可 同 时 供 多 个 用 户 使 用, 但 时 间 响 应 不 太 及 时 ; 2. 该 类 操 作 系 统 在 用 户 提 交 作 业 后, 不 提 供 交 互 能 力, 它 所 追 求 的 是 计 算 机 资 源 的 高 利 用 率 大 吞 吐 量 和 作 业 流 程 的 自 动 化 ; 3. 该 类 操 作 系 统 管 理 的 是 一 个 由 多 台 计 算 机 组 成 的 系 统, 系 统 资 源 归 局 部 所 有, 并 被 局 部 控 制, 用 户 知 道 资 源 存 放 在 何 处, 并 可 以 共 享 资 源 ; 4. 该 类 操 作 系 统 管 理 的 是 一 个 由 多 台 计 算 机 组 成 的 系 统, 互 相 之 间 无 主 次 之 分, 相 互 协 调, 平 衡 系 统 的 负 载, 且 共 享 系 统 资 源 ; 程 序 由 系 统 中 的 全 部 或 者 部 分 计 算 机 协 同 执 行 ;

39 第 1 章 操 作 系 统 引 论 该 类 操 作 系 统 的 系 统 响 应 时 间 的 重 要 性 超 过 系 统 资 源 的 利 用 率, 它 被 广 泛 地 应 用 于 卫 星 控 制 导 弹 发 射 工 业 控 制 飞 机 订 票 业 务 等 领 域 1. A 分 时 操 作 系 统 B. 实 时 操 作 系 统 C. 批 处 理 操 作 系 统 D. 多 用 户 操 作 系 统 2. A. 分 时 操 作 系 统 B. 实 时 操 作 系 统 C. 批 处 理 操 作 系 统 D. 单 用 户 操 作 系 统 3. A. 分 时 操 作 系 统 B. 批 处 理 操 作 系 统 C. 分 布 式 操 作 系 统 D. 网 络 操 作 系 统 4. A. 分 时 操 作 系 统 B. 实 时 操 作 系 统 C. 分 布 式 操 作 系 统 D. 实 用 操 作 系 统 5. A. 分 时 操 作 系 统 B. 实 时 操 作 系 统 C. 分 布 式 操 作 系 统 D. 实 用 操 作 系 统 分 析 : 本 题 考 查 不 同 操 作 系 统 的 特 征, 概 念 性 题 目 牢 记 分 时 操 作 系 统 实 时 操 作 系 统 批 处 理 系 统 网 络 操 作 系 统 和 分 布 式 操 作 系 统 的 区 别 解 答 :1 A 2 C 3 D 4 C 5 B 试 题 5 ( 河 北 大 学 ) 如 果 分 时 操 作 系 统 的 时 间 片 一 定, 那 么, 则 响 应 时 间 越 长 A. 内 存 越 少 B. 内 存 越 多 C. 用 户 数 越 少 D. 用 户 数 越 多 分 析 : 考 查 分 时 系 统 中 时 间 片 和 响 应 时 间 之 间 的 关 系 在 分 时 系 统 中, 系 统 的 响 应 时 间 时 间 片 用 户 数, 时 间 片 一 定 时, 用 户 数 越 多, 系 统 的 响 应 时 间 就 越 长 解 答 :D 试 题 6 ( 东 南 大 学 ) 嵌 入 式 操 作 系 统 的 基 本 含 义 是 什 么? 分 析 : 本 题 考 查 嵌 入 式 操 作 系 统, 嵌 入 式 操 作 系 统 EOS(Embedded OperatingSystem) 是 一 种 用 途 广 泛 的 系 统 软 件, 过 去 它 主 要 应 用 于 工 业 控 制 和 国 防 系 统 领 域 EOS 负 责 嵌 入 系 统 的 全 部 软 硬 件 资 源 的 分 配 调 度 工 作, 控 制 协 调 并 发 活 动 ; 它 必 须 体 现 其 所 在 系 统 的 特 征, 能 够 通 过 装 卸 某 些 模 块 来 达 到 系 统 所 要 求 的 功 能 国 际 上 用 于 信 息 电 器 的 嵌 入 式 操 作 系 统 有 40 种 左 右 现 在, 市 场 上 非 常 流 行 的 EOS 产 品, 包 括 3Corn 公 司 下 属 子 公 司 的 Palm OS MicroSoft 公 司 的 Windows CE 科 学 出 版 社 解 答 : 嵌 入 式 操 作 系 统 是 运 行 在 嵌 入 式 系 统 环 境 中, 对 整 个 嵌 入 式 系 统 以 及 它 所 操 作 控 制 的 各 种 部 件 装 置 等 资 源 进 行 统 一 协 调 调 度 指 挥 和 控 制 的 系 统 软 件 试 题 7 ( 南 昌 大 学 ) 网 络 操 作 系 统 的 基 本 功 能 是 什 么? 有 什 么 基 本 特 征? 分 析 : 本 题 考 查 网 络 操 作 系 统 的 功 能 和 特 征 计 算 机 技 术 和 通 信 技 术 的 结 合 使 得 共 享 资 源 和 分 散 计 算 能 力 的 愿 望 成 为 现 实 这 两 种 技 术 的 结 合 已 经 对 计 算 机 的 组 织 方 式 产 生 了 深 远 的 影 响 计 算 机 中 心 的 概 念 正 在 迅 速 地 变 得 陈 旧, 集 中 式 计 算 机 系 统 的 模 式 正 被 一 种 新 的 模 式 所 取 代 在 这 种 新 模 式 中, 计 算 任 务 是 由 大 量 分 离 而 又 互 相 连 接 的 计 算 机 来 完 成 的, 某 一 台 计 算 机 上 的 用 户 可 以 使 用 其 他 机 器 上 的 资 源 于 是 引 出 了 计 算 机 网 络 的 概 念, 计 算 机 网 络 就 是 利 用 通 信 线 路, 将 分 散 在 不 同 地 点 的 一 些 独 立 自 治 的 计 算 机 系 统 相 互 连 接, 按 照 网 络 协 议 进 行 数 据 传 输 和 通 信, 实 现 资 源 的 共 享 这 里 要 求 计 算 机 是 独 立 自 治 的, 即 计 算 机 网 络 中 的 各 个 计 算 机 是 平 等 的, 可 以 独 立 工 作 的, 任 何

40 26 操 作 系 统 一 台 计 算 机 都 不 能 强 制 性 地 启 动 停 止 或 控 制 另 一 台 计 算 机 互 连 指 的 是 两 台 计 算 机 之 间 能 彼 此 交 换 信 息 连 接 不 一 定 必 须 经 过 导 线, 也 可 以 采 用 激 光 微 波 来 实 现 解 答 : 网 络 操 作 系 统 用 通 信 线 路, 将 分 散 在 不 同 地 点 的 一 些 独 立 自 治 的 计 算 机 系 统 相 互 连 接, 按 照 网 络 协 议 进 行 数 据 传 输 和 通 信, 实 现 资 源 的 共 享 网 络 操 作 系 统 能 够 使 用 户 突 破 地 域 条 件 的 限 制 使 用 远 程 计 算 机, 并 借 助 网 络 互 相 交 换 信 息, 从 而 大 大 拓 展 了 计 算 机 的 应 用 范 围 网 络 操 作 系 统 特 征 : 1. 各 计 算 机 间 资 源 共 享 负 载 均 衡 2. 通 过 提 供 可 替 换 的 资 源 而 达 到 高 度 的 可 靠 性 试 题 8 ( 中 山 大 学 ) 操 作 系 统 的 主 要 功 能 是 A. 控 制 和 管 理 系 统 资 源 的 使 用 B. 实 现 软 硬 件 的 转 接 C. 管 理 计 算 机 硬 件 设 备 D. 把 源 程 序 编 译 成 目 标 程 序 分 析 : 本 题 考 查 操 作 系 统 功 能, 操 作 系 统 的 主 要 功 能 是 管 理 计 算 机 软 硬 件 资 源 解 答 :A 试 题 9 ( 南 京 理 工 大 学 ) 在 操 作 系 统 中, 并 发 性 是 指 A. 若 干 个 事 件 在 不 同 时 刻 发 生 B. 若 干 个 事 件 在 同 一 时 刻 发 生 C. 若 干 个 事 件 在 同 一 时 间 间 隔 内 发 生 D. 若 干 个 事 件 在 不 同 时 间 间 隔 内 发 生 分 析 : 本 题 考 查 操 作 系 统 的 并 发 性 并 发 性 是 指 两 个 或 多 个 事 件 在 同 一 时 间 间 隔 内 发 生 在 多 道 程 序 环 境 下, 并 发 性 是 指 在 一 段 时 间 内, 宏 观 上 有 多 个 程 序 在 同 时 运 行, 但 在 单 处 理 机 系 统 中, 每 一 时 刻 却 仅 能 有 一 道 程 序 执 行, 故 微 观 上 这 些 程 序 只 能 是 分 时 地 交 替 执 行 解 答 :C 试 题 10 ( 兰 州 大 学 ) 在 环 保 护 结 构 中, 操 作 系 统 核 心 处 于 0 环, 占 据 中 间 环, 在 外 环 分 析 : 本 题 考 查 操 作 系 统 环 保 护 结 构, 参 见 图 1-6 解 答 : 操 作 系 统 服 务, 用 户 程 序 图 1-6 操 作 系 统 环 保 护 结 构 图

41 第 1 章 操 作 系 统 引 论 综 合 题 详 解 综 合 题 1 假 设 有 一 台 计 算 机, 它 有 32MB 内 存, 操 作 系 统 占 用 2MB, 每 个 用 户 进 程 占 用 10MB 用 户 进 程 等 待 I/O 的 时 间 为 80%, 问 CPU 的 利 用 率 为 多 少? 若 增 加 32MB 内 存 后,CPU 的 利 用 率 又 为 多 少? 分 析 : 本 题 考 查 CPU 利 用 率 的 计 算 计 算 CPU 利 用 率 时, 关 键 是 要 搞 清 多 个 进 程 的 并 发 关 系 解 答 :CPU 利 用 率 与 进 程 个 数 之 间 的 计 算 公 式 为 CPU 利 用 率 = 1 p n 其 中,p 是 进 程 等 待 I/O 的 概 率,n 是 进 程 的 数 目 32MB 内 存 时, 三 个 进 程, 则 CPU 利 用 率 为 1-(0.8) 3 = 48.8% 64MB 内 存 时, 六 个 进 程, 则 CPU 利 用 率 为 1-(0.8) 6 = 73.8% 综 合 题 2 举 一 个 例 子, 说 明 在 分 布 式 系 统 中 解 决 逻 辑 时 钟 同 步 问 题 的 Lamport 算 法 的 基 本 思 想 分 析 : 本 题 考 查 分 布 式 系 统 中 的 Lamport 算 法 为 了 同 步 逻 辑 时 钟,Lamport 定 义 了 一 个 称 作 先 发 生 的 关 系 表 达 式 a b 意 味 着 a 在 b 之 前 发 生 意 思 是 所 有 进 程 一 致 地 认 为 事 件 a 先 发 生, 然 后 事 件 b 才 发 生 对 每 个 事 件 a, 都 为 它 分 配 一 个 所 有 进 程 都 认 可 的 时 间 值 C(a), 它 必 须 具 有 以 下 性 质 : 如 果 a b, 则 C(a)<C(b) 这 样, 如 果 a 是 一 个 进 程 发 送 消 息 的 事 件,b 是 另 一 个 进 程 接 收 该 消 息 的 时 间, 那 么 C(a) 和 C(b) 必 须 赋 予 大 家 认 可 的 具 有 C(a)<C(b) 关 系 的 值 另 外, 时 钟 时 间 的 值 C 必 须 总 是 增 加, 不 能 减 少 校 正 时 间 是 给 时 间 加 上 一 个 正 值, 而 不 能 是 减 掉 一 个 正 值 解 答 :Lamport 算 法 的 一 个 实 例 如 图 1-7 所 示 举 例, 如 图 1-7 中 (a) (b) 两 图 所 示, 进 程 0 在 时 钟 滴 答 了 六 次 时, 进 程 1 滴 答 了 八 次, 进 程 2 则 滴 答 了 10 次 在 时 刻 6, 进 程 0 将 消 息 A 发 送 给 进 程 1, 当 它 达 到 时, 进 程 1 的 时 钟 值 为 16 如 果 消 息 携 带 有 自 身 的 起 始 时 间 6, 那 么 进 程 1 将 会 推 算 从 进 程 0 到 进 程 1 需 要 10 个 滴 答 这 个 值 可 能 是 正 确 的 依 此 类 推, 进 程 B 从 进 程 1 到 进 程 2 需 要 16 个 滴 答, 这 也 可 能 是 正 确 的 现 在 就 出 现 问 题 了, 从 进 程 2 到 进 程 1 的 消 息 C 在 时 刻 60 离 开, 却 在 56 到 达 这 显 然 是 不 可 能, 必 须 防 止 这 种 事 情 发 生 科 学 出 版 社 Lamport 算 法 的 解 决 方 法 直 接 遵 循 先 发 生 关 系 既 然 C 在 时 刻 60 离 开, 那 么 它 只 能 在 时 刻 61 或 者 更 晚 的 时 刻 到 达 所 以 每 个 消 息 都 应 该 携 带 依 据 发 送 者 时 钟 的 发 送 时 间 当 消 息 到 达 并 且 接 收 者 时 钟 显 示 时 间 值 比 消 息 的 发 送 时 间 早, 接 收 者 就 将 它 的 时 钟 调 到 一 个 比 发 送 时 间 大 1 的 值 在 图 (b) 中 就 可 以 看 到 C 现 在 到 达 的 时 间 就 是 61, 与 此 类 似,D 到 达 的 时 间 是 70

42 28 操 作 系 统 图 1-7 Lamport 算 法 工 作 过 程 综 上 所 述, 可 以 看 到 Lamport 算 法 的 规 则 : (1) 若 在 同 一 进 程 中 a 在 b 之 前 发 生, 则 C(a)<C(b) (2) 若 a 和 b 分 别 代 表 发 送 一 个 消 息 和 接 收 该 消 息 的 事 件, 则 C(a)<C(b) (3) 对 于 所 有 不 同 的 事 件 a 和 b,c(a) C(b) 1.8 习 题 一 选 择 题 1. 操 作 系 统 通 常 为 用 户 提 供 四 种 使 用 接 口, 它 们 是 终 端 命 令 图 标 菜 单 系 统 调 用 命 令 和 A. 计 算 机 高 级 指 令 B. 宏 命 令 C. 类 似 DOS 的 批 命 令 文 件 或 UNIX 的 shell 文 件 D. 汇 编 语 言 2. 火 车 站 的 售 票 系 统 属 于 系 统 A. 单 道 批 处 理 B. 多 道 批 处 理 C. 分 时 D. 实 时 3. 实 时 系 统 A. 是 依 赖 人 为 干 预 的 监 督 和 控 制 系 统 B. 必 须 既 要 及 时 响 应 快 速 处 理, 又 要 有 高 可 靠 性 和 安 全 性 C. 强 调 系 统 资 源 的 利 用 率 D. 实 质 上 是 批 处 理 系 统 和 分 时 系 统 的 结 合 4. 实 时 系 统 中, 通 常 采 用 算 法 进 行 进 程 调 度 A. 先 来 先 服 务 B. 时 间 片 轮 转 C. 抢 占 式 的 优 先 数 高 者 优 先 D. 响 应 比 高 者 优 先

43 第 1 章 操 作 系 统 引 论 分 布 式 操 作 系 统 的 时 间 片 一 定, 那 么, 则 响 应 时 间 越 长 A. 用 户 数 越 多 B. 用 户 数 越 少 C. 内 存 越 少 D. 内 存 越 大 6. 是 操 作 系 统 必 须 提 供 的 功 能 A. GUI B. 为 进 程 提 供 系 统 调 用 命 令 C. 处 理 中 断 D. 编 译 源 程 序 7. 下 列 选 择 中, 不 是 操 作 系 统 关 心 的 主 要 问 题 A. 管 理 计 算 机 逻 辑 B. 设 计 提 供 用 户 程 序 与 计 算 机 硬 件 系 统 的 界 面 C. 管 理 计 算 机 系 统 资 源 D. 高 级 程 序 设 计 语 言 的 编 译 器 8. 在 操 作 系 统 术 语 中,C/S 是 A. 客 户 机 / 服 务 器 B. 网 络 操 作 系 统 C. 实 时 操 作 系 统 D. 分 布 式 操 作 系 统 9. 操 作 系 统 是 一 个 庞 大 的 系 统 软 件, 可 采 用 以 下 哪 些 技 术 来 构 造 系 统 A. 模 块 化 结 构 B. 分 层 结 构 C. 微 内 核 结 构 D. 面 向 对 象 程 序 设 计 E. 客 户 / 服 务 器 模 式 10. 引 入 软 件 工 程 的 目 的 是 二 填 空 题 A. 能 实 现 高 质 量 的 软 件 保 证 体 系 B. 使 软 件 的 维 护 容 易 C. 避 免 了 变 成 的 随 意 性 D. 仅 为 数 据 库 软 件 开 发 1. 操 作 系 统 是 对 计 算 机 进 行 的 程 序, 是 和 用 户 的 接 口 2. 操 作 系 统 的 三 种 基 本 类 型 是 3. 操 作 系 统 的 作 用 是 为 了 和 它 的 基 本 特 征 是 和 是 一 种 最 典 型 的 分 时 系 统, 而 是 在 PC 机 上 使 用 最 广 泛 的 单 用 户 操 作 系 统 20 世 纪 80 年 代, 在 PC 机 上 使 用 最 广 泛 的 操 作 系 统 是, 在 工 作 站 上 运 行 的 主 流 操 作 系 统 是,Linux 是 机 上 运 行 的 操 作 系 统 4. 在 配 备 有 操 作 系 统 的 计 算 机 系 统 中, 用 户 程 序 通 过 读 取 磁 盘 上 的 数 据 文 件 5. 分 时 操 作 系 统 的 特 点 有 和 及 时 性 6. 批 处 理 系 统 的 主 要 优 点 是 和 7. 操 作 系 统 的 特 征 包 括 并 发 性 共 享 性 8. 现 代 操 作 系 统 的 基 本 功 能 是 管 理 计 算 机 系 统 的 硬 件 软 件 资 源, 这 些 管 理 工 作 分 为 管 理, 管 理, 管 理, 管 理, 和 通 信 事 务 管 理, 在 管 理 活 动 中 表 现 出 来 的 基 本 特 征 是,,, 和 科 学 出 版 社

44 30 操 作 系 统 三 简 答 题 1. 操 作 系 统 的 主 要 目 标 和 作 用 是 什 么? 2. 请 用 对 照 方 式, 阐 明 分 时 操 作 系 统 实 时 操 作 系 统 网 络 操 作 系 统 和 分 布 式 操 作 系 统 的 实 现 机 制 和 功 能 上 的 相 异 之 处 3. 操 作 系 统 有 哪 几 大 特 征, 其 最 基 本 的 特 征 是 什 么? 4. 举 例 说 明 为 什 么 操 作 系 统 起 到 了 扩 展 机 器 的 作 用? 5. 基 于 微 内 核 和 强 内 核 结 构 的 操 作 系 统 的 区 别 是 什 么? 6. 从 宏 观 结 构 上 看, 操 作 系 统 有 哪 几 种 结 构 设 计 方 法? 你 认 为 哪 种 方 法 比 较 好? 为 什 么?

45 第 2 章 进 程 管 理 在 传 统 的 操 作 系 统 中, 程 序 并 不 能 独 立 运 行, 作 为 资 源 分 配 和 独 立 运 行 的 基 本 单 位 是 进 程 操 作 系 统 所 具 有 的 四 大 基 本 特 征 也 都 是 基 于 进 程 而 形 成 的 显 然, 在 操 作 系 统 中, 进 程 是 一 个 极 其 重 要 的 概 念 因 此, 本 章 专 门 来 介 绍 进 程 考 研 大 纲 (1) 进 程 与 线 程 1) 进 程 概 念 2) 进 程 的 状 态 与 转 换 3) 进 程 控 制 4) 进 程 组 织 5) 进 程 通 信 : 共 享 存 储 系 统 ; 消 息 传 递 系 统 ; 管 道 通 信 6) 线 程 的 概 念 与 多 线 程 模 型 (2) 进 程 同 步 1) 进 程 同 步 的 基 本 概 念 2) 实 现 临 界 区 互 斥 的 基 本 方 法 : 软 件 实 现 方 法 ; 硬 件 实 现 方 法 3) 信 号 量 4) 管 程 5) 经 典 同 步 问 题 : 生 产 者 - 消 费 者 问 题 ; 读 者 - 写 者 问 题 ; 哲 学 家 进 餐 问 题 2.1 进 程 的 基 本 概 念 在 未 配 置 的 操 作 系 统 中, 程 序 的 执 行 方 式 都 是 顺 序 执 行, 即 必 须 在 一 个 程 序 执 行 完 后 另 一 个 程 序 才 可 以 执 行 ; 在 多 道 程 序 环 境 下, 则 允 许 多 个 程 序 并 发 执 行 程 序 的 这 两 种 执 行 方 式 有 着 显 著 的 不 同 也 正 是 程 序 并 发 执 行 的 这 种 特 征, 才 导 致 操 作 系 统 中 引 入 了 进 程 的 概 念 因 此, 这 里 有 必 要 先 对 程 序 的 顺 序 执 行 和 并 发 执 行 方 式 做 简 单 的 描 述 程 序 的 顺 序 执 行 及 其 特 征 科 学 出 版 社 1. 程 序 的 顺 序 执 行 通 常 可 以 把 一 个 应 用 程 序 分 成 若 干 个 程 序 段, 在 各 程 序 段 之 间, 必 须 按 照 某 种 先 后 次 序 执 行, 仅 当 当 前 操 作 ( 程 序 段 ) 执 行 完 后, 才 能 执 行 后 继 操 作 例 如, 在 进 行 计 算

46 32 操 作 系 统 时, 必 须 先 输 入 用 户 的 程 序 和 数 据, 然 后 进 行 计 算, 最 后 才 能 打 印 计 算 结 果 这 里, 我 们 用 结 点 (Node) 代 表 各 程 序 段 的 操 作, 如 图 2-1 所 示, 其 中,I 代 表 输 入 操 作 C 代 表 计 算 操 作 P 代 表 打 印 操 作, 并 用 箭 头 表 示 操 作 的 先 后 次 序 这 样, 上 述 三 个 操 作 可 按 图 2-1(a) 中 的 顺 序 执 行 对 一 个 程 序 段 的 多 条 语 句 来 说, 也 有 一 个 执 行 顺 序 的 问 题, 对 于 如 下 程 序 段 : S 1 :a:=x+y; S 2 :b:=a-5; S 3 :c:=b+1; 其 中, 语 句 S 2 必 须 在 S 1 之 后 ( 即 a 被 赋 值 ) 才 能 执 行 ; 同 样, 语 句 S 3 也 必 须 在 b 被 赋 值 后 才 能 执 行 因 此, 这 三 条 语 句 应 按 图 2-1(b) 所 示 顺 序 执 行 图 2-1 程 序 的 顺 序 执 行 2. 程 序 顺 序 执 行 时 的 特 征 程 序 顺 序 执 行 时 的 特 征 主 要 有 以 下 三 点 (1) 顺 序 性 当 顺 序 程 序 在 CPU 上 执 行 时,CPU 严 格 地 顺 序 执 行 程 序 规 定 的 动 作, 每 个 动 作 都 必 须 在 前 一 动 作 结 束 后 才 能 开 始 除 了 人 为 的 干 预 造 成 机 器 暂 时 停 顿 外, 前 一 动 作 的 结 束 就 意 味 着 后 一 动 作 的 开 始 程 序 和 计 算 机 执 行 程 序 的 活 动 严 格 地 一 一 对 应 (2) 封 闭 性 程 序 是 在 封 闭 的 环 境 下 执 行 的 即 程 序 运 行 时 独 占 全 机 资 源, 资 源 的 状 态 ( 除 初 始 状 态 外 ) 只 有 本 程 序 才 能 改 变 它 程 序 一 旦 开 始 执 行, 其 执 行 结 果 不 受 外 界 因 素 的 影 响 (3) 可 再 现 性 只 要 程 序 执 行 时 的 环 境 和 初 始 条 件 相 同, 当 程 序 重 复 执 行 时, 不 论 它 是 从 头 到 尾 不 停 顿 地 执 行, 还 是 停 停 走 走 地 执 行, 都 将 获 得 相 同 的 结 果 前 趋 图 前 趋 图 (Precedence Graph) 是 一 个 有 向 无 循 环 图, 记 为 DAG(Directed Acyclic Graph), 用 于 描 述 进 程 之 间 执 行 的 前 后 关 系 图 中 的 每 个 结 点 可 用 于 描 述 一 个 程 序 段 或 进 程, 也 可 描 述 一 条 语 句 ; 结 点 间 用 有 向 边 来 表 示 两 个 结 点 之 间 存 在 的 偏 序 (Partial Order) 或 前 趋 关 系 (Precedence Relation) 前 趋 关 系 可 定 义 为 ={(P i,p j ) P i 必 须 在 P j 开 始 之 前 完 成 } 如 果 (P i,p j ), 可 写 成 P i P j, 称 P i 是 P j 的 直 接 前 趋,P j 是 P i 的 直 接 后 继 在 前 趋 图 中, 把 没 有 前 趋 的 结 点 称 为 初 始 结 点 (Initial Node), 把 没 有 后 继 的 结 点 称 为 终 止 结 点 (Final Node) 此 外, 每 个 结 点 还 具 有 一 个 重 量 (Weight), 用 该 结 点 所 含 的 程 序 量 或 结 点 的 执 行 时 间 来 计 算 在 图 2-1(a) 和 图 2-1(b) 中 分 别 存 在 着 如 下 前 趋 关 系 : I i C i P i 和 S 1 S 2 S 3

47 第 2 章 进 程 管 理 33 例 2-1 某 前 趋 图 有 9 个 结 点, 如 图 2-2(a) 所 示, 请 写 出 结 点 间 的 前 趋 关 系 对 于 图 2-2(a) 所 示 的 前 趋 图, 存 在 如 下 前 趋 关 系 : P 1 P 2,P 1 P 3,P 1 P 4,P 2 P 5,P 3 P 5,P 4 P 6,P 4 P 7,P 5 P 8,P 6 P 8,P 7 P 9,P 8 P 9 或 表 示 为 P={P 1,P 2,P 3,P 4,P 5,P 6,P 7,P 8,P 9 } ={(P 1,P 2 ),(P 1,P 3 ),(P 1,P 4 ),(P 2,P 5 ),(P 3,P 5 ),(P 4,P 6 ),(P 4,P 7 ),(P 5,P 8 ), (P 6,P 8 ),(P 7,P 9 ),(P 8,P 9 )} 图 2-2 前 趋 图 应 当 注 意, 前 趋 图 中 不 能 存 在 循 环 图 2-2(b) 给 出 如 下 前 趋 关 系 : 显 然, 这 种 前 趋 关 系 是 不 能 满 足 的 程 序 的 并 发 执 行 及 其 特 征 1. 程 序 的 并 发 执 行 S 1 S 2,S 2 S 3,S 3 S 2 在 图 2-1 中, 输 入 计 算 打 印 程 序 三 者 之 间 存 在 着 I i C i P i 这 样 的 前 趋 关 系, 因 此 对 一 个 作 业 的 输 入 计 算 打 印 三 个 操 作, 必 须 顺 序 执 行 但 它 们 之 间 不 存 在 P i I i+1 的 关 系, 因 而 在 对 多 个 作 业 进 行 处 理 时, 可 使 它 们 并 发 执 行 图 2-3 给 出 了 输 入 计 算 和 打 印 这 三 个 程 序 对 一 批 作 业 进 行 处 理 的 情 况 在 该 例 中 存 在 如 下 前 趋 关 系 : 图 2-3 并 发 执 行 时 的 前 趋 图 I i C i,i i I i+1, C i P i, C i C i+1,p i P i+1 而 I i+1 和 C i 及 P i -1 是 重 叠 的, 亦 即 在 P i -1 和 C i 以 及 I i+1 之 间, 可 以 并 发 执 行 科 学 出 版 社

48 34 操 作 系 统 对 于 具 有 如 下 四 条 语 句 的 程 序 段 : S 1 :a: =x+2 S 2 :b:=y+4 S 3 :c:=a+b S 4 :d: =c+b 可 画 出 如 图 2-4 所 示 的 前 趋 关 系 可 以 看 出 :S 3 必 须 在 a 和 b 被 赋 值 后 方 能 执 行 ;S 4 必 须 在 S 3 之 后 执 行 ; 但 S 1 和 S 2 可 以 并 发 执 行, 因 为 它 们 彼 此 互 不 依 赖 2. 程 序 并 发 执 行 时 的 特 征 图 2-4 四 条 语 句 的 前 趋 关 系 程 序 的 并 发 执 行, 虽 然 提 高 了 系 统 的 吞 吐 量, 但 也 产 生 了 一 些 与 程 序 顺 序 执 行 时 不 同 的 特 征 1) 间 断 性 如 果 并 发 执 行 的 程 序 与 其 他 程 序 竞 争 资 源 失 败 而 阻 塞, 或 运 行 到 一 个 时 间 片 结 束 时, 它 都 会 放 弃 CPU, 使 自 己 无 法 继 续 运 行 下 去, 但 是 当 别 的 程 序 释 放 资 源, 使 它 能 获 得 申 请 的 资 源 并 再 次 被 调 度 选 中 时, 它 又 能 继 续 运 行 下 去 这 就 使 并 发 执 行 的 程 序 具 有 执 行 暂 停 执 行 的 活 动 规 律 2) 失 去 封 闭 性 程 序 在 并 发 执 行 时, 多 个 程 序 共 享 系 统 中 的 各 种 源, 因 此 这 些 资 源 的 使 用 状 态 将 由 多 个 程 序 改 变, 使 程 序 运 行 失 去 了 封 闭 性 这 样, 当 程 序 在 执 行 时, 必 然 会 受 到 其 他 程 序 的 影 响 例 如, 当 处 理 机 这 一 资 源 已 被 某 个 程 序 占 有 时, 另 一 程 序 必 须 等 待 3) 不 可 再 现 性 由 于 程 序 的 并 发 执 行, 打 破 了 由 某 一 道 程 序 独 占 系 统 资 源 时 的 封 闭 性, 也 必 将 导 致 失 去 程 序 执 行 的 可 再 现 性 例 如, 有 两 个 循 环 程 序 A 和 B, 它 们 共 享 一 个 变 量 N 程 序 A 每 执 行 一 次 时, 都 要 做 N:=N+1 操 作 ; 程 序 B 每 执 行 一 次 时, 都 要 执 行 Print(N) 操 作, 然 后 再 将 N 置 成 0 程 序 A 和 B 以 不 同 的 速 度 运 行 这 样, 可 能 出 现 如 下 三 种 情 况 ( 假 定 某 时 刻 变 量 N 的 值 为 n) (1)N:=N+1 在 Print(N) 和 N:=0 之 前, 此 时 得 到 的 N 值 分 别 为 n+1,n+1,0 (2)N:=N+1 在 Print(N) 和 N:=0 之 后, 此 时 得 到 的 N 值 分 别 为 n,0,1 (3)N:=N+1 在 Print(N) 和 N:=0 之 间, 此 时 得 到 的 N 值 分 别 为 n,n+1,0 上 述 情 况 说 明, 程 序 在 并 发 执 行 时, 由 于 失 去 了 封 闭 性, 其 计 算 结 果 与 并 发 程 序 的 执 行 速 度 有 关, 从 而 使 程 序 的 执 行 失 去 了 可 再 现 性, 亦 即, 程 序 经 过 多 次 执 行 后, 虽 然 它 们 执 行 的 环 境 和 初 始 条 件 相 同, 但 得 到 的 结 果 却 各 不 相 同 进 程 的 特 征 与 状 态 1. 进 程 的 特 征 和 定 义 在 多 道 程 序 环 境 下, 程 序 的 执 行 属 于 并 发 执 行, 此 时 它 们 将 失 去 其 封 闭 性, 并 具 有 间 断 性 和 不 可 再 现 性 的 特 征 这 决 定 了 通 常 的 程 序 是 不 能 参 与 并 发 执 行 的, 因 为 程 序 的

49 第 2 章 进 程 管 理 35 执 行 结 果 是 不 可 再 现 的 这 样, 程 序 的 运 行 也 就 失 去 了 意 义 为 使 程 序 能 并 发 执 行, 且 为 了 对 并 发 执 行 的 程 序 加 以 描 述 和 控 制, 因 此 引 入 了 进 程 的 概 念 为 了 能 深 刻 地 理 解 进 程 的 概 念, 我 们 首 先 对 进 程 的 特 征 加 以 描 述 1) 结 构 特 征 通 常, 程 序 是 不 能 并 发 执 行 的 为 使 程 序 能 独 立 运 行, 应 为 之 配 置 一 进 程 控 制 块, 即 PCB; 而 由 程 序 段 相 关 数 据 段 和 PCB 三 部 分 便 构 成 了 进 程 实 体 在 早 期 的 UNIX 版 本 中, 把 这 三 部 分 总 称 为 进 程 映 像 值 得 指 出 的 是, 在 许 多 情 况 下 所 指 的 进 程, 实 际 上 是 指 进 程 实 体 2) 动 态 性 进 程 的 实 质 是 进 程 实 体 的 一 次 执 行 过 程, 因 此, 动 态 性 是 进 程 最 基 本 的 特 征 动 态 性 还 表 现 在 它 由 创 建 而 产 生, 由 调 度 而 执 行, 由 撤 销 而 消 亡 可 见, 进 程 实 体 有 一 定 的 生 命 期, 而 程 序 则 是 一 组 有 序 指 令 的 集 合, 并 存 放 于 某 种 介 质 上, 其 本 身 并 不 具 有 运 动 的 含 义, 因 而 是 静 态 的 3) 并 发 性 这 是 指 多 个 进 程 实 体 同 存 在 于 内 存 中, 且 能 在 一 段 时 间 内 同 时 运 行 并 发 性 是 进 程 的 重 要 特 征, 同 时 也 成 为 操 作 系 统 的 重 要 特 征 引 入 进 程 的 目 的 也 正 是 为 了 使 其 进 程 实 体 能 和 其 他 进 程 实 体 并 发 执 行, 而 程 序 ( 没 有 建 立 PCB) 是 不 能 并 发 执 行 的 4) 独 立 性 在 传 统 的 操 作 系 统 中, 独 立 性 是 指 进 程 实 体 是 一 个 能 独 立 运 行 独 立 分 配 资 源 和 独 立 接 受 调 度 的 基 本 单 位 凡 未 建 立 PCB 的 进 程 都 不 能 作 为 一 个 独 立 的 单 位 参 与 运 行 5) 异 步 性 这 是 指 进 程 按 各 自 独 立 的 不 可 预 知 的 速 度 向 前 推 进, 或 者 说 进 程 实 体 按 异 步 方 式 运 行 现 在 我 们 再 来 讨 论 进 程 的 定 义, 较 典 型 的 进 程 定 义 有 以 下 几 种 (1) 进 程 是 程 序 的 一 次 执 行 (2) 进 程 是 一 个 程 序 及 其 数 据 在 处 理 机 上 顺 序 执 行 时 所 发 生 的 活 动 (3) 进 程 是 程 序 在 一 个 数 据 集 合 上 运 行 的 过 程, 它 是 系 统 进 行 资 源 分 配 和 调 度 的 一 个 独 立 单 位 在 引 入 了 进 程 实 体 的 概 念 后, 我 们 可 以 把 传 统 操 作 系 统 中 的 进 程 定 义 为 进 程 是 进 程 实 体 的 运 行 过 程, 是 系 统 进 行 资 源 分 配 和 调 度 的 一 个 独 立 单 位 进 程 与 程 序 的 区 别 程 序 是 一 组 有 序 静 态 指 令 和 数 据 的 集 合, 用 来 指 示 CPU 的 操 作, 本 身 并 不 具 有 运 动 含 义, 是 一 种 静 态 概 念 进 程 则 是 程 序 的 一 次 执 行 过 程, 具 有 动 态 性 2. 进 程 的 三 种 基 本 状 态 科 学 出 版 社 进 程 运 行 时 的 间 断 性, 决 定 了 进 程 可 能 具 有 多 种 状 态 事 实 上, 运 行 中 的 进 程 可 能 具 有 如 下 三 种 基 本 状 态 (1) 就 绪 状 态 当 进 程 已 分 配 到 除 CPU 以 外 的 所 有 必 要 资 源 后, 只 要 再 获 得 CPU, 就 可 立 即 执 行, 进 程 这 时 的 状 态 称 为 就 绪 状 态 在 一 个 系 统 中 处 于 就 绪 状 态 的 进 程 可 能

50 36 操 作 系 统 有 多 个, 通 常 将 它 们 排 成 一 个 队 列, 称 为 就 绪 队 列 (2) 运 行 状 态 进 程 已 获 得 CPU, 并 且 在 CPU 上 执 行 的 状 态 称 为 运 行 状 态 显 然, 这 种 状 态 的 进 程 数 目 不 能 大 于 CPU 的 数 目, 在 单 CPU 情 况 下, 处 于 运 行 状 态 的 进 程 只 能 有 一 个 (3) 阻 塞 状 态 阻 塞 状 态 是 指 进 程 在 前 进 的 过 程 中, 由 于 等 待 某 种 条 件 ( 例 如, 当 前 外 设 资 源 不 够, 等 待 其 他 进 程 来 的 信 息 等 ) 而 不 能 运 行 时 所 处 的 状 态 在 这 种 情 况 下, 即 使 CPU 空 闲, 进 程 也 不 能 占 据 CPU 而 运 行 引 起 等 待 的 原 因 一 旦 消 失, 进 程 便 转 为 就 绪 状 态, 以 便 在 适 当 的 时 候 投 入 运 行 处 于 等 待 状 态 的 进 程 可 以 有 多 个 处 于 就 绪 状 态 的 进 程, 在 调 度 程 序 为 之 分 配 了 处 理 机 之 后 便 可 执 行, 其 状 态 也 将 转 换 为 执 行 状 态 对 于 正 在 执 行 的 进 程, 如 果 分 配 给 它 的 时 间 片 用 完, 它 将 暂 停 执 行, 由 执 行 状 态 回 到 就 绪 状 态 ; 如 果 因 发 生 某 事 件 而 使 该 进 程 受 阻 而 无 法 继 续 运 行, 该 进 程 便 由 执 行 状 态 转 为 阻 塞 状 态 图 2-5 给 出 了 进 程 的 三 种 基 本 状 态 及 其 转 换 关 系 3. 挂 起 状 态 1) 引 入 挂 起 状 态 的 原 因 某 些 系 统 中 引 入 了 挂 起 状 态, 引 入 挂 起 状 态 的 主 要 原 因 是 内 存 资 源 不 足 另 外, 当 有 终 端 用 户 请 图 2-5 进 程 的 三 种 基 本 状 态 及 其 转 换 求 父 进 程 请 求 负 荷 调 节 需 要 等 情 况 时, 也 要 用 到 挂 起 状 态 引 入 挂 起 状 态 后, 又 将 增 加 挂 起 状 态 ( 又 称 为 静 止 状 态 ) 和 非 挂 起 状 态 ( 又 称 为 活 动 状 态 ) 之 间 的 转 换 有 以 下 几 种 情 况 (1) 活 动 就 绪 静 止 就 绪 当 进 程 处 于 未 被 挂 起 的 就 绪 状 态 时, 称 此 为 活 动 就 绪 状 态, 当 用 挂 起 原 语 将 该 进 程 挂 起 后, 该 进 程 便 转 变 为 静 止 就 绪 状 态, 处 于 静 止 就 绪 状 态 的 进 程 不 再 被 调 度 执 行 (2) 活 动 阻 塞 静 止 阻 塞 当 进 程 处 于 未 被 挂 起 的 阻 塞 状 态 时, 称 它 是 处 于 活 动 阻 塞 状 态, 当 用 挂 起 原 语 将 它 挂 起 后, 进 程 便 转 变 为 静 止 阻 塞 状 态, 处 于 静 止 阻 塞 状 态 的 进 程 在 其 所 期 待 的 事 件 出 现 后, 将 从 静 止 阻 塞 变 为 静 止 就 绪 (3) 静 止 就 绪 活 动 就 绪 处 于 静 止 就 绪 状 态 的 进 程, 若 用 激 活 原 语 激 活 后, 该 进 程 将 转 变 为 活 动 就 绪 状 态 (4) 静 止 阻 塞 活 动 阻 塞 处 于 静 止 阻 塞 状 态 的 进 程, 若 用 激 活 原 语 激 活 后, 该 进 程 将 转 变 为 活 动 阻 塞 状 态 2) 进 程 状 态 的 转 换 (1) 就 绪 运 行 处 于 就 绪 状 态 的 进 程, 已 具 备 了 运 行 的 条 件, 但 由 于 未 能 获 得 CPU, 故 仍 然 不 能 运 行 对 于 单 CPU 系 统 而 言, 因 为 处 于 就 绪 状 态 的 进 程 往 往 不 止 一 个, 同 一 时 刻 只 能 有 一 个 就 绪 进 程 获 得 CPU 进 程 调 度 程 序 根 据 调 度 算 法 把 CPU 分 配 给 某 个 就 绪 进 程, 建 立 该 进 程 运 行 状 态 标 记, 并 把 控 制 转 到 该 进 程, 把 它 由 就 绪 状 态 变 为 运 行 状 态, 这 样 进 程 就 投 入 运 行 即 就 绪 状 态 的 进 程, 一 旦 被 调 度 进 程 选 中, 获 得 CPU, 便 发 生 此 状 态 变 迁 (2) 运 行 阻 塞 处 于 运 行 状 态 的 进 程 申 请 新 资 源 而 又 不 能 立 即 被 满 足 时, 进 程 状

51 第 2 章 进 程 管 理 37 态 由 运 行 变 成 阻 塞 如 运 行 中 的 进 程 需 要 等 待 文 件 的 输 入, 系 统 便 自 动 转 入 系 统 控 制 程 序, 进 行 文 件 输 入, 在 文 件 输 入 过 程 中, 该 进 程 进 入 阻 塞 状 态, 而 系 统 将 控 制 转 给 进 程 调 度 程 序, 进 程 调 度 程 序 根 据 调 度 算 法 把 CPU 分 配 给 处 于 就 绪 状 态 的 其 他 进 程 即 运 行 进 程 遇 到 I/O 请 求 时, 发 生 此 状 态 变 迁 (3) 阻 塞 就 绪 被 阻 塞 的 进 程 在 其 被 阻 塞 的 原 因 获 得 解 除 后, 并 不 能 立 即 投 入 运 行, 需 要 通 过 进 程 调 度 程 序 统 一 调 度 才 能 获 得 CPU, 于 是 将 其 状 态 由 阻 塞 状 态 变 成 就 绪 状 态 继 续 等 待 CPU 仅 当 进 程 调 度 程 序 把 CPU 再 次 分 配 给 它 时, 才 可 恢 复 曾 被 中 断 的 现 场 继 续 运 行 即 阻 塞 进 程 的 I/O 请 求 完 成 时, 发 生 此 状 态 变 迁 (4) 运 行 就 绪 这 种 状 态 变 化 通 常 出 现 在 分 时 操 作 系 统 中 一 个 正 在 运 行 的 进 程, 由 于 规 定 运 行 时 间 片 用 完 而 使 系 统 发 出 超 时 中 断 请 求, 超 时 中 断 处 理 程 序 把 该 进 程 的 状 态 修 改 为 就 绪 状 态, 并 根 据 其 自 身 的 特 征 而 插 入 就 绪 队 列 的 适 当 位 置, 保 存 进 程 现 场 信 息, 收 回 CPU 并 转 入 进 程 调 度 程 序 于 是, 正 在 运 行 的 进 程 就 由 运 行 状 态 变 为 就 绪 状 态 即 运 行 进 程 时 间 片 用 完 时, 发 生 此 状 态 变 迁 图 2-6 所 示 为 具 有 挂 起 状 态 的 进 程 状 态 图 进 程 控 制 块 1. 进 程 控 制 块 的 作 用 图 2-6 具 有 挂 起 状 态 的 进 程 状 态 图 为 了 描 述 和 控 制 进 程 的 运 行, 系 统 为 每 个 进 程 定 义 了 一 个 数 据 结 构 进 程 控 制 块 (Process Control Block,PCB), 它 是 进 程 实 体 的 一 部 分, 是 操 作 系 统 中 最 重 要 的 记 录 型 数 据 结 构 PCB 中 记 录 了 操 作 系 统 所 需 的 用 于 描 述 进 程 的 当 前 情 况 以 及 控 制 进 程 运 行 的 全 部 信 息 进 程 控 制 块 的 作 用 是 使 一 个 在 多 道 程 序 环 境 下 不 能 独 立 运 行 的 程 序 ( 含 数 据 ), 成 为 一 个 能 独 立 运 行 的 基 本 单 位, 一 个 能 与 其 他 进 程 并 发 执 行 的 进 程 或 者 说, 操 作 系 统 是 根 据 PCB 来 对 并 发 执 行 的 进 程 进 行 控 制 和 管 理 的 例 如, 当 操 作 系 统 要 调 度 某 进 程 执 行 时, 要 从 该 进 程 的 PCB 中 查 出 其 现 行 状 态 及 优 先 级 ; 在 调 度 到 某 进 程 后, 要 根 据 其 PCB 中 所 保 存 的 处 理 机 状 态 信 息, 设 置 该 进 程 恢 复 运 行 的 现 场, 并 根 据 其 PCB 中 的 程 序 和 数 据 的 内 存 地 址, 找 到 其 程 序 和 数 据 ; 进 程 在 执 行 过 程 中, 当 需 要 和 与 之 合 作 的 进 程 实 现 同 步 通 信 或 访 问 文 件 时, 也 都 需 要 访 问 PCB; 当 进 程 由 于 某 种 原 因 暂 停 执 行 时, 又 须 将 其 断 点 的 处 理 机 环 境 保 存 在 PCB 中 可 见, 在 进 程 的 整 个 生 命 期 中, 系 统 总 是 通 过 PCB 对 进 程 进 行 控 制 的, 亦 即, 系 统 是 根 据 进 程 的 PCB 感 知 到 该 进 程 的 存 在 的 所 以 说,PCB 是 进 程 存 在 的 唯 一 标 志 科 学 出 版 社

52 38 操 作 系 统 当 系 统 创 建 一 个 新 进 程 时, 就 为 它 建 立 了 一 个 PCB; 进 程 结 束 时 又 回 收 其 PCB, 进 程 于 是 也 随 之 消 亡 PCB 可 以 被 操 作 系 统 中 的 多 个 模 块 读 写 或 修 改, 如 被 调 度 程 序 资 源 分 配 程 序 中 断 处 理 程 序 以 及 监 督 和 分 析 程 序 等 因 为 PCB 经 常 被 系 统 访 问, 尤 其 是 被 运 行 频 率 很 高 的 进 程 访 问, 故 PCB 应 常 驻 内 存 系 统 将 所 有 的 PCB 组 织 成 若 干 个 链 表 ( 或 队 列 ), 存 放 在 操 作 系 统 中 专 门 开 辟 的 PCB 区 内 2. 进 程 控 制 块 中 的 信 息 在 进 程 控 制 块 中, 主 要 包 括 如 下 四 方 面 的 信 息 1) 进 程 标 识 符 进 程 标 识 符 用 于 唯 一 地 标 识 一 个 进 程 一 个 进 程 通 常 有 两 种 标 识 符 (1) 内 部 标 识 符 在 所 有 的 操 作 系 统 中, 都 为 每 一 个 进 程 赋 予 一 个 唯 一 的 数 字 标 识 符, 它 通 常 是 一 个 进 程 的 序 号 设 置 内 部 标 识 符 主 要 是 为 了 方 便 系 统 使 用 (2) 外 部 标 识 符 它 由 创 建 者 提 供, 通 常 是 由 字 母 数 字 组 成, 往 往 是 由 用 户 ( 进 程 ) 在 访 问 该 进 程 时 使 用 为 了 描 述 进 程 的 家 族 关 系, 还 应 设 置 父 进 程 标 识 及 子 进 程 标 识 此 外, 还 可 设 置 用 户 标 识, 以 指 示 拥 有 该 进 程 的 用 户 2) 处 理 机 状 态 处 理 机 状 态 信 息 主 要 是 由 处 理 机 的 各 种 寄 存 器 中 的 内 容 组 成 的 (1) 通 用 寄 存 器, 又 称 为 用 户 可 视 寄 存 器, 它 们 是 用 户 程 序 可 以 访 问 的, 用 于 暂 存 信 息, 在 大 多 数 处 理 机 中, 有 8~32 个 通 用 寄 存 器, 在 RISC 结 构 的 计 算 机 中 可 超 过 100 个 (2) 指 令 计 数 器, 其 中 存 放 了 要 访 问 的 下 一 条 指 令 的 地 址 (3) 程 序 状 态 字 PSW, 其 中 含 有 状 态 信 息, 如 条 件 码 执 行 方 式 中 断 屏 蔽 标 志 等 (4) 用 户 栈 指 针, 指 每 个 用 户 进 程 都 有 一 个 或 若 干 个 与 之 相 关 的 系 统 栈, 用 于 存 放 过 程 和 系 统 调 用 参 数 及 调 用 地 址 栈 指 针 指 向 该 栈 的 栈 顶 3) 进 程 调 度 信 息 PCB 中 还 存 放 一 些 与 进 程 调 度 和 进 程 对 换 有 关 的 信 息, 包 括 :1 进 程 状 态, 指 明 进 程 的 当 前 状 态, 作 为 进 程 调 度 和 对 换 时 的 依 据 ;2 进 程 优 先 级, 用 于 描 述 进 程 使 用 处 理 机 优 先 级 别 的 一 个 整 数, 优 先 级 高 的 进 程 应 优 先 获 得 处 理 机 ;3 进 程 调 度 所 需 的 其 他 信 息, 它 们 与 所 采 用 的 进 程 调 度 算 法 有 关, 比 如, 进 程 已 等 待 CPU 的 时 间 总 和 进 程 已 执 行 的 时 间 总 和 等 ;4 事 件, 是 指 进 程 由 执 行 状 态 转 变 为 阻 塞 状 态 所 等 待 发 生 的 事 件, 即 阻 塞 原 因 4) 进 程 控 制 信 息 进 程 控 制 信 息 包 括 :1 程 序 和 数 据 的 地 址, 是 指 进 程 的 程 序 和 数 据 所 在 的 内 存 或 外 存 地 址, 以 便 在 调 度 到 该 进 程 执 行 时, 能 从 PCB 中 找 到 其 程 序 和 数 据 ;2 进 程 同 步 和 通 信 机 制, 指 实 现 进 程 同 步 和 进 程 通 信 时 必 需 的 机 制, 如 消 息 队 列 指 针 信 号 量 等, 它 们 可 能 全 部 或 部 分 地 放 在 PCB 中 ;3 资 源 清 单, 是 一 张 列 出 了 除 CPU 以 外 的 进 程 所 需 的 全 部 资 源 及 已 经 分 配 到 该 进 程 的 资 源 的 清 单 ;4 链 接 指 针, 它 给 出 了 本 进 程 (PCB) 所 在 队 列 中 的 下 一 个 进 程 的 PCB 的 首 地 址 3. 进 程 控 制 块 的 组 织 方 式 在 一 个 系 统 中, 通 常 可 拥 有 数 百 乃 至 上 千 个 PCB, 为 了 能 对 它 们 进 行 有 效 的 管 理,

53 第 2 章 进 程 管 理 39 应 以 适 当 的 方 式 将 这 些 PCB 组 织 起 来 目 前 常 用 的 组 织 方 式 有 如 下 几 种 (1) 链 接 表 方 式 系 统 按 照 进 程 的 状 态 将 进 程 的 PCB 组 成 队 列, 从 而 形 成 就 绪 队 列 阻 塞 队 列 运 行 队 列 等 图 2-7 表 示 链 接 队 列 的 组 织 方 式 (2) 索 引 表 方 式 该 方 式 是 线 性 表 方 式 的 改 进, 系 统 按 照 进 程 的 状 态 分 别 建 立 就 绪 索 引 表 阻 塞 索 引 表 等 图 2-8 表 示 索 引 方 式 的 PCB 组 织 (3) 线 性 表 方 式 不 论 进 程 的 状 态 如 何, 将 所 有 的 PCB 连 续 地 存 放 在 内 存 的 系 统 区 这 种 方 式 适 用 于 系 统 中 进 程 数 目 不 多 的 情 况 图 2-7 PCB 链 接 队 列 示 意 图 图 2-8 按 索 引 方 式 组 织 PCB 2.2 进 程 控 制 科 学 出 版 社 进 程 控 制 是 进 程 管 理 中 最 基 本 的 功 能 它 用 于 创 建 一 个 新 进 程, 终 止 一 个 已 完 成 的 进 程, 或 终 止 一 个 因 出 现 某 事 件 而 使 其 无 法 进 行 下 去 的 进 程, 还 可 负 责 进 程 运 行 中 的 状 态 转 换 如 一 个 正 在 执 行 中 的 进 程 因 等 待 某 事 件 而 暂 时 不 能 继 续 执 行 时, 将 其 转 变 为 阻 塞 状 态, 当 该 进 程 所 期 待 的 事 件 出 现 时, 又 将 该 进 程 转 换 为 就 绪 状 态 等 进 程 控 制 一 般 是 由 操 作 系 统 内 核 实 现 的

54 40 操 作 系 统 进 程 的 创 建 1. 进 程 图 (Process Graph) 进 程 图 是 描 述 一 个 进 程 家 族 关 系 的 有 向 树, 如 图 2-9 所 示 图 中 的 结 点 代 表 进 程 在 进 程 P i 创 建 了 进 程 P j 之 后, 称 P j 是 P i 的 子 进 程, 可 用 一 条 由 进 程 P i 指 向 进 程 P j 的 有 向 边 来 描 述 它 们 之 间 的 父 子 关 系 创 建 父 进 程 的 进 程 称 为 祖 先 进 程, 这 样 便 形 成 了 一 棵 进 程 树, 把 树 的 根 结 点 作 为 进 程 家 族 的 祖 先 图 2-9 进 程 树 2. 引 起 创 建 进 程 的 事 件 在 多 道 程 序 环 境 中, 只 有 进 程 才 能 在 系 统 中 运 行 因 此, 为 使 程 序 能 运 行, 就 必 须 为 它 创 建 进 程 导 致 一 个 进 程 去 创 建 另 一 个 进 程 的 典 型 事 件, 可 以 有 如 下 四 类 (1) 用 户 登 录 在 分 时 系 统 中, 用 户 在 终 端 输 入 命 令 后, 如 果 是 合 法 用 户, 系 统 将 为 该 终 端 建 立 一 个 进 程, 并 把 它 插 入 到 进 程 就 绪 队 列 中 (2) 作 业 调 度 在 批 处 理 系 统 中, 当 作 业 调 度 程 序 按 一 定 的 算 法 调 度 到 某 作 业 时, 便 将 该 作 业 装 入 内 存, 为 其 分 配 必 要 的 资 源, 并 立 即 为 它 创 建 进 程, 再 插 入 到 就 绪 队 列 中 (3) 提 供 服 务 当 运 行 中 的 用 户 程 序 提 出 某 种 请 求 后, 系 统 将 专 门 创 建 一 个 进 程 来 提 供 用 户 所 需 要 的 服 务 (4) 应 用 请 求 上 述 三 种 情 况 下, 都 是 由 系 统 内 核 为 它 创 建 一 个 新 进 程, 而 第 四 类 事 件 则 是 基 于 应 用 进 程 的 需 求, 由 它 自 己 创 建 一 个 新 进 程, 以 便 使 新 进 程 以 并 发 运 行 的 方 式 完 成 特 定 的 任 务 3. 进 程 的 创 建 (Creation of Progress) 一 旦 操 作 系 统 发 现 了 要 求 创 建 新 进 程 的 事 件 后, 便 调 用 进 程 创 建 原 语 Create( ), 可 以 按 下 述 过 程 创 建 一 个 新 进 程 由 于 进 程 的 存 在 是 以 其 进 程 控 制 块 为 标 志 的, 因 此, 创 建 一 个 新 进 程 的 主 要 任 务 是 为 进 程 建 立 一 个 进 程 控 制 块 PCB, 将 调 用 者 提 供 的 有 关 信 息 填 入 该 PCB 中, 并 把 该 进 程 控 制 块 插 入 到 就 绪 队 列 中 所 以, 创 建 一 个 新 进 程 的 过 程 如 下 : 首 先 申 请 PCB 空 间, 根 据 建 立 的 进 程 名 字 查 找 PCB 表, 若 找 到 了 则 非 正 常 终 止 ( 即 已 有 同 名 进 程 ), 否 则, 申 请 分 配 一 块 PCB 空 间 ; 其 次, 为 新 进 程 分 配 资 源, 若 进 程 的 程 序 或 数 据 不 在 内 存 中,

55 第 2 章 进 程 管 理 41 则 应 将 它 们 从 外 存 调 入 分 配 的 内 存 中 ; 然 后 把 有 关 信 息 ( 如 进 程 名 字 信 号 量 和 状 态 位 等 ) 分 别 填 入 PCB 的 相 应 栏 目 中 ; 最 后 把 PCB 插 入 到 就 绪 队 列 中 进 程 的 终 止 1. 引 起 进 程 终 止 (Termination of Process) 的 事 件 1) 正 常 结 束 在 任 何 计 算 机 系 统 中, 都 应 有 一 个 用 于 表 示 进 程 已 经 运 行 完 成 的 指 示 例 如, 在 批 处 理 系 统 中, 通 常 在 程 序 的 最 后 安 排 一 条 Holt 指 令 当 程 序 运 行 到 Holt 指 令 时, 将 产 生 一 个 中 断, 去 通 知 操 作 系 统 本 进 程 已 经 完 成 在 分 时 系 统 中, 用 户 可 利 用 Logs off 去 表 示 进 程 运 行 完 毕, 此 时 同 样 可 产 生 一 个 中 断, 去 通 知 操 作 系 统 进 程 已 运 行 完 毕 2) 异 常 结 束 在 进 程 运 行 期 间, 由 于 出 现 某 些 错 误 和 故 障 而 迫 使 进 程 终 止 这 类 异 常 事 件 很 多, 常 见 的 有 :1 越 界 错 误 这 是 指 程 序 所 访 问 的 存 储 区 已 越 出 该 进 程 的 区 域 ;2 保 护 错 误 进 程 试 图 去 访 问 一 个 不 允 许 访 问 的 资 源 或 文 件, 或 者 以 不 适 当 的 方 式 进 行 访 问, 例 如, 进 程 试 图 去 写 一 个 只 读 文 件 ;3 非 法 指 令 程 序 试 图 去 执 行 一 条 不 存 在 的 指 令 出 现 该 错 误 的 原 因, 可 能 是 程 序 错 误 地 转 移 到 数 据 区, 把 数 据 当 成 了 指 令 ;4 特 权 指 令 错 误 用 户 进 程 试 图 去 执 行 一 条 只 允 许 操 作 系 统 执 行 的 指 令 ;5 运 行 超 时 进 程 的 执 行 时 间 超 过 了 指 定 的 最 大 值 ;6 等 待 超 时 进 程 等 待 某 事 件 的 时 间, 超 过 了 规 定 的 最 大 值 ; 7 算 术 运 算 错 误 进 程 试 图 去 执 行 一 个 被 禁 止 的 运 算, 例 如, 被 0 除 ;8 I/O 故 障 这 是 指 在 I/O 过 程 中 发 生 了 错 误 等 3) 外 界 干 预 外 界 干 预 并 非 指 在 本 进 程 运 行 中 出 现 了 异 常 事 件, 而 是 指 进 程 应 外 界 的 请 求 而 终 止 运 行 这 些 干 预 有 :1 操 作 员 或 操 作 系 统 干 预 由 于 某 种 原 因, 例 如, 发 生 了 死 锁, 由 操 作 员 或 操 作 系 统 终 止 该 进 程 ;2 父 进 程 请 求 由 于 父 进 程 具 有 终 止 自 己 的 任 何 子 孙 进 程 的 权 利, 因 而 当 父 进 程 提 出 请 求 时, 系 统 将 终 止 该 进 程 ;3 父 进 程 终 止 当 父 进 程 终 止 时, 操 作 系 统 也 将 它 的 所 有 子 孙 进 程 终 止 2. 进 程 的 终 止 过 程 科 学 出 版 社 若 系 统 发 生 了 上 述 要 求 中 终 止 进 程 的 某 事 件 后, 操 作 系 统 便 调 用 进 程 终 止 原 语, 按 下 述 过 程 去 终 止 指 定 的 进 程 (1) 根 据 被 终 止 进 程 的 标 识 符, 从 PCB 集 合 中 检 索 出 该 进 程 的 PCB, 从 中 读 出 该 进 程 的 状 态 (2) 若 被 终 止 进 程 正 处 于 执 行 状 态, 应 立 即 终 止 该 进 程 的 执 行, 并 置 调 度 标 志 为 真, 用 于 指 示 该 进 程 被 终 止 后 应 重 新 进 行 调 度 (3) 若 该 进 程 还 有 子 孙 进 程, 还 应 将 其 所 有 子 孙 进 程 予 以 终 止, 以 防 它 们 成 为 不 可 控 的 进 程 (4) 将 被 终 止 进 程 所 拥 有 的 全 部 资 源 归 还 给 其 父 进 程 或 者 系 统

56 42 操 作 系 统 (5) 将 被 终 止 进 程 ( 它 的 PCB) 从 所 在 队 列 ( 或 链 表 ) 中 移 出, 等 待 其 他 程 序 来 搜 集 信 息 进 程 的 阻 塞 与 唤 醒 1. 引 起 进 程 阻 塞 和 唤 醒 的 事 件 1) 请 求 系 统 服 务 当 正 在 执 行 的 进 程 请 求 系 统 提 供 服 务 时, 由 于 某 种 原 因, 系 统 不 能 立 即 满 足 该 进 程 的 要 求, 则 该 进 程 只 能 变 为 阻 塞 状 态 来 等 待 2) 启 动 某 种 操 作 当 进 程 启 动 某 种 操 作 后, 如 果 该 进 程 必 须 在 该 操 作 完 成 之 后 才 能 继 续 运 行, 则 必 须 先 使 该 进 程 阻 塞, 以 等 待 该 操 作 的 完 成 3) 新 数 据 尚 未 到 达 对 于 相 互 合 作 的 进 程, 如 果 其 中 一 个 进 程 需 要 先 获 得 另 一 ( 合 作 ) 进 程 提 供 的 数 据 才 能 继 续 运 行, 则 新 数 据 到 达 前, 进 程 只 能 阻 塞 4) 无 新 工 作 可 做 系 统 往 往 设 置 一 些 具 有 特 定 功 能 的 系 统 进 程, 每 当 这 种 进 程 完 成 任 务 后, 便 把 自 己 阻 塞 起 来 以 等 待 新 任 务 的 到 来 2. 进 程 阻 塞 过 程 正 在 执 行 的 进 程, 当 发 现 上 述 某 事 件 时, 由 于 无 法 继 续 执 行, 于 是 进 程 便 通 过 调 用 阻 塞 原 语 block 把 自 己 阻 塞 可 见, 进 程 的 阻 塞 是 进 程 自 身 的 一 种 主 动 行 为 进 入 block 过 程 后, 由 于 此 时 该 进 程 还 处 于 执 行 状 态, 所 以 应 先 立 即 停 止 执 行, 把 进 程 控 制 块 中 的 现 行 状 态 由 执 行 改 为 阻 塞, 并 将 PCB 插 入 阻 塞 队 列 如 果 系 统 中 设 置 了 因 不 同 事 件 而 阻 塞 的 多 个 阻 塞 队 列, 则 应 将 本 进 程 插 入 到 具 有 相 同 事 件 的 阻 塞 ( 等 待 ) 队 列 最 后, 转 向 调 度 程 序 进 行 重 新 调 度, 将 处 理 机 分 配 给 另 一 就 绪 进 程, 并 进 行 切 换, 即 保 留 被 阻 塞 进 程 的 处 理 机 状 态 ( 在 PCB 中 ), 再 按 新 进 程 的 PCB 中 的 处 理 机 状 态 设 置 CPU 的 环 境 3. 进 程 唤 醒 过 程 当 被 阻 塞 进 程 所 期 待 的 事 件 出 现 时, 如 I/O 完 成 或 其 所 期 待 的 数 据 已 经 到 达, 则 由 有 关 进 程 ( 比 如, 用 完 并 释 放 了 该 I/O 设 备 的 进 程 ) 调 用 唤 醒 原 语 wakeup( ), 将 等 待 该 事 件 的 进 程 唤 醒 唤 醒 原 语 执 行 的 过 程 是 : 首 先 把 被 阻 塞 的 进 程 从 等 待 该 事 件 的 阻 塞 队 列 中 移 出, 将 其 PCB 中 的 现 行 状 态 由 阻 塞 改 为 就 绪, 然 后 再 将 该 PCB 插 入 到 就 绪 队 列 中 进 程 的 挂 起 与 激 活 1. 进 程 的 挂 起 当 出 现 了 引 起 进 程 挂 起 的 事 件 时, 比 如, 用 户 进 程 请 求 将 自 己 挂 起, 或 父 进 程 请 求

57 第 2 章 进 程 管 理 43 将 自 己 的 某 个 子 进 程 挂 起, 系 统 将 利 用 挂 起 原 语 suspend( ) 将 指 定 进 程 或 处 于 阻 塞 状 态 的 进 程 挂 起 挂 起 原 语 的 执 行 过 程 是 : 首 先 检 查 被 挂 起 进 程 的 状 态, 若 处 于 活 动 就 绪 状 态, 便 将 其 改 为 静 止 就 绪 ; 对 于 活 动 阻 塞 状 态 的 进 程, 则 将 之 改 为 静 止 阻 塞 为 了 方 便 用 户 或 父 进 程 考 查 该 进 程 的 运 行 情 况 而 把 该 进 程 的 PCB 复 制 到 某 指 定 的 内 存 区 域 最 后, 若 被 挂 起 的 进 程 正 在 执 行, 则 转 向 调 度 程 序 重 新 调 度 2. 进 程 的 激 活 过 程 当 发 生 激 活 进 程 的 事 件 时, 例 如, 父 进 程 或 用 户 进 程 请 求 激 活 指 定 进 程, 若 该 进 程 驻 留 在 外 存 而 内 存 中 已 有 足 够 的 空 间 时, 则 可 将 在 外 存 上 处 于 静 止 就 绪 状 态 的 进 程 换 入 内 存 这 时, 系 统 将 利 用 激 活 原 语 active( ) 将 指 定 进 程 激 活 激 活 原 语 先 将 进 程 从 外 存 调 入 内 存, 检 查 该 进 程 的 现 行 状 态, 若 是 静 止 就 绪, 便 将 之 改 为 活 动 就 绪 ; 若 为 静 止 阻 塞 便 将 之 改 为 活 动 阻 塞 假 如 采 用 的 是 抢 占 调 度 策 略, 则 每 当 有 新 进 程 进 入 就 绪 队 列 时, 应 检 查 是 否 要 进 行 重 新 调 度, 即 由 调 度 程 序 将 被 激 活 进 程 与 当 前 进 程 进 行 优 先 级 的 比 较, 如 果 被 激 活 进 程 的 优 先 级 更 低, 就 不 必 重 新 调 度 ; 否 则, 立 即 剥 夺 当 前 进 程 的 运 行, 把 处 理 机 分 配 给 刚 被 激 活 的 进 程 2.3 进 程 同 步 在 操 作 系 统 中 引 入 进 程 后, 虽 然 提 高 了 资 源 的 利 用 率 和 系 统 的 吞 吐 量, 但 由 于 进 程 的 异 步 性, 也 会 给 系 统 造 成 混 乱, 尤 其 是 当 它 们 竞 争 临 界 资 源 时 例 如, 当 多 个 进 程 去 争 用 一 台 打 印 机 时, 有 可 能 多 个 进 程 的 结 果 交 织 在 一 起, 难 于 区 分 ; 而 当 多 个 进 程 去 争 用 共 享 变 量, 比 如 表 格 和 链 表 时, 有 可 能 致 使 数 据 处 理 出 错 进 程 同 步 的 主 要 任 务, 是 使 并 发 执 行 的 诸 进 程 之 间 能 有 效 地 共 享 资 源 和 相 互 合 作, 从 而 使 程 序 的 执 行 具 有 可 再 现 性 进 程 同 步 的 基 本 概 念 1. 两 种 形 式 的 制 约 关 系 在 多 道 程 序 环 境 下, 当 程 序 并 发 执 行 时, 由 于 资 源 共 享 和 进 程 合 作, 使 处 于 同 一 个 系 统 中 的 诸 进 程 之 间 有 如 下 两 种 形 式 的 制 约 关 系 (1) 间 接 相 互 制 约 关 系 同 处 于 一 个 系 统 中 的 进 程, 必 然 共 享 某 种 系 统 资 源, 如 共 享 CPU I/O 设 备 等 该 制 约 主 要 源 于 资 源 共 享 (2) 直 接 相 互 制 约 关 系 这 种 制 约 主 要 源 于 进 程 间 的 合 作 2. 临 界 资 源 (Critical Resouce) 科 学 出 版 社 在 第 1 章 中 我 们 曾 经 介 绍 过, 许 多 硬 件 资 源, 如 打 印 机 磁 带 机 等, 都 属 于 临 界 资 源, 诸 进 程 间 应 采 取 互 斥 方 式 共 享 该 类 资 源 生 产 者 消 费 者 (Producer-Consumer) 问 题 是 一 个 著 名 的 进 程 同 步 问 题 它 是 这 样 描 述 的 : 有 一 群 生 产 者 进 程 在 生 产 产 品, 并 将 这 些 产 品 提 供 给 消 费 者 进 程 去 消 费 为 使

58 44 操 作 系 统 生 产 者 进 程 与 消 费 者 进 程 并 发 执 行, 在 两 者 之 间 设 置 了 一 个 具 有 n 个 缓 冲 区 的 缓 冲 池, 生 产 者 进 程 将 它 所 生 产 的 产 品 放 入 一 个 缓 冲 区 中, 消 费 者 进 程 可 从 一 个 缓 冲 区 中 取 走 产 品 去 消 费 尽 管 所 有 的 生 产 者 进 程 和 消 费 者 进 程 都 是 以 异 步 方 式 运 行 的, 但 它 们 之 间 必 须 保 持 同 步, 即 不 允 许 消 费 者 进 程 到 一 个 空 缓 冲 区 去 取 产 品, 也 不 允 许 生 产 者 进 程 向 一 个 已 装 满 产 品 且 尚 未 被 取 走 的 缓 冲 区 中 投 放 产 品 我 们 可 利 用 一 个 数 组 来 表 示 上 述 具 有 n 个 (0,1,,n-1) 缓 冲 区 的 缓 冲 池 用 输 入 指 针 in 来 表 示 下 一 个 可 投 放 产 品 的 缓 冲 区, 每 当 生 产 者 进 程 生 产 并 投 放 一 个 产 品 后, 输 入 指 针 加 1; 用 一 个 输 出 指 针 out 来 指 示 下 一 个 可 从 中 获 取 产 品 的 缓 冲 区, 每 当 消 费 者 进 程 取 走 一 个 产 品 后, 输 出 指 针 加 1 由 于 这 里 的 缓 冲 池 是 循 环 缓 冲 的, 故 应 把 输 入 指 针 加 1 表 示 成 in =(in+1)mod n; 输 出 指 针 加 1 表 示 成 out =(out+1)mod n 当 (in+1)mod n=out 时 表 示 缓 冲 池 满 ; 而 in=out 则 表 示 缓 冲 池 空 此 外, 还 引 入 了 一 个 整 型 变 量 counter, 其 初 始 值 为 0 每 当 生 产 者 进 程 向 缓 冲 池 中 投 放 一 个 产 品 后, 使 counter 加 1; 反 之, 每 当 消 费 者 进 程 从 中 取 走 一 个 产 品 时, 使 counter 减 1 生 产 者 和 消 费 者 两 进 程 共 享 下 面 的 变 量 : Var n, integer; type item= ; var buffer:array[0, 1,, n-1] of item; in, out: 0, 1,, n-1; counter: 0, 1,, n; 指 针 in 和 out 初 始 化 为 1 在 生 产 者 和 消 费 者 进 程 的 描 述 中,no-op 是 一 条 空 操 作 指 令,while condition do no-op 语 句 表 示 重 复 的 测 试 条 件 (condication), 重 复 测 试 应 进 行 到 该 条 件 变 为 false( 假 ), 即 到 该 条 件 不 成 立 时 为 止 在 生 产 者 进 程 中 使 用 一 局 部 变 量 nextp, 用 于 暂 时 存 放 每 次 刚 生 产 出 来 的 产 品 ; 而 在 消 费 者 进 程 中, 则 使 用 一 个 局 部 变 量 nextc, 用 于 存 放 每 次 要 消 费 的 产 品 producer: repeat produce an item in nextp; while counter=n do no-op; buffer[in] = nextp; in = in+1 mod n; counter =counter+1; until false; consumer: repeat while counter=0 do no-op; nextc =buffer[out]; out =(out+1) mod n; counter =counter-1; consumer the item in nextc; until false;

59 第 2 章 进 程 管 理 45 虽 然 上 面 的 生 产 者 程 序 和 消 费 者 程 序, 在 分 别 看 时 都 是 正 确 的, 而 且 两 者 在 顺 序 执 行 时 其 结 果 也 会 是 正 确 的, 但 若 并 发 执 行 时, 就 会 出 现 差 错, 问 题 就 在 于 这 两 个 进 程 共 享 变 量 counter 生 产 者 对 它 做 加 1 操 作, 消 费 者 对 它 做 减 1 操 作, 这 两 个 操 作 在 用 机 器 语 言 实 现 时, 常 可 用 下 面 的 形 式 描 述 : register 1 =counter; register 2 =counter; register1 =register 1+1; register 2 =register 2-1; counter =register 1; counter =register 2; 假 设 counter 的 当 前 值 是 5 如 果 生 产 者 进 程 先 执 行 左 列 的 三 条 机 器 语 言 语 句, 然 后 消 费 者 进 程 再 执 行 右 列 的 三 条 语 句, 则 最 后 共 享 变 量 counter 的 值 仍 为 5; 反 之, 如 果 让 消 费 者 进 程 先 执 行 右 列 的 三 条 语 句, 然 后 再 让 生 产 者 进 程 执 行 左 列 的 三 条 语 句,counter 值 也 还 是 5, 但 是, 如 果 按 下 述 顺 序 执 行 : register 1 =counter; (register 1=5) register 1 =register 1+1; (register 1=6) register 2 =counter; (register 2=5) register 2 =register 2-1; (register 2=4) counter =register 1; (counter=6) counter =register 2; (counter=4) 正 确 的 counter 值 应 该 是 5, 但 现 在 是 4 读 者 可 以 自 己 试 试, 这 表 明 程 序 的 执 行 已 经 失 去 了 再 现 性 为 了 预 防 产 生 这 种 错 误, 解 决 此 问 题 的 关 键 是 应 把 变 量 counter 作 为 临 界 资 源 处 理, 即 令 生 产 者 进 程 和 消 费 者 进 程 互 斥 地 访 问 变 量 counter 3. 临 界 区 (Critical Section) 由 上 述 可 知, 不 论 是 软 件 资 源, 还 是 硬 件 资 源, 多 个 进 程 必 须 互 斥 地 对 它 们 进 行 访 问 人 们 把 在 每 个 进 程 中 访 问 临 界 资 源 的 那 段 代 码 称 为 临 界 区 显 然, 诸 进 程 若 能 互 斥 地 进 入 自 己 的 临 界 区, 便 可 实 现 诸 进 程 对 临 界 资 源 的 互 斥 访 问 为 此, 每 个 进 程 在 进 入 临 界 区 之 前, 应 先 对 欲 访 问 的 临 界 资 源 做 检 查, 若 此 时 临 界 资 源 未 被 访 问, 其 便 可 进 入 临 界 区 对 该 资 源 进 行 访 问, 并 设 置 正 在 访 问 的 标 志 ; 若 此 时 该 临 界 资 源 正 被 某 进 程 访 问, 则 本 进 程 不 能 进 入 临 界 区 为 此, 必 须 在 临 界 区 前 增 加 一 段 用 于 进 行 上 述 检 查 的 代 码, 把 这 段 代 码 称 为 进 入 区 相 应 地, 临 界 资 源 后 面 要 加 上 一 段 退 出 区 的 代 码, 用 于 恢 复 该 临 界 资 源 为 未 被 访 问 的 标 志, 这 样 可 把 一 个 访 问 临 界 资 源 的 循 环 进 程 描 述 如 下 : repeat entry section critical section; exit section remainder section; until false; 4. 同 步 机 制 应 遵 循 的 规 则 科 学 出 版 社 (1) 空 闲 让 进 当 无 进 程 处 于 临 界 区 时, 应 允 许 一 个 请 求 进 入 临 界 区 的 进 程 立 即 进

60 46 操 作 系 统 入 其 临 界 区, 以 便 有 效 地 利 用 其 临 界 资 源 (2) 忙 则 等 待 当 已 有 进 程 进 入 临 界 区 时, 其 他 试 图 进 入 临 界 区 的 进 程 必 须 等 待, 以 保 证 互 斥 访 问 临 界 资 源 (3) 有 限 等 待 对 要 求 访 问 临 界 资 源 的 进 程, 应 保 证 在 有 限 时 间 内 能 进 入 自 己 的 临 界 区, 以 免 陷 入 死 等 状 态 (4) 让 权 等 待 当 进 程 不 能 进 入 临 界 区 时, 应 立 即 释 放 处 理 机, 以 免 进 程 陷 入 忙 等 例 2-2 在 具 有 n 个 进 程 的 系 统 中, 允 许 m 个 进 程 (n m 1) 同 时 进 入 它 们 的 临 界 区, 其 信 号 量 S 值 的 变 化 范 围 是 处 于 等 待 状 态 的 进 程 数 最 多 是 个 分 析 : 本 题 考 查 信 号 量 和 进 程 数 目 之 间 的 关 系, 在 刚 开 始, 临 界 区 中 没 有 进 程, 此 时 信 号 量 值 为 m, 每 一 个 进 程 进 入 临 界 区, 信 号 量 值 减 1, 减 到 -(n-m) 为 止 解 答 :-(n-m) s m,n-m 信 号 量 机 制 1965 年, 荷 兰 学 者 Dijkstra 提 出 的 信 号 量 机 制 是 一 种 有 效 的 进 程 同 步 工 具 在 长 期 的 应 用 中, 信 号 量 机 制 又 得 到 了 很 大 的 发 展, 从 整 型 信 号 量 到 记 录 型 信 号 量, 进 而 发 展 为 信 号 量 集 机 制 1. 整 型 信 号 量 最 初 由 Dijkstra 把 整 型 信 号 量 定 义 为 一 个 整 型 量, 除 初 始 化 外, 仅 能 通 过 两 个 标 准 的 原 子 操 作 (Atomic Operation)wait(S) 和 signal(s) 来 访 问 这 两 个 操 作 一 直 被 分 别 称 为 P V 操 作 wait 和 signal 操 作 可 描 述 为 wait(s): while S 0 do no-op S =S-1; signal(s): S =S+1; 2. 记 录 型 信 号 量 在 整 型 信 号 量 机 制 中 的 wait 操 作, 只 要 是 信 号 量 S 0, 就 会 不 断 地 测 试 因 此, 该 机 制 并 未 遵 循 让 权 等 待 的 准 则, 而 是 使 进 程 处 于 忙 等 的 状 态 记 录 型 信 号 量 机 制, 则 是 一 种 不 存 在 忙 等 现 象 的 进 程 同 步 机 制 但 在 采 取 了 让 权 等 待 的 策 略 后, 又 会 出 现 多 个 进 程 等 待 访 问 同 一 临 界 资 源 的 情 况 为 此, 在 信 号 量 机 制 中, 除 了 需 要 一 个 用 于 代 表 资 源 数 目 的 整 型 变 量 value 外, 还 应 增 加 一 个 进 程 链 表 L, 用 于 链 接 上 述 的 所 有 等 待 进 程 记 录 型 信 号 量 是 由 于 它 采 用 了 记 录 型 的 数 据 结 构 而 得 名 的 它 所 包 含 的 上 述 两 个 数 据 项 可 描 述 为 type semaphore=record value:integer; L:list of process; end

61 相 应 地,wait(S) 和 signal(s) 操 作 可 描 述 为 procedure wait(s) var S: semaphore; begin S.value =S.value-1; if S.value<0 then block(s,l) end procedure signal(s) var S: semaphore; begin S.value =S.value+1; if S.value 0 then wakeup(s,l); end 第 2 章 进 程 管 理 47 在 记 录 型 信 号 量 机 制 中,S.value 的 初 值 表 示 系 统 中 某 类 资 源 的 数 目, 因 而 又 称 为 资 源 信 号 量, 对 它 的 每 次 wait 操 作, 意 味 着 进 程 请 求 一 个 单 位 的 该 类 资 源, 因 此 描 述 为 S.value =S.value-1; 当 S.value<0 时, 表 示 该 类 资 源 已 分 配 完 毕, 因 此 进 程 应 调 用 block 原 语, 进 行 自 我 阻 塞, 放 弃 处 理 机, 并 插 入 到 信 号 量 链 表 S.L 中 可 见, 该 机 制 遵 循 了 让 权 等 待 准 则 此 时 S.value 的 绝 对 值 表 示 在 该 信 号 量 链 表 中 已 阻 塞 进 程 的 数 目 对 信 号 量 的 每 次 signal 操 作, 表 示 执 行 进 程 释 放 一 个 单 位 资 源, 故 S.value =S.value+1 操 作 表 示 资 源 数 目 加 1 若 加 1 后 仍 是 S.value 0, 则 表 示 在 该 信 号 量 链 表 中, 仍 有 等 待 该 资 源 的 进 程 被 阻 塞, 故 还 应 调 用 wakeup 原 语, 将 S.L 链 表 中 的 第 一 个 等 待 进 程 唤 醒 如 果 S.value 的 初 值 为 1, 表 示 只 允 许 一 个 进 程 访 问 临 界 资 源, 此 时 的 信 号 量 转 化 为 互 斥 信 号 量 3. AND 型 信 号 量 在 两 个 进 程 中 都 要 包 含 两 个 对 Dmutex 和 Emutex 的 操 作, 即 process A: process B: wait(dmutex); wait(emutex); wait(emutex); wait(dmutex); 若 进 程 A 和 进 程 B 按 下 述 次 序 交 替 执 行 wait 操 作 : process A: wait(dmutex); 于 是 Dmutex=0 process B: wait(emutex); 于 是 Emutex=0 process A: wait(emutex); 于 是 Emutex=-1 A 阻 塞 process B: wait(dmutex); 于 是 Dmutex=-1 B 阻 塞 科 学 出 版 社 AND 同 步 机 制 的 基 本 思 想 是 : 将 进 程 在 整 个 运 行 过 程 中 需 要 的 所 有 资 源, 一 次 性 全 部 地 分 配 给 进 程, 待 进 程 使 用 完 后 再 一 起 释 放 只 要 尚 有 一 个 资 源 未 能 分 配 给 进 程, 其 他 所 有 可 能 为 之 分 配 的 资 源, 也 不 分 配 给 它 即 对 若 干 个 临 界 资 源 的 分 配, 采 取 原 子 操 作 方 式 : 要 么 全 部 分 配 到 进 程, 要 么 一 个 也 不 分 配 由 死 锁 理 论 可 知, 这 样 就 可 避 免 死

62 48 操 作 系 统 锁 情 况 的 发 生 为 此, 在 wait 操 作 中, 增 加 了 一 个 AND 条 件, 故 称 为 AND 同 步, 或 称 为 同 时 wait 操 作, 即 Swait(Simultaneous wait) 定 义 如 下 : Swait(S1, S2,, Sn) if Si 1 and and Sn 1 then for i =1 to n do Si = Si-1; endfor else place the process in the waiting queue associated with the first Si found with Si<1, and set the program count of this process to the beginning of Swait operation endif Ssignal(S1, S2,, Sn) for i =1 to n do Si=Si+1; Remove all the process waiting in the queue associated with Si into the ready queue. endfor; 4. 信 号 量 集 在 记 录 型 信 号 量 机 制 中,wait(S) 或 signal(s) 操 作 仅 能 对 信 号 量 进 行 加 1 或 减 1 操 作, 意 味 着 每 次 只 能 获 得 或 释 放 一 个 单 位 的 临 界 资 源 而 当 一 次 需 要 N 个 某 类 的 临 界 资 源 时, 便 要 进 行 N 次 wait(s) 操 作, 显 然 这 是 低 效 的 此 外, 在 有 些 情 况 下, 当 资 源 数 量 低 于 某 一 下 限 值 时, 便 不 予 以 分 配 因 而, 在 每 次 分 配 之 前, 都 必 须 测 试 该 资 源 的 数 量, 看 是 否 大 于 其 下 限 值 基 于 上 述 两 点, 可 以 对 AND 信 号 量 机 制 加 以 扩 充, 形 成 一 般 化 的 信 号 量 集 机 制 Swait 操 作 可 描 述 如 下 ( 其 中 S 为 信 号 量,d 为 需 求 值, 而 t 为 下 限 值 ): Swait(S1, t1, d1,, Sn, tn, dn) if Si t1 and and Sn tn then for i =1 to n do S i =S i -d i ; endfor else Place the executing process in the waiting queue of the first Si with Si<ti and set its program counter to the beginning of the Swait Operation. endif signal(s1, d1,, Sn, dn) for i =1 to n do S i =S i +d i ;

63 第 2 章 进 程 管 理 49 Remove all the process waiting in the queue associated with Si into the ready queue endfor; 一 般 信 号 量 集 有 以 下 几 种 特 殊 情 况 : (1)Swait(S,d,d) 此 时 在 信 号 量 集 中 只 有 一 个 信 号 量 S, 但 允 许 它 每 次 申 请 d 个 资 源, 当 现 有 资 源 数 少 于 d 时, 不 予 分 配 (2)Swait(S,1,1) 此 时 的 信 号 量 集 已 蜕 化 为 一 般 的 记 录 型 信 号 量 (S>1 时 ) 或 互 斥 信 号 量 (S=1 时 ) (3)Swait(S,1,0) 这 是 一 种 很 特 殊 且 很 有 用 的 信 号 量 操 作 当 S 1 时, 允 许 多 个 进 程 进 入 某 特 定 区 ; 当 S 变 为 0 后, 将 阻 止 任 何 进 程 进 入 特 定 区 换 言 之, 它 相 当 于 一 个 可 控 开 关 信 号 量 的 应 用 1. 利 用 信 号 量 实 现 进 程 互 斥 为 使 多 个 进 程 能 互 斥 地 访 问 某 临 界 资 源, 只 需 为 该 资 源 设 置 一 互 斥 信 号 量 mutex, 并 设 其 初 始 值 为 1, 然 后 将 各 进 程 访 问 该 资 源 的 临 界 区 置 于 wait(mutex) 和 signal(mutex) 操 作 之 间 即 可 利 用 信 号 量 实 现 进 程 互 斥 的 进 程 可 描 述 如 下 : Var mutex:semaphore =1; begin parbegin process 1: begin repeat wait(mutex); critical section signal(mutex); remainder seetion until false; end process 2: begin repeat wait(mutex); critical section signal(mutex); remainder section until false; end parend 科 学 出 版 社 在 利 用 信 号 量, 机 制 实 现 进 程 互 斥 时 应 注 意,wait(mutex) 和 signal(mutex) 必 须 成 对 出 现 缺 少 wait(mutex) 将 会 导 致 系 统 混 乱, 不 能 保 证 互 斥 访 问 ; 而 缺 少 signal(mutex)

64 50 操 作 系 统 将 会 使 临 界 资 源 永 远 不 被 释 放, 从 而 使 等 待 该 临 界 资 源 的 进 程 不 能 被 唤 醒 2. 利 用 信 号 量 实 现 前 趋 关 系 可 利 用 信 号 量 来 实 现 程 序 或 语 句 的 前 趋 关 系 如 图 2-10 所 示 设 有 两 个 并 发 执 行 的 进 程 P1 和 P2 P1 中 有 语 句 S1;P2 中 有 语 句 S2 我 们 希 望 在 S1 执 行 后 再 执 行 S2 为 实 现 这 种 前 趋 关 系, 我 们 使 P1 和 P2 共 享 一 个 公 用 信 号 量 S, 并 赋 初 值 0, 执 行 如 下 PV 操 作 : 在 进 程 P1 中, 用 S1;signal(S); 在 进 程 P2 中, 用 wait(s);s2; 我 们 可 用 信 号 量, 按 照 语 句 的 前 趋 关 系, 如 图 2-10 图 2-10 前 趋 图 所 示, 写 出 一 个 可 并 发 执 行 的 程 序, 描 述 如 下 Var a,b,c,d,e,f,g; semaphore = 0,0,0,0,0,0,0; begin parbegin begin S1; signal(a); signal(b); end; begin wait(a); S2; signal(c); signal(d); end; begin wait(b); S3; signal(e); end; begin wait(c); S4; signal(f); end; begin wait(d); S5; signal(g); end; begin wait(e); wait(f); wait(g); S6; end; parend end 例 2-3 设 有 两 个 优 先 权 相 同 的 进 程 P1 和 P2, 如 图 2-11 所 示, 令 信 号 量 S1, S2 的 初 值 均 为 0, 已 知 Z=2, 试 问,P1 和 P2 执 行 结 束 后,X,Y,Z 的 值 各 为 多 少? 图 2-11 进 程 P1 和 P2 分 析 : 本 题 考 查 进 程 并 发 执 行 的 特 点 首 先 将 图 2-11 中 代 码 按 照 如 图 2-12 所 示 方 式 编 码 (1)P1 先 于 P2 运 行 当 P1 运 行 到 15 时,P1 阻 塞, 转 去 P2 运 行 P2 运 行 到 25 时, 唤 醒 P1 结 果 :X=5;Y=12;Z=9

65 第 2 章 进 程 管 理 51 图 2-12 进 程 P1 和 P2 中 的 代 码 编 码 (2)P2 先 于 P1 运 行 当 P2 运 行 到 23 时,P2 阻 塞, 转 去 Pl 运 行 Pl 运 行 到 13 时, 唤 醒 P2,P1 运 行 到 15 时,P1 阻 塞, 转 去 运 行 P2( 从 24 开 始 ),P2 运 行 到 25 时 唤 醒 P1 结 果 :X=5;Y=12;Z=9 (3) 运 行 顺 序 :P1 运 行 到 15 阻 塞, 转 去 P2 运 行, 若 P2 运 行 到 25 后, 唤 醒 P1 且 分 给 P2 的 时 间 片 用 完, 则 又 开 始 运 行 P1,P1 运 行 完 后 某 一 时 刻 又 运 行 P2 结 果 :X=5;Y=7;Z=9 (4) 运 行 顺 序 :P2 运 行 到 23 阻 塞, 转 去 P1 运 行, 若 P1 运 行 到 13 后, 唤 醒 P2 且 分 给 P1 的 时 间 片 用 完, 则 又 开 始 运 行 P2,P2 结 束 后 再 运 行 P1 结 果 :X=5;Y=7;Z=4 (5) 运 行 顺 序 : 结 果 :X=5;Y=7;Z=9 (6) 运 行 顺 序 : 结 果 :X=5;Y=12;Z=9 可 见, 运 行 顺 序 不 同, 对 进 程 P1 和 P2 所 对 应 的 程 序 段 运 行 结 果 也 不 同 解 答 : 按 照 P1 和 P2 运 行 顺 序 的 不 同, 结 果 也 不 相 同, 有 以 下 五 种 结 果 : (1)P1 先 于 P2 运 行,X=5;Y=12;Z=9 (2)P2 先 于 P1 运 行,X=5;Y=12;Z=9 (3) 运 行 顺 序 :P1 运 行 到 15 阻 塞, 转 去 P2 运 行,X=5;Y=7;Z=9 (4) 运 行 顺 序 :P2 运 行 到 23 阻 塞, 转 去 P1 运 行,X=5;Y=7;Z=4 (5) 运 行 顺 序 : 结 果 :X=5;Y=7;Z=9 (6) 运 行 顺 序 : 结 果 :X=5;Y=12;Z=9 2.4 经 典 进 程 的 同 步 问 题 科 学 出 版 社 在 多 道 程 序 环 境 下, 进 程 同 步 问 题 十 分 重 要, 也 相 当 有 趣, 因 而 吸 引 了 不 少 学 者 对 它 进 行 研 究, 由 此 而 产 生 了 一 系 列 经 典 的 进 程 同 步 问 题, 其 中 较 有 代 表 性 的 是 生 产 者 - 消 费 者 问 题 读 者 - 写 者 问 题 哲 学 家 进 餐 问 题 等 通 过 对 这 些 问 题 的 研 究 和 学 习,

66 52 操 作 系 统 可 以 帮 助 我 们 更 好 地 理 解 进 程 同 步 概 念 及 实 现 方 法 生 产 者 - 消 费 者 问 题 前 面 我 们 已 经 对 生 产 者 - 消 费 者 问 题 (The Proceducer-Consumer Problem) 做 了 一 些 描 述, 但 未 考 虑 进 程 的 互 斥 与 同 步 问 题, 因 而 造 成 了 数 据 Counter 的 不 定 性 由 于 生 产 者 - 消 费 者 问 题 是 相 互 合 作 的 进 程 关 系 的 一 种 抽 象, 例 如, 在 输 入 时, 输 入 进 程 是 生 产 者, 计 算 进 程 是 消 费 者 ; 而 在 输 出 时, 则 计 算 进 程 是 生 产 者, 而 打 印 进 程 是 消 费 者, 因 此, 该 问 题 有 很 大 的 代 表 性 及 实 用 价 值 1. 利 用 记 录 型 信 号 量 解 决 生 产 者 - 消 费 者 问 题 假 定 在 生 产 者 和 消 费 者 之 间 的 公 用 缓 冲 池 中, 具 有 n 个 缓 冲 区, 这 时 可 利 用 互 斥 信 号 量 mutex 实 现 诸 进 程 对 缓 冲 池 的 互 斥 使 用 ; 利 用 信 号 量 empty 和 full 分 别 表 示 缓 冲 池 中 空 缓 冲 区 和 满 缓 冲 区 的 数 量 又 假 定 这 些 生 产 者 和 消 费 者 相 互 等 效, 只 要 缓 冲 池 未 满, 生 产 者 便 可 将 消 息 送 入 缓 冲 池 ; 只 要 缓 冲 池 未 空, 消 费 者 便 可 从 缓 冲 池 中 取 走 一 个 消 息 对 生 产 者 - 消 费 者 问 题 可 描 述 如 下 : Var mutex, empty, full:semaphore =1,n,0; buffer:array[0,, n-1] of item; in, out: integer =0, 0; begin parbegin proceducer:begin repeat producer an item nextp; wait(empty); wait(mutex); buffer(in) =nextp; in =(in+1) mod n; signal(mutex); signal(full); until false; end consumer:begin repeat wait(full); wait(mutex); nextc =buffer(out); out =(out+1) mod n; signal(mutex); signal(empty);

67 第 2 章 进 程 管 理 53 end consumer the item in nextc; until false; end parend 在 生 产 者 - 消 费 者 问 题 中 应 注 意 : 首 先, 在 每 个 程 序 中 用 于 实 现 互 斥 的 wait(mutex) 和 signal(mutex) 必 须 成 对 地 出 现 ; 其 次, 对 资 源 信 号 量 empty 和 full 的 wait 和 signal 操 作, 同 样 需 要 成 对 地 出 现, 但 它 们 分 别 处 于 不 同 的 程 序 中 例 如,wait(empty) 在 计 算 进 程 中, 而 signal(empty) 在 打 印 进 程 中, 计 算 进 程 若 因 执 行 wait(empty) 而 阻 塞, 则 以 后 将 由 打 印 进 程 将 它 唤 醒 ; 最 后, 在 每 个 程 序 中 的 多 个 wait 操 作 顺 序 不 能 颠 倒 应 先 执 行 对 资 源 信 号 量 的 wait 操 作, 然 后 再 执 行 对 互 斥 信 号 量 的 wait 操 作, 否 则 可 能 引 起 进 程 死 锁 2. 利 用 AND 信 号 量 解 决 生 产 者 - 消 费 者 问 题 对 生 产 者 - 消 费 者 问 题, 也 可 以 利 用 AND 信 号 量 来 解 决, 即 用 Swait(full,mutex) 代 替 wait(full) 和 wait(mutex), 以 及 用 Ssignal(mutex,empty) 代 替 signal(mutex) 和 signal(empty) 利 用 AND 信 号 量 来 解 决 生 产 者 - 消 费 者 问 题 的 算 法 描 述 如 下 : var mutex, empty, full:semaphore =1, n, 0; buffer:array[0,, n-1] of item; in out:integer =0, 0; begin parbegin producer:begin repeat produce an item in nextp; Swait(empty, mutex); buffer(in) =nextp; in =(in+1)mod n; Ssignal(mutex, full); until false; end consumer:begin repeat Swait(full, mutex); nextc =buffer(out); out =(out+1) mod n; Ssignal(mutex, empty); consumer the item in nextc; until false; 科 学 出 版 社

68 54 操 作 系 统 end parend end 哲 学 家 进 餐 问 题 由 Dijkstra 提 出 并 解 决 的 哲 学 家 进 餐 问 题 是 典 型 的 同 步 问 题 该 问 题 描 述 的 是 五 个 哲 学 家 共 用 一 张 餐 桌, 分 别 坐 在 周 围 的 五 张 椅 子 上, 在 圆 桌 上 有 五 个 碗 和 五 只 筷 子, 他 们 的 生 活 方 式 是 交 替 地 进 行 思 考 和 进 餐 平 时, 一 个 哲 学 家 进 行 思 考, 饥 饿 的 时 候 便 试 图 取 用 其 左 右 最 靠 近 他 的 筷 子, 只 有 在 他 拿 到 两 只 筷 子 时 才 能 进 餐 进 餐 结 束, 放 下 筷 子 继 续 思 考 1. 利 用 记 录 型 信 号 量 解 决 哲 学 家 进 餐 问 题 经 上 述 分 析 可 知, 放 在 桌 子 上 的 筷 子 是 临 界 资 源, 在 一 段 时 间 内 只 允 许 一 位 哲 学 家 使 用 为 了 实 现 对 筷 子 的 互 斥 使 用, 可 以 用 一 个 信 号 量 表 示 一 只 筷 子, 由 这 五 个 信 号 量 构 成 信 号 量 数 组 其 描 述 如 下 : Var chopstick: array[0,, 4] of semaphore; 所 有 信 号 量 均 被 初 始 化 为 1, 第 i 位 哲 学 家 的 活 动 可 描 述 为 repeat wait(chopstick[i]); wait(chopstick[(i+1) mod 5]); eat; signal(chopstick[i]); signal(chopstick[(i+1) mod 5]); think; until false; 在 以 上 描 述 中, 当 哲 学 家 饥 饿 时, 总 是 先 去 拿 他 左 边 的 筷 子, 即 执 行 wait(chopstick [i]); 成 功 后 再 去 拿 他 右 边 的 筷 子, 即 执 行 wait(chopstick[(i+1)mod 5]); 又 成 功 后 便 可 进 餐 进 餐 后, 又 先 放 下 他 左 边 的 筷 子, 然 后 放 下 右 边 的 筷 子 虽 然, 上 述 解 决 办 法 可 保 证 不 会 有 两 个 相 邻 的 哲 学 家 同 时 进 餐, 但 有 可 能 引 起 死 锁 假 如 五 位 哲 学 家 同 时 饥 饿 而 各 自 拿 起 左 边 的 筷 子 时, 就 会 使 五 个 信 号 量 chopstick 均 为 0; 而 当 他 们 再 试 图 拿 右 边 的 筷 子 时, 都 会 因 无 筷 子 可 拿 而 无 限 期 等 待 对 于 这 样 的 死 锁 问 题, 可 采 取 如 下 几 种 解 决 方 法 : (1) 至 多 只 允 许 有 四 位 哲 学 家 同 时 去 拿 左 边 的 筷 子, 最 终 能 保 证 至 少 有 一 位 哲 学 家 能 够 进 餐, 并 在 用 毕 时 能 释 放 出 他 用 过 的 两 只 筷 子, 从 而 使 更 多 的 哲 学 家 能 够 进 餐 (2) 仅 当 哲 学 家 的 左 右 两 只 筷 子 均 可 用 时, 才 允 许 他 拿 起 筷 子 进 餐

69 第 2 章 进 程 管 理 55 (3) 规 定 奇 数 号 哲 学 家 先 拿 他 左 边 的 筷 子, 然 后 再 去 拿 右 边 的 筷 子 ; 而 偶 数 号 哲 学 家 则 相 反 按 此 规 定, 将 是 1 2 号 哲 学 家 竞 争 1 号 筷 子 ;3 4 号 哲 学 家 竞 争 3 号 筷 子 即 五 位 哲 学 家 都 先 竞 争 奇 数 号 筷 子, 获 得 后, 再 去 竞 争 偶 数 号 筷 子, 最 后 总 会 有 一 位 哲 学 家 能 获 得 两 只 筷 子 而 进 餐 2. 利 用 AND 信 号 量 机 制 解 决 哲 学 家 进 餐 问 题 在 哲 学 家 进 餐 问 题 中, 要 求 每 个 哲 学 家 先 获 得 两 个 临 界 资 源 ( 筷 子 ) 后 方 能 进 餐, 这 在 本 质 上 就 是 前 面 所 介 绍 的 AND 同 步 问 题, 用 AND 信 号 量 机 制 可 获 得 最 简 捷 的 解 法 Var chopsiick array[0,, 4] of semaphore =(1,1,1,1,1); processi repeat think; Sswait(chopstick[(i+1) mod 5], chopstick[i]); eat; Ssignat(chopstick[(i+1) mod 5], chopstick[i]); until false; 读 者 - 写 者 问 题 一 个 数 据 文 件 或 记 录, 可 被 多 个 进 程 共 享, 我 们 把 只 要 求 读 文 件 的 进 程 称 为 Reader 进 程, 其 他 进 程 则 称 为 Writer 进 程 允 许 多 个 进 程 同 时 读 一 个 共 享 对 象, 因 为 读 操 作 不 会 使 数 据 文 件 混 乱 但 不 允 许 一 个 Writer 进 程 和 其 他 Reader 进 程 或 Writer 进 程 同 时 访 问 共 享 对 象, 因 为 这 种 操 作 会 引 起 混 乱 所 谓 读 者 - 写 者 问 题 是 指 保 证 一 个 Writer 进 程 必 须 与 其 他 进 程 互 斥 地 访 问 共 享 对 象 的 同 步 问 题 1. 利 用 记 录 型 信 号 量 解 决 读 者 - 写 者 问 题 为 实 现 Reader 与 Writer 进 程 间 在 读 或 写 时 的 互 斥 而 设 置 了 一 个 互 斥 信 号 量 wmutex 另 外, 再 设 置 一 个 整 型 变 量 Readcount 表 示 正 在 读 的 进 程 数 目 由 于 只 要 有 一 个 Reader 进 程 在 读, 便 不 允 许 Writer 进 程 去 写 因 此, 仅 当 Readcount=0, 表 示 尚 无 Reader 进 程 在 读 时,Reader 进 程 才 需 要 执 行 wait(wmutex) 操 作 若 wait(wmutex) 操 作 成 功, Reader 进 程 便 可 去 读, 相 应 地, 做 Readcount+1 操 作 同 理, 仅 当 Reader 进 程 在 执 行 了 Readcount 减 1 操 作 后 其 值 为 0 时, 才 需 执 行 signal(wmutex) 操 作, 以 便 让 Writer 进 程 写 又 因 为 Readcount 是 一 个 可 被 多 个 Reader 进 程 访 问 的 临 界 资 源, 因 此, 应 该 为 它 设 置 一 个 互 斥 信 号 量 rmutex 读 者 - 写 者 问 题 可 描 述 如 下 : Var rmutex, wmutex:semaphore =1,1; Readcount:integer =0; begin parbegin 科 学 出 版 社

70 56 操 作 系 统 Reader:begin repeat wait(rmutex); if readcount=0 then wait(wmutex); Readcount =Readcount+1; signal(rmutex); perform read operation; wait(rmutex); readcount =readcount-1; if readcount=0 then signal(wmutex); signal(rmutex); until false; end writer:begin repeat wait(wmutex); perform write operation; signal(wmutex); until false; end parend end 2. 利 用 信 号 量 集 机 制 解 决 读 者 - 写 者 问 题 这 里 的 读 者 - 写 者 问 题, 与 前 面 的 稍 有 不 同, 它 增 加 了 一 个 限 制, 即 最 多 只 允 许 RN 个 读 者 同 时 读 为 此, 又 引 入 了 一 个 信 号 量 L, 并 赋 予 其 初 值 为 RN, 通 过 执 行 wait(l, 1, 1) 操 作, 来 控 制 读 者 的 数 目, 每 当 有 一 个 读 者 进 入 时, 就 要 先 执 行 wait(l, 1, 1) 操 作, 使 L 的 值 减 1 当 有 RN 个 读 者 进 入 读 后,L 便 为 0, 第 RN+1 个 读 者 要 进 入 读 时, 必 然 会 因 wait(l, 1, 1) 操 作 失 败 而 阻 塞 对 利 用 信 号 量 集 来 解 决 读 者 - 写 者 问 题 描 述 如 下 : Var RN integer; L, mx:semaphore =RN,1; begin parbegin reader:begin repeat Swait(L,1,1); Swait(mx,1,0); perform read operation;

71 Ssignal(L,1); until false; end writer:begin repeat Swait(mx,1,1; L,RN,0); perform write operation; Ssignal(mx,1); until false; end parend end 第 2 章 进 程 管 理 57 其 中,Swait(mx, 1, 0) 语 句 起 着 开 关 的 作 用 只 要 writer 进 程 进 入 写, 其 mx=1, 则 reader 进 程 就 都 可 以 进 入 读 但 只 要 一 个 writer 进 程 进 入 写 时, 其 mx=0, 则 任 何 reader 进 程 都 无 法 进 入 读 Swait(mx, 1, 1, L, RN, 0) 语 句 表 示 仅 当 既 无 writer 进 程 在 写 (mx=1), 又 无 reader 进 程 在 读 (L=RN) 时,writer 进 程 才 能 进 入 临 界 区 2.5 管 程 机 制 虽 然 信 号 量 机 制 是 一 种 方 便 而 又 有 效 的 进 程 同 步 机 制, 但 每 个 要 访 问 的 临 界 资 源 的 进 程 都 必 须 具 备 同 步 操 作 wait(s) 和 signal(s) 这 样 使 大 量 的 同 步 操 作 分 散 在 各 个 进 程 中 不 仅 给 系 统 的 管 理 带 来 麻 烦, 而 且 还 会 因 为 同 步 操 作 的 使 用 不 当 而 导 致 系 统 死 锁 在 解 决 上 述 问 题 的 过 程 中, 产 生 了 一 种 新 的 进 程 同 步 工 具 管 程 管 程 的 基 本 概 念 1. 管 程 的 定 义 系 统 中 的 各 种 软 硬 件 资 源, 均 可 以 用 数 据 结 构 进 行 抽 象 的 描 述, 即 用 少 量 信 息 和 对 该 资 源 执 行 的 操 作 来 表 示 该 资 源, 而 忽 略 它 们 的 内 部 结 构 和 实 现 细 节 我 们 把 这 样 一 组 相 关 的 数 据 结 构 和 过 程 一 并 称 为 管 程 Hansan 为 管 程 所 下 的 定 义 是 一 个 管 程 定 义 了 一 个 数 据 结 构 和 能 为 并 发 进 程 所 执 行 ( 在 该 数 据 结 构 上 ) 的 一 组 操 作, 这 组 操 作 能 同 步 进 程 和 改 变 管 程 中 的 数 据 由 定 义 可 知, 管 程 由 三 部 分 组 成 :1 局 部 于 管 程 的 共 享 变 量 说 明 ;2 对 该 数 据 结 构 进 行 操 作 的 一 组 过 程 ;3 对 局 部 于 管 程 的 数 据 设 置 初 始 值 的 语 句 此 外, 还 须 为 管 程 赋 予 一 个 名 字 图 2-13 是 一 个 管 程 示 意 图 管 程 的 语 法 如 下 : type monitor-name=monitor variable declarations procedure entry P1( ); begin end; 科 学 出 版 社

72 58 操 作 系 统 procedure entry P2( ); begin end; procedure entry Pn( ); begin end; begin initialization code; end 图 2-13 管 程 的 示 意 图 顺 便 指 出, 局 部 于 管 程 的 数 据 结 构, 仅 能 被 局 部 于 管 程 的 过 程 访 问, 任 何 管 程 外 的 过 程 都 不 能 访 问 ; 反 之, 局 部 与 管 程 的 过 程 也 仅 能 访 问 管 程 内 的 数 据 结 构 由 此 可 见, 管 程 相 当 于 围 墙, 它 把 共 享 变 量 和 对 它 进 行 操 作 的 若 干 过 程 围 了 起 来, 所 有 进 程 要 访 问 临 界 资 源 时, 都 必 须 经 过 管 程 才 能 进 入, 而 管 程 每 次 只 允 许 一 个 进 程 进 入 管 程, 从 而 实 现 了 进 程 互 斥 2. 条 件 变 量 在 利 用 管 程 实 现 进 程 同 步 时, 必 须 设 置 两 个 同 步 操 作 原 语 wait 和 signal 当 某 进 程 通 过 管 程 请 求 获 得 临 界 资 源 而 未 能 满 足 时, 管 程 便 调 用 wait 原 语 使 进 程 等 待, 并 将 它 排 在 等 待 队 列 上 仅 当 另 一 进 程 访 问 完 成 并 释 放 该 资 源 后, 管 程 才 调 用 signal 原 语, 唤 醒 等 待 队 列 中 的 队 首 进 程 通 常, 等 待 的 原 因 有 很 多 种, 为 了 区 别 它 们, 又 引 入 了 条 件 变 量 condition 管 程 中 对 每 个 条 件 变 量, 都 须 予 以 说 明, 其 形 式 为 Var x,y:condition 该 变 量 应 置 于 wait 和 signal 之 前, 即 可 表 示 为 X.wait 和 X.signal 例 如, 由 于 共 享 数 据 被 占 用 而 使 调 用 进 程 等 待, 该 条 件 变 量 的 形 式 为 nonbusy:condition 此 时,wait 原 语 应 改 为 nonbusy.wait, 相 应 地, signal 应 改 为 nonbusy.signal 应 当 指 出,X.signal 操 作 的 作 用, 是 重 新 启 动 一 个 被 阻 塞 的 进 程, 但 如 果 没 有 被 阻 塞 的 进 程, 则 X.signal 操 作 不 产 生 任 何 后 果 这 与 信 号 量 机 制 中 的 signal 操 作 不 同 因 为, 后 者 总 是 要 执 行 s =s+1 操 作, 因 而 总 会 改 变 信 号 量 的 状 态

73 第 2 章 进 程 管 理 59 如 果 有 进 程 Q 处 于 阻 塞 状 态, 当 进 程 P 执 行 X.signal 操 作 后, 可 采 用 以 下 两 种 方 式 之 一 进 行 处 理, 来 决 定 进 程 的 执 行 或 等 待 (1)P 等 待, 直 至 Q 离 开 管 程 或 等 待 另 一 条 件 (2)Q 等 待, 直 至 P 离 开 管 程 或 等 待 另 一 条 件 利 用 管 程 解 决 生 产 者 - 消 费 者 问 题 在 利 用 管 程 方 法 来 解 决 生 产 者 - 消 费 者 问 题 时, 首 先 为 它 们 建 立 一 个 管 程, 并 命 名 为 Proclucer-Consumer, 或 简 称 为 PC 其 中 包 括 两 个 过 程 (1)put(item) 过 程 生 产 者 利 用 该 过 程 将 自 己 生 产 的 产 品 投 放 到 缓 冲 池 中, 并 用 整 型 变 量 count 来 表 示 在 缓 冲 池 中 已 有 的 产 品 数 目, 当 count n 时, 表 示 缓 冲 池 已 满, 生 产 者 须 等 待 (2)get(item) 过 程 消 费 者 利 用 该 过 程 从 缓 冲 池 中 取 出 一 个 产 品, 当 count 0 时, 表 示 缓 冲 池 中 已 无 可 取 用 的 产 品, 消 费 者 须 等 待 PC 管 程 可 描 述 如 下 : type producer-consumer=monitor Var in,out,count:integer; buffer:array[0,,n-1] of item; notfull, notempty:condition; procedure entry put(item) begin if count n then notfull.wait; buffer(in) =nextp; in =(in+1) mod n; count =count+1; if notempty.queue then notempty.signal; end procedure entry get(item) begin if count 0 then notempty.wait; nextc =buffer(out); out =(out+1) mod n; count =count-1; if notfull.quene then notfull.signal; end begin in = out = 0; count = 0 end 在 利 用 管 程 解 决 生 产 者 - 消 费 者 问 题 时, 其 中 的 生 产 者 和 消 费 者 可 描 述 为 producer:begin 科 学 出 版 社

74 60 操 作 系 统 repeat produce an item in nextp; PC.put(item); until false; end consumer:begin repeat PC.get(item); consume the item in nextc; until false; end 2.6 进 程 通 信 进 程 通 信, 是 指 进 程 之 间 的 信 息 交 换, 其 所 交 换 的 信 息 量, 少 者 是 一 个 状 态 或 数 值, 多 者 则 是 成 千 上 万 个 字 节 进 程 之 间 的 同 步 和 互 斥 因 为 所 交 换 的 信 息 量 少 而 被 归 结 为 低 级 通 信, 而 本 节 所 要 介 绍 的 高 级 进 程 通 信, 是 指 用 户 可 直 接 利 用 操 作 系 统 所 提 供 的 一 组 通 信 命 令, 高 效 地 传 送 大 量 数 据 的 一 种 通 信 方 式 操 作 系 统 隐 藏 了 进 程 通 信 的 实 现 细 节, 这 样 就 大 大 减 少 了 通 信 程 序 编 制 上 的 复 杂 性 进 程 通 信 的 类 型 随 着 操 作 系 统 的 发 展, 用 于 进 程 之 间 通 信 的 机 制 也 在 发 展, 由 早 期 的 低 级 进 程 通 信 机 制 发 展 为 能 传 送 大 量 数 据 的 高 级 进 程 通 信 工 具 机 制 高 级 通 信 机 制 可 归 结 为 三 大 类 : 共 享 存 储 器 系 统 消 息 传 递 系 统 和 管 道 通 信 系 统 1. 共 享 存 储 器 系 统 (Shared-Memory System) 在 共 享 存 储 器 系 统 中, 相 互 通 信 的 进 程 共 享 某 些 数 据 结 构 或 共 享 存 储 区, 进 程 之 间 能 够 通 过 这 些 空 间 进 行 通 信 因 此, 又 可 把 它 们 分 成 以 下 两 种 类 型 (1) 基 于 共 享 数 据 结 构 的 通 信 方 式 在 这 种 通 信 方 式 中, 要 求 诸 进 程 共 用 某 些 数 据 结 构, 借 以 实 现 诸 进 程 间 的 信 息 交 换 这 里, 公 用 数 据 结 构 的 设 置 及 对 进 程 间 同 步 的 处 理, 都 是 程 序 员 的 职 责, 这 无 疑 增 加 了 程 序 员 的 负 担, 而 操 作 系 统 只 需 提 供 共 享 存 储 器 因 此, 这 种 方 式 是 低 效 的, 只 适 合 传 递 少 量 的 数 据 (2) 基 于 共 享 存 储 区 的 通 信 方 式 为 了 传 输 大 量 数 据, 在 存 储 器 中 划 出 一 块 共 享 存 储 区, 诸 进 程 可 通 过 对 共 享 存 储 区 中 数 据 的 读 或 写 来 实 现 通 信 2. 消 息 传 递 系 统 (Message Passing System) 不 论 是 单 机 系 统 多 机 系 统, 还 是 计 算 机 网 络, 消 息 传 递 机 制 都 是 使 用 最 广 泛 的 一 种 进 程 间 通 信 的 机 制 在 消 息 传 递 系 统 中, 进 程 间 的 数 据 交 换, 是 以 格 式 化 的 消 息 (Message) 为 单 位 的 ; 在 计 算 机 网 络 中, 又 把 message 称 为 报 文 程 序 员 直 接 利 用 系 统 提 供 的 一 组 通 信 命 令 ( 原 语 ) 进 行 通 信 操 作 系 统 隐 藏 了 通 信 的 实 现 细 节, 大 大 简 化 了

75 第 2 章 进 程 管 理 61 通 信 程 序 编 制 的 复 杂 性, 而 获 得 广 泛 的 应 用 消 息 传 递 系 统 的 通 信 方 式 属 于 高 级 通 信 方 式 又 因 其 实 现 方 式 的 不 同 而 进 一 步 分 成 直 接 通 信 方 式 和 间 接 通 信 方 式 两 种 3. 管 道 (Pipe) 通 信 所 谓 管 道, 是 指 用 于 连 接 一 个 读 进 程 和 一 个 写 进 程 以 实 现 它 们 之 间 通 信 的 一 个 共 享 文 件, 又 名 pipe 文 件 向 管 道 ( 共 享 文 件 ) 提 供 输 入 的 发 送 进 程 ( 即 写 进 程 ), 以 字 符 流 形 式 将 大 量 的 数 据 送 入 管 道 ; 而 接 收 管 道 输 出 的 接 收 进 程 ( 即 读 进 程 ), 则 从 管 道 中 接 收 ( 读 ) 数 据 由 于 发 送 进 程 和 接 收 进 程 是 利 用 管 道 进 行 通 信 的, 故 又 称 为 管 道 通 信 这 种 方 式 首 创 于 UNIX 系 统, 由 于 它 能 有 效 地 传 送 大 量 数 据, 因 而 又 被 引 入 到 其 他 许 多 操 作 系 统 中 为 了 协 调 双 方 的 通 信, 管 道 机 制 必 须 提 供 以 下 三 方 面 的 协 调 能 力 :1 互 斥, 即 当 一 个 进 程 正 在 对 pipe 执 行 读 / 写 操 作 时, 其 他 ( 另 一 ) 进 程 必 须 等 待 2 同 步, 指 当 写 ( 输 入 ) 进 程 把 一 定 数 量 ( 如 4 KB) 的 数 据 写 入 pipe, 便 去 睡 眠 等 待, 直 到 读 ( 输 出 ) 进 程 取 走 数 据 后, 再 把 它 唤 醒 当 读 进 程 读 一 空 pipe 时, 也 应 睡 眠 等 待, 直 至 写 进 程 将 数 据 写 入 管 道 后, 才 将 之 唤 醒 3 确 定 对 方 是 否 存 在, 只 有 确 定 了 对 方 已 存 在 时, 才 能 进 行 通 信 消 息 传 递 通 信 的 实 现 方 法 在 进 程 之 间 通 信 时, 源 进 程 可 以 直 接 或 间 接 地 将 消 息 传 送 给 目 标 进 程, 由 此 可 将 进 程 通 信 分 为 直 接 和 间 接 两 种 通 信 方 式 1. 直 接 通 信 方 式 这 是 指 发 送 进 程 利 用 操 作 系 统 所 提 供 的 发 送 命 令, 直 接 把 消 息 发 送 给 目 标 进 程 此 时, 要 求 发 送 进 程 和 接 收 进 程 都 以 显 式 方 式 提 供 对 方 的 标 识 符 通 常, 系 统 提 供 下 述 两 条 通 信 命 令 ( 原 语 ) Send(Receiver, message): 发 送 一 个 消 息 给 接 收 进 程 Receive(Sender, message): 接 收 Sender 发 来 的 消 息 例 如, 原 语 Send(P2, m1) 表 示 将 消 息 m1 发 送 给 接 收 进 程 P2; 而 原 语 Receive(P1, m1) 则 表 示 接 收 由 P1 发 来 的 消 息 m1 在 某 些 情 况 下, 接 收 进 程 可 与 多 个 发 送 进 程 进 行 通 信, 因 此 它 不 可 能 事 先 指 定 发 送 进 程 例 如, 用 于 提 供 打 印 服 务 的 进 程, 它 可 以 接 收 来 自 任 何 一 个 进 程 的 打 印 请 求 消 息 对 于 这 样 的 应 用, 在 接 收 进 程 接 收 消 息 时, 原 语 中 的 源 进 程 参 数 是 完 成 通 信 后 的 返 回 值, 接 收 原 语 可 表 示 为 Receive(id,message); 科 学 出 版 社 我 们 还 可 以 利 用 直 接 通 信 原 语, 来 解 决 生 产 者 - 消 费 者 问 题 当 生 产 者 生 产 出 一 个 产 品 ( 消 息 ) 后, 便 用 Send 原 语 将 消 息 发 送 给 消 费 者 进 程 ; 而 消 费 者 进 程 则 利 用 Receive 原 语 来 得 到 一 个 消 息 如 果 消 息 尚 未 生 产 出 来, 消 费 者 必 须 等 待, 直 至 生 产 者 进 程 将 消 息 发 送 过 来 生 产 者 - 消 费 者 的 通 信 过 程 可 以 分 别 描 述 如 下 :

76 62 操 作 系 统 repeat produce an item in nextp; send(consumer, nextp); until false; repeat receive(producer, nextc); consume the item in nextc; until false; 2. 间 接 通 信 方 式 (1) 信 箱 的 创 建 和 撤 销 进 程 可 利 用 信 箱 创 建 原 语 来 建 立 一 个 新 信 箱 创 建 者 进 程 应 给 出 信 箱 名 字 信 箱 属 性 ( 公 用 私 用 或 共 享 ); 对 于 共 享 信 箱, 还 应 给 出 共 享 者 的 名 字 当 进 程 不 再 需 要 读 信 箱 时, 可 用 信 箱 撤 销 原 语 将 之 撤 销 (2) 消 息 的 发 送 和 接 收 当 进 程 之 间 要 利 用 信 箱 进 行 通 信 时, 必 须 使 用 共 享 信 箱, 并 利 用 系 统 提 供 的 下 述 通 信 原 语 进 行 通 信 Send(mailbox, message): 将 一 个 消 息 发 送 到 指 定 信 箱 ; Receive(mailbox, message): 从 指 定 信 箱 中 接 收 一 个 消 息 ; 信 箱 可 由 操 作 系 统 创 建, 也 可 由 用 户 进 程 创 建, 创 建 者 是 信 箱 的 拥 有 者 据 此, 可 把 信 箱 分 为 以 下 三 类 (1) 私 用 信 箱 用 户 进 程 可 为 自 己 建 立 一 个 新 信 箱, 并 作 为 该 进 程 的 一 部 分 信 箱 的 拥 有 者 有 权 从 信 箱 中 读 取 消 息, 其 他 用 户 则 只 能 将 自 己 构 成 的 消 息 发 送 到 该 信 箱 中 这 种 私 用 信 箱 可 采 用 单 向 通 信 链 路 的 信 箱 来 实 现 当 拥 有 该 信 箱 的 进 程 结 束 时, 信 箱 也 随 之 消 失 (2) 公 用 信 箱 它 由 操 作 系 统 创 建, 并 提 供 给 系 统 中 的 所 有 核 准 进 程 使 用 核 准 进 程 既 可 把 消 息 发 送 到 该 信 箱 中, 也 可 从 信 箱 中 读 取 发 送 给 自 己 的 消 息 显 然, 公 用 信 箱 应 采 用 双 向 通 信 链 路 的 信 箱 来 实 现 通 常, 公 用 信 箱 在 系 统 运 行 期 间 始 终 存 在 (3) 共 享 信 箱 它 由 某 进 程 创 建, 在 创 建 时 或 创 建 后, 指 明 它 是 可 共 享 的, 同 时 需 指 出 共 享 进 程 ( 用 户 ) 的 名 字 信 箱 的 拥 有 者 和 共 享 者, 都 有 权 从 信 箱 中 取 走 发 送 给 自 己 的 消 息 在 利 用 信 箱 通 信 时, 在 发 送 进 程 和 接 收 进 程 之 间, 存 在 以 下 四 种 关 系 (1) 一 对 一 关 系 这 时 可 为 发 送 进 程 和 接 收 进 程 建 立 一 条 两 者 专 用 的 通 信 链 路, 使 两 者 之 间 的 交 互 不 受 其 他 进 程 的 干 扰 (2) 多 对 一 关 系 允 许 提 供 服 务 的 进 程 与 多 个 用 户 进 程 之 间 进 行 交 互, 也 称 为 客 户 / 服 务 器 交 互 (Client/Server Interaction) (3) 一 对 多 关 系 允 许 一 个 发 送 进 程 与 多 个 接 收 进 程 进 行 交 互, 使 发 送 进 程 可 用 广 播 方 式, 向 接 收 者 ( 多 个 ) 发 送 消 息 (4) 多 对 多 关 系 允 许 建 立 一 个 公 用 信 箱, 让 多 个 进 程 都 能 向 信 箱 中 投 递 消 息 ; 也

77 可 从 信 箱 中 取 走 属 于 自 己 的 消 息 消 息 传 递 系 统 实 现 中 的 若 干 问 题 第 2 章 进 程 管 理 63 在 单 机 和 计 算 机 网 络 环 境 下, 高 级 进 程 通 信 广 泛 采 用 消 息 传 递 系 统 本 节 将 对 这 种 通 信 中 的 主 要 问 题, 做 简 要 的 阐 述 1. 通 信 链 路 (Communication Link) 为 使 发 送 进 程 和 接 收 进 程 之 间 进 行 通 信, 必 须 在 两 者 之 间 建 立 一 条 通 信 链 路 存 在 两 种 方 式 建 立 通 信 链 路 (1) 由 发 送 进 程 在 通 信 之 前, 用 显 式 的 建 立 连 接 命 令 ( 原 语 ) 请 求 系 统 为 之 建 立 一 条 通 信 链 路 ; 在 链 路 使 用 完 后, 也 用 显 式 方 式 拆 除 链 路 这 种 方 式 主 要 用 于 计 算 机 网 络 中 (2) 发 送 进 程 无 须 明 确 提 出 建 立 链 路 的 请 求, 只 需 利 用 系 统 提 供 的 发 送 命 令 ( 原 语 ), 系 统 会 自 动 地 为 之 建 立 一 条 链 路 这 种 方 式 主 要 用 于 单 机 系 统 中 根 据 通 信 链 路 的 连 接 方 法, 又 可 把 通 信 链 路 分 为 两 类 :1 点 - 点 连 接 通 信 链 路, 这 时 的 一 条 链 路 只 连 接 两 个 结 点 ( 进 程 );2 多 点 连 接 链 路, 用 一 条 链 路 连 接 多 个 (n>2) 结 点 ( 进 程 ) 而 根 据 通 信 方 式 的 不 同, 又 可 把 链 路 分 成 两 种 :1 单 向 通 信 链 路, 只 允 许 发 送 进 程 向 接 收 进 程 发 送 消 息 ;2 双 向 链 路, 既 允 许 由 进 程 A 向 进 程 B 发 送 消 息, 又 允 许 进 程 B 同 时 向 进 程 A 发 送 消 息 2. 消 息 的 格 式 在 某 些 操 作 系 统 中, 消 息 是 采 用 比 较 短 的 定 长 消 息 格 式, 这 减 少 了 对 消 息 的 处 理 和 存 储 开 销 这 种 方 式 可 用 于 办 公 自 动 化 系 统 中, 为 用 户 提 供 快 速 的 便 笺 式 通 信, 但 这 对 于 要 发 送 较 长 消 息 的 用 户 是 不 方 便 的 在 有 的 操 作 系 统 中, 采 用 另 一 种 变 长 的 消 息 格 式, 即 进 程 所 发 送 消 息 的 长 度 是 可 变 的 系 统 在 处 理 和 存 储 变 长 消 息 时, 需 付 出 更 多 的 开 销, 但 方 便 了 用 户 这 两 种 消 息 格 式 各 有 其 优 缺 点, 故 在 很 多 系 统 ( 包 括 计 算 机 网 络 ) 中, 是 同 时 都 用 的 3. 进 程 同 步 方 式 科 学 出 版 社 在 进 程 之 间 进 行 通 信 时, 应 辅 以 进 程 同 步 机 制, 以 使 诸 进 程 间 能 协 调 通 信 不 论 是 发 送 进 程 还 是 接 收 进 程, 在 完 成 消 息 的 发 送 和 接 收 后, 都 存 在 着 两 种 可 能 性, 即 进 程 或 者 继 续 发 送, 或 者 阻 塞 因 此, 可 得 到 以 下 三 种 情 况 (1) 发 送 进 程 阻 塞 接 收 进 程 阻 塞 这 种 情 况 主 要 用 于 进 程 之 间 紧 密 同 步, 发 送 和 接 收 进 程 之 间 无 缓 冲 时 这 两 个 进 程 平 时 都 处 于 阻 塞 状 态, 直 到 有 消 息 传 递 时 这 种 同 步 方 式 称 为 汇 合 (2) 发 送 进 程 不 阻 塞, 接 收 进 程 阻 塞 这 是 一 种 应 用 最 广 泛 的 进 程 同 步 方 式 平 时, 发 送 进 程 不 阻 塞, 因 而 可 以 尽 快 把 一 个 或 多 个 消 息 发 送 给 多 个 目 标 ; 而 接 收 进 程 平 时 阻 塞, 直 到 发 送 进 程 发 来 消 息 时 才 被 唤 醒 (3) 发 送 进 程 和 接 收 进 程 均 不 阻 塞 这 也 是 一 种 较 常 见 的 进 程 同 步 形 式 平 时, 发

78 64 操 作 系 统 送 和 接 收 进 程 都 忙 于 自 己 的 事 情, 仅 当 发 生 某 事 件 使 它 们 无 法 继 续 运 行 时, 才 把 自 己 阻 塞 起 来 等 待 消 息 缓 冲 队 列 通 信 机 制 消 息 缓 冲 队 列 通 信 机 制, 首 先 由 美 国 的 Hansan 提 出, 并 在 RC4000 系 统 实 现, 后 来 被 广 泛 应 用 于 本 地 进 程 通 信 之 间 的 通 信 中 在 这 种 通 信 机 制 中, 发 送 进 程 利 用 Send 原 语, 将 消 息 直 接 发 送 给 接 收 进 程 ; 接 收 进 程 则 利 用 Receive 原 语 接 收 消 息 1. 消 息 缓 冲 队 列 通 信 机 制 中 的 数 据 结 构 (1) 消 息 缓 冲 区 在 消 息 缓 冲 队 列 通 信 方 式 中, 主 要 利 用 的 数 据 结 构 是 消 息 缓 冲 区 它 可 描 述 如 下 type message buffer=record sender; 发 送 者 进 程 标 识 符 size; 消 息 长 度 text; 消 息 正 文 next; 指 向 下 一 个 消 息 缓 冲 区 的 指 针 end (2)PCB 中 有 关 通 信 的 数 据 项 在 利 用 消 息 缓 冲 队 列 通 信 机 制 时, 设 置 消 息 缓 冲 队 列 的 同 时, 还 应 增 加 用 于 对 消 息 队 列 进 行 操 作 和 实 现 同 步 的 信 号 量, 并 将 它 们 置 入 进 程 的 PCB 中 在 PCB 中 应 增 加 的 数 据 项 可 描 述 如 下 type processcontrol block=record mq; 消 息 队 列 队 首 指 针 mutex; 消 息 队 列 互 斥 信 号 量 sm; 消 息 队 列 资 源 信 号 量 end 2. 发 送 原 语 发 送 进 程 在 利 用 发 送 原 语 发 送 消 息 之 前, 应 先 在 自 己 的 内 存 空 间 设 置 一 发 送 区 a, 如 图 2-14 所 示, 把 待 发 送 的 消 息 正 文 发 送 进 程 标 识 符 和 消 息 长 度 等 信 息 填 入 其 中, 然 后 调 用 发 送 原 语, 把 消 息 发 送 给 目 标 ( 接 收 ) 进 程 发 送 原 语 首 先 根 据 发 送 区 a 中 所 设 置 的 消 息 长 度 a.size 来 申 请 一 缓 冲 区 i, 接 着, 把 发 送 区 a 中 的 信 息 复 制 到 缓 冲 区 i 中 为 了 能 将 i 挂 在 接 收 进 程 的 消 息 队 列 mq 上, 应 先 获 得 接 收 进 程 的 内 部 标 识 符 j, 然 后 将 i 挂 在 j.mq 上 由 于 该 队 列 属 于 临 界 资 源, 故 在 执 行 insert 操 作 的 前 后, 都 要 执 行 wait 和 signal 操 作

79 第 2 章 进 程 管 理 65 图 2-14 消 息 缓 冲 通 信 procedure send(receiver, a) begin getbuf(a.size,i); 根 据 a.size 申 请 缓 冲 区 ; i.sender =a.sender; 将 发 送 区 a 中 的 信 息 复 制 到 消 息 缓 冲 区 之 中 ; i.size =a.size; i.text =a.text; i.next =0; getid(pcb set, receiver.j); 获 得 接 收 进 程 内 部 标 识 符 ; wait(j.mutex); insert(j.mq, i); 将 消 息 缓 冲 区 插 入 消 息 队 列 ; signal(j.mutex); signal(j.sm); end 3. 接 收 原 语 接 收 进 程 调 用 接 收 原 语 receive(b), 从 自 己 的 消 息 缓 冲 队 列 mq 中, 摘 下 第 一 个 消 息 缓 冲 区 i, 并 将 其 中 的 数 据 复 制 到 以 b 为 首 地 址 指 定 的 接 收 区 内 接 收 原 语 描 述 如 下 procedure receive(b) begin j =internal name; j 为 接 收 进 程 内 部 的 标 识 符 ; wait(j.sm); wait(j.mutex); remove(j.mq, i); 将 消 息 队 列 中 第 一 个 消 息 移 出 ; signal(j.mutex); b.sende = i.sender; 将 消 息 缓 冲 区 i 中 的 信 息 复 制 到 接 收 区 b; b.size = i.size; 科 学 出 版 社

80 66 操 作 系 统 b.text = i.text; end 2.7 线 程 自 从 20 世 纪 60 年 代 人 们 提 出 了 进 程 的 概 念 后, 在 操 作 系 统 中 一 直 都 是 以 进 程 作 为 拥 有 资 源 和 独 立 运 行 的 基 本 单 位 直 到 20 世 纪 80 年 代 中 期, 人 们 又 提 出 了 比 进 程 更 小 的 独 立 运 行 的 基 本 单 位 线 程 (Threads), 试 图 用 它 来 提 高 系 统 内 程 序 段 并 发 执 行 的 程 度 特 别 是 20 世 纪 90 年 代 以 后, 处 理 机 系 统 迅 速 发 展, 线 程 能 更 好 地 提 高 程 序 的 并 行 执 行 程 度, 充 分 地 发 挥 多 处 理 机 的 优 越 性, 因 而, 在 近 几 年 所 推 出 的 多 处 理 机 操 作 系 统 都 引 入 了 线 程, 以 改 善 操 作 系 统 的 性 能 线 程 的 基 本 概 念 1. 线 程 的 引 入 如 果 说 在 操 作 系 统 中 引 入 进 程 的 目 的 是 为 了 使 多 个 程 序 并 发 执 行, 以 改 善 资 源 利 用 率 及 提 高 系 统 的 吞 吐 量, 那 么, 在 操 作 系 统 中 再 引 入 线 程 则 是 为 了 减 少 程 序 并 发 执 行 时 所 付 出 的 时 空 开 销, 使 操 作 系 统 具 有 更 好 的 并 发 性 2. 线 程 的 属 性 (1) 轻 型 实 体 线 程 中 的 实 体 基 本 上 不 拥 有 系 统 资 源, 只 保 证 拥 有 独 立 运 行 的 资 源, 所 以 相 对 于 进 程 而 言, 线 程 是 轻 型 实 体 (2) 独 立 调 度 和 分 派 的 基 本 单 位 在 多 线 程 的 操 作 系 统 中, 线 程 是 能 独 立 运 行 的 基 本 单 位, 因 而 也 是 调 度 和 分 派 的 基 本 单 位 (3) 可 并 发 执 行 在 一 个 进 程 的 多 个 线 程 之 间, 甚 至 允 许 在 一 个 进 程 的 所 有 线 程 之 间 都 可 以 并 发 执 行 ; 同 样, 不 同 进 程 中 的 线 程 也 是 并 发 执 行 的 (4) 共 享 进 程 资 源 同 一 进 程 中 的 各 个 线 程 都 可 以 共 享 进 程 所 拥 有 的 系 统 资 源, 这 表 现 在 所 有 线 程 都 有 相 同 的 地 址 空 间, 即 所 有 线 程 都 可 以 访 问 该 空 间 的 每 一 个 虚 地 址 3. 线 程 的 状 态 1) 状 态 参 数 在 操 作 系 统 中 的 每 一 个 线 程 都 可 以 利 用 线 程 标 识 符 和 一 组 状 态 参 数 进 行 描 述 状 态 参 数 通 常 有 这 样 几 项 :1 寄 存 器 状 态, 它 包 括 程 序 计 数 器 PC 和 堆 栈 指 针 中 的 内 容 2 堆 栈, 在 堆 栈 中 通 常 保 存 有 局 部 变 量 和 返 回 地 址 3 线 程 运 行 状 态, 用 于 描 述 线 程 正 处 于 何 种 运 行 状 态 4 优 先 级, 描 述 线 程 执 行 的 优 先 程 度 5 线 程 专 有 存 储 器, 用 于 保 存 线 程 自 己 的 局 部 变 量 拷 贝 6 信 号 屏 蔽, 即 对 某 些 信 号 加 以 屏 蔽 2) 线 程 运 行 状 态 如 同 传 统 的 进 程 一 样, 在 各 线 程 之 间 也 存 在 着 共 享 资 源 和 相 互 合 作 的 制 约 关 系, 致 使 线 程 在 运 行 时 也 具 有 间 断 性 相 应 地, 线 程 在 运 行 时, 也 具 有 下 述 三 种 基 本 状 态 :1 执

81 第 2 章 进 程 管 理 67 行 状 态, 表 示 线 程 正 获 得 处 理 机 而 运 行 2 就 绪 状 态, 指 线 程 已 具 备 了 各 种 执 行 条 件, 一 旦 获 得 CPU 便 可 执 行 的 状 态 3 阻 塞 状 态, 指 线 程 在 执 行 中 因 某 事 件 而 受 阻, 处 于 暂 停 执 行 时 的 状 态 4. 线 程 的 创 建 和 终 止 在 多 线 程 操 作 系 统 环 境 下, 应 用 程 序 在 启 动 时, 通 常 仅 有 一 个 线 程 在 执 行, 该 线 程 被 人 们 称 为 初 始 化 线 程 它 可 根 据 需 要 再 去 创 建 若 干 个 线 程 在 创 建 新 线 程 时, 需 要 利 用 一 个 线 程 创 建 函 数 ( 或 系 统 调 用 ), 并 提 供 相 应 的 参 数, 如 指 向 线 程 主 程 序 的 入 口 指 针 堆 栈 的 大 小, 以 及 用 于 调 度 的 优 先 级 等 在 线 程 创 建 函 数 执 行 完 后, 将 返 回 一 个 线 程 标 识 符 供 以 后 使 用 同 进 程 一 样, 线 程 也 具 有 生 命 期 终 止 线 程 的 方 式 有 两 种 : 一 种 是 在 线 程 完 成 了 自 己 的 工 作 后 自 愿 退 出 ; 另 一 种 是 线 程 在 运 行 中 出 现 错 误 或 由 于 某 种 原 因 而 被 其 他 线 程 强 行 终 止 5. 多 线 程 操 作 系 统 中 的 进 程 在 多 线 程 操 作 系 统 中, 进 程 是 作 为 拥 有 系 统 资 源 的 基 本 单 位, 通 常 的 进 程 都 包 含 多 个 线 程 并 为 它 们 提 供 资 源, 但 此 时 的 进 程 就 不 再 作 为 一 个 执 行 的 实 体 多 线 程 操 作 系 统 中 的 进 程 有 如 下 属 性 (1) 作 为 系 统 资 源 分 配 的 单 位 在 多 线 程 操 作 系 统 中, 仍 是 将 进 程 作 为 资 源 分 配 的 基 本 单 位, 在 任 一 进 程 中, 所 拥 有 的 资 源 包 括 : 受 到 分 别 保 护 的 用 户 地 址 空 间 用 于 实 现 进 程 间 和 线 程 间 同 步 和 通 信 的 机 制 已 打 开 的 文 件 和 已 申 请 的 I/O 设 备, 以 及 一 张 由 核 心 进 程 维 护 的 地 址 映 射 表, 该 表 用 于 实 现 用 户 程 序 的 逻 辑 地 址 到 其 内 存 物 理 地 址 的 映 射 (2) 可 包 括 多 个 线 程 通 常 一 个 进 程 都 包 含 多 个 相 对 独 立 的 线 程, 其 数 目 可 多 可 少, 但 至 少 要 有 一 个 线 程, 由 进 程 为 这 个 线 程 分 配 资 源 和 运 行 环 境, 使 这 些 线 程 可 并 发 执 行 在 操 作 系 统 中 所 有 线 程 都 只 能 属 于 某 一 个 特 定 的 进 程 (3) 进 程 不 是 一 个 可 执 行 的 实 体 在 多 线 程 操 作 系 统 中, 把 线 程 作 为 独 立 运 行 的 基 本 单 位, 所 以 此 时 进 程 已 不 再 是 一 个 可 执 行 的 实 体 线 程 间 的 同 步 和 通 信 为 使 系 统 中 的 多 线 程 能 有 条 不 紊 地 运 行, 在 系 统 中 必 须 提 供 用 于 实 现 线 程 间 同 步 和 通 信 的 机 制 为 了 支 持 不 同 频 率 的 交 互 操 作 和 不 同 程 度 的 并 行 性, 在 多 线 程 操 作 系 统 中 常 提 供 多 种 同 步 机 制, 如 互 斥 锁 条 件 变 量 计 数 信 号 量 多 读, 以 及 单 写 锁 等 1. 互 斥 锁 (mutex) 科 学 出 版 社 互 斥 锁 是 一 种 比 较 简 单 的 用 于 实 现 进 程 间 对 资 源 互 斥 访 问 的 机 制 由 于 操 作 互 斥 锁 的 时 间 和 空 间 开 销 都 较 低, 因 而 较 适 合 于 高 频 度 使 用 的 关 键 共 享 数 据 和 程 序 段 互 斥 锁 可 以 有 两 种 状 态, 即 开 锁 (Unlock) 和 关 锁 (Lock) 状 态 相 应 地, 可 用 两 条 命 令 ( 函 数 ) 对 互 斥 锁 进 行 操 作 其 中 的 关 锁 lock 操 作 用 于 将 mutex 关 上, 开 锁 操 作 unlock 则 用 于 打 开 mutex

82 68 操 作 系 统 2. 条 件 变 量 每 一 个 条 件 变 量 通 常 都 与 一 个 互 斥 锁 一 起 使 用, 即 在 创 建 一 个 互 斥 锁 时 便 联 系 着 一 个 条 件 变 量 单 纯 的 互 斥 锁 用 于 短 期 锁 定, 主 要 是 用 来 保 证 对 临 界 区 的 互 斥 进 入 而 条 件 变 量 则 用 于 线 程 的 长 期 等 待, 直 至 所 等 待 的 资 源 成 为 可 用 的 线 程 首 先 对 mutex 执 行 关 锁 操 作, 若 成 功 便 进 入 临 界 区, 然 后 查 找 用 于 描 述 资 源 状 态 的 数 据 结 构, 以 了 解 资 源 的 情 况 只 要 发 现 所 需 资 源 R 正 处 于 忙 碌 状 态, 线 程 便 转 为 等 待 状 态, 并 对 mutex 执 行 开 锁 操 作 后, 等 待 该 资 源 被 释 放 ; 若 资 源 处 于 空 闲 状 态, 表 明 线 程 可 以 使 用 该 资 源, 于 是 将 该 资 源 设 置 为 忙 碌 状 态, 再 对 mutex 执 行 开 锁 操 作 下 面 给 出 了 对 上 述 资 源 的 申 请 ( 左 半 部 分 ) 和 释 放 ( 右 半 部 分 ) 操 作 的 描 述 Lock mutex check data structures; while(resource busy); wait(condition variable); mark resource as busy; unlock mutex; Lock mutex mark resource as free; unlock mutex; wakeup(condition variable); 3. 信 号 量 机 制 前 面 介 绍 的 用 于 实 现 进 程 同 步 的 常 用 工 具 信 号 量 机 制, 也 可 用 于 多 线 程 操 作 系 统 中, 实 现 诸 线 程 或 进 程 之 间 的 同 步 为 了 提 高 效 率, 可 为 线 程 和 进 程 分 别 设 置 相 应 的 信 号 量 1) 私 用 信 号 量 (Private Samephore) 当 某 线 程 需 利 用 信 号 量 来 实 现 同 一 进 程 中 各 线 程 之 间 的 同 步 时, 可 调 用 创 建 信 号 量 的 命 令 来 创 建 一 私 用 信 号 量, 其 数 据 结 构 存 放 在 应 用 程 序 的 地 址 空 间 中 私 用 信 号 量 属 于 特 定 的 进 程 所 有, 操 作 系 统 并 不 知 道 私 用 信 号 量 的 存 在, 因 此, 一 旦 发 生 私 用 信 号 量 的 占 用 者 异 常 结 束 或 正 常 结 束, 但 并 未 释 放 该 信 号 量 所 占 有 空 间 的 情 况 时, 系 统 将 无 法 使 它 恢 复 为 0( 空 ), 也 不 能 将 它 传 送 给 下 一 个 请 求 它 的 线 程 2) 公 用 信 号 量 (Public Semaphort) 公 用 信 号 量 是 为 实 现 不 同 进 程 间 或 不 同 进 程 中 各 线 程 之 间 的 同 步 而 设 置 的 由 于 它 有 着 一 个 公 开 的 名 字 供 所 有 的 进 程 使 用, 故 而 把 它 称 为 公 用 信 号 量 其 数 据 结 构 是 存 放 在 受 保 护 的 系 统 存 储 区 中, 由 操 作 系 统 为 它 分 配 空 间 并 进 行 管 理, 故 也 称 为 系 统 信 号 量 如 果 信 号 量 的 占 有 者 在 结 束 时 未 释 放 该 公 用 信 号 量, 则 操 作 系 统 会 自 动 将 该 信 号 量 空 间 回 收, 并 通 知 下 一 进 程 由 此 可 见, 公 用 信 号 量 是 一 种 比 较 安 全 的 同 步 机 制 内 核 支 持 线 程 和 用 户 级 线 程 线 程 已 经 在 许 多 系 统 中 实 现, 但 各 系 统 的 实 现 方 式 并 不 完 全 相 同 有 的 系 统 实 现 的 是 用 户 级 线 程, 而 有 的 系 统 实 现 的 则 是 内 核 支 持 线 程, 还 有 一 些 则 同 时 实 现 了 这 两 种 类 型 的 线 程

83 第 2 章 进 程 管 理 内 核 支 持 线 程 这 里 所 谓 的 内 核 支 持 线 程, 同 样 是 在 内 核 的 支 持 下 运 行 的, 即 无 论 是 用 户 进 程 中 的 线 程, 还 是 系 统 进 程 中 的 线 程, 它 们 的 创 建 撤 销 和 切 换 等, 是 依 靠 内 核 实 现 的 此 外, 在 内 核 空 间 中 还 为 每 一 个 内 核 支 持 线 程 设 置 了 一 个 线 程 控 制 块, 内 核 是 根 据 该 控 制 块 而 感 知 某 线 程 的 存 在 的, 并 对 其 加 以 控 制 2. 用 户 级 线 程 用 户 级 线 程 仅 存 在 于 用 户 空 间 中 对 于 这 种 线 程 的 创 建 撤 销 线 程 之 间 的 同 步 与 通 信 等 功 能, 都 无 需 利 用 系 统 调 用 来 实 现 对 于 用 户 级 线 程 的 切 换, 通 常 是 发 生 在 一 个 应 用 进 程 的 诸 多 线 程 之 间, 这 时, 也 同 样 无 需 内 核 的 支 持 由 于 切 换 的 规 则 远 比 进 程 调 度 和 切 换 的 规 则 简 单, 因 而 使 线 程 的 切 换 速 度 特 别 快 可 见, 这 种 线 程 是 与 内 核 无 关 的 线 程 控 制 不 论 是 进 程 还 是 线 程 都 必 须 直 接 或 间 接 地 取 得 内 核 的 支 持 由 于 内 核 支 持 线 程 可 以 直 接 利 用 系 统 调 用 为 它 服 务, 故 线 程 的 控 制 相 当 简 单 ; 而 用 户 级 线 程 必 须 借 助 于 某 种 形 式 的 中 间 系 统 的 帮 助 方 能 取 得 内 核 的 服 务, 故 在 对 线 程 的 控 制 上 要 稍 微 复 杂 些 1. 内 核 支 持 线 程 的 实 现 在 仅 设 置 了 内 核 支 持 线 程 的 操 作 系 统 中, 一 种 可 能 的 线 程 控 制 方 法 是, 系 统 在 创 建 一 个 新 进 程 时, 便 为 它 分 配 一 个 任 务 数 据 区 PTDA(Per Task Data Area), 其 中 包 含 若 干 个 线 程 控 制 块 TCB 空 间, 如 图 2-15 所 示 在 每 一 个 TCB 中 可 保 存 线 程 标 识 符 优 先 级 线 程 运 行 的 CPU 状 态 等 信 息 虽 然 这 些 信 息 是 与 用 户 级 线 程 TCB 中 的 信 息 相 同, 但 现 在 却 是 被 保 存 在 内 核 空 间 中 每 当 进 程 要 创 建 一 个 线 程 时, 便 为 新 线 程 分 配 一 个 TCB, 将 有 关 信 息 填 入 该 TCB 中, 并 为 之 分 配 必 要 的 资 源, 于 是 新 创 建 的 线 程 便 有 条 件 立 即 执 行 当 PTDA 中 所 有 的 TCB 空 间 已 用 完, 而 进 程 又 要 创 建 新 的 线 程 时, 只 要 其 所 创 建 的 线 程 数 目 未 超 过 系 统 的 允 许 值, 系 统 就 可 再 为 之 分 配 新 的 TCB 空 间 在 撤 销 一 个 线 程 时, 系 统 回 收 该 线 程 的 所 有 资 源 和 TCB 内 核 支 持 线 程 的 调 度 和 切 换 与 进 程 的 调 度 和 切 换 十 分 相 似, 也 分 抢 占 式 和 非 抢 占 式 两 种 在 线 程 的 调 度 算 法 上, 同 样 可 采 用 时 间 片 轮 转 优 先 权 算 法 等 当 然, 线 程 在 调 度 和 切 换 上 所 花 费 的 开 销, 要 比 进 程 小 得 多 2. 用 户 级 线 程 的 实 现 图 2-15 任 务 数 据 区 空 间 科 学 出 版 社 用 户 级 线 程 是 在 用 户 空 间 实 现 的 所 有 的 用 户 级 线 程 都 具 有 相 同 的 结 构, 它 们 都 运 行 在 一 个 中 间 系 统 的 上 面 当 前 有 两 种 方 式 实 现 的 中 间 系 统, 即 运 行 时 系 统 和 内 核 控 制 线 程

84 70 操 作 系 统 1) 运 行 时 系 统 (Runtime System) 所 谓 运 行 时 系 统, 实 质 上 是 用 于 管 理 和 控 制 线 程 的 函 数 ( 过 程 ) 的 集 合, 其 中 包 括 用 于 创 建 和 撤 销 线 程 的 函 数 线 程 同 步 和 通 信 的 函 数 以 及 实 现 线 程 调 度 的 函 数 等 正 因 为 有 这 些 函 数, 才 能 使 用 户 级 线 程 与 内 核 无 关 运 行 时 系 统 中 的 所 有 函 数 都 驻 留 在 用 户 空 间, 并 作 为 用 户 级 线 程 与 内 核 之 间 的 接 口 2) 内 核 控 制 线 程 这 种 线 程 又 称 为 轻 型 进 程 LWP(Light Weight Process) 每 一 个 进 程 都 可 拥 有 多 个 LWP, 同 用 户 级 线 程 一 样, 每 个 LWP 都 有 自 己 的 数 据 结 构 ( 如 TCB), 其 中, 包 括 线 程 标 识 符 优 先 级 和 状 态, 另 外 还 有 栈 和 局 部 存 储 区 等 它 们 也 可 以 共 享 进 程 所 拥 有 的 资 源 LWP 可 通 过 系 统 调 用 来 获 得 内 核 提 供 的 服 务, 这 样, 当 一 个 用 户 级 线 程 运 行 时, 只 要 将 它 连 接 到 一 个 LWP 上, 此 时 它 便 具 有 了 内 核 支 持 线 程 的 所 有 属 性 2.8 小 结 本 章 介 绍 了 操 作 系 统 的 进 程 管 理 部 分, 即 进 程 的 基 本 概 念 进 程 控 制 进 程 同 步 等 知 识, 然 后 介 绍 了 几 个 经 典 的 进 程 的 同 步 问 题, 如 生 产 者 - 消 费 者 问 题 哲 学 家 进 餐 问 题 读 者 - 写 者 问 题 等, 通 过 这 些 经 典 问 题 帮 助 读 者 深 入 理 解 进 程 的 相 关 知 识, 接 着 介 绍 了 一 种 新 的 进 程 同 步 工 具 管 程, 以 弥 补 信 号 量 机 制 在 某 些 情 况 下 不 便 使 用 的 问 题, 然 后 介 绍 了 进 程 通 信 和 现 代 操 作 系 统 中 普 遍 支 持 的 线 程 的 相 关 知 识 2.9 学 习 加 油 站 答 疑 解 惑 1. 进 程 基 本 概 念 是 什 么 进 程 是 具 有 一 定 独 立 功 能 的 程 序 关 于 某 个 数 据 集 合 上 的 一 次 运 行 活 动, 进 程 是 系 统 进 行 资 源 分 配 和 调 度 的 一 个 独 立 单 位 从 操 作 系 统 角 度 来 看, 可 将 进 程 分 为 系 统 进 程 和 用 户 进 程 两 类 系 统 进 程 执 行 操 作 系 统 程 序, 完 成 操 作 系 统 的 某 些 功 能 用 户 进 程 运 行 用 户 程 序, 直 接 为 用 户 服 务 系 统 进 程 的 优 先 级 通 常 高 于 一 般 用 户 进 程 的 优 先 级 2. 进 程 的 特 征 是 什 么 进 程 具 有 以 下 特 征 :1 进 程 具 有 动 态 性 ;2 进 程 具 有 并 发 性 ;3 进 程 具 有 结 构 特 性 ;4 进 程 具 有 独 立 性 ;5 进 程 具 有 异 步 性 ( 不 确 定 性 ) 其 中, 动 态 性 并 发 性 和 异 步 性 是 进 程 的 基 本 特 征 3. 进 程 有 哪 些 状 态 以 及 状 态 转 换 的 原 因 有 哪 些 一 个 进 程 的 生 命 期 可 以 划 分 为 一 组 状 态, 这 些 状 态 刻 划 了 整 个 进 程 系 统 根 据 PCB

85 第 2 章 进 程 管 理 71 结 构 中 的 状 态 值 控 制 进 程 在 进 程 的 生 命 期 内, 一 个 进 程 至 少 具 有 三 种 基 本 状 态, 它 们 是 执 行 状 态 等 待 状 态 和 就 绪 状 态 处 于 就 绪 状 态 的 进 程 已 经 得 到 除 CPU 之 外 的 其 他 资 源, 只 要 被 调 度 得 到 处 理 机, 便 可 立 即 投 入 执 行 4. 进 程 控 制 过 程 是 什 么 进 程 由 创 建 而 产 生, 由 调 度 而 执 行, 由 撤 销 而 消 亡 的 生 命 周 期, 因 此 操 作 系 统 要 有 对 进 程 生 命 周 期 的 各 个 环 节 进 行 控 制 的 功 能, 这 就 是 进 程 控 制 进 程 控 制 的 职 能 是 对 系 统 中 的 全 部 进 程 实 行 有 效 的 管 理, 其 主 要 是 对 一 个 进 程 进 行 创 建 撤 销 以 及 在 某 些 进 程 状 态 间 的 转 换 控 制 进 程 的 控 制 通 常 由 原 语 完 成 所 谓 原 语 一 般 是 指 由 若 干 条 指 令 所 组 成, 用 来 实 现 某 个 特 定 功 能, 在 执 行 过 程 中 不 可 被 中 断 的 程 序 段 主 要 有 四 种 进 程 控 制 原 语 : 创 建 进 程 原 语 ; 撤 销 原 语 ; 阻 塞 原 语 ; 唤 醒 原 语 5. 信 号 量 分 为 哪 几 类? 并 简 述 PV 操 作 的 含 义 信 号 量 是 一 种 特 殊 的 变 量, 它 的 表 面 形 式 是 一 个 整 型 变 量 附 加 一 个 队 列, 而 且, 它 只 能 被 特 殊 的 操 作 ( 即 P 操 作 和 V 操 作 ) 使 用 1) 信 号 量 的 分 类 按 用 途 分 类 : 公 用 信 号 量 ( 进 程 互 斥 ); 私 有 信 号 量 ( 进 程 同 步 ) 按 取 值 分 类 : 二 元 信 号 量 (0/1, 互 斥 ); 一 般 信 号 量 ( 非 负 整 数, 同 步 ) 按 信 号 量 的 结 构 分 类 : 整 型 信 号 量 ; 记 录 型 信 号 量 ; 二 元 信 号 量 2) PV 操 作 P 操 作 和 V 操 作 都 是 原 语 所 谓 原 语 是 由 若 干 条 机 器 指 令 构 成 的 一 段 程 序, 用 以 完 成 特 定 功 能 原 语 在 执 行 期 间 是 不 可 分 割 的, 即 原 语 一 旦 开 始 执 行, 直 到 执 行 完 毕 之 前, 不 允 许 中 断 6. 临 界 区 与 临 界 资 源 的 概 念 是 什 么 系 统 中 一 些 资 源 一 次 只 允 许 一 个 进 程 使 用, 这 类 资 源 称 为 临 界 资 源 而 在 进 程 中 访 问 临 界 资 源 的 那 一 段 程 序 称 为 临 界 区, 要 求 进 入 临 界 区 的 进 程 之 间 就 构 成 了 互 斥 关 系 为 了 保 证 系 统 中 各 并 发 进 程 顺 利 运 行, 对 两 个 以 上 欲 进 入 临 界 区 的 进 程, 必 须 实 行 互 斥, 为 此, 系 统 采 取 了 一 些 调 度 协 调 措 施 7. 进 程 间 通 信 的 方 式 有 哪 几 种 进 程 通 信 根 据 交 换 信 息 量 的 多 少 分 为 高 级 通 信 和 低 级 通 信 低 级 通 信 一 般 只 传 送 一 个 或 几 个 字 节 的 信 息, 以 达 到 控 制 进 程 执 行 速 度 的 作 用 ( 如 PV 操 作 ); 高 级 通 信 则 要 传 送 大 量 数 据, 目 的 不 是 为 了 控 制 进 程 的 执 行 速 度, 而 是 为 了 交 换 信 息 高 级 进 程 通 信 方 式 有 很 多 种, 大 致 可 归 并 为 三 类 : 共 享 存 储 器 管 道 文 件 和 消 息 传 递 8. 进 程 的 同 步 和 互 斥 的 概 念 是 什 么 科 学 出 版 社 1) 进 程 的 同 步 与 互 斥 进 程 同 步 是 指 进 程 之 间 一 种 直 接 的 协 同 工 作 关 系, 这 些 进 程 相 互 合 作, 共 同 完 成 一

86 72 操 作 系 统 项 任 务 进 程 间 的 直 接 相 互 作 用 构 成 进 程 的 同 步 进 程 互 斥 在 系 统 中, 许 多 进 程 常 常 需 要 共 享 资 源, 而 这 些 资 源 往 往 要 求 排 他 地 使 用, 即 一 次 只 能 为 一 个 进 程 服 务 因 此, 各 进 程 间 互 斥 使 用 这 些 资 源, 进 程 间 的 这 种 关 系 是 进 程 的 互 斥 进 程 间 的 间 接 相 互 作 用 构 成 进 程 互 斥 2) 典 型 的 进 程 间 同 步 和 互 斥 问 题 本 章 最 常 见 的 进 程 间 同 步 和 互 斥 问 题 : 读 者 写 者 问 题 生 产 者 消 费 者 问 题 和 哲 学 家 就 餐 问 题 等 9. 线 程 概 念 的 引 入 原 因 及 与 进 程 的 区 别 是 什 么 在 操 作 系 统 中 引 入 线 程 是 为 了 减 少 程 序 并 发 执 行 时 所 付 出 的 时 空 开 销, 使 操 作 系 统 具 有 更 好 的 并 发 性 在 引 入 线 程 的 操 作 系 统 中, 线 程 是 进 程 中 的 一 个 实 体, 是 被 系 统 独 立 调 度 和 分 配 的 基 本 单 位 线 程 自 己 基 本 上 不 拥 有 系 统 资 源, 只 拥 有 一 些 在 运 行 中 必 不 可 少 的 资 源 ( 如 程 序 计 数 器 一 组 寄 存 器 和 栈 ), 但 它 可 与 同 属 一 个 进 程 的 其 他 线 程 共 享 进 程 所 拥 有 的 全 部 资 源 线 程 也 同 样 有 就 绪 阻 塞 和 执 行 三 种 基 本 状 态, 有 的 系 统 中 线 程 还 有 终 止 状 态 10. 试 简 述 程 序 和 进 程 的 区 别 和 联 系 1) 联 系 程 序 是 构 成 进 程 的 组 成 部 分 之 一, 一 个 进 程 的 运 行 目 标 是 执 行 它 所 对 应 的 程 序, 如 果 没 有 程 序, 进 程 就 失 去 了 其 存 在 的 意 义 从 静 态 的 角 度 看, 进 程 是 由 程 序 数 据 和 进 程 控 制 块 (PCB) 三 部 分 组 成 的 2) 区 别 程 序 是 静 态 的, 而 进 程 是 动 态 的 进 程 是 程 序 的 执 行 过 程, 因 而 进 程 是 有 生 命 周 期 的, 有 诞 生, 也 有 消 亡 因 此, 程 序 的 存 在 是 永 久 的, 而 进 程 的 存 在 是 暂 时 的, 它 动 态 地 产 生 和 消 亡 典 型 例 题 与 考 研 真 题 解 析 1.( 首 都 师 范 大 学 ) 判 断 : 操 作 系 统 通 过 PCB 来 控 制 和 管 理 进 程, 用 户 进 程 可 从 PCB 中 读 出 与 本 身 运 行 状 态 相 关 的 信 息 分 析 : 本 题 考 查 进 程 控 制 块 PCB 的 作 用, 为 了 便 于 系 统 控 制 和 描 述 进 程 的 基 本 情 况 以 及 进 程 的 活 动 过 程, 在 操 作 系 统 中 为 进 程 定 义 了 一 个 专 门 的 数 据 结 构, 称 之 为 PCB 解 答 : 正 确 2.( 华 中 科 技 大 学 ) 进 程 从 结 构 上 讲, 分 为 几 部 分 分 析 : 本 题 考 查 进 程 的 组 成 解 答 : 程 序 数 据 进 程 控 制 块 (PCB) 3.( 河 北 大 学 ) 操 作 系 统 通 过 管 理 计 算 机 系 统 内 的 进 程 A. 进 程 控 制 块 B. 程 序 C. PCB D. 作 业 控 制 块 分 析 : 本 题 考 查 进 程 控 制 块 PCB 的 作 用 为 了 便 于 系 统 控 制 和 描 述 进 程 的 基 本 情 况

87 第 2 章 进 程 管 理 73 以 及 进 程 的 活 动 过 程, 在 操 作 系 统 中 为 进 程 定 义 了 一 个 专 门 的 数 据 结 构, 称 为 进 程 控 制 块 (Process Control Block,PCB) 系 统 为 每 一 个 进 程 设 置 一 个 PCB,PCB 是 进 程 存 在 与 否 的 唯 一 标 志 当 系 统 创 建 一 个 进 程 时, 系 统 为 其 建 立 一 个 PCB; 然 后 利 用 PCB 对 进 程 进 行 控 制 和 管 理 ; 当 进 程 被 撤 销 时, 系 统 收 回 它 的 PCB, 该 进 程 随 之 也 就 消 亡 了 解 答 :C 4.( 北 京 工 业 大 学 ) 判 断 : 进 程 的 优 先 级 信 息 是 保 存 在 进 程 的 PCB 中 的 分 析 : 本 题 考 查 进 程 PCB 包 含 的 信 息, 一 般 讲 来, 进 程 PCB 包 含 以 下 信 息 (1) 进 程 标 识 名 或 标 识 数 每 个 进 程 必 须 有 一 个 而 且 是 唯 一 的 标 识 名 或 标 识 数 (2) 位 置 信 息 它 指 出 进 程 的 程 序 和 数 据 在 内 存 或 外 存 中 的 物 理 位 置 (3) 状 态 信 息 它 指 出 进 程 当 前 所 处 的 状 态, 作 为 进 程 调 度, 分 配 处 理 机 的 依 据 (4) 进 程 的 优 先 级 一 般 根 据 进 程 的 轻 重 缓 急 程 度 为 进 程 指 定 一 个 优 先 级, 优 先 级 用 优 先 数 表 示 解 答 : 正 确 5.( 北 京 工 业 大 学 ) 子 进 程 可 以 继 承 它 的 父 进 程 所 拥 有 的 所 有 资 源 分 析 : 本 题 考 查 父 子 进 程 之 间 的 关 系 子 进 程 继 承 了 父 进 程 的 代 码 段 和 数 据 段 资 源, 堆 栈 段 则 是 自 己 的 解 答 : 错 误 6.( 武 汉 理 工 大 学 ) 在 一 个 分 时 操 作 系 统 中, 可 能 出 现 如 图 2-16 进 程 状 态 变 化 图 所 示 的 进 程 图 2-16 进 程 状 态 变 化 图 请 写 出 产 生 对 应 变 化 的 原 因 :,,,, 分 析 : 本 题 考 查 进 程 主 要 状 态 之 间 变 化 的 原 因 解 答 :1 本 进 程 分 配 的 时 间 片 用 完 ;2 本 进 程 运 行 过 程 中 申 请 使 用 未 获 得 的 数 据 资 源 ;3 本 进 程 运 行 过 程 中 需 要 申 请 I/O 操 作 ;4 本 进 程 申 请 的 数 据 资 源 已 获 得 ;5 本 进 程 申 请 的 I/O 设 备 已 空 闲 7.( 西 安 电 子 科 技 大 学 ) 下 列 选 项 中 能 正 确 描 述 进 程 和 线 程 间 概 念 的 为 A. 线 程 可 以 是 进 程 中 独 立 执 行 的 实 体, 一 个 进 程 可 以 包 含 一 个 或 多 个 线 程 B. 线 程 又 称 为 轻 型 进 程, 因 为 线 程 都 比 进 程 小 C. 多 线 程 技 术 具 有 明 显 的 优 越 性, 如 速 度 快 通 信 简 便 设 备 并 行 性 高 D. 由 于 线 程 不 作 为 资 源 分 配 单 位, 线 程 之 间 可 以 无 约 束 地 并 行 执 行 E. 一 个 线 程 可 以 属 于 一 个 或 多 个 进 程 科 学 出 版 社

88 74 操 作 系 统 分 析 : 本 题 主 要 考 查 进 程 和 线 程 的 区 别 与 联 系 解 答 :A 8.( 青 岛 大 学 ) 设 有 10 个 并 发 进 程 通 过 PV 操 作 原 语 共 享 同 一 临 界 资 源, 若 该 临 界 资 源 互 斥 信 号 量 为 Mutex, 则 Mutex 的 值 域 为 A. [-10,0] B. [0,10] C. [-9,1] D. [-1,9] 分 析 : 本 题 主 要 考 查 并 发 进 程 的 PV 操 作 解 答 :D 9.( 武 汉 理 工 大 学 ) 假 设 信 号 量 S 的 初 值 为 2, 说 明 在 某 一 时 刻, 当 S=2,1,0, -1,-2 时, 各 自 表 示 的 意 义 分 析 : 本 题 考 查 信 号 量 的 意 义 当 信 号 量 值 大 于 0: 表 示 当 前 资 源 可 用 数 量, 小 于 0: 其 绝 对 值 表 示 等 待 使 用 该 资 源 的 进 程 个 数, 信 号 量 初 值 为 非 负 的 整 数 变 量, 代 表 资 源 数 解 答 :S=2,1,0, 分 别 代 表 当 前 有 两 个,1 个 和 0 个 可 用 资 源,S=-1,-2 分 别 代 表 当 前 有 1 个 和 两 个 进 程 在 等 待 队 列 中 10.( 山 东 大 学 ) 现 有 四 个 并 发 执 行 进 程 P1,P2,P3,P4, 其 中 进 程 P1 中 有 语 句 S1,P2 中 有 语 句 S2,P3 中 有 语 句 S3,P4 中 有 语 句 S4 S1:a:=a+2; S2.b:=y+4; S3:c:=a+b; S4:d:=c+6; 请 解 决 以 下 问 题 : (1) 画 出 这 四 条 语 句 的 前 趋 图 (2) 利 用 信 号 量 机 制 及 wait signal 操 作 写 出 这 四 个 并 发 进 程 能 正 确 执 行 的 程 序 分 析 : 本 题 考 查 利 用 信 号 量 描 述 进 程 前 趋 图 问 题 解 答 :(1) 这 四 条 语 句 的 前 趋 图 如 图 2-17 所 示 图 2-17 前 趋 图 (2)semaphore a=0, b=0, c=0; begin cobegin begin S1; V(a); end; begin S2; V(b); end begin P(a); P(b); S3; V(c); end begin P(c); S4; end; coend end

89 第 2 章 进 程 管 理 ( 全 国 统 考 ) 下 列 选 项 中, 导 致 创 建 新 进 程 的 操 作 是 Ⅰ 用 户 登 录 成 功 Ⅱ 设 备 分 配 Ⅲ 启 动 程 序 运 行 A. 仅 Ⅰ 和 Ⅱ B. 仅 Ⅱ 和 Ⅲ C. 仅 Ⅰ 和 Ⅲ D. Ⅰ Ⅱ Ⅲ 分 析 : 本 题 考 查 常 见 的 导 致 创 建 新 进 程 的 操 作 解 答 : 通 常 在 UNIX 系 统 中, 用 户 登 录 成 功 或 启 动 某 程 序 运 行, 系 统 都 会 创 建 对 应 的 新 进 程, 而 设 备 分 配 并 不 会 导 致 新 进 程 的 创 建 故 选 C 综 合 题 详 解 综 合 题 1 下 面 有 两 个 并 发 执 行 的 进 程, 请 问 : (1) 它 们 能 正 确 运 行 吗? (2) 若 能 运 行 则 解 释 之, 若 不 能 正 确 运 行 请 举 例 说 明 并 改 正 之 #include <sys.h> int x; void process_one() { int y,z; x=1; y=0; if(x>=1) y=y+1; z=y; return (z); } void process_two() { int y,z; x=0; y=0; if(x<=1) y=y+2; z=y; return (z); } 科 学 出 版 社 分 析 : 本 题 考 查 进 程 并 发 执 行 的 特 征 该 题 中,x 是 临 界 资 源,process_one 和 process_two 对 其 进 行 访 问, 如 果 不 采 用 某 种 措 施 来 保 证 这 两 个 进 程 对 x 的 互 斥 访 问, 访 问 的 结 果 很 有 可 能 是 错 误 的 例 如, 在 process_one 将 x 置 为 1 后, 发 生 进 程 调 度, process_two 又 将 x 置 为 0, 无 法 保 证 x 的 值 始 终 是 正 确 的 解 答 : (1) 这 两 个 进 程 不 能 正 常 运 行

90 76 操 作 系 统 (2) 举 例 如 下 : 假 设 process_one 首 先 运 行,x 被 赋 值 为 1, 在 if 语 句 执 行 后, 发 生 进 程 切 换, 导 致 x 被 重 新 赋 值 为 0, 进 而 y=y+2, 产 生 了 错 误 的 y 值 为 了 解 决 这 个 问 题, 必 须 采 用 某 种 方 法 保 证 对 共 享 变 量 x 这 种 临 界 资 源 的 互 斥 访 问, 典 型 的 方 法 就 是 采 用 PV 操 作 修 改 后 的 程 序 如 下 所 示 : #include <sys.h> semaphore mutex=1; int x; void process_one() { int y,z; P(mutex); x=1; y=0; if(x>=1) y=y+1; z=y; V(mutex); return (z); } void process_two() { int y,z; P(mutex); x=0; y=0; if(x<=1) y=y+2; z=y; V(mutex); return (z); } 综 合 题 2 假 定 有 一 个 进 程 A, 它 的 工 作 流 程 图 如 图 2-18 所 示, 如 果 系 统 中 的 进 程 只 有 三 种 状 态 ( 就 绪 执 行 阻 塞 ), 且 进 程 被 进 程 调 度 选 中 后 就 可 投 入 运 行, 时 间 片 q=200ms, 请 按 顺 序 列 出 其 从 开 始 到 结 束 所 经 历 的 状 态 转 化 过 程, 并 注 明 原 因 分 析 : 本 题 考 查 进 程 状 态 转 换 过 程 图 2-18 进 程 A 的 工 作 流 程 图

91 解 答 : 根 据 该 进 程 的 运 行 时 序 图 可 知 : 第 2 章 进 程 管 理 77 (1) 开 始 时, 进 程 被 调 度 程 序 选 中 立 即 投 入 运 行, 运 行 200 ms 后, 时 间 片 到 时, 进 程 由 运 行 态 转 变 成 就 绪 态, 发 生 进 程 切 换, 其 他 进 程 被 调 度 运 行 (2) 某 时 刻, 该 进 程 重 新 被 调 度 程 序 调 度 投 入 运 行, 进 程 从 就 绪 态 变 成 运 行 态, 运 行 50ms 后, 进 程 请 求 磁 盘 I/O, 由 运 行 态 变 为 阻 塞 态 (3) 磁 盘 I/O 完 成 后, 进 程 由 阻 塞 态 变 为 就 绪 态, 并 在 某 时 刻 被 调 度 程 序 调 度 得 到 CPU 运 行, 从 就 绪 态 变 成 运 行 态 (4) 运 行 50 ms 后, 进 程 因 带 I/O 请 求 而 阻 塞 (5) 进 程 带 I/O 请 求 完 成 后, 从 阻 塞 态 变 成 就 绪 态, 某 一 时 刻 被 调 度 程 序 选 中 执 行, 从 就 绪 态 变 成 运 行 态 运 行 200 ms 后 时 间 片 用 完, 进 程 从 运 行 态 变 为 就 绪 态 (6) 某 一 时 刻, 调 度 程 序 选 中 进 程 执 行, 但 进 程 要 执 行 打 印 请 求, 此 时 进 程 从 就 绪 态 变 成 阻 塞 态 (7) 打 印 请 求 结 束 后, 进 程 由 阻 塞 态 变 为 就 绪 态, 某 一 时 刻 进 程 又 被 重 新 调 度 执 行, 进 程 从 就 绪 态 变 成 运 行 态 运 行 150 ms 后 进 程 结 束 综 合 题 3 用 信 号 量 机 制 解 决 公 交 车 上 司 机 负 责 的 开 车 停 车 与 售 票 员 负 责 的 开 门 关 门 的 同 步 问 题 同 步 要 求 : 先 关 门, 后 开 车 ; 先 停 车, 后 开 门 信 号 量 的 定 义 以 及 司 机 进 程 和 售 票 员 进 程 的 描 述 如 下 : Semaphore S_Door= 1,S_Stop= 2 ; // 司 机 进 程 : While(1) { wait( 3 ); 启 动 车 辆 ; 正 常 驾 驶 ; 到 站 停 车 ; signal( 4 ); } // 售 票 员 进 程 : While(1) { 关 门 ;// 可 以 开 车 signal( 5 ); 售 票 ; // 可 以 开 门 wait( 6 ); } 科 学 出 版 社 请 在 的 空 白 处 填 写 相 应 的 内 容, 以 使 其 满 足 上 述 同 步 要 求 分 析 : 在 这 个 问 题 中, 有 两 组 进 程, 一 组 是 司 机 进 程, 另 一 组 是 售 票 员 进 程, 两 组 进 程 的 制 约 关 系 : 启 动 车 辆 行 驶 停 车 开 车 门 ( 旅 客 上 车 ) 关 车 门 启 动 车 辆 关 键 在 于 开 门 应 在 停 车 之 后, 启 动 车 辆 应 在 关 门 之 后 设 有 两 个 信 号 用 于 司 机 和 售 票 员 之 间 通 信, 一 个 是 Run, 另 一 个 是 Open,Run 等 于 1 表 示 可 以 开 车,Open 等 于 1 表 示

92 78 操 作 系 统 可 以 开 门 解 答 : S_Door 4 S_Stop 5 S_Stop 6 S_Door 综 合 题 4 系 统 有 三 个 进 程 Read Writel Write2, 共 享 一 个 整 数 缓 冲 器 b,b 中 每 次 只 能 存 放 一 个 整 数 Read 进 程 每 次 启 动 输 入 一 个 整 数 到 b 若 b 是 奇 数, 则 由 进 程 Write1 将 其 取 出 打 印 ; 若 b 是 偶 数, 则 由 进 程 Write2 将 其 取 出 打 印 规 定 输 入 与 打 印 整 数 的 个 数 和 次 序 完 全 一 致 要 求 : 1. 完 善 以 下 程 序, 在 下 列 A1 A2 B1 B2 处 填 入 有 关 语 句, 并 说 明 其 物 理 意 义 S,SO,SE:semaphore; b:integer; S:=1;SO:=0; SE:=0; Read 进 程 : do{ 从 输 入 设 备 读 一 整 数 到 X; P(S); b=x; if(b== 奇 数 )V(SO); else V(SE); }while(1); Write1 进 程 do{ (A1) Y=b; A2; print Y; }while(1); Write2 进 程 do{ (B1) Z=b; B2; print Z; }while(1); 2. 说 明 信 号 量 S SO SE 的 作 用 及 它 们 的 初 值 的 物 理 意 义 3. Read 进 程 中 V(SO) 与 V(SE) 对 调, 程 序 功 能 发 生 什 么 变 化 解 答 : 1.(A) 处 填 V(S), 物 理 意 义 : 唤 醒 R td 进 程 可 将 下 一 个 数 据 赋 给 B, 起 同 步 作 用 (B) 处 填 P(SE) 物 理 意 义 : 进 程 Write2 申 请 读 缓 冲 区 B 中 数 据 若 尚 未 放 入 一 个 偶 数, 则 等 待, 起 同 步 作 用

93 第 2 章 进 程 管 理 S 是 Read 进 程 到 Write1 和 Writc2 的 同 步 信 号, 初 值 为 1, 表 示 开 始 时 读 进 程 可 送 一 个 整 数 到 缓 冲 区 B; SO 是 Write1 与 Read 的 同 步 信 号 量 初 值 为 0, 表 示 开 始 时 Writel 没 有 可 取 的 整 数 即 Read 进 程 尚 未 读 一 个 整 数 送 入 缓 冲 区 B; SE 是 Write2 与 Read 的 同 步 信 号 量, 初 值 为 0, 表 示 开 始 时 Write2 没 有 可 取 的 整 数, 即 Read 进 程 尚 未 将 整 数 装 入 缓 冲 区 B 3. V(SO) 与 V(SE) 对 调, 程 序 功 能 变 成 Writel 进 程 读 偶 数 打 印, 而 Writc2 读 奇 数 打 印, 正 好 与 题 目 要 求 相 反 综 合 题 5 桌 上 有 一 个 盘 子, 每 一 次 只 能 放 入 一 个 水 果 现 有 许 多 苹 果 和 橘 子 一 家 四 口 人 各 行 其 职 爸 爸 的 动 作 : 负 责 取 苹 果, 然 后 将 苹 果 放 入 盘 子 中, 并 重 复 这 两 个 动 作 当 取 来 一 个 苹 果 后, 若 盘 子 中 允 许 放 入 水 果, 即 盘 子 为 空 则 将 苹 果 放 入 盘 子 中 ; 否 则 等 待, 一 直 等 到 盘 子 中 能 放 入 苹 果 为 止 妈 妈 的 动 作 : 负 责 取 橘 子, 然 后 将 橘 子 放 入 盘 子 中, 并 重 复 这 两 个 动 作 当 取 来 一 个 橘 子 后, 若 盘 子 中 允 许 放 入 水 果, 则 将 橘 子 放 入 盘 子 中 ; 否 则 等 待, 一 直 等 到 盘 子 中 能 放 入 橘 子 为 止 女 儿 的 动 作 : 负 责 从 盘 中 取 苹 果, 然 后 吃 苹 果, 并 重 复 这 两 个 动 作 若 盘 子 中 有 苹 果, 则 取 走 苹 果 ; 否 则 等 待, 一 直 等 到 盘 子 中 有 苹 果 为 止 儿 子 的 动 作 : 负 责 从 盘 中 取 橘 子, 然 后 吃 橘 子, 并 重 复 这 两 个 动 作 若 盘 子 中 有 橘 子, 则 取 走 橘 子 ; 否 则 等 待, 一 直 等 到 盘 子 中 有 橘 子 为 止 试 用 P V 操 作 写 出 他 们 四 人 之 间 的 同 步 算 法 分 析 : 考 查 进 程 间 的 同 步 和 互 斥, 我 们 不 妨 称 这 类 问 题 为 苹 果 橘 子 问 题, 这 也 是 考 研 中 比 较 常 见 的 一 类 题 目 解 答 : 记 录 型 信 号 量 解 决 苹 果 橘 子 问 题 plate : integer; sp:semaphore; /* 盘 子 里 可 以 放 几 个 水 果 */ sg1:semaphore; /* 盘 子 里 有 橘 子 */ sg2:semaphore; /* 盘 子 里 有 苹 果 */ sp := 1; /* 盘 子 里 允 许 放 一 个 水 果 */ sg1, := 0; /* 盘 子 里 没 有 橘 子 */ sg2 := 0; /* 盘 子 里 没 有 苹 果 */ Cobegin process father begin L1: 削 一 个 苹 果 ; P(sp); 把 苹 果 放 入 plate; V(sg2); goto L1; End; process mother begin L2: 剥 一 个 橘 子 ; 科 学 出 版 社

94 80 操 作 系 统 P(sp); 把 橘 子 放 入 plate; V(sg1); goto L2; End; process son begin L3: P(sg1); 从 plate 中 取 橘 子 ; V(sp); 吃 橘 子 ; goto L3; End; process daughter begin L4: P(sg2); 从 plate 中 取 苹 果 ; V(sp); 吃 苹 果 ; goto L4; End; coend 综 合 题 6 本 题 入 睡 的 理 发 师 的 问 题 : 理 发 店 有 两 个 屋 子, 一 个 是 顾 客 等 候 理 发 师 的 地 方, 设 置 有 n 把 椅 子 ; 一 个 是 理 发 师 理 发 的 理 发 室, 只 有 一 把 椅 子 若 没 有 顾 客 等 候 理 发, 则 理 发 师 入 睡 ; 若 理 发 店 人 满, 则 再 来 的 顾 客 离 开 ; 若 理 发 师 正 在 理 发, 则 顾 客 坐 在 椅 子 上 等 候 ; 若 一 个 顾 客 进 入 时 发 现 理 发 师 在 睡 觉, 则 顾 客 将 他 唤 醒 请 问 编 写 协 调 理 发 师 与 顾 客 之 间 关 系 的 程 序, 需 要 几 个 信 号 量, 信 号 量 所 代 表 的 意 义, 且 用 类 Pascal 语 言 或 C 语 言 写 出 程 序 分 析 : 本 题 考 查 进 程 间 的 同 步 与 互 斥 问 题 理 发 师 问 题 是 典 型 的 同 步 和 互 斥 问 题, 解 答 部 分 注 释 中 给 出 了 详 细 的 分 析 解 答 : 根 据 题 意, 可 设 置 如 下 的 信 号 量 : var waiting : integer; /* 等 候 理 发 的 顾 客 数 */ CHAIRS:integer; /* 为 顾 客 准 备 的 椅 子 数 */ customers, barbers,mutex : semaphore; customers:=0; barbers:=0; waiting:=0; mutex:=1; Procedure barber; begin L:P(cutomers); /* 若 无 顾 客, 理 发 师 睡 眠 */ P(mutex); /* 进 程 互 斥 */ waiting:=waiting 1; /* 等 候 顾 客 数 少 一 个 */ V(barbers); /* 理 发 师 去 为 一 个 顾 客 理 发 */

95 第 2 章 进 程 管 理 81 V(mutex); // 开 放 临 界 区 cut-hair(); // 正 在 理 发 goto L; End; procedure customer begin P(mutex); /* 进 程 互 斥 */ if waiting<chairs begin /* 看 看 有 没 有 空 椅 子 */ waiting := waiting+1; /* 等 候 顾 客 数 加 1*/ V(customers); /* 必 要 的 话 唤 醒 理 发 师 */ V(mutex); /* 开 放 临 界 区 */ P(barbers); /* 无 理 发 师, 顾 客 坐 着 养 神 */ End else V(mutex); /* 人 满 了, 走 吧!*/ End; 综 合 题 7 面 包 师 有 很 多 面 包, 由 n 个 销 售 人 员 推 销 每 位 顾 客 进 店 后 先 取 一 个 号, 并 且 等 待 叫 号 当 一 个 销 售 人 员 空 闲 下 来 时, 就 叫 下 一 个 号 试 设 计 一 个 使 销 售 人 员 和 顾 客 同 步 的 算 法 分 析 : 分 成 两 部 分 进 程 : 柜 员 进 程 和 顾 客 进 程 (1) 顾 客 进 门 后 P 信 息 量, 相 当 于 进 入 等 待 队 列 (2) 柜 员 间 互 斥 当 柜 员 空 闲 时, 进 入 互 斥 操 作 部 分, 放 入 一 个 等 待 的 顾 客, 退 出 互 斥 操 作 (3) 设 置 柜 员 状 态 变 量, 空 闲 为 1, 忙 碌 为 0, 顾 客 进 入 后 扫 描 状 态 变 量, 找 到 空 闲 的 柜 员 后 过 去 办 理 业 务 当 顾 客 扫 描 空 闲 柜 员 的 时 候 互 斥 虽 然 这 样 能 保 证 顾 客 到 空 闲 的 柜 员 处 办 理 业 务, 但 不 能 保 证 他 所 去 的 柜 员 是 叫 他 号 的 柜 员 (4) 需 要 考 虑 当 没 有 顾 客, 但 所 有 柜 员 进 程 都 启 动 的 时 候, 柜 员 需 要 等 待 顾 客 的 到 来 解 答 : 信 号 量 : ClientQueue:=0 /* 记 录 顾 客 等 待 的 队 列 */ Clerkmutex:=1 /* 柜 员 的 互 斥 信 息 量 */ Clientmutex:=1 /* 顾 客 的 互 斥 信 息 量 */ Customer:=0 /* 记 录 提 供 给 柜 员 可 以 办 理 业 务 的 客 户 的 数 量,*/ 同 时 在 客 户 少 于 n 时 表 示 等 待 客 户 的 柜 员 的 数 量 */ 程 序 : #typedef int semaphore semaphore ClientQueue=0; semaphore Customer=0; semaphore Clerkmutex=1; semaphore Clientmutex=1; 科 学 出 版 社

96 82 操 作 系 统 int ClerkState[n]; for(int i=0;i<n;i++) ClerkState[i]=1; void Client(){ P(ClientQueue); /* 每 个 顾 客 不 是 循 环 不 停 地 办 理 业 务, 所 以 认 为 不 需 要 循 环 语 句 */ P(Clientmutex); /* 扫 描 柜 员 期 间 互 斥, 以 防 与 后 面 的 顾 客 同 时 扫 描 到 同 一 柜 员 */ V(Customer); /* 表 示 提 供 一 个 可 供 服 务 的 客 户 */ for(int i=0;i<n;i++){ /* 扫 描 到 第 一 个 空 闲 的 柜 员 后 退 出, 即 到 该 柜 员 处 办 理 */ if(clerkstate[i]==1){ ClerkState[i]=0; break; } } V(Clientmutex); 到 第 i 个 柜 员 处 办 理 业 务 ; } void Clerk(int i){ while(1){ P(mutex); ClerkState[i]=1; V(ClientQueue) V(mutex); P(Customer); /* 等 待 可 供 服 务 的 客 户, 如 果 客 户 数 量 少 于 n, 柜 员 在 此 排 队 等 待 顾 客 的 到 来 */ } 2.10 习 题 一 选 择 题 1. 进 程 是 操 作 系 统 中 的 一 个 重 要 概 念, 进 程 是 一 个 具 有 一 定 独 立 功 能 的 程 序 在 某 个 数 据 集 合 上 的 一 次 A 进 程 是 一 个 B 概 念, 而 程 序 是 一 个 C 的 概 念 进 程 的 最 基 本 状 态 有 D 个 在 一 个 单 处 理 机 系 统 中, 若 有 6 个 用 户 进 程, 在 非 管 态 的 某 一 时 刻, 处 于 就 绪 状 态 的 用 户 进 程 最 多 有 E 个 选 择 : A. 1 单 独 操 作 2 关 联 操 作 3 进 行 活 动 4 并 发 活 动 B. 1 静 态 2 动 态 3 逻 辑 4 物 理 C. 1 物 理 2 逻 辑 3 动 态 4 静 态 D E 操 作 系 统 中 引 入 进 程 概 念 后 并 不 能

97 第 2 章 进 程 管 理 83 A. 提 高 资 源 利 用 率 B. 正 确 描 述 程 序 的 执 行 情 况 C. 提 高 用 户 编 程 能 力 D. 使 处 理 器 与 外 设 之 间 有 效 地 并 行 E. 允 许 一 个 程 序 被 多 个 用 户 调 用 3. 在 单 处 理 器 的 多 进 程 系 统 中, 进 程 什 么 时 候 占 用 处 理 器 和 能 占 用 多 长 时 间, 取 决 于 A. 进 程 相 应 的 程 序 段 的 长 度 B. 进 程 总 共 需 要 运 行 时 间 多 少 C. 进 程 自 身 和 进 程 调 度 策 略 D. 进 程 完 成 什 么 功 能 4. 建 立 多 进 程 的 主 要 目 的 是 提 高 的 利 用 率 A. 文 件 B. CPU C. 内 存 D. 外 设 5. 为 两 个 相 互 独 立 源 程 序 进 行 编 译 的 两 个 进 程, 它 们 之 间 的 关 系 正 确 的 是 A. 可 以 并 发 执 行, 两 者 逻 辑 上 有 依 赖 关 系 B. 可 以 并 发 执 行, 两 者 逻 辑 上 无 依 赖 关 系 C. 不 可 以 并 发 执 行, 但 两 者 逻 辑 上 有 依 赖 关 系 D. 不 可 以 并 发 执 行, 因 为 两 个 进 程 运 行 的 是 同 一 个 编 译 程 序 6. 有 若 干 并 发 进 程 均 将 一 个 共 享 变 量 count 中 的 值 减 1 一 次, 那 么 有 关 count 中 的 值 说 法 正 确 的 是 (1) 肯 定 有 不 正 确 的 结 果 (2) 肯 定 有 正 确 的 结 果 (3) 若 控 制 这 些 并 发 进 程 互 斥 执 行 count 加 1 操 作,count 中 的 值 正 确 A.(1) (3) B.(2) (3) C.(3) 7. 当 一 个 进 程 处 于 的 状 态 时, 称 为 等 待 状 态 D.(1) (2) (3) 的 说 法 均 不 正 确 A. 它 正 等 着 输 入 一 批 数 据 B. 它 正 等 着 协 作 进 程 的 一 个 消 息 C. 它 正 等 着 分 给 它 一 个 时 间 片 D. 它 正 等 着 进 入 内 存 8. 在 一 般 情 况 下, 下 述 进 程 状 态 的 转 换 中, 和 是 不 可 能 的 A. 运 行 态 就 绪 态 B. 等 待 态 运 行 态 C. 等 待 态 就 绪 态 D. 运 行 态 等 待 态 E. 就 绪 态 等 待 态 9. 引 入 挂 起 状 态 的 原 因 有 A. 终 端 用 户 的 请 求 B. 负 荷 调 节 的 需 要 C. 父 进 程 请 求 D. 操 作 系 统 的 需 要 E. 平 衡 各 队 列 中 的 进 程 控 制 块 10. 下 面 哪 一 个 不 会 引 起 进 程 创 建 A. 用 户 登 录 B. 作 业 调 度 C. 设 备 分 配 D. 应 用 请 求 11. 创 建 线 程 后 将 建 立 一 个 线 程 控 制 块, 不 是 块 必 须 包 含 的 内 容 科 学 出 版 社

98 84 操 作 系 统 A. 线 程 名 B. 内 存 地 址 C. 外 存 地 址 D. 读 写 权 限 12. 进 程 和 程 序 的 本 质 区 别 是 A. 顺 序 和 非 顺 序 执 行 指 令 B. 动 态 和 静 态 C. 轮 流 占 用 和 独 占 资 源 D. 可 见 和 不 可 见 13. 所 谓 可 再 入 程 序 是 指 A. 在 执 行 过 程 中 其 代 码 自 身 会 发 生 变 化 的 程 序 B. 无 限 循 环 程 序 C. 不 能 够 被 多 个 程 序 同 时 调 用 的 程 序 D. 能 被 多 个 进 程 共 享 的 程 序 14. 若 信 号 量 初 值 为 3, 当 前 值 为 -1, 表 示 该 信 号 量 上 有 个 进 程 在 等 待 A. 4 B. 1 C. 2 D 如 果 进 程 对 信 号 量 S 执 行 V 操 作, 则 信 号 量 S 的 值 将 A. 加 1 B. 减 1 C. 等 于 0 D. 大 于 在 操 作 系 统 中, 临 界 区 指 A. 一 个 缓 冲 区 B. 一 个 数 据 区 C. 同 步 机 构 D. 一 段 程 序 17. 若 系 统 中 有 五 个 并 发 进 程 涉 及 某 个 相 同 的 变 量 A, 则 变 量 A 的 相 关 临 界 区 是 由 个 临 界 区 构 成 A. 1 B. 3 C. 5 D 信 箱 是 一 种 通 信 方 式 A. 会 合 B. 直 接 C. 间 接 D. 低 级 19. 两 个 合 作 进 程 无 法 利 用 交 换 数 据 A. 数 据 库 B. 文 件 系 统 C. 共 享 内 存 D. 高 级 语 言 程 序 设 计 中 的 全 程 变 量 E. 消 息 传 递 系 统 20. 下 面 哪 个 不 是 同 步 机 制 应 遵 循 的 准 则 A. 让 权 等 待 B. 空 闲 让 进 C. 忙 则 等 待 D. AND 条 件 二 填 空 题 1. 进 程 从 结 构 上 讲, 分 为 几 部 分, 其 中 是 进 程 存 在 的 唯 一 标 志 2. 操 作 系 统 中, 进 程 可 以 分 为 进 程 和 进 程 两 类 3. 程 序 并 发 执 行 时 失 去 程 序 的 封 闭 性 的 主 要 原 因 是

99 第 2 章 进 程 管 理 进 程 在 并 发 的 环 境 下 运 行 时 具 有 间 断 性 和 等 的 基 本 特 征 5. 在 一 个 单 处 理 系 统 中, 若 有 5 个 用 户 进 程, 则 处 于 就 绪 状 态 的 用 户 进 程 最 多 有 个, 最 少 有 个 6. 进 程 控 制 原 语 主 要 有 6 种, 即 7. 在 引 入 线 程 的 操 作 系 统 中, 把 进 程 作 为 的 基 本 单 位, 而 把 线 程 作 为 的 基 本 单 位 8. 操 作 系 统 中, 对 信 号 量 S 的 P 原 语 操 作 定 义 中, 使 进 程 进 入 相 应 等 待 队 列 等 待 的 条 件 是 9. 信 号 量 被 广 泛 用 于 三 个 目 的 是 和 描 述 前 趋 关 系 10. 利 用 信 号 量 机 制 实 现 互 斥, 一 般 将 信 号 量 的 初 值 设 为, 并 将 进 程 的 临 界 区 置 于 操 作 和 之 间 11. 低 级 的 PC 机 制 有 和 等 12. 在 进 程 通 信 中, 消 息 的 一 般 形 式 为 四 个 部 分 组 成, 即 和 13. 为 实 现 消 息 缓 冲 通 信, 在 PCB 中 应 增 加 和 三 个 数 据 项 14. 进 程 的 和 反 映 了 进 程 间 直 接 制 约 和 间 接 制 约 的 关 系 三 简 答 题 1. 什 么 是 前 趋 图? 2. 为 什 么 程 序 的 并 发 执 行 会 产 生 间 断 性 特 征? 3. 在 操 作 系 统 中 为 什 么 要 引 入 进 程 的 概 念? 它 会 产 生 什 么 样 的 影 响? 4. 试 从 动 态 性 并 发 性 和 独 立 性 上 比 较 进 程 和 程 序 5. 试 说 明 进 程 在 三 个 基 本 状 态 之 间 转 换 的 基 本 原 因 6. 试 说 明 引 起 进 程 创 建 和 撤 销 的 主 要 事 件 及 其 要 完 成 的 工 作 7. 同 步 结 构 应 遵 循 哪 些 基 本 准 则? 为 什 么? 8. 试 利 用 记 录 型 信 号 量 写 出 一 个 不 会 出 现 死 锁 的 哲 学 家 进 餐 问 题 的 算 法 9. 试 说 明 管 程 由 哪 几 部 分 组 成, 为 什 么 要 引 入 条 件 变 量? 10. 试 对 进 程 和 线 程 进 行 比 较 11. 现 代 操 作 系 统 一 般 提 供 多 进 程 运 行 环 境, 回 答 以 下 问 题 : (1) 为 支 持 多 进 程 的 并 发 执 行, 系 统 必 须 建 立 哪 些 关 于 进 程 的 数 据 结 构? (2) 为 支 持 进 程 状 态 的 变 迁, 系 统 至 少 应 提 供 哪 些 进 程 控 制 原 语? (3) 执 行 每 一 个 进 程 控 制 原 语 时, 进 程 状 态 发 生 什 么 变 化? 相 应 的 数 据 结 构 发 生 什 么 变 化? 12. 列 出 三 个 引 起 进 程 阻 塞 和 唤 醒 的 事 件, 并 写 出 唤 醒 原 语 的 执 行 步 骤 科 学 出 版 社

100 第 3 章 处 理 机 调 度 与 死 锁 在 多 道 程 序 环 境 下, 进 程 数 目 往 往 多 于 处 理 器 的 数 目 这 就 要 求 系 统 能 按 某 种 算 法, 动 态 地 把 处 理 机 分 配 给 就 绪 队 列 中 的 一 个 进 程, 使 之 执 行 分 配 处 理 机 的 任 务 是 由 处 理 机 调 度 程 序 完 成 的 由 于 处 理 机 是 计 算 机 中 最 重 要 的 资 源, 提 高 处 理 机 的 利 用 率 即 改 善 系 统 性 能, 在 很 大 程 度 上 取 决 于 处 理 机 调 度 性 能 的 好 坏, 因 而, 处 理 机 调 度 便 成 为 操 作 系 统 设 计 的 核 心 问 题 之 一 本 章 将 对 处 理 机 调 度 作 较 详 细 的 阐 述 考 研 大 纲 (1) 处 理 机 调 度 1) 调 度 的 基 本 概 念 2) 调 度 时 机 切 换 与 过 程 3) 调 度 的 基 本 准 则 4) 调 度 方 式 先 来 先 服 务 调 度 算 法 ; 短 作 业 ( 短 任 务 短 进 程 短 线 程 ) 优 先 调 度 算 法 ; 时 间 片 轮 转 调 度 算 法 优 先 级 调 度 算 法 ; 高 响 应 比 优 先 调 度 算 法 ; 多 级 反 馈 队 列 调 度 算 法 (2) 死 锁 1) 死 锁 的 概 念 2) 死 锁 处 理 策 略 3) 死 锁 预 防 4) 死 锁 避 免 系 统 安 全 状 态, 银 行 家 算 法 5) 死 锁 检 测 和 解 除 3.1 处 理 机 调 度 的 基 本 概 念 在 多 道 程 序 系 统 中, 一 个 作 业 被 提 交 后, 必 须 经 过 处 理 机 调 度 后, 方 能 执 行 对 于 批 量 型 作 业 而 言, 通 常 需 要 经 历 作 业 调 度 ( 高 级 调 度 ) 和 进 程 调 度 ( 低 级 调 度 ) 两 个 过 程 后, 方 能 获 得 处 理 机 ; 对 于 终 端 型 作 业, 通 常 只 经 过 进 程 调 度 在 较 完 善 的 操 作 系 统 中, 往 往 还 设 置 了 中 级 调 度 对 于 上 述 每 一 级 调 度, 又 都 采 用 了 不 同 的 调 度 方 式 和 算 法 本 节 主 要 对 处 理 机 调 度 的 基 本 概 念 作 详 细 的 阐 述 高 级 中 级 和 低 级 调 度 一 个 批 处 理 作 业, 从 进 入 系 统 并 驻 留 在 外 存 的 后 备 队 列 上 开 始, 直 至 作 业 运 行 完 成,

101 第 3 章 处 理 机 调 度 与 死 锁 87 可 能 要 经 历 下 述 三 级 调 度 1. 高 级 调 度 (High Scheduling) 高 级 调 度 又 称 为 作 业 调 度 或 长 程 调 度, 用 于 决 定 把 外 存 上 处 于 后 备 队 列 中 的 那 些 作 业 调 入 内 存, 并 为 它 们 创 建 进 程, 分 配 资 源, 然 后 将 进 程 排 在 就 绪 队 列 上 准 备 执 行 因 此, 有 时 也 把 作 业 调 度 称 为 接 纳 调 度 在 每 次 执 行 作 业 调 度 时, 都 需 做 出 以 下 两 个 决 定 1) 接 纳 多 少 个 作 业 作 业 调 度 每 次 要 接 纳 多 少 个 作 业 进 入 内 存, 取 决 于 多 道 程 序 度, 即 允 许 多 少 个 作 业 同 时 在 内 存 中 运 行 当 内 存 中 同 时 运 行 的 作 业 数 目 太 多 时, 可 能 会 影 响 到 系 统 的 服 务 质 量 因 此, 多 道 程 序 度 的 确 定 应 根 据 系 统 的 规 模 和 运 行 速 度 等 情 况, 做 适 当 的 折 中 2) 接 纳 哪 些 作 业 应 将 哪 些 作 业 从 外 存 调 入 内 存, 取 决 于 采 用 的 调 度 算 法 2. 中 级 调 度 (Intermediate-Level Scheduling) 中 级 调 度 又 称 中 程 调 度 (Medium-Term Scheduling) 引 入 中 级 调 度 的 主 要 目 的, 是 为 了 提 高 内 存 利 用 率 和 系 统 吞 吐 量 为 此, 应 使 那 些 暂 时 不 能 运 行 的 进 程 不 再 占 用 宝 贵 的 内 存 资 源, 而 将 它 们 调 至 外 存 上 去 等 待, 把 此 时 的 进 程 状 态 称 为 就 绪 驻 外 存 状 态 或 挂 起 状 态 当 这 些 进 程 又 具 备 运 行 条 件, 且 内 存 又 稍 有 空 闲 时, 由 中 级 调 度 来 决 定 把 外 存 上 的 那 些 具 备 运 行 条 件 的 就 绪 进 程, 重 新 调 入 内 存, 并 修 改 其 状 态 为 就 绪 状 态, 挂 在 就 绪 队 列 上 等 待 进 程 调 度 3. 低 级 调 度 (Low Level Scheduling) 通 常 也 把 低 级 调 度 称 为 进 程 调 度 或 短 程 调 度, 用 来 决 定 就 绪 队 列 中 哪 个 进 程 应 获 得 处 理 机, 然 后 再 由 分 派 程 序 执 行 把 处 理 机 分 配 给 该 进 程 的 具 体 操 作 进 程 调 度 是 最 基 本 的 一 种 调 度, 在 三 种 类 型 的 操 作 系 统 中, 都 必 须 配 置 这 级 调 度 进 程 调 度 可 采 用 下 述 两 种 调 度 方 式 1) 非 抢 占 方 式 (Non-preemptive Mode) 在 采 用 这 种 调 度 方 式 时, 一 旦 把 处 理 机 分 配 给 某 进 程 后, 便 让 该 进 程 一 直 执 行, 直 至 执 行 完 成 或 发 生 某 事 件 而 被 阻 塞 时, 才 把 处 理 机 分 配 给 其 他 进 程 在 采 用 非 抢 占 调 度 方 式 时, 可 能 引 起 进 程 调 度 的 因 素 归 结 如 下 :1 正 在 执 行 的 进 程 执 行 完 毕, 或 因 发 生 某 事 件 而 不 能 再 继 续 执 行 ;2 执 行 中 的 进 程 因 提 出 I/O 请 求 而 暂 停 执 行 ;3 在 进 程 通 信 或 同 步 过 程 中 执 行 了 某 种 原 语 操 作, 如 P 操 作 (wait 操 作 ) Block 原 语 Wakeup 原 语 等 这 种 调 度 方 式 的 优 点 是 实 现 简 单 系 统 开 销 小, 适 用 于 大 多 数 的 批 处 理 系 统 环 境 但 它 难 以 满 足 紧 急 任 务 的 要 求 立 即 执 行, 因 而 可 能 会 造 成 难 以 预 料 的 后 果 显 然, 在 要 求 比 较 严 格 的 实 时 系 统 中, 不 宜 采 用 这 种 调 度 方 式 2) 抢 占 方 式 (Preemptive Mode) 这 种 调 度 方 式, 允 许 调 度 程 序 根 据 某 种 原 则, 去 暂 停 某 个 正 在 执 行 的 进 程, 将 已 分 配 给 该 进 程 的 处 理 机 分 配 给 其 他 进 程 抢 占 的 原 则 有 以 下 几 个 方 面 科 学 出 版 社

102 88 操 作 系 统 (1) 优 先 权 原 则 通 常 是 对 一 些 重 要 和 紧 急 的 作 业, 赋 予 较 高 的 优 先 权 当 这 种 作 业 到 达 时, 如 果 其 优 先 权 比 正 在 执 行 进 程 的 优 先 权 高, 便 停 止 正 在 执 行 的 进 程, 将 处 理 机 分 配 给 优 先 级 更 高 的 进 程, 使 之 执 行, 即 允 许 优 先 权 高 的 新 进 程 抢 占 当 前 进 程 的 处 理 机 (2) 短 作 业 ( 进 程 ) 优 先 原 则 当 新 到 达 的 作 业 ( 进 程 ) 比 正 在 执 行 的 作 业 ( 进 程 ) 短 时, 将 暂 停 当 前 长 作 业 ( 进 程 ) 的 执 行, 将 处 理 机 分 配 给 短 作 业 ( 进 程 ) 执 行 (3) 时 间 片 原 则 各 进 程 按 时 间 片 运 行, 当 一 个 时 间 片 用 完 后, 便 停 止 该 进 程 的 执 行 而 重 新 进 行 调 度 调 度 队 列 模 型 上 述 任 何 一 种 调 度, 都 将 涉 及 到 进 程 队 列, 由 此 形 成 了 三 种 类 型 的 调 度 队 列 模 型 1. 仅 有 进 程 调 度 的 调 度 队 列 模 型 在 分 时 系 统 中, 通 常 仅 设 置 了 进 程 调 度, 用 户 键 入 的 命 令 和 数 据, 都 直 接 送 入 内 存 对 于 命 令, 是 由 操 作 系 统 为 之 建 立 一 个 进 程 系 统 把 处 于 就 绪 状 态 的 进 程 组 织 成 栈 树 或 无 序 链 表, 至 于 到 底 采 用 哪 种 形 式, 则 与 操 作 系 统 的 类 型 和 采 用 的 调 度 算 法 有 关 例 如, 在 分 时 系 统 中, 常 把 就 绪 进 程 组 织 成 先 进 先 出 ( 简 写 FIFO) 队 列 形 式 每 当 操 作 系 统 创 建 一 个 新 进 程 时, 便 将 其 排 在 就 绪 队 列 的 末 尾, 然 后 按 时 间 片 轮 转 的 方 式 运 行 每 个 进 程 在 执 行 时, 都 可 能 出 现 以 下 三 种 情 况 (1) 任 务 在 给 定 时 间 片 内 已 经 完 成, 该 进 程 便 在 释 放 处 理 机 后 进 入 完 成 状 态 (2) 任 务 在 本 次 分 得 的 时 间 片 内 尚 未 完 成, 操 作 系 统 便 将 该 任 务 再 放 入 就 绪 队 列 的 末 尾 (3) 在 执 行 期 间, 进 程 因 某 事 件 而 阻 塞 后, 被 操 作 系 统 放 入 阻 塞 队 列 图 3-1 表 示 仅 具 有 进 程 调 度 的 调 度 队 列 模 型 图 3-1 仅 具 有 进 程 调 度 的 调 度 队 列 模 型 2. 具 有 高 级 和 低 级 调 度 的 调 度 队 列 模 型 在 批 处 理 系 统 中, 不 仅 需 要 进 程 调 度, 而 且 还 需 要 作 业 调 度, 由 后 者 按 一 定 的 作 业 调 度 算 法, 从 外 存 的 后 备 队 列 中 选 择 一 批 作 业 调 入 内 存, 并 为 它 们 建 立 进 程, 送 入 就 绪 队 列, 然 后 进 程 按 照 一 定 的 进 程 调 度 算 法, 选 择 一 个 进 程, 把 处 理 机 分 配 给 进 程 图 3-2 表 示 具 有 高 低 两 级 调 度 的 调 度 队 列 模 型

103 第 3 章 处 理 机 调 度 与 死 锁 89 图 3-2 具 有 高 低 两 级 调 度 的 调 度 队 列 模 型 3. 同 时 具 有 三 级 调 度 的 调 度 队 列 模 型 当 在 操 作 系 统 中 引 入 中 级 调 度 后, 人 们 可 把 进 程 的 就 绪 状 态 分 为 内 存 就 绪 和 外 存 就 绪 类 似 地, 也 可 把 阻 塞 状 态 进 一 步 分 成 内 存 阻 塞 和 外 存 阻 塞 两 种 状 态 在 调 出 操 作 的 作 用 下, 可 使 进 程 状 态 由 内 存 就 绪 变 为 外 存 就 绪, 由 内 存 阻 塞 变 为 外 存 阻 塞 ; 在 中 级 调 度 的 作 用 下, 又 可 使 外 存 就 绪 变 为 内 存 就 绪 图 3-3 表 示 具 有 三 级 调 度 的 调 度 队 列 模 型 图 3-3 具 有 三 级 调 度 的 调 度 队 列 模 型 选 择 调 度 方 式 和 调 度 算 法 的 若 干 准 则 科 学 出 版 社 在 一 个 操 作 系 统 的 设 计 中, 如 何 选 择 调 度 方 式 和 算 法 在 很 大 程 度 上 取 决 于 操 作 系 统 的 类 型 及 目 标 如 实 时 系 统 分 时 系 统 和 批 处 理 系 统 通 常 都 采 用 不 同 的 调 度 方 式 和 算 法 选 择 不 同 调 度 方 式 和 算 法 的 准 则 有 面 向 用 户 和 面 向 系 统 两 方 面

104 90 操 作 系 统 1. 面 向 用 户 的 准 则 这 是 为 了 满 足 用 户 的 需 求 所 遵 循 的 一 些 准 则 其 中, 比 较 重 要 的 有 以 下 几 点 (1) 周 转 时 间 短 通 常 把 周 转 时 间 的 长 短 作 为 评 价 批 处 理 系 统 的 性 能 选 择 作 业 调 度 方 式 与 算 法 的 重 要 准 则 之 一 所 谓 周 转 时 间, 是 指 从 作 业 提 交 系 统 开 始, 到 作 业 完 成 为 止 的 这 段 时 间 间 隔 包 括 四 部 分 时 间 : 作 业 在 外 存 后 备 队 列 上 等 待 调 度 的 时 间, 进 程 在 进 程 就 绪 队 列 上 等 待 进 程 调 度 的 时 间, 进 程 在 CPU 上 的 执 行 时 间, 以 及 进 程 等 待 I/O 操 作 的 时 间 对 每 个 用 户 而 言, 都 希 望 自 己 作 业 的 周 转 时 间 最 短 ; 而 对 于 系 统 而 言, 则 总 是 希 望 能 使 平 均 周 转 时 间 最 短 平 均 周 转 时 间 可 描 述 为 i 1 Ti n i 1 T 作 业 的 周 转 时 间 T 与 系 统 为 它 提 供 服 务 的 时 间 T s 之 比, 即 W=T/T s, 称 为 带 权 周 转 时 间, 而 平 均 带 权 周 转 时 间 则 可 表 示 为 n 1 T i W n i 1 T Si (2) 响 应 时 间 快 常 把 响 应 时 间 快 慢 作 为 评 价 分 时 系 统 的 性 能 所 谓 响 应 时 间, 是 指 用 户 通 过 键 盘 提 交 一 个 请 求 开 始 到 系 统 首 次 产 生 响 应 为 止 的 时 间 它 包 括 三 部 分 的 时 间 : 从 键 盘 输 入 信 息 的 时 间, 处 理 器 对 输 入 信 息 进 行 处 理 的 时 间, 以 及 所 形 成 的 信 息 送 回 终 端 显 示 器 的 时 间 (3) 截 止 时 间 的 保 证 这 是 评 价 实 时 系 统 性 能 的 主 要 指 标, 因 而 是 选 择 实 时 调 度 算 法 的 重 要 准 则 所 谓 截 止 时 间, 是 指 某 任 务 开 始 执 行 的 最 迟 时 间, 或 必 须 完 成 的 最 迟 时 间 对 于 严 格 的 实 时 系 统, 必 须 保 证 这 一 点, 否 则 可 能 造 成 难 以 预 料 的 后 果 (4) 优 先 权 准 则 在 批 处 理 系 统 分 时 系 统 实 时 系 统 中 选 择 调 度 算 法 时, 都 可 遵 循 优 先 权 准 则, 以 便 让 某 些 紧 急 的 作 业 得 到 及 时 处 理 在 要 求 较 严 格 的 场 合, 往 往 还 需 选 择 抢 占 式 的 调 度 方 式, 才 能 保 证 紧 急 作 业 得 到 及 时 处 理 2. 面 向 系 统 的 准 则 为 了 满 足 系 统 要 求 而 遵 循 的 一 些 准 则 中, 较 重 要 的 有 以 下 几 点 (1) 系 统 吞 吐 量 高 系 统 的 吞 吐 量 是 指 系 统 在 单 位 时 间 内 完 成 的 作 业 数, 是 评 价 批 处 理 系 统 的 重 要 指 标 之 一, 因 而 它 与 批 处 理 作 业 的 平 均 长 度 具 有 密 切 关 系 作 业 调 度 的 方 式 和 算 法, 对 吞 吐 量 的 大 小 将 产 生 重 要 影 响 (2) 处 理 机 利 用 率 好 对 于 大 中 型 多 用 户 系 统, 由 于 CPU 价 格 十 分 昂 贵, 致 使 处 理 机 的 利 用 率 成 为 衡 量 系 统 性 能 的 重 要 指 标 之 一 ; 而 调 度 方 式 和 调 度 算 法 对 处 理 机 的 利 用 率 起 着 十 分 重 要 的 作 用 (3) 各 类 资 源 的 平 衡 利 用 在 大 中 型 系 统 中, 不 仅 要 使 处 理 机 的 利 用 率 高, 而 且 还 应 能 有 效 地 利 用 其 他 各 类 资 源, 如 内 存 外 存 和 I/O 设 备 等 选 择 适 当 的 调 度 方 式 和 算 法, 能 够 保 持 各 类 系 统 资 源 处 于 忙 碌 状 态 但 对 于 微 型 机 和 某 些 实 时 系 统, 该 准 则 并 不 重 要

105 第 3 章 处 理 机 调 度 与 死 锁 调 度 算 法 在 操 作 系 统 中 调 度 的 实 质 是 一 种 资 源 分 配, 因 而 调 度 算 法 是 指 根 据 系 统 的 资 源 分 配 策 略 所 规 定 的 资 源 分 配 算 法 对 于 不 同 的 系 统 和 系 统 目 标, 通 常 采 用 不 同 的 调 度 算 法 在 目 前 存 在 的 调 度 算 法 中, 有 的 适 用 于 作 业 调 度, 有 的 适 用 于 进 程 调 度, 也 有 些 算 法 既 适 用 于 作 业 调 度, 也 适 用 于 进 程 调 度 先 来 先 服 务 和 短 作 业 ( 进 程 ) 优 先 调 度 算 法 1. 先 来 先 服 务 调 度 算 法 先 来 先 服 务 (FCFS) 是 一 种 最 简 单 的 调 度 算 法, 该 算 法 既 适 用 于 进 程 调 度, 也 适 用 于 作 业 调 度 当 在 作 业 中 采 用 该 算 法 时, 每 次 调 度 都 是 从 后 备 作 业 队 列 中, 选 择 一 个 或 多 个 最 先 进 入 该 队 列 的 作 业, 将 它 们 调 入 内 存, 为 它 们 分 配 资 源, 创 建 进 程, 然 后 放 入 就 绪 队 列 在 进 程 调 度 中 采 用 FCFS 时, 每 次 调 度 都 是 从 就 绪 队 列 中, 选 择 一 个 最 先 进 入 该 队 列 的 进 程, 为 之 分 配 处 理 机 资 源, 使 之 运 行 FCFS 算 法 比 较 适 合 长 作 业 ( 进 程 ), 而 不 适 于 短 作 业 ( 进 程 ) 如 表 3-1 给 出 了 A B C D 四 个 作 业 的 相 关 属 性 表 3-1 A B C D 四 个 作 业 对 应 相 关 属 性 进 程 名 到 达 时 间 服 务 时 间 开 始 执 行 时 间 完 成 时 间 周 转 时 间 带 权 周 转 时 间 A B C D 从 表 中 可 看 出, 短 作 业 C 的 带 权 周 转 时 间 高 达 100, 这 是 不 能 容 忍 的 ; 而 长 作 业 D 的 带 权 周 转 时 间 仅 为 1.99 据 此 可 知,FCFS 调 度 算 法 适 用 于 CPU 繁 忙 型 的 作 业, 而 不 适 用 于 I/O 繁 忙 型 的 作 业 在 此, 我 们 通 过 一 个 例 子 来 说 明 FCFS 调 度 算 法 的 性 能 图 3-4(a) 给 出 了 五 个 进 程 A B C D E 的 相 关 属 性, 利 用 FCFS 调 度 算 法 计 算 出 五 个 进 程 的 带 权 周 转 时 间 科 学 出 版 社 图 3-4 FCFS(a) 和 SJF(b) 调 度 算 法 的 性 能

106 92 操 作 系 统 2. 短 作 业 ( 进 程 ) 优 先 调 度 算 法 短 作 业 ( 进 程 ) 优 先 调 度 算 法 SJ(P)F, 是 指 对 短 作 业 或 短 进 程 优 先 调 度 的 算 法 它 们 可 以 分 别 用 于 作 业 调 度 和 进 程 调 度 短 作 业 优 先 (SJF) 的 调 度 算 法, 是 从 后 备 队 列 中 选 择 一 个 或 若 干 个 估 计 运 行 时 间 最 短 的 作 业, 将 它 们 调 入 内 存 运 行 而 短 进 程 优 先 (SPF) 调 度 算 法, 则 是 从 就 绪 队 列 中 选 出 一 估 计 运 行 时 间 最 短 的 进 程, 将 处 理 机 分 配 给 它, 使 它 立 即 执 行 并 一 直 执 行 到 完 成, 或 发 生 某 事 件 而 被 阻 塞 放 弃 处 理 机 时, 再 重 新 调 度 为 了 和 FCFS 调 度 算 法 进 行 比 较, 我 们 仍 利 用 FCFS 算 法 中 所 使 用 的 实 例, 并 采 用 SJ(P)F 算 法 重 新 进 行 调 度, 结 果 如 图 3-4(b) 所 示 比 较 结 果, 说 明 SJF 调 度 算 法 能 有 效 地 降 低 作 业 的 平 均 等 待 时 间, 提 高 系 统 吞 吐 量 SJ(P)F 调 度 算 法 也 存 在 不 容 忽 视 的 缺 点 (1) 该 算 法 对 长 作 业 不 利, 如 作 业 C 的 周 转 时 间 由 10 增 至 16, 其 带 权 周 转 时 间 由 2 增 至 3.1 更 严 重 的 是, 如 果 有 一 长 作 业 ( 进 程 ) 进 入 系 统 的 后 备 队 列 ( 就 绪 队 列 ), 由 于 调 度 程 序 总 是 优 先 调 度 那 些 ( 即 使 是 后 进 来 的 ) 短 作 业 ( 进 程 ), 将 导 致 长 作 业 ( 进 程 ) 长 期 不 被 调 度 (2) 该 算 法 完 全 未 考 虑 作 业 的 紧 迫 程 度, 因 而 不 能 保 证 紧 迫 性 作 业 ( 进 程 ) 会 被 及 时 处 理 (3) 由 于 作 业 ( 进 程 ) 的 长 短 只 是 根 据 用 户 所 提 供 的 估 计 执 行 时 间 而 定 的, 而 用 户 又 可 能 会 有 意 或 无 意 地 缩 短 其 作 业 的 估 计 运 行 时 间, 致 使 该 算 法 不 一 定 能 真 正 做 到 短 作 业 优 先 调 度 高 优 先 权 优 先 调 度 算 法 1. 优 先 权 调 度 算 法 的 类 型 为 了 照 顾 紧 迫 型 作 业, 使 之 在 进 入 系 统 后 便 获 得 优 先 处 理, 引 入 了 最 高 优 先 权 优 先 (FPF) 调 度 算 法 此 算 法 常 被 用 于 批 处 理 系 统 中, 作 为 作 业 调 度 算 法, 也 作 为 多 种 系 统 的 进 程 调 度 算 法 在 作 为 进 程 调 度 算 法 时, 该 算 法 是 把 处 理 机 分 配 给 就 绪 队 列 中 优 先 权 最 高 的 进 程, 这 时, 又 可 把 算 法 分 成 以 下 两 种 1) 非 抢 占 式 优 先 权 调 度 算 法 在 这 种 方 式 下, 系 统 一 旦 把 处 理 机 分 配 给 就 绪 队 列 中 优 先 权 最 高 的 进 程 后, 该 进 程 便 一 直 执 行 下 去, 直 至 完 成 ; 或 因 发 生 某 事 件 使 该 进 程 放 弃 处 理 机 时, 系 统 方 可 再 将 处 理 机 重 新 分 配 给 另 一 优 先 权 最 高 的 进 程 这 种 调 度 算 法 主 要 用 于 批 处 理 系 统 中, 也 可 用 于 某 些 对 实 时 性 要 求 不 严 格 的 实 时 系 统 中 2) 抢 占 式 优 先 权 调 度 算 法 在 这 种 方 式 下, 系 统 同 样 是 把 处 理 机 分 配 给 优 先 权 最 高 的 进 程, 使 之 执 行 但 在 其 执 行 期 间, 只 要 又 出 现 了 另 一 个 优 先 权 更 高 的 进 程, 进 程 调 度 程 序 就 立 即 停 止 当 前 进 程 ( 原 优 先 权 最 高 的 进 程 ) 的 执 行, 重 新 将 处 理 机 分 配 给 新 到 的 优 先 权 最 高 的 进 程 因 此, 在 采 用 这 种 调 度 算 法 时, 每 当 系 统 中 出 现 一 个 新 的 就 绪 进 程 i 时, 就 将 其 优 先 权 Pi 与 正 在 执 行 的 进 程 j 的 优 先 权 Pj 进 行 比 较 如 果 Pi Pj, 原 进 程 Pj 便 继 续 执 行 ; 但 如 果 是

107 第 3 章 处 理 机 调 度 与 死 锁 93 Pi>Pj, 则 立 即 停 止 Pj 的 执 行, 做 进 程 切 换, 使 i 进 程 投 入 执 行 显 然, 这 种 抢 占 式 的 优 先 权 调 度 算 法, 能 更 好 地 满 足 紧 迫 作 业 的 要 求, 故 而 常 用 于 要 求 比 较 严 格 的 实 时 系 统 中, 以 及 对 性 能 要 求 较 高 的 批 处 理 和 分 时 系 统 中 2. 优 先 权 的 类 型 对 于 最 高 优 先 权 优 先 调 度 算 法, 其 关 键 在 于 : 它 是 使 用 静 态 优 先 权 还 是 用 动 态 优 先 权, 以 及 如 何 确 定 进 程 的 优 先 权 1) 静 态 优 先 权 静 态 优 先 权 是 在 创 建 进 程 时 确 定 的, 且 在 进 程 的 整 个 运 行 期 间 保 持 不 变 一 般 地, 优 先 权 是 利 用 某 一 范 围 内 的 一 个 整 数 来 表 示 的, 例 如,0~7 或 0~255 中 的 某 一 整 数, 又 把 该 整 数 称 为 优 先 数 只 是 具 体 用 法 各 异 : 有 的 系 统 用 0 表 示 最 高 优 先 权, 当 数 值 愈 大 时, 其 优 先 权 就 愈 低 ; 而 有 的 系 统 恰 恰 相 反 确 定 进 程 优 先 权 的 依 据 有 如 下 三 个 方 面 (1) 进 程 类 型 通 常, 系 统 进 程 ( 如 接 收 进 程 对 换 进 程 ) 的 优 先 权 高 于 一 般 用 户 的 优 先 权 (2) 进 程 对 资 源 的 需 求 如 进 程 的 估 计 执 行 时 间 及 内 存 需 求 量 的 多 少, 对 这 些 要 求 少 的 进 程 应 赋 予 较 高 的 优 先 权 (3) 用 户 要 求 这 是 由 用 户 进 程 的 紧 迫 程 度 及 所 付 的 费 用 多 少 来 决 定 优 先 权 的 2) 动 态 优 先 权 动 态 优 先 权 是 指 在 创 建 进 程 时 所 赋 予 的 优 先 权, 是 可 以 随 进 程 的 推 进 或 随 其 等 待 时 间 的 增 加 而 改 变 的, 以 便 获 得 更 好 的 调 度 性 能 例 如, 我 们 可 以 规 定, 在 就 绪 队 列 中 的 进 程, 随 其 等 待 时 间 的 增 长, 其 优 先 权 以 速 率 a 提 高 若 所 有 的 进 程 都 具 有 相 同 的 优 先 权 初 值, 则 显 然 是 最 先 进 入 就 绪 队 列 的 进 程, 将 因 其 动 态 优 先 权 变 得 最 高 而 优 先 获 得 处 理 机, 此 即 FCFS 算 法 若 所 有 的 就 绪 进 程 具 有 各 不 相 同 的 优 先 权 初 值, 那 么, 对 于 优 先 权 初 值 低 的 进 程, 在 等 待 了 足 够 的 时 间 后, 其 优 先 权 便 可 能 升 为 最 高, 从 而 可 以 获 得 处 理 机 当 采 用 抢 占 式 优 先 权 调 度 算 法 时, 如 果 再 规 定 当 前 进 程 的 优 先 权 以 速 率 b 下 降, 则 可 防 止 一 个 长 作 业 长 期 地 垄 断 处 理 机 3. 高 响 应 比 优 先 调 度 算 法 科 学 出 版 社 在 批 处 理 系 统 中, 短 作 业 优 先 算 法 是 一 种 比 较 好 的 算 法, 其 主 要 不 足 之 处, 是 长 作 业 的 运 行 得 不 到 保 证 如 果 我 们 为 每 个 作 业 引 入 前 面 所 述 的 动 态 优 先 权, 并 使 作 业 的 优 先 级 随 着 等 待 时 间 的 增 加 而 以 速 率 a 提 高, 则 可 解 决 此 问 题 优 先 权 的 变 化 规 律 可 描 述 为 等 待 时 间 要 求 服 务 时 间 优 先 权 要 求 服 务 时 间 由 于 等 待 时 间 与 服 务 时 间 之 和 就 是 系 统 对 该 作 业 的 响 应 时 间, 故 该 优 先 权 又 相 当 于 响 应 比 RP 据 此, 又 可 表 示 为 等 待 时 间 要 求 服 务 时 间 响 应 时 间 优 先 权 要 求 服 务 时 间 要 求 服 务 时 间 由 上 式 可 以 得 出 以 下 结 论

108 94 操 作 系 统 (1) 如 果 作 业 的 等 待 时 间 相 同, 则 要 求 服 务 的 时 间 愈 短, 其 优 先 权 愈 高, 因 而 该 算 法 有 利 于 短 作 业 (2) 当 要 求 服 务 的 时 间 相 同 时, 作 业 的 优 先 权 决 定 于 其 等 待 时 间, 等 待 时 间 愈 长, 其 优 先 权 愈 高, 因 而 它 实 现 的 是 先 来 先 服 务 (3) 对 于 长 作 业, 作 业 的 优 先 级 可 以 随 等 待 时 间 的 增 加 而 提 高, 当 其 等 待 时 间 足 够 长 时, 其 优 先 级 便 可 升 到 很 高, 从 而 也 可 获 得 处 理 机 基 于 时 间 片 的 轮 转 调 度 算 法 如 前 所 述, 在 分 时 系 统 中, 为 保 证 能 及 时 响 应 用 户 的 请 求, 必 须 采 用 基 于 时 间 片 的 轮 转 式 进 程 调 度 算 法 在 早 期, 分 时 系 统 采 用 的 是 简 单 的 时 间 片 轮 转 法 进 入 20 世 纪 90 年 代 后, 广 泛 采 用 多 级 反 馈 队 列 调 度 算 法 1. 时 间 片 轮 转 法 在 早 期 的 时 间 片 轮 转 法 中, 系 统 将 所 有 的 就 绪 进 程 按 先 来 先 服 务 的 原 则, 排 成 一 个 队 列, 每 次 调 度 时, 把 CPU 分 配 给 队 首 进 程, 并 令 其 执 行 一 个 时 间 片 时 间 片 的 大 小 从 几 毫 秒 到 几 百 毫 秒 当 执 行 的 时 间 片 用 完 时, 由 一 个 计 时 器 发 出 时 钟 中 断 请 求, 调 度 程 序 便 据 此 信 号 来 停 止 该 进 程 的 执 行, 并 将 它 送 往 就 绪 队 列 的 末 尾 ; 然 后, 再 把 处 理 机 分 配 给 就 绪 队 列 中 新 的 队 首 进 程, 同 时 也 让 它 执 行 一 个 时 间 片 这 样 就 可 以 保 证 就 绪 队 列 中 的 所 有 进 程, 在 一 给 定 的 时 间 内, 均 能 获 得 一 时 间 片 的 处 理 机 执 行 时 间 2. 多 级 反 馈 队 列 调 度 算 法 在 采 用 多 级 反 馈 队 列 调 度 算 法 的 系 统 中, 调 度 算 法 的 实 施 过 程 如 下 (1) 应 设 置 多 个 就 绪 队 列, 并 为 各 个 队 列 赋 予 不 同 的 优 先 级 第 一 个 队 列 的 优 先 级 最 高, 第 二 个 队 列 次 之, 其 余 各 队 列 的 优 先 级 逐 个 降 低 该 算 法 赋 予 各 个 队 列 中 进 程 执 行 时 间 片 的 大 小 也 各 不 相 同, 在 优 先 权 愈 高 的 队 列 中, 为 每 个 进 程 所 规 定 的 执 行 时 间 片 就 愈 小 例 如, 第 二 个 队 列 的 时 间 片 要 比 第 一 个 队 列 的 时 间 片 长 一 倍,, 第 i+1 个 队 列 的 时 间 片 要 比 第 i 个 队 列 的 时 间 片 长 一 倍 图 3-5 是 多 级 反 馈 队 列 调 度 算 法 的 示 意 图 图 3-5 多 级 反 馈 队 列 调 度 算 法 (2) 当 一 个 新 进 程 进 入 内 存 后, 首 先 将 它 放 入 第 一 队 列 的 末 尾, 按 FCFS 原 则 排 队 等 待 调 度 当 轮 到 该 进 程 执 行 时, 如 它 能 在 该 时 间 片 内 完 成, 便 可 准 备 撤 离 系 统 ; 如 果

109 第 3 章 处 理 机 调 度 与 死 锁 95 它 在 一 个 时 间 片 结 束 时 尚 未 完 成, 调 度 程 序 便 将 该 进 程 转 入 第 二 队 列 的 末 尾, 再 同 样 地 按 FCFS 原 则 等 待 调 度 执 行 ; 如 果 它 在 第 二 队 列 中 运 行 一 个 时 间 片 后 仍 未 完 成, 再 依 次 将 它 放 入 第 三 队 列,, 如 此 下 去, 当 一 个 长 作 业 ( 进 程 ) 从 第 一 队 列 依 次 降 到 第 n 队 列 后, 在 第 n 队 列 中 便 采 取 按 时 间 片 轮 转 的 方 式 运 行 (3) 仅 当 第 一 队 列 空 闲 时, 调 度 程 序 才 调 度 第 二 队 列 中 的 进 程 运 行 ; 仅 当 第 1~(i-1) 队 列 均 为 空 时, 才 会 调 度 第 i 队 列 中 的 进 程 运 行 如 果 处 理 机 正 在 第 i 队 列 中 为 某 进 程 服 务 时, 又 有 新 进 程 进 入 优 先 权 较 高 的 队 列 ( 第 1~(i-1) 中 的 任 何 一 个 队 列 ), 则 此 时 新 进 程 将 抢 占 正 在 运 行 进 程 的 处 理 机, 即 由 调 度 程 序 把 正 在 运 行 的 进 程 放 回 到 第 i 队 列 的 末 尾, 把 处 理 机 分 配 给 新 到 的 高 优 先 权 进 程 3. 多 级 反 馈 队 列 调 度 算 法 的 性 能 多 级 反 馈 队 列 调 度 算 法 具 有 较 好 的 性 能, 能 较 好 地 满 足 各 种 类 型 用 户 的 需 要 (1) 终 端 型 作 业 用 户 由 于 终 端 型 作 业 用 户 所 提 交 的 作 业, 大 多 属 于 交 互 型 的 作 业, 作 业 通 常 比 较 小, 系 统 只 能 使 这 些 作 业 在 第 一 列 所 规 定 的 时 间 片 内 完 成, 便 可 使 用 户 满 意 (2) 短 批 处 理 作 业 用 户 对 于 很 短 的 批 处 理 作 业, 开 始 时 像 终 端 型 作 业 一 样, 如 果 仅 在 第 一 队 列 中 执 行 一 个 时 间 片 即 可 完 成, 便 可 获 得 与 终 端 型 作 业 一 样 的 响 应 时 间 对 于 稍 长 的 作 业, 通 常 也 只 需 在 第 二 队 列 和 第 三 队 列 各 执 行 一 个 时 间 片 即 可 完 成, 其 周 转 时 间 仍 然 较 短 (3) 长 批 处 理 作 业 用 户 对 于 长 作 业, 它 将 依 次 在 第 1,2,,n 个 队 列 中 运 行, 然 后 再 按 轮 转 方 式 运 行, 用 户 不 必 担 心 其 作 业 长 期 得 不 到 处 理 例 3-1 假 设 有 一 计 算 机 系 统 中 有 4 个 进 程, 各 进 程 的 执 行 时 间 和 到 达 就 绪 队 列 的 时 间 如 表 3-2 所 示 表 3-2 进 程 执 行 及 到 达 就 绪 队 列 时 间 表 进 程 到 达 就 绪 队 列 时 间 总 执 行 时 间 进 程 到 达 就 绪 队 列 时 间 总 执 行 时 间 P1 0 8 P3 2 9 P2 1 4 P4 3 5 请 用 剥 夺 式 短 进 程 优 先 调 度 算 法 和 时 间 片 轮 转 调 度 ( 时 间 片 为 2 个 基 本 时 间 单 位 ), 分 别 给 出 各 进 程 的 调 度 次 序 及 平 均 周 转 时 间 解 答 : 这 两 个 算 法 的 工 作 过 程 如 下 (1) 剥 夺 式 短 进 程 优 先 调 度 算 法 如 表 3-3 所 示 表 3-3 剥 夺 式 短 进 程 优 先 调 度 算 法 执 行 时 间 表 进 程 到 达 就 绪 队 列 时 间 总 执 行 时 间 执 行 时 间 周 转 时 间 P1 P2 P3 P ~1,10~17 1~5 17~26 5~ 科 学 出 版 社 时 刻 0, 进 程 P1 到 达 并 投 入 运 行 时 刻 1, 进 程 P2 到 达 且 优 先 权 高 于 进 程 P1, 故 进 程 P2 投 入 运 行 而 进 程 P1 等 待

110 96 操 作 系 统 时 刻 2, 进 程 P3 到 达, 因 CPU 已 被 进 程 P2 使 用, 且 进 程 P3 优 先 级 低 于 进 程 P2, 故 进 程 P3 等 待 时 刻 3, 进 程 P4 到 达, 因 CPU 已 经 被 进 程 P2 使 用, 且 进 程 P4 优 先 级 低 于 进 程 P2, 故 进 程 P4 等 待 时 刻 5, 进 程 P2 运 行 完 此 时 进 程 P4 优 先 级 最 高, 进 程 P4 开 始 运 行 时 刻 10, 进 程 P4 运 行 完 此 时 进 程 P1 优 先 级 最 高, 进 程 P1 开 始 运 行 时 刻 17, 进 程 P1 运 行 完, 进 程 P3 开 始 运 行 时 刻 26, 进 程 P3 运 行 完 毕 平 均 周 转 时 间 为 ( )/4=12.75 (2) 时 间 片 轮 转 调 度 算 法 如 表 3-4 所 示 表 3-4 时 间 片 轮 转 调 度 算 法 执 行 时 间 表 进 程 到 达 就 绪 队 列 时 间 总 执 行 时 间 执 行 时 间 周 转 时 间 P1 P2 P3 P ~2,8~10,16~18,21~23 2~4,10~12, 4~6,12~14,18~20,23~25,25~ 26 6~8,14~16,20~ 平 均 周 转 时 间 为 ( )/4=19 例 3-2 在 一 个 单 处 理 器 的 计 算 机 系 统 中, 有 四 个 进 程 P1 P2 P3 和 P4, 其 到 达 时 间 和 所 需 要 的 运 行 时 间 如 表 3-5 所 示 ( 时 间 单 位 : 小 时, 以 十 进 制 计 算 ), 请 写 出 采 用 先 来 先 服 务 调 度 算 法 短 进 程 优 先 调 度 算 法 和 响 应 比 高 者 优 先 调 度 算 法 进 程 运 行 的 次 序, 并 计 算 这 三 种 算 法 使 各 进 程 在 就 绪 队 列 中 的 平 均 等 待 时 间 以 及 三 种 算 法 下 的 平 均 周 转 时 间 表 3-5 进 程 到 达 及 运 行 时 间 表 进 程 到 达 时 间 运 行 时 间 进 程 到 达 时 间 运 行 时 间 P P P P 解 答 :(1) 先 来 先 服 务 算 法 优 先 选 择 到 达 时 间 最 早 的 进 程 运 行, 所 以 进 程 运 行 的 次 序 为 P1 P2 P3 P4 短 进 程 优 先 调 度 算 法 优 先 选 择 运 行 时 间 短 的 进 程 运 行, 所 以 进 程 运 行 的 次 序 为 :P3 P4 P2 P1 响 应 比 高 者 优 先 算 法 选 择 响 应 比 高 的 优 先 运 行, 响 应 比 R 的 计 算 公 式 为 R=(W+T)/T=1+W/T 其 中,T 为 该 作 业 估 计 需 要 的 执 行 时 间,W 为 作 业 在 后 备 状 态 队 列 中 的 等 待 时 间 刚 开 始,P1 首 先 运 行,8.0 时 结 束, 此 时, 进 程 P2 P3 P4 的 响 应 比 分 别 计 算 如 下 : P2:1+7.6/4=2.9 P3:1+7/1=8 P4:1+4/3=2.33 所 以 选 择 进 程 P3 运 行 ;P3 到 9 时 结 束, 此 时 P2 和 P4 的 响 应 比 如 下 :

111 第 3 章 处 理 机 调 度 与 死 锁 97 P2:1+8.6/8=2.075 P4:1+4/3=2.33 所 以 选 择 P4 进 行 运 行, 最 后 选 择 P2 运 行 (2) 先 来 先 服 务 算 法 所 用 时 间 如 表 3-6 所 示 表 3-6 先 来 先 服 务 算 法 用 时 表 进 程 到 达 时 间 运 行 时 间 结 束 时 间 等 待 时 间 周 转 时 间 P1 P2 P3 P 平 均 等 待 时 间 为 ( )/4=6.9, 平 均 周 转 时 间 为 ( )/4=10.9 短 进 程 优 先 调 度 算 法 所 用 时 间 如 表 3-7 所 示 表 3-7 短 进 程 优 先 调 度 算 法 用 时 表 进 程 到 达 时 间 运 行 时 间 结 束 时 间 等 待 时 间 周 转 时 间 P1 P2 P3 P 平 均 等 待 时 间 为 ( )/4=2.4, 平 均 周 转 时 间 为 ( )/4=8.4 高 响 应 比 优 先 调 度 算 法 所 用 时 间 如 表 3-8 所 示 表 3-8 高 响 应 比 优 先 调 度 算 法 用 时 表 进 程 到 达 时 间 运 行 时 间 结 束 时 间 等 待 时 间 周 转 时 间 P1 P2 P3 P 平 均 等 待 时 间 为 ( )/4=5.65, 平 均 周 转 时 间 为 ( )/4= 实 时 调 度 由 于 在 实 时 系 统 中 都 存 在 着 若 干 个 实 时 进 程 或 任 务, 它 们 用 来 反 映 或 控 制 某 个 外 部 事 件, 往 往 带 有 某 种 程 度 的 紧 迫 性, 因 而 对 实 时 系 统 的 调 度 提 出 了 某 些 特 殊 的 要 求, 前 面 介 绍 的 多 种 调 度 算 法, 并 不 能 很 好 地 满 足 实 时 系 统 对 调 度 的 要 求, 为 此, 需 要 引 入 一 种 新 的 调 度, 即 实 时 调 度 实 现 实 时 调 度 的 基 本 条 件 在 实 时 系 统 中, 硬 实 时 任 务 和 软 实 时 任 务 都 联 系 着 一 个 截 止 时 间 为 保 证 系 统 能 正 常 工 作, 实 时 调 度 必 须 能 满 足 实 时 任 务 对 截 止 时 间 的 要 求, 为 此, 实 现 实 时 调 度 应 具 备 如 下 几 个 条 件 科 学 出 版 社

112 98 操 作 系 统 1. 提 供 必 要 的 信 息 (1) 就 绪 时 间 这 是 该 任 务 成 为 就 绪 状 态 的 起 始 时 间 (2) 开 始 截 止 时 间 和 完 成 截 止 时 间 对 于 典 型 的 实 时 应 用, 只 需 知 道 开 始 截 止 时 间 或 者 知 道 完 成 截 止 时 间 (3) 处 理 时 间 这 是 一 个 任 务 从 开 始 执 行 直 至 完 成 所 需 的 时 间 (4) 资 源 要 求 这 是 指 任 务 执 行 时 所 需 的 一 组 资 源 (5) 优 先 级 如 果 某 任 务 的 开 始 截 止 时 间 已 经 错 过, 就 会 引 起 故 障, 则 应 为 该 任 务 赋 予 绝 对 优 先 级 ; 如 果 对 系 统 的 继 续 运 行 无 重 大 影 响, 则 可 赋 予 相 对 优 先 级, 供 调 度 程 序 参 考 2. 系 统 处 理 能 力 强 在 实 时 系 统 中, 通 常 都 有 着 多 个 实 时 任 务 若 处 理 机 的 处 理 能 力 不 够 强, 则 有 可 能 因 处 理 机 忙 不 过 来 而 使 某 些 实 时 任 务 得 不 到 及 时 处 理, 从 而 导 致 产 生 难 以 预 料 的 后 果 假 定 系 统 中 有 m 个 周 期 性 的 硬 实 时 任 务, 它 们 的 处 理 时 间 可 表 示 为 C i, 周 期 时 间 表 示 为 P i, 则 在 单 处 理 机 情 况 下, 必 须 满 足 下 面 的 限 制 条 件 m Ci 1 P i 1 i 系 统 才 是 可 调 度 的 假 如 系 统 中 有 六 个 硬 实 时 任 务, 它 们 的 周 期 时 间 都 是 50 ms, 而 每 次 的 处 理 时 间 为 10 ms, 则 不 难 算 出, 此 时 是 不 能 满 足 上 式 的, 因 而 系 统 是 不 可 调 度 的 解 决 的 方 法 是 提 高 系 统 的 处 理 能 力, 其 途 径 有 二 : 其 一 仍 是 采 用 单 处 理 机 系 统, 但 需 增 强 其 处 理 能 力, 以 显 著 地 减 少 对 每 一 个 任 务 的 处 理 时 间 ; 其 二 是 采 用 多 处 理 机 系 统 假 定 系 统 中 的 处 理 机 数 为 N, 则 应 将 上 述 的 限 制 条 件 改 为 m Ci N P i 1 i 顺 便 说 明 一 下, 上 述 的 限 制 条 件 并 未 考 虑 到 任 务 的 切 换 时 间, 因 此, 当 利 用 上 述 限 制 条 件 来 确 定 系 统 是 否 可 调 度 时, 还 应 适 当 留 有 余 地 3. 采 用 抢 占 式 调 度 机 制 当 一 个 优 先 权 更 高 的 任 务 到 达 时, 允 许 将 当 前 任 务 暂 时 挂 起, 而 令 高 优 先 权 任 务 立 即 投 入 运 行, 这 样 便 可 满 足 该 硬 实 时 任 务 对 截 止 时 间 的 要 求 但 这 种 调 度 机 制 比 较 复 杂 对 于 一 些 小 的 实 时 系 统, 如 果 能 预 知 任 务 的 开 始 截 止 时 间, 则 对 实 时 任 务 的 调 度 可 采 用 非 抢 占 调 度 机 制, 以 简 化 调 度 程 序 和 对 任 务 调 度 时 所 花 费 的 系 统 开 销 但 在 设 计 这 种 调 度 机 制 时, 应 使 所 有 的 实 时 任 务 都 比 较 小, 并 在 执 行 完 关 键 性 程 序 和 临 界 区 后, 能 及 时 地 将 自 己 阻 塞 起 来, 以 便 释 放 出 处 理 机, 供 调 度 程 序 去 调 度 那 种 开 始 截 止 时 间 即 将 到 达 的 任 务

113 第 3 章 处 理 机 调 度 与 死 锁 具 有 快 速 切 换 机 制 该 机 制 应 具 有 如 下 两 方 面 的 能 力 (1) 对 外 部 中 断 的 快 速 响 应 能 力 为 使 在 紧 迫 的 外 部 事 件 请 求 中 断 时 系 统 能 及 时 响 应, 要 求 系 统 具 有 快 速 硬 件 中 断 机 构, 还 应 使 禁 止 中 断 的 时 间 间 隔 尽 量 短, 以 免 耽 误 时 机 ( 其 他 紧 迫 任 务 ) (2) 快 速 的 任 务 分 派 能 力 在 完 成 任 务 调 度 后, 便 应 进 行 任 务 切 换 为 了 提 高 分 派 程 序 进 行 任 务 切 换 时 的 速 度, 应 使 系 统 中 的 每 个 运 行 功 能 单 位 适 当 减 小, 以 减 少 任 务 切 换 的 时 间 开 销 实 时 调 度 算 法 的 分 类 根 据 调 度 方 式 的 不 同, 实 时 调 度 算 法 可 以 分 为 非 抢 占 式 和 抢 占 式 调 度 算 法 1. 非 抢 占 式 调 度 算 法 由 于 非 抢 占 式 调 度 算 法 比 较 简 单, 易 于 实 现, 故 在 一 些 小 型 实 时 系 统 和 要 求 不 太 严 格 的 实 时 控 制 系 统 中, 经 常 采 用 通 常 又 可 把 它 们 分 成 如 下 两 种 调 度 算 法 (1) 非 抢 占 式 轮 转 调 度 算 法 该 算 法 常 用 于 工 业 生 产 的 群 控 系 统 中, 由 一 台 计 算 机 控 制 若 干 个 相 同 的 对 象, 为 每 一 个 被 控 对 象 建 立 一 个 实 时 任 务, 并 将 它 们 排 成 一 个 轮 转 队 列 调 度 程 序 每 次 选 择 队 列 中 的 第 一 个 任 务 投 入 运 行 当 该 任 务 完 成 后, 便 把 它 挂 在 轮 转 队 列 的 末 尾, 等 待 下 次 调 度 执 行, 这 次 调 度 程 序 再 选 择 下 一 个 ( 队 首 ) 任 务 运 行 (2) 非 抢 占 式 优 先 调 度 算 法 如 果 在 实 时 系 统 中 存 在 着 要 求 较 为 严 格 的 任 务, 则 可 采 用 非 抢 占 式 优 先 调 度 算 法, 为 这 次 任 务 赋 予 较 高 的 优 先 级 当 这 些 实 时 任 务 到 达 时, 把 它 们 安 排 在 就 绪 队 列 的 队 首, 等 待 当 前 任 务 自 我 终 止 或 运 行 完 成 后 才 能 被 调 度 执 行 2. 抢 占 式 调 度 算 法 在 要 求 较 严 格 的 实 时 系 统 中, 应 采 用 抢 占 式 优 先 权 调 度 算 法 可 根 据 抢 占 发 生 时 间 的 不 同, 进 一 步 分 为 如 下 两 种 调 度 算 法 (1) 基 于 时 钟 中 断 的 抢 占 式 优 先 权 调 度 算 法 在 某 实 时 任 务 到 达 后, 如 果 该 任 务 的 优 先 级 高 于 当 前 任 务 的 优 先 级, 这 时 并 不 立 即 抢 占 当 前 任 务 的 处 理 机, 而 是 等 待 时 钟 中 断 到 来 时, 调 度 程 序 才 剥 夺 当 前 任 务 的 执 行, 将 处 理 机 分 配 给 新 到 的 高 优 先 权 任 务 (2) 立 即 抢 占 (Immediate Preemption) 的 优 先 权 调 度 算 法 在 这 种 优 先 权 调 度 算 法 中, 要 求 操 作 系 统 具 有 快 速 响 应 外 部 事 件 的 能 力 一 旦 出 现 外 部 中 断, 只 要 当 前 任 务 未 处 于 临 界 区, 便 能 立 即 剥 夺 当 前 任 务 的 执 行, 把 处 理 机 分 配 给 请 求 中 断 的 紧 迫 任 务 图 3-6 中 的 (a) (b) (c) (d) 分 别 示 出 了 采 用 非 抢 占 式 轮 转 调 度 算 法 非 抢 占 式 优 先 权 调 度 算 法 基 于 时 钟 中 断 抢 占 的 优 先 权 调 度 算 法 和 立 即 抢 占 的 优 先 权 调 度 算 法 四 种 情 况 的 调 度 时 间 科 学 出 版 社

114 100 操 作 系 统 图 3-6 实 时 进 程 调 度 常 用 的 几 种 实 时 调 度 算 法 1. 最 早 截 止 时 间 优 先 (Earliest Deadline First,EDF) 算 法 该 算 法 是 根 据 任 务 的 开 始 按 截 止 时 间 来 确 定 任 务 的 优 先 级 截 止 时 间 愈 早, 其 优 先 级 愈 高 该 算 法 要 求 在 系 统 中 保 持 一 个 实 时 任 务 就 绪 队 列, 该 队 列 按 任 务 截 止 时 间 的 早 晚 排 序, 当 前, 具 有 最 早 截 止 时 间 的 任 务 排 在 最 前 面 调 度 程 序 在 选 择 任 务 时, 总 是 选 择 队 列 中 第 一 个 任 务, 为 之 分 配 处 理 机, 使 之 投 入 运 行 该 算 法 既 可 用 于 抢 占 式 调 度, 也 可 用 于 非 抢 占 式 调 度 中 图 3-7 所 示 为 将 该 算 法 用 于 非 抢 占 调 度 方 式 的 例 子 图 3-7 EDF 算 法 用 于 非 抢 占 调 度 方 式 2. 最 低 松 弛 度 优 先 (Least Laxity First,LLF) 算 法 该 算 法 是 根 据 任 务 紧 急 ( 或 松 弛 ) 的 程 度, 来 确 定 任 务 的 优 先 级 任 务 的 紧 急 程 度 愈 高, 为 该 任 务 所 赋 予 的 优 先 级 就 愈 高, 以 使 之 优 先 执 行 例 如, 一 个 任 务 在 200 ms 时 必 须 完 成, 而 它 本 身 所 需 的 运 行 时 间 就 有 100 ms, 因 此, 调 度 程 序 必 须 在 100 ms 之 前 调 度 执 行, 该 任 务 的 紧 急 程 度 ( 松 弛 程 度 ) 为 100 ms 又 如, 另 一 任 务 在 400 ms 时 必 须 完 成, 它 本 身 需 要 运 行 150 ms, 则 其 松 弛 程 度 为 250 ms 在 实 现 该 算 法 时 要 求 系 统 中 有 一 个 按 松 弛 度 排 序 的 实 时 任 务 就 绪 队 列, 松 弛 度 最 低 的 任 务 排 在 队 列 最 前 面, 调 度 程 序 总 是 选 择 就 绪 队 列 中 的 队 首 任 务 执 行 该 算 法 主 要 用 于 可 抢 占 调 度 方 式 中 假 如 在 一 个 实 时 系 统 中, 有 两 个 周 期 性 实 时 任 务 A 和 B, 任 务 A 要 求 每 20 ms 执 行 一 次, 执 行

115 第 3 章 处 理 机 调 度 与 死 锁 101 时 间 为 10 ms; 任 务 B 只 要 求 每 50 ms 执 行 一 次, 执 行 时 间 为 25 ms 由 此 可 得 知 任 务 A 和 任 务 B 每 次 必 须 完 成 的 时 间 分 别 为 A1 A2 A3 和 B1 B2 B3, 图 3-8 所 示 为 保 证 不 遗 漏 任 何 一 次 截 止 时 间, 应 采 用 最 低 松 弛 度 优 先 的 抢 占 调 度 策 略 图 3-8 任 务 A 和 任 务 B 每 次 必 须 完 成 的 时 间 在 刚 开 始 (t1=0) 时,A1 必 须 在 20 ms 时 完 成, 而 它 本 身 运 行 又 需 10 ms, 可 算 出 A1 的 松 弛 度 为 10 ms;b1 必 须 在 50 ms 时 完 成, 而 它 本 身 运 行 就 需 25 ms, 可 算 出 B1 的 松 弛 度 为 25 ms, 故 调 度 程 序 应 先 调 度 A1 执 行 在 t2=10 ms 时,A2 的 松 弛 度 可 按 如 下 方 式 算 出 A2 的 松 弛 度 = 必 须 完 成 时 间 - 其 本 身 的 运 行 时 间 - 当 前 时 间 =40 ms-10 ms-10 ms=20 ms 类 似 地, 可 算 出 B1 的 松 弛 度 为 15 ms, 故 调 度 程 序 应 选 择 B2 运 行 在 t3=30 ms 时, A2 的 松 弛 度 已 减 为 0( 即 ), 而 B1 的 松 弛 度 为 15 ms( 即 ), 于 是 调 度 程 序 应 抢 占 B1 的 处 理 机 而 调 度 A2 运 行 在 t4=40 ms 时,A3 的 松 弛 度 为 10 ms( 即 ), 而 B1 的 松 弛 度 仅 为 5 ms( 即 ), 故 又 应 重 新 调 度 B1 执 行 在 t5=45 ms 时,B1 执 行 完 成, 而 此 时 A3 的 松 弛 度 已 减 为 5 ms( 即 ), 而 B2 的 松 弛 度 为 30 ms( 即 ), 于 是 又 应 调 度 A3 执 行 在 t6=55 ms 时, 任 务 A 尚 未 进 入 第 4 周 期, 而 任 务 B 已 进 入 第 2 周 期, 故 再 调 度 B2 执 行 在 t7=70 ms 时,A4 的 松 弛 度 已 减 至 0 ms( 即 ), 而 B2 的 松 弛 度 为 20 ms( 即 ), 故 此 时 调 度 又 应 抢 占 B2 的 处 理 机 而 调 度 A4 执 行 图 3-9 表 示 具 有 两 个 周 期 性 实 时 任 务 的 调 度 情 况 多 处 理 器 系 统 的 类 型 图 3-9 利 用 LLF 算 法 进 行 调 度 的 情 况 3.4 多 处 理 机 系 统 中 的 调 度 科 学 出 版 社 1. 紧 密 耦 合 多 处 理 器 系 统 和 松 弛 耦 合 多 处 理 器 系 统 1) 紧 密 耦 合 (Tightly Coupted) 多 处 理 系 统 这 种 系 统 通 常 是 通 过 高 速 总 线 或 高 速 交 叉 开 关, 来 实 现 多 个 处 理 器 之 间 的 互 连 它

116 102 操 作 系 统 们 共 享 主 存 储 器 系 统 和 I/O 设 备, 并 要 求 将 主 存 储 器 划 分 为 若 干 个 能 独 立 访 问 的 存 储 器 模 块, 以 便 多 个 处 理 机 能 同 时 对 主 存 进 行 访 问 系 统 中 的 所 有 资 源 和 进 程, 都 由 操 作 系 统 实 施 统 一 的 控 制 和 管 理 2) 松 散 耦 合 (Loosely Coupled) 多 处 理 系 统 在 松 散 耦 合 多 处 理 系 统 中, 通 常 是 通 过 通 道 或 通 信 线 路, 来 实 现 多 台 计 算 机 之 间 的 互 连 每 台 计 算 机 都 有 自 己 的 存 储 器 和 I/O 设 备, 并 配 置 了 操 作 系 统 来 管 理 本 地 资 源 和 在 本 地 运 行 的 进 程 因 此, 每 一 台 计 算 机 都 能 独 立 地 工 作, 必 要 时 可 通 过 通 信 线 路 与 其 他 计 算 机 交 换 信 息, 以 及 协 调 它 们 之 间 的 工 作 2. 对 称 多 处 理 器 系 统 和 非 对 称 多 处 理 器 系 统 (1) 对 称 多 处 理 器 系 统 (Symmetric Multiprocessor System,SMPS) 在 系 统 中 所 包 含 的 各 处 理 器 单 元, 在 功 能 和 结 构 上 都 是 相 同 的, 当 前 的 绝 大 多 数 MPS 都 属 于 SMPS 系 统 例 如,IBM 公 司 的 SR/6 000 Model F50, 便 是 利 用 四 片 Power PC 处 理 器 构 成 的 (2) 非 对 称 多 处 理 器 系 统 在 系 统 中 有 多 种 类 型 的 处 理 单 元, 它 们 的 功 能 和 结 构 各 不 相 同, 其 中 只 有 一 个 主 处 理 器, 有 多 个 从 处 理 器 进 程 分 配 方 式 在 多 处 理 器 系 统 中, 进 程 的 调 度 与 系 统 结 构 有 关 例 如, 在 同 型 系 统 中, 由 于 所 有 的 处 理 器 都 是 相 同 的, 因 而 可 将 进 程 分 配 到 任 一 处 理 器 上 运 行, 但 对 于 非 对 称 多 处 理 器 系 统 任 一 进 程 而 言, 都 只 能 把 它 分 配 到 某 一 适 合 于 其 运 行 的 处 理 机 上 去 执 行 1. 对 称 多 处 理 器 系 统 中 的 进 程 分 配 方 式 在 对 称 多 处 理 机 系 统 中, 所 有 的 处 理 器 都 是 相 同 的, 因 而 可 把 所 有 的 处 理 器 作 为 一 个 处 理 器 池 (Processor Pool), 由 调 度 程 序 或 基 于 处 理 器 的 请 求, 将 任 何 一 个 进 程 分 配 给 池 中 的 任 何 一 个 处 理 器 去 处 理 在 进 行 进 程 分 配 时, 可 采 用 如 下 两 种 方 式 1) 静 态 分 配 (Static Assigenment) 方 式 这 是 指 一 个 进 程 从 开 始 执 行 直 至 其 完 成, 都 被 固 定 分 配 到 一 个 处 理 器 上 去 执 行 此 时, 需 为 每 一 处 理 器 设 置 一 个 专 用 的 就 绪 队 列, 该 队 列 中 的 进 程 都 是 先 后 被 分 配 到 该 处 理 器 上 运 行, 这 种 方 式 与 单 处 理 器 环 境 下 的 进 程 调 度 相 同 2) 动 态 分 配 (Dynamic Assgement) 方 式 为 了 防 止 系 统 中 的 多 个 处 理 器 忙 闲 不 均, 可 以 在 系 统 中 设 置 一 个 公 共 的 就 绪 队 列, 系 统 中 的 所 有 就 绪 进 程 都 被 放 在 该 队 列 中 分 配 进 程 时, 可 将 进 程 分 配 到 任 何 一 个 处 理 机 上 这 样, 对 一 个 进 程 的 整 个 运 行 过 程 而 言, 在 每 次 调 度 执 行 时, 都 被 随 即 分 配 到 当 时 空 闲 的 某 一 处 理 器 上 了, 故 称 为 动 态 分 配 方 式 动 态 分 配 方 式 的 优 点 是 消 除 了 各 处 理 器 忙 闲 不 均 的 现 象 2. 非 对 称 MPS 中 的 进 程 分 配 方 式 对 于 非 对 称 MPS, 其 操 作 系 统 大 多 采 用 主 - 从 (Master-Slave) 式 操 作 系 统, 即 操 作 系 统 的 核 心 部 分 驻 留 在 一 台 主 机 (Master) 上, 而 从 机 (Slave) 上 只 是 用 户 程 序, 进 程

117 第 3 章 处 理 机 调 度 与 死 锁 103 调 度 只 由 主 机 执 行 每 当 从 机 空 闲 时, 便 向 主 机 发 送 一 索 求 进 程 的 信 号, 然 后, 便 等 待 主 机 为 它 分 配 进 程 在 主 机 中 保 持 有 一 个 就 绪 队 列, 只 要 就 绪 队 列 不 空, 主 机 便 从 其 队 首 摘 下 一 进 程 分 配 给 请 求 的 从 机 从 机 接 收 到 分 配 的 进 程 后 便 运 行 该 进 程, 该 进 程 结 束 后 从 机 又 向 主 机 发 出 请 求 在 非 对 称 MPS 中, 主 / 从 式 分 配 方 式 的 主 要 优 点 是 系 统 处 理 比 较 简 单, 这 是 因 为 所 有 进 程 分 配 都 有 一 台 主 机 独 自 处 理, 使 中 间 的 同 步 问 题 得 以 简 化, 且 进 程 调 度 程 序 也 很 易 于 从 单 处 理 机 的 调 度 程 序 演 化 而 来 但 由 一 台 主 机 控 制 一 切, 也 潜 在 地 存 在 着 不 可 靠 性, 即 主 机 一 旦 出 现 故 障, 将 导 致 整 个 系 统 瘫 痪, 而 且 也 很 容 易 由 于 因 主 机 太 忙, 来 不 及 处 理 而 形 成 系 统 瓶 颈 克 服 这 种 缺 点 的 有 效 方 法 是 利 用 多 台 而 非 一 台 处 理 机 来 管 理 整 个 系 统, 这 样, 当 其 中 一 台 出 现 故 障 时, 可 由 其 他 处 理 机 接 替 其 完 成 任 务, 从 而 不 会 影 响 系 统 运 行 进 程 ( 线 程 ) 调 度 方 式 多 处 理 机 系 统 已 广 为 流 行 多 年, 相 应 地, 也 必 然 存 在 着 多 种 调 度 方 式, 特 别 是 20 世 纪 90 年 代 以 来, 已 出 现 了 多 种 调 度 方 式, 其 中 有 许 多 都 是 以 线 程 作 为 基 本 调 度 单 位 比 较 有 代 表 性 的 进 程 ( 线 程 ) 调 度 方 式 有 自 调 度 方 式 成 组 调 度 方 式 和 专 用 处 理 机 调 度 方 式 等 1. 自 调 度 (Self-Scheduling) 方 式 1) 自 调 度 机 制 在 多 处 理 器 系 统 中, 自 调 度 方 式 是 最 简 单 的 一 种 调 度 方 式 它 是 直 接 由 单 处 理 机 环 境 下 的 调 度 方 式 演 变 而 来 的 在 系 统 中 设 置 有 一 个 公 共 的 进 程 或 线 程 就 绪 队 列, 所 有 的 处 理 器 在 空 闲 时, 都 可 自 己 到 该 队 列 中 取 得 一 进 程 ( 或 线 程 ) 来 运 行 在 自 调 度 方 式 中, 可 采 用 在 单 处 理 机 环 境 下 所 用 的 调 度 算 法, 如 先 来 先 服 务 (FCFS) 调 度 算 法 最 高 优 先 权 优 先 (FPF) 调 度 算 法 和 抢 占 式 最 高 优 先 权 优 先 调 度 算 法 等 2) 自 调 度 方 式 的 优 点 自 调 度 方 式 的 主 要 优 点 如 下 (1) 系 统 中 的 公 共 就 绪 队 列 可 按 照 单 处 理 机 系 统 中 所 采 用 的 各 种 方 式 加 以 组 织 ; 其 调 度 算 法 也 可 沿 用 单 处 理 机 系 统 所 用 的 算 法, 即 很 容 易 将 单 处 理 机 环 境 下 的 调 度 机 制 移 植 到 多 处 理 机 系 统 中, 故 它 仍 然 是 当 前 多 处 理 机 系 统 中 较 常 用 的 调 度 方 式 (2) 只 要 系 统 中 有 任 务, 或 者 说 只 要 公 共 就 绪 队 列 不 空, 就 不 会 出 现 处 理 机 空 闲 的 情 况, 也 不 会 发 生 处 理 器 忙 闲 不 均 的 现 象, 因 而 有 利 于 提 高 处 理 器 的 利 用 率 3) 自 调 度 方 式 的 缺 点 (1) 瓶 颈 问 题 在 整 个 系 统 中 仅 设 置 一 个 就 绪 队 列, 供 多 个 处 理 器 共 享, 这 些 处 理 器 必 须 互 斥 地 访 问 该 队 列, 很 容 易 形 成 系 统 瓶 颈 (2) 低 效 性 当 线 程 阻 塞 后 再 重 新 就 绪 时, 它 只 能 进 入 这 个 唯 一 的 就 绪 队 列, 但 却 很 少 可 能 仍 在 阻 塞 前 的 处 理 器 上 运 行 如 果 为 每 台 处 理 器 上 都 配 有 高 速 缓 存 (Cache), 则 这 时 在 其 中 保 留 的 该 线 程 的 数 据 已 经 失 效, 而 在 该 线 程 重 新 获 得 的 处 理 器 上, 又 必 须 重 新 建 立 这 些 数 据 的 拷 贝, 在 一 个 线 程 的 生 命 周 期 中, 可 能 要 多 次 更 换 处 理 器, 导 致 高 科 学 出 版 社

118 104 操 作 系 统 速 缓 存 的 使 用 率 极 低 (3) 线 程 切 换 频 繁 通 常, 在 一 个 应 用 中 的 多 个 线 程 都 属 于 相 互 合 作 型 的, 但 在 采 用 自 调 度 方 式 时, 这 些 线 程 很 难 同 时 获 得 处 理 器 而 运 行, 这 将 会 使 某 些 线 程 因 其 合 作 线 程 未 获 得 处 理 器 而 阻 塞, 进 而 被 切 换 下 来 2. 成 组 调 度 (Gang Scheduling) 方 式 为 了 解 决 在 自 调 度 方 式 中 线 程 被 频 繁 切 换 的 问 题,Leutenegger 提 出 了 成 组 调 度 方 式 所 谓 成 组 调 度 方 式, 是 指 将 一 个 进 程 中 的 一 组 线 程, 分 配 到 一 组 处 理 器 上 去 执 行 在 成 组 调 度 时, 如 何 为 应 用 程 序 分 配 处 理 器 时 间, 可 考 虑 如 下 两 种 方 式 1) 面 向 所 有 应 用 程 序 平 均 分 配 处 理 器 时 间 假 定 系 统 中 有 N 个 处 理 器 和 M 个 应 用 程 序, 每 个 应 用 程 序 至 多 含 有 N 个 线 程, 则 每 个 应 用 程 序 至 多 可 由 1/M 的 时 间 去 占 有 N 个 处 理 器 例 如, 有 4 台 处 理 器 和 2 个 应 用 程 序, 其 中, 应 用 程 序 A 中 有 4 个 线 程, 应 用 程 序 B 中 有 一 个 线 程 这 样, 每 个 应 用 程 序 可 占 用 4 台 处 理 器 一 半 的 时 间 图 3-10(a) 表 示 了 处 理 器 的 分 配 情 况 由 图 可 知, 使 用 这 种 分 配 方 式, 在 应 用 程 序 A 运 行 时,4 台 处 理 器 都 在 忙 绿 ; 而 B 运 行 时, 则 只 有 一 台 在 忙 碌, 因 此, 将 有 3/8 的 处 理 器 时 间 被 浪 费 了 2) 面 向 所 有 线 程 平 均 分 配 处 理 器 时 间 由 于 应 用 程 序 A 中 有 4 个 线 程,B 只 有 1 个 线 程, 因 此, 应 为 A 分 配 4/5 的 时 间, B 分 配 1/5 的 时 间, 如 图 3-10(b) 所 示 此 时, 将 只 有 3/20 的 时 间 被 浪 费 可 见, 按 线 程 平 均 分 配 处 理 器 时 间 的 方 法 更 有 效 图 3-10 两 种 分 配 处 理 器 时 间 的 方 法 3. 专 用 处 理 器 分 配 (Dedicated Processor Assigement) 方 式 在 1989 年,Tucker 提 出 了 专 用 处 理 器 分 配 方 式 该 方 式 是 在 一 个 应 用 程 序 的 执 行 期 间, 专 门 为 该 应 用 程 序 分 配 一 组 处 理 器, 每 一 个 线 程 分 配 一 个 处 理 器 这 组 处 理 器 仅 供 应 用 程 序 专 用, 直 至 该 应 用 程 序 完 成 很 明 显, 这 会 造 成 处 理 机 的 严 重 浪 费, 但 这 种 调 度 方 式 用 于 并 发 程 度 相 当 高 的 多 处 理 器 环 境, 是 基 于 下 述 一 些 理 由 (1) 在 具 有 数 十 个 乃 至 数 百 个 处 理 器 的 高 度 并 行 系 统 中, 每 个 处 理 器 的 投 资 费 用 在 整 个 系 统 中 只 占 很 小 的 一 部 分 对 系 统 的 性 能 和 效 率 来 说, 单 个 处 理 器 的 性 能 和 效 率 已 远 不 像 在 单 机 系 统 中 那 么 重 要 (2) 在 一 个 应 用 程 序 的 运 行 过 程 中, 每 个 进 程 或 线 程 专 用 一 台 处 理 器, 可 完 全 避 免 进 程 或 线 程 切 换, 从 而 加 速 了 程 序 的 运 行

119 第 3 章 处 理 机 调 度 与 死 锁 105 Tucker 在 一 个 具 有 16 个 处 理 器 的 系 统 中, 运 行 2 个 应 用 程 序 : 一 个 是 矩 阵 相 乘 程 序 ; 另 一 个 是 进 行 快 速 傅 里 叶 变 换, 每 个 应 用 程 序 所 含 的 线 程 数 是 可 以 改 变 的, 范 围 在 1~24 之 间 图 3-11 表 示 出 了 应 用 程 序 的 加 速 比 与 线 程 数 目 之 间 的 关 系 Tucker 建 议 : 在 同 时 加 工 的 应 用 程 序 中, 其 总 线 程 的 总 和 不 应 超 过 系 统 中 处 理 机 的 数 目 图 3-11 线 程 数 对 加 速 比 的 影 响 3.5 产 生 死 锁 的 原 因 和 必 要 条 件 在 多 道 程 序 系 统 中, 虽 可 借 助 于 多 个 进 程 的 并 发 执 行 来 改 善 系 统 的 资 源 利 用 率, 但 可 能 发 生 一 种 危 险 死 锁 所 谓 死 锁 (Deadlock), 是 指 多 个 进 程 在 运 行 过 程 中 因 竞 争 资 源 而 形 成 的 一 种 僵 局, 当 进 程 处 于 这 种 僵 持 状 态 时, 若 无 外 力 作 用, 它 们 都 无 法 再 向 前 推 进 产 生 死 锁 的 原 因 (1) 竞 争 资 源 当 系 统 中 供 多 个 进 程 共 享 的 资 源, 如 打 印 机 公 用 队 列 等, 其 数 目 不 足 以 满 足 诸 进 程 的 需 要 时, 便 会 由 于 诸 进 程 对 资 源 的 竞 争 而 产 生 死 锁 (2) 进 程 间 推 进 顺 序 非 法 进 程 在 运 行 过 程 中, 请 求 和 释 放 资 源 的 顺 序 不 当, 也 同 样 可 能 导 致 死 锁 1. 竞 争 资 源 引 起 进 程 死 锁 科 学 出 版 社 1) 可 剥 夺 和 非 剥 夺 性 资 源 系 统 中 的 资 源 可 以 分 成 两 类, 一 类 是 可 剥 夺 性 资 源, 例 如, 优 先 级 高 的 进 程 可 以 剥 夺 优 先 级 低 的 进 程 的 处 理 机 ; 另 一 类 是 不 可 剥 夺 性 资 源, 这 类 资 源 分 配 给 某 进 程 后 不 能 强 行 收 回, 只 能 进 程 使 用 完 后 自 行 释 放, 如 磁 带 机 打 印 机 等 2) 竞 争 非 剥 夺 性 资 源 在 系 统 中 配 置 的 非 剥 夺 性 资 源, 由 于 数 量 不 能 满 足 进 程 运 行 需 要, 会 使 进 程 在 运 行 过 程 中, 因 竞 争 这 些 资 源 而 形 成 僵 局 如 图 3-12 所 示, 我 们 用 方 块 代 表 资 源, 用 圆 圈 代

120 106 操 作 系 统 表 进 程, 当 箭 头 从 进 程 指 向 资 源, 表 示 进 程 请 求 资 源 ; 当 箭 头 从 资 源 指 向 进 程, 表 示 该 资 源 已 经 分 配 给 该 进 程 从 图 中 可 看 出, 这 时 在 P1 P2 及 R1 和 R2 之 间, 已 经 形 成 了 一 个 环 路, 任 一 进 程 都 未 能 获 得 其 需 要 的 资 源 而 进 入 无 限 期 的 等 待 之 中 图 3-12 I/O 设 备 共 享 时 的 死 锁 情 况 3) 竞 争 临 时 性 资 源 上 述 打 印 机 资 源 属 于 可 顺 序 重 复 使 用 型 资 源, 称 为 永 久 性 资 源 还 有 一 种 是 所 谓 的 临 时 性 资 源, 这 是 指 由 一 个 进 程 产 生, 被 另 一 进 程 使 用 一 短 暂 时 间 后 便 无 用 的 资 源, 它 也 可 能 引 起 死 锁 图 3-13 表 示 在 进 程 之 间 通 信 时 形 成 死 锁 的 情 况 图 中,S1 S2 和 S3 是 临 时 性 资 源 进 程 P1 产 生 消 息 S1, 又 要 求 从 P3 接 收 消 息 S3; 进 程 P3 产 生 消 息 S3, 又 要 求 从 进 程 P2 接 收 其 产 生 的 消 息 S2; 进 程 P2 产 生 消 息 S2, 又 需 要 接 收 进 程 P1 所 产 生 的 消 息 S1 如 果 消 息 通 信 按 下 述 顺 序 进 行 : P1: Release(S1);Request(S3) P2: Release(S2);Request(S1) P3: Release(S3);Request(S2) 并 不 可 能 产 生 死 锁 但 若 改 成 下 述 运 行 顺 序 : P1: Request(S3);Release(S1) P2: Request(S1);Release(S2) P3: Request(S2);Release(S3) 则 可 能 发 生 死 锁 图 3-13 进 程 之 间 通 信 时 的 死 锁 2. 进 程 推 进 顺 序 不 当 引 起 死 锁 由 于 进 程 具 有 异 步 性 的 特 征, 这 就 可 能 使 上 述 P1 和 P2 两 个 进 程 按 下 述 两 种 顺 序 向

121 第 3 章 处 理 机 调 度 与 死 锁 107 前 推 进 1) 进 程 推 进 顺 序 合 法 在 进 程 P1 和 P2 并 发 执 行 时, 如 果 按 下 述 顺 序 推 进 :P1:Request(R1);P1:Request (R2);P1:Release(R1);P1:Release(R2);P2:Request(R2);P2:Request(R1); P2:Release(R2);P2:Release(R1); 两 个 进 程 可 顺 利 完 成 如 图 3-14 中 的 曲 线 1 所 示 类 似 地, 若 按 曲 线 2 和 3 所 示 的 顺 序 推 进, 两 进 程 也 可 顺 利 完 成 我 们 称 这 种 不 会 引 起 进 程 死 锁 的 推 进 顺 序 是 合 法 的 图 3-14 进 程 推 进 顺 序 对 死 锁 的 影 响 2) 进 程 推 进 顺 序 非 法 若 并 发 进 程 P1 和 P2 按 曲 线 4 所 示 的 顺 序 推 进, 它 们 将 进 入 不 安 全 区 D 内 此 时 P1 保 持 了 资 源 R1,P2 保 持 了 资 源 R2, 系 统 处 于 不 安 全 状 态 因 为, 这 时 两 进 程 如 果 再 向 前 推 进, 便 可 能 发 生 死 锁 例 如, 当 P1 运 行 到 P1:Request(R2) 时, 将 因 R2 已 被 P2 占 用 而 阻 塞 ; 当 P2 运 行 到 P2: Request(R1) 时, 也 将 因 R1 已 被 P1 占 用 而 阻 塞, 于 是 发 生 进 程 死 锁 产 生 死 锁 的 必 要 条 件 (1) 互 斥 条 件 对 于 独 占 资 源, 每 个 资 源 每 次 只 能 给 一 个 进 程 使 用, 进 程 一 旦 申 请 到 了 资 源 后 占 为 已 有, 则 排 斥 其 他 进 程 共 享 该 资 源 (2) 不 剥 夺 条 件 正 在 使 用 的 资 源 不 可 剥 夺, 进 程 获 得 的 资 源 尚 未 使 用 完 毕 之 前, 只 能 由 占 有 者 自 己 释 放, 不 能 被 其 他 进 程 强 行 占 用 (3) 请 求 和 保 持 条 件 ( 又 称 部 分 分 配 ) 进 程 因 未 分 配 到 新 的 资 源 而 受 阻, 但 又 不 放 弃 已 占 有 的 资 源 (4) 环 路 等 待 条 件 存 在 进 程 的 循 环 等 待 链, 前 一 进 程 占 有 的 资 源 正 是 后 一 进 程 所 需 求 的 资 源, 结 果 就 形 成 了 循 环 等 待 的 僵 持 局 面 死 锁 不 仅 会 发 生 在 两 个 进 程 之 间, 也 可 能 发 生 在 多 个 进 程 之 间, 甚 至 发 生 在 全 部 进 程 之 间 此 外, 死 锁 不 仅 会 在 动 态 使 用 外 部 设 备 时 发 生, 而 且 也 可 能 在 动 态 使 用 存 储 区 文 件 缓 冲 区 数 据 库 时 发 生, 甚 至 在 进 程 通 信 过 程 中 发 生 科 学 出 版 社

122 108 操 作 系 统 处 理 死 锁 的 基 本 方 法 1) 预 防 死 锁 预 防 死 锁 是 通 过 破 坏 四 个 必 要 条 件 中 的 一 个 或 多 个 以 确 保 系 统 不 会 发 生 死 锁 为 此, 可 以 采 取 如 下 三 种 预 防 措 施 : 采 用 资 源 的 静 态 预 分 配 策 略, 破 坏 保 持 和 请 求 条 件 ; 允 许 进 程 剥 夺 使 用 其 他 进 程 占 有 的 资 源, 从 而 破 坏 不 剥 夺 性 条 件 ; 采 用 资 源 有 序 分 配 法, 破 坏 环 路 条 件 2) 避 免 死 锁 预 防 死 锁 是 设 法 至 少 破 坏 产 生 死 锁 的 必 要 条 件 之 一, 严 格 地 防 止 死 锁 的 出 现 而 避 免 死 锁 则 不 那 么 严 格 地 限 制 产 生 死 锁 必 要 条 件 的 存 在 ( 因 为 即 使 死 锁 必 要 条 件 成 立, 也 未 必 一 定 会 发 生 死 锁 ), 只 是 在 系 统 运 行 过 程 中 小 心 地 避 免 死 锁 的 最 终 发 生 最 著 名 的 死 锁 避 免 算 法 是 Dijkstra 提 出 的 银 行 家 算 法 3) 检 测 死 锁 检 测 死 锁 方 法 是 对 资 源 的 分 配 不 加 限 制, 即 允 许 死 锁 发 生 但 系 统 定 时 地 运 行 一 个 死 锁 检 测 程 序, 判 断 系 统 是 否 已 发 生 死 锁, 若 检 测 到 死 锁 发 生, 则 设 法 加 以 解 除 4) 解 除 死 锁 这 是 与 检 测 死 锁 相 配 套 的 一 种 措 施 当 检 测 到 系 统 中 已 经 发 生 死 锁 时, 必 须 将 进 程 从 死 锁 状 态 中 解 脱 出 来 常 用 的 方 法 是 撤 销 或 挂 起 一 些 进 程, 以 便 回 收 一 些 资 源, 再 将 这 些 资 源 分 配 给 阻 塞 的 进 程, 使 之 转 化 为 就 绪 状 态, 以 继 续 运 行 3.6 预 防 死 锁 的 方 法 如 前 所 述, 预 防 死 锁 和 避 免 死 锁 这 两 种 方 法, 实 质 都 是 通 过 施 加 某 些 限 制 条 件 的 方 法, 来 预 防 发 生 死 锁 两 者 的 主 要 差 别 在 于 : 为 预 防 死 锁 施 加 的 限 制 条 件 比 较 严 格, 这 往 往 会 影 响 进 程 的 并 发 执 行, 而 为 避 免 死 锁 所 施 加 的 限 制 条 件 则 较 为 宽 松, 这 给 进 程 的 运 行 提 供 了 较 宽 松 的 环 境, 有 利 于 进 程 的 并 发 执 行 预 防 死 锁 预 防 死 锁 的 方 法 是 使 四 个 必 要 条 件 中 的 第 条 件 之 一 不 能 成 立, 来 避 免 发 生 死 锁 至 于 必 要 条 件 1, 因 为 它 是 由 设 备 的 固 有 条 件 决 定 的, 不 仅 不 能 改 变, 还 应 加 以 保 证 1. 摒 弃 请 求 和 保 持 条 件 采 用 这 种 方 法 时, 系 统 规 定 所 有 进 程 在 开 始 运 行 之 前, 都 必 须 一 次 性 地 申 请 其 在 整 个 运 行 过 程 中 的 所 需 的 全 部 资 源 此 时, 若 系 统 有 足 够 的 资 源 分 配 给 某 进 程, 便 可 把 其 所 需 的 全 部 资 源 分 配 给 它, 该 进 程 在 运 行 期 间 就 不 会 再 提 出 资 源 要 求, 从 而 摒 弃 了 请 求 条 件 但 在 资 源 分 配 时, 只 要 有 一 种 资 源 不 能 满 足 某 进 程 的 要 求, 即 使 其 他 资 源 都 满 足 要 求, 也 不 分 配 给 该 进 程, 而 让 该 进 程 等 待 由 于 在 该 进 程 等 待 期 间 不 占 用 任 何 资 源, 因 而 也 摒 弃 了 保 持 条 件, 从 而 可 以 避 免 发 生 死 锁

123 第 3 章 处 理 机 调 度 与 死 锁 109 这 种 预 防 死 锁 的 方 法, 其 优 点 是 简 单 易 于 实 现 且 安 全 但 其 缺 点 也 极 其 明 显, 首 先 是 资 源 被 严 重 浪 费, 因 为 一 个 进 程 是 一 次 性 获 得 其 运 行 期 间 的 所 有 资 源, 且 独 占 使 用, 而 其 中 有 些 资 源 可 能 很 少 使 用, 有 些 可 能 整 个 运 行 期 间 都 未 使 用, 这 就 严 重 恶 化 了 资 源 的 利 用 率 ; 其 次 是 使 进 程 延 迟 运 行, 因 为 是 仅 当 进 程 获 得 了 其 所 需 的 全 部 资 源 才 能 开 始 运 行, 但 可 能 因 有 些 资 源 已 长 期 被 其 他 进 程 占 用 而 致 使 等 待 该 资 源 的 进 程 迟 迟 得 不 到 运 行 2. 摒 弃 不 剥 夺 条 件 系 统 规 定 在 这 种 方 法 中, 进 程 是 逐 个 地 提 出 对 资 源 的 要 求 的 当 一 个 已 经 保 持 某 些 资 源 的 进 程, 再 提 出 新 的 资 源 请 求 而 不 能 立 即 得 到 满 足 时, 必 须 释 放 它 已 经 保 持 了 的 所 有 资 源, 待 以 后 需 要 时 再 重 新 申 请 这 意 味 着 某 进 程 在 运 行 过 程 中 的 已 经 占 有 的 资 源 会 被 暂 时 释 放 掉, 也 可 认 为 是 被 剥 夺 了, 从 而 摒 弃 了 不 剥 夺 条 件 这 种 预 防 死 锁 的 方 法 实 现 起 来 比 较 复 杂 且 代 价 很 大 因 为 一 个 资 源 在 使 用 一 段 时 间 后 被 迫 释 放 掉, 可 能 造 成 前 段 工 作 的 失 效, 即 便 是 采 取 了 某 些 预 防 措 施, 也 会 使 进 程 前 后 两 次 运 行 的 信 息 不 连 续 此 外, 这 种 策 略 还 可 能 因 为 反 复 地 申 请 和 释 放 资 源, 致 使 进 程 的 执 行 被 无 限 地 推 迟, 这 不 仅 延 长 了 进 程 的 周 转 时 间, 也 增 加 了 系 统 开 销, 降 低 了 系 统 的 吞 吐 量 3. 摒 弃 环 路 等 待 条 件 这 种 方 法 规 定, 系 统 将 所 有 资 源 按 类 型 进 行 线 性 排 队, 并 赋 予 不 同 的 序 号 例 如, 令 输 入 机 的 序 号 为 1, 打 印 机 的 序 号 为 2, 磁 带 机 为 3, 磁 盘 为 4 进 程 对 资 源 的 请 求 必 须 严 格 按 照 资 源 序 号 递 增 的 次 序, 这 样, 在 所 形 成 的 资 源 分 配 图 中, 不 可 能 再 出 现 环 路 等 待 条 件 这 种 预 防 死 锁 的 策 略 与 前 两 种 比 较, 其 资 源 利 用 率 和 系 统 吞 吐 量, 都 有 较 明 显 的 改 善 但 也 存 在 下 述 严 重 问 题 : 首 先 是 为 系 统 中 各 类 资 源 所 分 配 的 序 号, 必 须 相 对 稳 定, 这 就 限 制 了 新 类 型 设 备 的 增 加 ; 其 次, 尽 管 在 为 资 源 分 配 序 号 时, 已 经 考 虑 到 大 多 数 作 业 在 实 际 使 用 这 些 资 源 时 的 顺 序, 但 也 经 常 会 发 生 这 种 情 况 : 即 资 源 使 用 各 类 资 源 的 顺 序 与 系 统 规 定 的 顺 序 不 同, 造 成 对 资 源 的 浪 费 第 三, 为 方 便 用 户, 系 统 对 用 户 在 编 程 时 所 施 加 的 限 制 条 件 应 尽 量 少 然 而 这 种 按 规 定 次 序 申 请 的 方 法, 必 然 会 限 制 用 户 简 单 自 主 的 编 程 系 统 安 全 状 态 在 预 防 死 锁 的 几 种 方 法 中, 都 施 加 了 较 强 的 限 制 条 件 ; 在 避 免 死 锁 的 方 法 中, 所 施 加 的 限 制 条 件 较 弱, 有 可 能 获 得 较 为 满 意 的 系 统 性 能 在 该 方 法 中 把 系 统 的 状 态 分 为 安 全 状 态 和 不 安 全 状 态, 只 要 能 使 系 统 始 终 都 处 于 安 全 状 态, 便 可 避 免 发 生 死 锁 1. 安 全 状 态 科 学 出 版 社 在 避 免 死 锁 的 方 法 中, 允 许 进 程 动 态 地 申 请 资 源, 但 系 统 在 进 行 资 源 分 配 之 前, 应 先 计 算 此 次 资 源 分 配 的 安 全 性 若 此 次 分 配 不 会 导 致 系 统 进 入 不 安 全 状 态, 则 将 资 源 分

124 110 操 作 系 统 配 给 进 程 ; 否 则, 令 进 程 等 待 所 谓 安 全 状 态, 是 指 系 统 能 按 某 种 进 程 顺 序 (P1,P2,,Pn)( 称 P1,P2,,Pn 序 列 为 安 全 序 列 ), 来 为 每 个 进 程 Pi 分 配 其 所 需 资 源, 直 至 满 足 每 个 进 程 对 资 源 的 最 大 需 求, 使 每 个 进 程 都 可 顺 利 地 完 成 如 果 系 统 无 法 找 到 这 样 一 个 安 全 序 列, 则 称 系 统 处 于 不 安 全 状 态 虽 然 并 非 所 有 的 不 安 全 状 态 都 是 死 锁 状 态, 但 当 系 统 进 入 不 安 全 状 态 后, 便 可 能 进 入 死 锁 状 态 ; 反 之, 只 要 系 统 处 于 安 全 状 态, 便 可 避 免 进 入 死 锁 状 态 因 此, 避 免 死 锁 的 实 质 在 于 : 系 统 在 进 行 资 源 分 配 时, 如 何 保 证 让 系 统 不 进 入 不 安 全 状 态 2. 安 全 状 态 之 例 我 们 通 过 一 个 例 子 来 说 明 安 全 性 假 定 系 统 中 有 三 个 进 程 P1 P2 和 P3, 共 有 12 台 磁 带 机 进 程 P1 总 共 要 求 10 台 磁 带 机,P2 和 P3 分 别 要 求 4 台 和 9 台 假 设 在 T0 时 刻, 进 程 P1 P2 和 P3 已 分 别 获 得 5 台 2 台 和 2 台 磁 带 机, 尚 有 3 台 空 闲 未 分 配, 如 表 3-9 所 示 表 3-9 系 统 安 全 状 态 下 进 程 资 源 分 配 量 进 程 最 大 需 求 已 分 配 可 用 P1 P2 P 由 安 全 状 态 向 不 安 全 状 态 的 转 换 如 果 不 按 照 安 全 序 列 分 配 资 源, 则 系 统 可 能 会 由 安 全 状 态 进 入 不 安 全 状 态 例 如, 在 T0 时 刻 以 后,P3 又 请 求 1 台 磁 带 机, 若 此 时 系 统 把 剩 余 3 台 中 的 1 台 分 配 给 P3, 则 系 统 便 进 入 不 安 全 状 态 因 为, 此 时 也 无 法 再 找 到 一 个 安 全 序 列, 例 如, 把 其 余 的 2 台 分 配 给 P2, 这 样, 在 P2 完 成 后 只 能 释 放 出 4 台, 既 不 能 满 足 P1 尚 需 5 台 的 要 求, 也 不 能 满 足 P3 尚 需 6 台 的 要 求, 致 使 它 们 都 无 法 推 进 到 完 成, 彼 此 都 在 等 待 对 方 释 放 资 源, 而 陷 入 僵 局, 结 果 导 致 死 锁 利 用 银 行 家 算 法 避 免 死 锁 最 有 代 表 性 的 避 免 死 锁 的 算 法, 是 Dijkstra 的 银 行 家 算 法 这 是 由 于 该 算 法 能 用 于 银 行 系 统 现 金 存 款 的 发 放 而 得 名 的 为 实 现 银 行 家 算 法, 系 统 中 必 须 设 置 若 干 数 据 结 构 1. 银 行 家 算 法 中 的 数 据 结 构 (1) 可 利 用 资 源 向 量 Available 这 是 一 个 含 有 m 个 元 素 的 数 组, 其 中 的 每 一 个 元 素 代 表 一 类 可 利 用 的 资 源 数 目, 其 初 始 值 是 系 统 中 所 配 置 的 该 类 全 部 可 用 资 源 的 数 目, 其 数 值 随 该 类 资 源 的 分 配 和 回 收 而 动 态 地 改 变 如 果 Available[j]=K, 则 表 示 系 统 中 现 有 Rj 类 资 源 K 个 (2) 最 大 需 求 矩 阵 Max 这 是 一 个 n m 的 矩 阵, 它 定 义 了 系 统 中 n 个 进 程 中 的 每

125 第 3 章 处 理 机 调 度 与 死 锁 111 一 个 进 程 对 m 类 资 源 的 最 大 需 求 如 果 Max[i,j]=K, 则 表 示 进 程 i 需 要 Rj 类 资 源 的 最 大 数 目 为 K (3) 分 配 矩 阵 Allocation 这 也 是 一 个 n m 的 矩 阵, 它 定 义 了 系 统 中 每 一 类 资 源 当 前 已 分 配 给 每 一 进 程 的 资 源 数 如 果 Allocation[i,j]=K, 则 表 示 进 程 i 当 前 已 分 得 Rj 类 资 源 的 数 目 为 K (4) 需 求 矩 阵 Need 这 也 是 一 个 n m 的 矩 阵, 用 以 表 示 每 一 个 进 程 尚 需 的 各 类 资 源 数 如 果 Need[i,j]=K, 则 表 示 进 程 i 还 需 要 Rj 类 资 源 K 个, 方 能 完 成 其 任 务 Need[i,j]=Max[i,j]-Allocation[i,j] 2. 银 行 家 算 法 设 Requesti 是 进 程 Pi 的 请 求 向 量, 如 果 Requesti[j]=K, 表 示 进 程 Pi 需 要 K 个 Rj 类 型 的 资 源 当 Pi 发 出 资 源 请 求 后, 系 统 按 下 述 步 骤 进 行 检 查 : (1) 如 果 Requesti[j] Need[i,j], 便 转 向 步 骤 (2); 否 则 认 为 出 错, 因 为 它 所 需 要 的 资 源 数 已 超 过 它 所 宣 布 的 最 大 值 (2) 如 果 Requesti[j] Available[j], 便 转 向 步 骤 (3); 否 则, 表 示 尚 无 足 够 资 源,Pi 须 等 待 (3) 系 统 试 探 着 把 资 源 分 配 给 进 程 Pi, 并 修 改 下 面 数 据 结 构 中 的 数 值 Available[j] =Available[j]-Requesti[j]; Allocation[i,j] =Allocation[i,j]+Requesti[j]; Need[i,j] =Need[i,j]-Requesti[j]; (4) 系 统 执 行 安 全 性 算 法, 检 查 此 次 资 源 分 配 后, 系 统 是 否 处 于 安 全 状 态 若 安 全, 才 正 式 将 资 源 分 配 给 进 程 Pi, 以 完 成 本 次 分 配 ; 否 则, 将 本 次 的 试 探 分 配 作 废, 恢 复 原 来 的 资 源 分 配 状 态, 让 进 程 Pi 等 待 3. 安 全 性 算 法 系 统 所 执 行 的 安 全 性 算 法 可 描 述 如 下 (1) 设 置 两 个 向 量 :1 工 作 向 量 Work: 它 表 示 系 统 可 提 供 给 进 程 继 续 运 行 所 需 的 各 类 资 源 数 目, 它 含 有 m 个 元 素, 在 执 行 安 全 算 法 开 始 时,Work =Available;2 Finish: 它 表 示 系 统 是 否 有 足 够 的 资 源 分 配 给 进 程, 使 之 运 行 完 成 开 始 时 先 做 Finish[i] =false; 当 有 足 够 资 源 分 配 给 进 程 时, 再 令 Finish[i] =true (2) 从 进 程 集 合 中 找 到 一 个 能 满 足 下 述 条 件 的 进 程 : 1 Finish[i]=false;2 Need[i,j] Work[j]; 若 找 到, 执 行 步 骤 (3), 否 则, 执 行 步 骤 (4) (3) 当 进 程 Pi 获 得 资 源 后, 可 顺 利 执 行, 直 至 完 成, 并 释 放 出 分 配 给 它 的 资 源, 执 行 语 句 如 下 所 示 Work[j] =Work[i]+Allocation[i,j]; Finish[i] =true; go to step 2; 科 学 出 版 社

126 112 操 作 系 统 (4) 如 果 所 有 进 程 的 Finish[i]=true 都 满 足, 则 表 示 系 统 处 于 安 全 状 态 ; 否 则, 系 统 处 于 不 安 全 状 态 4. 银 行 家 算 法 之 例 例 3-3 假 定 系 统 中 有 五 个 进 程 {P0,P1,P2,P3,P4} 和 三 类 资 源 {A,B,C}, 各 种 资 源 的 数 量 分 别 为 , 在 T0 时 刻 的 资 源 分 配 情 况 如 图 3-15 所 示 Max A B C Allocation A B C Need ABC Available A B C P0 P1 P2 P3 P (3 0 2) (0 2 0) (2 3 0) (1)T0 时 刻 的 安 全 性 如 图 3-16 所 示 图 3-15 T0 时 刻 的 资 源 分 配 表 Work A B C Need A B C Allocation A B C Work+Allocation A B C Finish P True P True P True P True P True 图 3-16 T0 时 刻 的 安 全 序 列 (2) P1 请 求 资 源 :P1 发 出 请 求 向 量 Request1(1, 0, 2), 系 统 按 银 行 家 算 法 进 行 检 查, 如 图 3-17 所 示 1 Request1(1,0,2) Need1(1,2,2) 2 Request1(1,0,2) Available1(3,3,2) 3 系 统 先 假 定 可 为 P1 分 配 资 源, 并 修 改 Available,Allocation1 和 Need1 向 量, 由 此 形 成 的 资 源 变 化 情 况 如 图 3-15 中 的 括 号 内 内 容 所 示 4 再 利 用 安 全 性 算 法 检 查 此 时 系 统 是 否 安 全 Work A B C Need A B C Allocation A B C Work+Allocation A B C Finish P True P True P True P True P True 图 3-17 P1 申 请 资 源 时 的 安 全 性 检 查 (3)P4 请 求 资 源 :P4 发 出 请 求 向 量 Request4(3, 3, 0), 系 统 按 银 行 家 算 法 进 行 检 查 : 1 Request4(3, 3, 0) Need4(4,3,1) 2 Request4(3, 3, 0) Available(2,3,0), 让 P4 等 待

127 第 3 章 处 理 机 调 度 与 死 锁 113 (4)P0 请 求 资 源 :P0 发 出 请 求 向 量 Requst0(0,2,0), 系 统 按 银 行 家 算 法 进 行 检 查 1 Request0(0,2,0) Need0(7,4,3) 2 Request0(0,2,0) Available(2,3,0) 3 系 统 暂 时 先 假 定 可 为 P0 分 配 资 源, 并 修 改 有 关 数 据, 如 图 3-18 所 示 Allocation ABC Need ABC P P P P P Available ABC 210 图 3-18 为 P0 分 配 资 源 后 的 有 关 资 源 数 据 例 3-4 假 定 具 有 5 个 进 程 的 进 程 集 合 P={P0, P1, P2, P3, P4}, 系 统 中 有 三 类 资 源 A,B 和 C 其 中 A 类 资 源 有 10 个,B 类 资 源 有 5 个,C 类 资 源 有 7 个 假 定 在 某 时 刻 状 态 如 图 3-19 所 示 Allocation ABC Max ABC Available ABC P P P P P 图 3-19 进 程 在 某 一 时 刻 状 态 试 给 出 Need, 并 说 明 当 前 系 统 是 否 处 于 安 全 状 态, 如 果 是, 给 出 安 全 序 列 如 果 不 是, 说 明 理 由 分 析 : 本 题 考 查 银 行 家 算 法 的 执 行 过 程 解 答 : 首 先 求 解 Need 矩 阵, 如 图 3-20 所 示 Allocation ABC Max ABC Need ABC P P P P P 图 3-20 进 程 在 某 一 时 刻 下 Need 矩 阵 当 前 系 统 处 于 安 全 状 态, 安 全 序 列 求 解 如 下 : work=available=(3,3,2) 寻 找 Needj work=(3,3,2)(j=0,1,2,3,4) 满 足 条 件 j=1,need1=(1,2,2) (3,3,2) 科 学 出 版 社

128 114 操 作 系 统 work:=(3,3,2)+(2,0,0)=(5,3,2) 寻 找 Needj work=(5,3,2)(j=0,2,3,4) 满 足 条 件 j=3,need3=(0,1,1) (5,3,2) work:=(5,3,2)+(2,1,1)=(7,4,3) 寻 找 Needj work=(7,4,3)(j=0,2,4) 满 足 条 件 j=4,need4=(4,3,1) (7,4,3) work:=(7,4,3)+(0,0,2)=(7,4,5) 寻 找 Needj work=(7,4,5)(j=0,2) 满 足 条 件 j=2,need2=(6,0,0) (7,4,5) work:=(7,4,5)+(3,0,2)=(10,4,7) 寻 找 Needj work=(10,4,7)(j=0) j=0,work:=(10,4,7)+(0,1,0)=(10,5,7) 所 以, 安 全 序 列 为 <P1,P3,P4,P2,P0> 3.7 死 锁 的 检 测 与 解 除 死 锁 的 检 测 当 系 统 为 进 程 分 配 资 源 时, 若 未 采 取 任 何 限 制 性 措 施, 则 系 统 必 须 提 供 检 测 和 解 除 死 锁 的 手 段, 为 此, 系 统 必 须 :1 保 存 有 关 资 源 的 请 求 和 分 配 信 息 ;2 提 供 一 种 算 法, 以 利 于 用 这 些 信 息 来 检 测 系 统 是 否 已 进 入 死 锁 状 态 1. 资 源 分 配 图 (Resource Allocation Graph) 系 统 死 锁 可 利 用 资 源 分 配 图 来 描 述 该 图 是 由 一 组 结 点 N 和 一 组 边 E 所 组 成 的 一 个 对 偶 G=(N,E), 它 具 有 下 述 形 式 的 定 义 和 限 制 (1) 把 N 分 为 两 个 互 斥 的 子 集, 即 一 组 进 程 结 点 P={p1,p2,,pn} 和 一 组 资 源 结 点 R={r1,r2,,rn},N=PUR 在 图 3-21 所 示 的 例 子 中,P={p1,p2},R={r1,r2},N={p1,p2}U{r1,r2} (2) 凡 属 于 E 中 的 一 个 边 e E, 都 连 接 着 P 中 的 一 个 结 点 和 R 中 的 一 个 结 点,e={pi,rj} 是 资 源 请 求 边, 由 进 程 pi 指 向 资 源 rj, 它 表 示 进 程 pi 请 求 一 个 单 位 的 rj 资 源 e={rj,pi} 是 资 源 分 配 边, 由 资 源 rj 指 向 进 程 pi, 它 表 示 把 一 个 单 位 的 资 源 rj 分 配 给 进 程 pi 图 3-22 示 出 了 一 个 资 源 图 3-21 每 类 资 源 有 多 个 的 情 况 分 配 图 2. 死 锁 定 理 我 们 可 以 利 用 把 资 源 分 配 图 加 以 简 化 的 方 法 ( 图 3-22), 来 检 测 当 系 统 处 于 S 状 态 时 是 否 为 死 锁 状 态 监 护 方 法 如 下 (1) 在 资 源 分 配 图 中, 找 出 一 个 既 不 阻 塞 又 非 独 立 的 进 程 结 点 Pi 在 顺 利 的 情 况 下,

129 第 3 章 处 理 机 调 度 与 死 锁 115 Pi 可 获 得 所 需 的 资 源 而 继 续 运 行, 直 至 运 行 完 毕, 再 释 放 其 所 占 的 全 部 资 源, 这 相 当 于 消 去 Pi 的 请 求 边 和 分 配 边, 使 之 成 为 孤 立 结 点 在 图 3-22(a) 中, 将 P1 的 两 个 分 配 边 和 一 个 请 求 边 消 去, 便 形 成 图 3-22(b) 所 示 的 情 况 图 3-22 资 源 分 配 图 的 简 化 (2) 释 放 资 源 后, 便 可 使 P2 获 得 资 源 继 续 运 行, 直 至 P2 完 成 后 又 释 放 出 它 所 占 有 的 全 部 资 源, 形 成 图 3-22(c) 所 示 的 情 况 (3) 在 进 行 一 系 列 的 简 化 后, 若 能 消 去 图 中 所 有 的 边, 使 所 有 的 进 程 结 点 都 成 为 孤 立 结 点, 则 称 该 图 是 可 完 全 简 化 的 ; 若 不 能 通 过 任 何 过 程 使 该 图 简 化, 则 称 该 图 是 不 可 完 全 简 化 的 对 于 较 复 杂 的 资 源 分 配 图, 可 能 有 多 个 既 未 阻 塞 又 非 孤 立 的 进 程 结 点, 不 同 的 简 化 顺 序, 是 否 会 得 到 不 同 的 简 化 图 呢? 有 关 文 献 已 经 证 明, 所 有 的 简 化 顺 序 都 将 得 到 相 同 的 不 可 简 化 图 同 样 可 以 证 明,S 为 死 锁 状 态 的 充 分 条 件 是 当 且 仅 当 S 状 态 的 资 源 分 配 图 是 不 可 完 全 简 化 的, 该 充 分 条 件 被 称 为 死 锁 定 理 3. 死 锁 检 测 中 的 数 据 结 构 (1) 可 利 用 资 源 向 量 Available, 它 表 示 了 m 类 资 源 中 每 一 类 资 源 的 可 用 数 目 (2) 把 不 占 用 资 源 的 进 程 ( 向 量 Allocation =0) 记 入 L 表 中, 即 Li L (3) 从 进 程 集 合 中 找 到 一 个 Requesti Work 的 进 程, 做 如 下 处 理 :1 将 其 资 源 分 配 图 简 化, 释 放 出 资 源, 增 加 工 作 向 量 Work =Work+Allocationi 2 将 它 记 入 L 表 中 (4) 若 不 能 把 所 有 进 程 都 记 入 L 表 中, 便 表 明 系 统 状 态 S 的 资 源 分 配 图 是 不 可 完 全 简 化 的 因 此, 该 系 统 状 态 将 发 生 死 锁 Work =Available; L ={Li Allocationi=0 Requesti=0} for all Li! L do begin for all Requesti Work do begin Work =Work+Allocationi; Li L; end end deadlock =(L={p1, p2,, pn}); 科 学 出 版 社

130 116 操 作 系 统 死 锁 的 解 除 当 发 现 有 进 程 死 锁 时, 便 应 立 即 把 它 们 从 死 锁 状 态 中 解 脱 出 来 下 面 是 常 用 的 两 种 方 法 (1) 剥 夺 资 源 从 其 他 进 程 剥 夺 足 够 的 资 源 给 死 锁 进 程, 以 解 除 其 死 锁 状 态 (2) 撤 销 进 程 最 简 单 的 撤 销 进 程 的 方 法 是 使 全 部 死 锁 进 程 都 夭 折 掉 ; 稍 微 温 和 一 点 的 解 决 方 法 是 : 按 照 某 种 顺 序 逐 个 地 撤 销 进 程, 直 至 有 足 够 的 资 源 可 用, 使 死 锁 状 态 消 除 为 止 3.8 小 结 本 章 主 要 介 绍 了 两 大 部 分 内 容, 其 一 是 处 理 器 调 度, 主 要 介 绍 了 处 理 器 调 度 的 基 本 概 念 调 度 算 法 及 一 些 不 同 系 统 结 构 的 系 统 的 调 度 算 法 ( 如 实 时 系 统 和 多 处 理 器 系 统 ); 其 二 是 死 锁, 主 要 介 绍 了 死 锁 的 产 生 原 因 和 必 要 条 件, 预 防 死 锁 的 方 法 及 死 锁 产 生 后 如 何 检 测 和 解 除 3.9 学 习 加 油 站 答 疑 解 惑 1. 进 程 调 度 的 功 能 方 式 和 时 机 是 什 么 1) 进 程 调 度 的 具 体 功 能 (1) 记 录 系 统 中 所 有 进 程 的 执 行 情 况 (2) 选 择 占 有 处 理 机 的 进 程 (3) 进 行 进 程 上 下 文 切 换 2) 进 程 调 度 的 时 机 引 起 进 程 调 度 的 原 因 与 操 作 系 统 的 类 型 有 关, 大 体 可 归 结 为 以 下 几 种 (1) 正 在 执 行 的 进 程 运 行 完 毕 (2) 正 在 执 行 的 进 程 提 出 I/O 请 求 (3) 正 在 执 行 的 进 程 执 行 某 种 原 语 操 作 ( 如 P 操 作 ), 导 致 进 程 阻 塞 (4) 在 分 时 系 统 中 时 间 片 用 完 以 上 都 是 在 CPU 为 不 可 剥 夺 方 式 下 引 起 进 程 调 度 的 原 因 在 CPU 是 可 剥 夺 方 式 时, 还 有 下 面 的 原 因 (5) 就 绪 队 列 中 的 某 个 进 程 的 优 先 级 变 得 高 于 当 前 运 行 进 程 的 优 先 级 时 2. 试 简 述 常 见 的 进 程 调 度 的 算 法 1) 进 程 调 度 算 法 的 衡 量 标 准 一 个 好 的 进 程 调 度 算 法 应 当 考 虑 很 多 方 面, 包 括 :

131 第 3 章 处 理 机 调 度 与 死 锁 117 公 平 有 效 响 应 时 间 周 转 时 间 吞 吐 量 2) 进 程 调 度 算 法 进 程 调 度 程 序 的 一 项 重 要 工 作 是 根 据 一 定 的 调 度 算 法 从 就 绪 队 列 中 选 出 一 个 进 程, 把 CPU 分 配 给 它 下 面 是 几 种 常 用 的 调 度 算 法 (1) 先 来 先 服 务 (2) 最 短 进 程 优 先 (3) 时 间 片 轮 转 法 (4) 优 先 级 法 (5) 多 级 反 馈 队 列 轮 转 法 (6) 最 高 响 应 比 优 先 法 (Highest Responseratio Next) (7) 实 时 调 度 3. 死 锁 基 本 概 念 及 产 生 原 因 和 条 件 是 什 么 1) 死 锁 的 定 义 所 谓 死 锁 (Deadlock), 是 指 多 个 进 程 因 竞 争 资 源 而 形 成 的 一 种 僵 持 局 面, 若 无 外 力 作 用, 这 些 进 程 都 将 永 远 不 能 再 向 前 推 进 产 生 死 锁 的 原 因 : 一 是 系 统 提 供 的 资 源 不 能 满 足 每 个 进 程 的 使 用 需 求 ; 二 是 在 多 道 程 序 运 行 时, 进 程 推 进 顺 序 不 合 法 2) 死 锁 产 生 的 四 个 基 本 条 件 产 生 死 锁 有 如 下 四 个 必 要 条 件 (1) 互 斥 条 件 (2) 不 剥 夺 条 件 (3) 请 求 和 保 持 条 件 ( 又 称 部 分 分 配 ) (4) 环 路 等 待 条 件 死 锁 不 仅 会 发 生 在 两 个 进 程 之 间, 也 可 能 发 生 在 多 个 进 程 之 间, 甚 至 发 生 在 全 部 进 程 之 间 此 外, 死 锁 不 仅 会 在 动 态 使 用 外 部 设 备 时 发 生, 而 且 也 可 能 在 动 态 使 用 存 储 区 文 件 缓 冲 区 数 据 库 时 发 生, 甚 至 在 进 程 通 信 过 程 中 发 生 4. 试 简 述 死 锁 的 判 断 预 防 和 避 免 机 制 科 学 出 版 社 1) 死 锁 预 防 死 锁 预 防 是 通 过 破 坏 四 个 必 要 条 件 中 的 一 个 或 多 个 以 确 保 系 统 不 会 发 生 死 锁 为 此, 可 以 采 取 下 列 三 种 预 防 措 施 : 采 用 资 源 的 静 态 预 分 配 策 略, 破 坏 保 持 和 请 求 条 件 ; 允 许 进 程 剥 夺 使 用 其 他 进 程 占 有 的 资 源, 从 而 破 坏 不 剥 夺 性 条 件 ; 采 用 资 源 有 序 分 配 法, 破 坏 环 路 条 件 2) 死 锁 避 免 死 锁 预 防 是 设 法 破 坏 产 生 死 锁 的 必 要 条 件 之 一, 严 格 地 防 止 死 锁 的 出 现 而 死 锁 的 避 免 则 不 那 么 严 格 地 限 制 产 生 死 锁 必 要 条 件 的 存 在 ( 因 为 即 使 死 锁 必 要 条 件 成 立, 也 未 必 一 定 会 发 生 死 锁 ), 只 是 在 系 统 运 行 过 程 中 小 心 地 避 免 死 锁 的 最 终 发 生 最 著 名 的 死 锁 避 免 算 法 是 Dijkstra 提 出 的 银 行 家 算 法

132 118 操 作 系 统 3) 死 锁 检 测 死 锁 检 测 方 法 是 对 资 源 的 分 配 不 加 限 制, 即 允 许 死 锁 发 生 但 系 统 定 时 地 运 行 一 个 死 锁 检 测 程 序, 判 断 系 统 是 否 已 发 生 死 锁, 若 检 测 到 死 锁 发 生, 则 设 法 加 以 解 除 4) 死 锁 解 除 死 锁 解 除 与 死 锁 检 测 配 套 使 用, 通 常 有 以 下 做 法 : (1) 撤 销 处 于 死 锁 状 态 的 进 程 并 收 回 它 们 的 资 源 (2) 资 源 剥 夺 方 法 (3) 进 程 回 退 5) 何 时 不 会 发 生 死 锁 假 设 P 个 进 程 共 享 m 个 同 类 资 源, 每 个 资 源 在 任 一 时 刻 只 能 供 一 个 进 程 使 用, 每 一 个 进 程 对 任 一 资 源 都 只 能 使 用 一 优 先 时 间, 使 用 完 便 立 即 释 放 资 源 且 每 个 进 程 对 该 类 资 源 的 最 大 需 求 小 于 该 类 资 源 的 数 目 设 所 有 进 程 对 资 源 的 最 大 需 求 小 于 (P+m), 此 时 不 可 能 发 生 死 锁 我 们 考 虑 下 面 的 极 端 情 况 每 个 进 程 都 已 经 分 配 到 了 (x-1) 个 资 源, 其 中,x 是 每 个 进 程 最 多 可 申 请 的 资 源 个 数, 则 只 需 要 再 有 一 个 资 源, 某 个 进 程 就 可 以 获 得 全 部 资 源 运 行 结 束, 它 释 放 掉 资 源 后 其 他 进 程 就 可 以 继 续 完 成, 这 样 系 统 中 就 不 存 在 死 锁 系 统 不 会 发 生 死 锁 的 条 件 为 n(x-1)+1 m, 即 nx m+n 5. 简 述 银 行 家 算 法 使 用 的 数 据 结 构 及 基 本 思 想 1) 银 行 家 算 法 所 需 的 数 据 结 构 对 进 程 来 说, 它 总 共 需 要 多 少 目 前 已 分 配 到 多 少 尚 缺 多 少 资 源, 分 别 用 Max, Allocation,Need 矩 阵 表 示 对 系 统 来 说, 当 前 可 用 资 源 的 总 量 用 Available 向 量 表 示 安 全 状 态 是 指 系 统 能 按 某 种 进 程 顺 序 (P1,P2,P3,,Pn) 为 每 个 进 程 Pi 分 配 其 所 需 资 源, 直 到 满 足 每 个 进 程 对 资 源 的 最 大 需 求, 使 每 个 进 程 顺 利 完 成 如 果 不 存 在 这 样 的 安 全 序 列, 则 称 系 统 处 于 不 安 全 状 态 不 安 全 状 态 不 一 定 导 致 死 锁, 但 安 全 状 态 一 定 不 会 产 生 死 锁 所 以 在 分 配 资 源 时, 如 果 保 证 系 统 始 终 处 于 安 全 状 态, 则 不 会 产 生 死 锁 2) 银 行 家 算 法 该 算 法 判 断 当 前 资 源 分 配 是 否 会 导 致 系 统 进 入 不 安 全 状 态, 若 会 则 拒 绝 分 配, 若 不 会, 则 分 配 资 源 典 型 例 题 与 考 研 真 题 解 析 1.( 河 北 大 学 ) 在 进 程 调 度 算 法 中, 对 短 进 程 不 利 的 是 A. 短 进 程 优 先 调 度 算 法 B. 先 来 先 服 务 算 法 C. 高 响 应 比 优 先 算 法 D. 多 级 反 馈 队 列 调 度 算 法 分 析 : 本 题 考 查 进 程 调 度 算 法 的 特 点,FCFS 算 法 比 较 有 利 于 长 作 业 ( 进 程 ), 而 不 利 于 短 作 业 ( 进 程 ) 解 答 :B 2.( 西 北 工 业 大 学 )Kleinrock 提 出 了 一 个 基 于 动 态 修 改 优 先 级 的 强 占 性 优 先 级 调 度

133 第 3 章 处 理 机 调 度 与 死 锁 119 算 法 当 进 程 等 待 CPU( 并 未 运 行 ) 时, 其 优 先 级 以 速 率 a 变 化, 当 作 业 运 行 时 其 优 先 级 以 速 率 b 变 化 当 进 程 进 入 就 绪 队 列 时, 其 优 先 级 为 0 给 参 数 a b 赋 如 下 不 同 的 值 可 能 得 到 不 同 的 调 度 算 法 由 a>b>0 导 出 的 调 度 算 法 是 ; 由 a<b<0 导 出 的 调 度 算 法 是 分 析 : 本 题 考 查 动 态 优 先 级 调 度 算 法 的 特 点, 通 过 这 道 题 目, 可 以 看 出 不 同 进 程 调 度 算 法 之 间 的 关 系 解 答 :(1) 是 先 进 先 出 算 法 因 为 在 就 绪 队 列 中 的 进 程 比 在 CPU 上 运 行 的 进 程 的 优 先 数 提 高 得 快, 故 进 程 切 换 时, 先 进 入 就 绪 队 列 的 进 程 优 先 权 就 越 高 (2) 是 后 进 先 出 算 法 因 为 在 就 绪 队 列 中 的 进 程 比 在 CPU 上 运 行 的 进 程 的 优 先 权 下 降 得 快, 故 后 进 入 就 绪 队 列 的 进 程 此 先 进 入 的 进 程 的 优 先 权 高 3.( 复 旦 大 学 ) 下 表 给 出 了 处 理 机 调 度 的 一 些 算 法 其 中 选 择 函 数 决 定 了 就 绪 队 列 中 下 一 个 将 要 执 行 的 进 程, 它 涉 及 到 如 下 三 个 参 数 中 的 一 部 分 w= 到 目 前 为 止 进 程 在 系 统 中 的 时 间, 包 括 等 待 时 间 和 执 行 时 间 e= 到 目 前 为 止 的 执 行 时 间 s= 进 程 所 需 要 的 总 服 务 时 间, 一 般 包 括 e 试 用 数 学 公 式 表 述 所 列 算 法 的 选 择 函 数, 并 按 照 表 格 顶 行 的 要 求 说 明 各 算 法 的 特 性 调 度 算 法 First-Come First-served Round Robin Shortest ProcessNext Shortest Running time Highest Reponse Ratio Next 选 择 函 数 Preemptive 或 Nonpreemptive 吞 吐 率 高 中 低 执 行 代 价 高 中 低 对 进 程 类 型 的 偏 好 有 无 starvation 分 析 : 本 题 考 查 不 同 调 度 算 法 的 特 点 FCFS 算 法 有 利 于 长 作 业 和 I/O 繁 忙 型 作 业, 并 且 性 能 较 高 但 是 其 平 均 周 转 时 间 一 般 较 长 Round Robin 即 时 间 片 轮 转 调 度 算 法, 当 前 正 在 被 调 度 的 程 序, 肯 定 是 执 行 时 间 最 少 的 可 证 明 SPF 调 度 算 法 是 最 佳 的 算 法, 因 为 它 为 指 定 的 进 程 组 给 出 了 最 小 的 平 均 等 待 时 间 通 过 在 一 个 长 进 程 之 前 移 动 一 个 短 进 程, 短 进 程 等 待 时 间 的 减 少 要 比 长 进 程 等 待 时 间 的 增 加 更 甚 因 而 降 低 了 平 均 等 待 时 间 解 答 : 调 度 算 法 First-Come First-served 选 择 函 数 Preemptive 或 Nonpreemptive 吞 吐 率 高 中 低 执 行 代 价 高 中 低 Max(e) Nonpreemptive 高 低 科 学 出 版 社 对 进 程 类 型 的 偏 好 长 作 业 I/O 型 作 业 有 无 starvation Round Robin Min(e) Nonpreemptive 中 低 无 无 Shortest Process Next Min(s) Preemptive 最 高 最 低 短 作 业 有 ( 长 作 业 ) 无

134 120 调 度 算 法 Shortest Running time Highest Reponse Ratio Next 选 择 函 数 Preemptive 或 Nonpreemptive 操 作 系 统 吞 吐 率 高 中 低 执 行 代 价 高 中 低 对 进 程 类 型 的 偏 好 续 表 有 无 starvation Min(w) Preemptive 中 中 无 有 Max (1+w/s) Preemptive 低 高 无 无 4.( 首 都 师 范 大 学 ) 在 下 列 调 度 算 法 中, 对 所 有 进 程 和 作 业 都 是 公 平 合 理 的 调 度 算 法 是, 最 有 利 于 提 高 系 统 吞 吐 量 的 作 业 调 度 算 法 是, 能 兼 顾 作 业 等 待 时 间 和 作 业 执 行 时 间 的 调 度 算 法 是, 最 有 利 于 提 高 资 源 的 利 用 率, 使 大 部 分 用 户 比 较 满 意 的 调 度 算 法 是, 为 实 现 人 机 交 互 而 采 用 的 调 度 算 法 是, 能 对 紧 急 作 业 进 行 及 时 处 理 的 调 度 算 法 是 A. 先 来 先 服 务 B. 短 作 业 优 先 C. 时 间 片 轮 转 D. 多 级 反 馈 队 列 E. 高 响 应 比 优 先 F. 可 抢 占 式 优 先 级 调 度 分 析 : 本 题 考 查 不 同 进 程 调 度 算 法 的 优 缺 点 解 答 :D,B,E,C,F 5.( 浙 江 大 学 ) 假 设 一 个 计 算 机 系 统 具 有 如 下 性 能 特 征 处 理 一 次 中 断, 平 均 耗 用 1ms; 一 次 进 程 调 度, 平 均 要 2ms; 将 CPU 分 配 给 选 中 的 进 程, 又 需 要 1ms; 再 假 设 其 定 时 器 芯 片 每 秒 产 生 100 次 中 断 请 回 答 : (1) 操 作 系 统 将 百 分 之 几 的 CPU 时 间 用 于 时 钟 中 断 处 理 (2) 如 果 操 作 系 统 采 用 轮 转 法 调 度,10 个 时 钟 中 断 为 1 个 时 间 片 那 么, 操 作 系 统 将 百 分 之 几 的 CPU 时 间 用 于 进 程 调 度 ( 包 括 调 度 分 配 CPU 和 引 起 调 度 的 时 钟 中 断 处 理 时 间 ) 分 析 : 本 题 考 查 时 间 片 轮 转 算 法 的 工 作 原 理 解 答 : 根 据 题 意, (1) 每 秒 产 生 100 次 中 断, 则 一 次 中 断 10ms, 则 处 理 中 断 所 占 比 例 1/10=10% (2)(1+2+1)/100=4% 6.( 浙 江 大 学 ) 系 统 拥 有 一 个 CPU I/O1 和 I/O2 为 两 个 不 同 步 的 输 入 / 输 出 装 置, 它 们 能 够 同 时 工 作 当 使 用 CPU 之 后 控 制 转 向 I/O1 I/O2 时, 或 者 使 用 I/O1 I/O2 之 后 控 制 转 向 CPU 时, 由 控 制 程 序 执 行 中 断 处 理, 但 这 段 处 理 时 间 可 以 忽 略 不 计 有 A B 两 个 进 程 同 时 被 创 建, 进 程 B 的 调 度 优 先 权 比 进 程 A 高, 但 是 当 进 程 A 正 在 占 用 CPU 时, 即 使 进 程 B 需 要 占 用 CPU, 也 不 能 打 断 进 程 A 的 执 行 若 在 同 一 系 统 中 分 别 单 独 执 行, 则 需 要 占 用 CPU I/O1 I/O2 的 时 间 如 图 3-23 所 示 进 程 A: 进 程 B: CPU I/O1 CPU I/O2 CPU I/O1 25ms 30ms 20ms 20ms 20ms 30ms CPU I/O1 CPU I/O2 CPU I/O2 CPU 20ms 30ms 20ms 20ms 10ms 20ms 45ms 图 3-23 进 程 A B 占 用 CPU 及 I/O 时 间

135 第 3 章 处 理 机 调 度 与 死 锁 121 经 过 计 算 可 知, 先 结 束 A. 进 程 A B. 进 程 B C. 进 程 A 和 进 程 B 同 时 结 束 D. 不 一 定 分 析 : 考 查 进 程 的 调 度 过 程,A B 两 进 程 执 行 的 过 程 如 图 3-24 所 示, 可 知 进 程 A 先 执 行 完 解 答 :B 图 3-24 进 程 A,B 的 执 行 过 程 7.( 东 南 大 学 ) 产 生 死 锁 的 根 本 原 因 是 (1) 和 (2), 发 生 死 锁 的 四 个 必 要 条 件 是 : 互 斥 使 用 条 件,(3) 条 件, 不 剥 夺 条 件 和 (4) 条 件 银 行 家 算 法 用 于 (5) 死 锁 供 选 择 的 答 案 : (1)A. 资 源 分 配 不 当 B. 系 统 资 源 数 量 不 足 C. 作 业 调 度 不 当 D. 用 户 数 太 多 (2)A. 进 程 推 进 顺 序 不 当 B. 进 程 调 度 失 误 C. 进 程 数 太 多 D. CPU 太 慢 (3)A 请 求 和 阻 塞 B. 请 求 与 释 放 C. 请 求 和 保 持 D. 释 放 和 阻 塞 (4)A. 环 路 B. 环 路 且 等 待 C. 资 源 编 序 D. 资 源 无 序 (5)A. 避 免 B. 预 防 C. 控 制 D. 模 拟 E. 解 除 分 析 : 本 题 考 查 死 锁 产 生 的 原 因, 产 生 的 必 要 条 件 以 及 银 行 家 算 法 产 生 死 锁 现 象 的 原 因 : 一 是 系 统 提 供 的 资 源 不 能 满 足 每 个 进 程 的 使 用 需 求 ; 因 为 倘 若 资 源 数 量 无 限 的 话, 进 程 之 间 就 不 会 发 生 资 源 竞 争, 当 然 不 会 形 成 互 不 相 让 的 僵 持 局 面 二 是 在 多 道 程 序 运 行 时, 进 程 推 进 顺 序 不 合 法 产 生 死 锁 的 必 要 条 件 是 : 互 斥 条 件 请 求 和 保 持 条 件 不 剥 夺 条 件 和 环 路 等 待 条 件 最 著 名 的 死 锁 避 免 算 法 是 Dijkstra 提 出 的 银 行 家 算 法 科 学 出 版 社 解 答 :1. B 2. A 3. C 4. A 5. A 8.( 中 国 科 学 技 术 大 学 ) 因 争 用 资 源 产 生 死 锁 的 必 要 条 件 是 互 斥 循 环 等 待 不 可 抢 占 和 对 于 缓 冲 池 ( 大 量 缓 冲 区 ) 的 管 理, 采 用 生 产 者 - 消 费 者 方 式 解 决 同 步 或 互 斥 时, 通 常 需 要 用 到 个 信 号 量 (1)A. 请 求 与 释 放 B. 释 放 与 保 持 C. 释 放 与 阻 塞 D. 保 持 与 等 待

136 122 操 作 系 统 (2)A. 1 B. 2 C. 3 D. 4 分 析 : 考 查 死 锁 产 生 的 四 个 必 要 条 件 和 生 产 者 - 消 费 者 方 式 解 决 死 锁 问 题 采 用 生 产 者 - 消 费 者 方 式 解 决 同 步 和 互 斥 时, 通 常 需 要 用 3 个 信 号 量, 其 中,2 个 用 于 同 步,1 个 用 于 互 斥 解 答 :1 D,2 C 9.( 全 国 统 考 ) 下 列 选 项 中, 降 低 进 程 优 先 级 的 合 理 时 机 是 A. 进 程 的 时 间 片 用 完 B. 进 程 刚 完 成 I/O, 进 入 就 绪 队 列 C. 进 程 长 期 处 于 就 绪 队 列 D. 进 程 从 就 绪 状 态 转 为 运 行 状 态 分 析 : 本 题 考 查 基 于 时 间 片 的 进 程 调 度 方 法 解 答 : 选 A 10.( 上 海 交 通 大 学 ) 有 三 个 进 程 P1 P2 和 P3 并 发 工 作 进 程 P1 需 用 资 源 S3 和 S1; 进 程 P2 需 用 资 源 S1 和 S2; 进 程 P3 需 用 资 源 S2 和 S3 (1) 若 对 资 源 分 配 不 加 限 制, 会 发 生 什 么 情 况? 为 什 么? (2) 为 保 证 进 程 正 确 工 作, 应 采 用 怎 样 的 资 源 分 配 策 略? 列 举 出 所 有 可 能 的 方 法 分 析 : 本 题 考 查 对 死 锁 是 否 会 发 生 的 判 断 解 答 : (1) 可 能 会 发 生 死 锁 例 如, 进 程 P1 P2 和 P3 分 别 获 得 资 源 S3 S1 和 S2 后 再 继 续 申 请 资 源 时 都 要 等 待, 这 是 循 环 等 待 (2) 可 能 采 取 的 方 法 如 下 A. 采 用 静 态 分 配 : 由 于 执 行 前 已 获 得 所 需 的 全 部 资 源, 故 不 会 出 现 占 有 资 源 又 等 待 别 的 资 源 的 现 象 ( 或 不 会 出 现 循 环 等 待 资 源 现 象 ) B. 采 用 按 序 分 配 : 不 会 出 现 循 环 等 待 资 源 现 象 C. 采 用 银 行 家 算 法 : 因 为 在 分 配 时, 保 证 了 系 统 处 于 安 全 状 态 11.( 四 川 大 学 ) 某 系 统 有 同 类 资 源 m 个, 供 n 个 进 程 使 用 ; 如 果 每 个 进 程 对 资 源 的 最 大 需 求 量 为 K, 问 : (1) 为 使 系 统 不 发 生 死 锁,K 的 最 大 值 为 多 少? (2) 按 (1) 的 结 果, 当 n=3,m 分 别 取 值 2 3 和 4 时, 对 应 的 K 值 是 多 少, 就 可 以 使 系 统 不 会 发 生 死 锁? 分 析 : 本 题 考 查 死 锁 资 源 和 进 程 数 目 间 的 关 系 解 答 : (1) 为 使 系 统 不 发 生 死 锁, 则 应 使 下 面 不 等 式 成 立 n(k-1)+1 m m 1 解 上 述 不 等 式 可 以 得 到 K 1, 因 而 K 的 最 大 值 应 为 n 1 当 m n时 K m 1 1 当 m> n时 n

137 第 3 章 处 理 机 调 度 与 死 锁 123 (2) 根 据 (1) 的 计 算, 当 n=3,m 的 值 为 2,3,4 时, 对 应 的 K 值 是 1,1,2, 则 系 统 不 会 发 生 死 锁 12.( 山 东 科 技 大 学 ) 某 系 统 有 12 个 磁 带 机,3 个 进 程 P0 P1 和 P2 每 个 进 程 对 磁 带 机 的 最 大 需 求 量 以 及 当 前 持 有 磁 带 机 的 数 量 如 表 3-10 所 示 表 3-10 进 程 资 源 持 有 及 需 求 量 表 进 程 最 大 需 求 量 (Maximum Needs) 当 前 持 有 量 (Current Holdings) P P1 4 2 P2 9 2 请 问 系 统 当 前 是 否 处 于 安 全 状 态, 并 给 出 解 释 分 析 : 本 题 考 查 银 行 家 算 法 的 执 行 过 程 及 其 基 本 原 理 在 本 题 中, 先 求 出 各 进 程 的 需 求 矩 阵 Need, 如 图 3-25 所 示, 可 用 资 源 数 目 为 =3 进 程 还 需 资 源 数 Need P0 5 P1 2 P2 7 图 3-25 各 进 程 的 需 求 矩 阵 Need 可 见, 只 能 满 足 进 程 P1 的 要 求,P1 完 成 后, 释 放 所 占 有 的 资 源, 可 用 资 源 数 变 为 5, 此 时 P0 的 要 求 可 以 满 足, 完 成 后,P1 是 释 放 所 占 有 的 资 源, 可 用 资 源 数 变 为 10, 此 时 P2 的 需 求 可 以 被 满 足 解 答 : 处 于 安 全 状 态, 根 据 银 行 家 算 法, 系 统 中 存 在 一 个 安 全 序 列 P1,P0,P2 安 全 状 态 不 会 导 致 死 锁 发 生 综 合 题 详 解 综 合 题 1 某 系 统 的 进 程 状 态 变 迁 如 图 3-26 所 示 ( 设 系 统 的 进 程 调 度 方 式 为 可 剥 夺 式 ) (1) 说 明 一 个 进 程 发 生 变 迁 的 原 因 (2) 当 发 生 一 个 变 迁 时 可 能 引 起 另 一 个 变 迁 的 发 生, 这 两 个 变 迁 称 为 因 果 变 迁 下 述 变 迁 是 否 会 发 生, 如 果 有 可 能 的 话, 在 什 么 情 况 下 发 生? (a)3 5 (b)3 2 (c)2 1 (d)4 1 (e)4 5 (3) 根 据 图 3-26 所 示 说 明 该 系 统 的 调 度 策 略 和 调 度 效 果 分 析 : 本 题 考 查 进 程 调 度 的 原 因 和 策 略, 解 答 此 类 题 目, 首 先 要 掌 握 常 见 的 进 程 状 态 变 迁 原 因, 例 如, 等 待 输 入 / 输 出 时 间 片 到 时 优 先 级 剥 夺 等 解 答 : 科 学 出 版 社 (1) 发 生 进 程 状 态 变 迁 2 的 原 因 是 一 个 更 高 优 先 级 的 进 程 到 来 ; 发 生 进 程 状 态 变 迁 3 的 原 因 是 进 程 等 待 I/O 设 备 ; 发 生 进 程 状 态 变 迁 5 的 原 因 是 高 优 先 级 的 进 程 抢 占 CPU (2)a 有 可 能 发 生, 当 某 个 进 程 因 I/O 而 阻 塞, 从 运 行 态 转 换 到 阻 塞 态 时, 恰 好 有

138 124 操 作 系 统 一 个 进 程 状 态 转 换 为 高 优 先 级 就 绪, 就 会 发 生 转 换 3 5 b 不 可 能 发 生 系 统 中 总 会 有 一 个 进 程 在 运 行 在 转 换 3 2 中 没 有 进 程 在 运 行 图 3-26 进 程 状 态 变 迁 图 c 可 能 发 生 低 优 先 级 的 进 程 时 间 片 用 完, 调 度 另 一 个 低 优 先 级 进 程, 此 时 高 优 先 级 就 绪 队 列 为 空 d 不 可 能 发 生 转 换 4 发 生 时, 系 统 中 有 一 个 高 优 先 级 的 进 程 就 绪, 所 以 不 可 能 调 度 一 个 低 优 先 级 的 进 程 运 行 e 可 能 发 生 一 个 因 I/O 而 阻 塞 的 进 程 转 换 成 高 优 先 级 就 绪 后, 立 刻 被 调 度 执 行 (3) 从 题 目 可 以 看 出, 该 系 统 采 用 的 不 可 剥 夺 优 先 级 调 度 算 法 这 是 一 种 按 时 间 片 轮 转 调 度 和 优 先 调 度 相 结 合 的 调 度 策 略 分 两 个 就 绪 队 列, 首 先 从 高 优 先 就 绪 队 列 选 择 进 程 ( 给 时 间 片 100 ms), 当 高 优 先 就 绪 队 列 为 空 时, 则 从 低 优 先 就 绪 队 列 选 择 进 程 去 运 行 调 度 效 果 如 下 : 优 先 照 顾 了 I/O 量 大 的 进 程, 这 样 的 进 程 处 于 高 优 先 就 绪 队 列 中, 当 CPU 空 闲 时, 首 先 从 该 队 列 选 择 进 程 去 运 行, 所 以 I/O 量 大 的 进 程 被 调 度 的 机 会 多 综 合 题 2 表 3-11 列 出 5 个 进 程 的 执 行 时 间 和 优 先 数, 规 定 优 先 级 数 越 小 优 先 权 越 大, 在 某 时 刻 这 五 个 进 程 按 照 P0 P1 P2 P3 P4 的 顺 序 同 时 到 达, 求 在 采 用 如 下 算 法 时 进 程 的 平 均 周 转 时 间 和 平 均 带 权 周 转 时 间 (1) 先 来 先 服 务 调 度 算 法 (2) 短 进 程 优 先 调 度 算 法 (3) 时 间 片 轮 转 调 度 算 法 ( 时 间 片 为 5ms) (4) 优 先 权 调 度 算 法 表 3-11 进 程 的 执 行 时 间 和 优 先 数 进 程 名 执 行 时 间 (ms) 优 先 数 进 程 名 执 行 时 间 (ms) 优 先 数 P P P P P 分 析 : 在 先 进 先 出 调 度 算 法 中, 当 处 理 器 空 闲 时 只 要 就 绪 队 列 中 有 进 程, 则 进 程 调 度 就 要 按 照 预 定 的 算 法 从 就 绪 队 列 中 选 择 可 运 行 的 进 程 先 来 先 服 务 算 法 是 按 照 进 程 进

139 第 3 章 处 理 机 调 度 与 死 锁 125 入 就 绪 队 列 的 先 后 次 序 来 选 择 可 占 用 处 理 器 运 行 的 进 程 所 以, 题 中 的 5 个 进 程 将 依 次 占 用 处 理 器 运 行 根 据 它 们 所 需 的 处 理 器 时 间 可 计 算 出 它 们 在 就 绪 队 列 中 的 等 待 时 间, 按 题 中 假 定 忽 略 进 行 调 度 所 花 时 间, 则 第 一 个 进 程 应 立 即 被 选 中, 它 在 就 绪 队 列 中 的 等 待 时 间 为 0; 第 二 个 进 程 要 等 第 一 个 进 程 执 行 结 束 后 才 可 占 用 处 理 器, 因 而 要 在 就 绪 队 列 中 等 待 20ms, 周 转 时 间 为 (20+15)ms; 于 是, 进 程 P2 P3 P4 的 周 转 时 间 分 别 为 ( )ms ( )ms ( )ms 带 权 周 转 时 间 = 进 程 周 转 时 间 / 实 际 需 要 执 行 时 间 所 以 进 程 P0 P1 P2 P3 和 P4 的 周 转 时 间 分 别 是 1 35/15 70/35 95/25 和 135/25 如 果 采 用 短 进 程 优 先 调 度 算 法, 则 系 统 首 先 选 择 短 作 业 投 入 运 行 在 该 题 中, 首 先 选 择 P1 进 程 执 行 所 以, 进 程 P0 P1 P2 P3 P4 的 周 转 时 间 为 15ms (15+20)ms ( )ms ( )ms 和 ( )ms 由 此 可 得 带 权 周 转 时 间 为 1 35/20 60/25 95/25 和 135/25 如 果 采 用 时 间 片 轮 转 调 度 算 法, 则 运 行 结 果 如 图 3-27 所 示 图 3-27 时 间 片 轮 转 调 度 算 法 运 行 结 果 可 以 看 到, 进 程 P0 的 周 转 时 间 为 80, 进 程 P1 的 周 转 时 间 为 55, 进 程 P2 的 周 转 时 间 为 125, 进 程 P3 的 周 转 时 间 为 105, 进 程 P4 的 周 转 时 间 为 135 如 果 采 用 优 先 级 调 度 算 法, 必 须 按 优 先 级 由 高 到 低 的 顺 序 来 选 择 可 运 行 进 程, 对 有 相 同 优 先 级 的 进 程 再 按 先 后 顺 序 选 择 根 据 题 意,P1 的 周 转 时 间 为 15ms,P3 的 周 转 时 间 为 (15+25)ms,P0 的 周 转 时 间 为 ( )ms,P2 的 周 转 时 间 为 ( )ms, P4 的 周 转 时 间 为 ( )ms 解 答 : 根 据 分 析, (1) 先 来 先 服 务 算 法 中, 平 均 周 转 时 间 为 ( )/5=71 平 均 带 权 周 转 时 间 为 (1+35/15+70/35+95/25+135/25)/5=2.906 (2) 短 进 程 优 先 调 度 算 法 : 平 均 周 转 时 间 为 ( )/5=68 带 权 周 转 时 间 为 (1+35/20+60/25+95/25+135/25)=2.87 (3) 时 间 片 轮 转 调 度 算 法 : 平 均 周 转 时 间 为 ( )/5=100 平 均 带 权 周 转 时 间 为 (80/20+55/15+125/35+105/25+135/40)/5=3.76 (4) 优 先 权 调 度 算 法 : 平 均 周 转 时 间 为 ( )/5=69 平 均 带 权 周 转 时 间 为 (15/15+40/25+60/20+95/35+135/40)/5=2.337 综 合 题 3 假 设 具 有 5 个 进 程 的 集 合 P={P0,P1,P2,P3,P4}, 系 统 中 有 三 类 资 源 A 科 学 出 版 社

140 126 操 作 系 统 B C, 假 设 在 某 时 刻 有 如 图 3-28 所 示 的 资 源 分 配 状 态 Allocation ABC Max ABC P P P P P Available ABC 140 图 3-28 某 时 刻 的 资 源 分 配 表 请 问 当 前 系 统 是 否 处 于 安 全 状 态, 如 果 系 统 中 可 利 用 资 源 Available 为 (0, 6, 2), 系 统 是 否 安 全, 如 果 系 统 处 于 安 全 状 态, 请 给 出 安 全 序 列 ; 如 果 系 统 处 于 非 安 全 状 态, 请 简 要 说 明 原 因 分 析 : 考 查 银 行 家 算 法 的 执 行 过 程 及 其 基 本 原 理 先 求 出 每 个 进 程 的 Need 矩 阵 如 图 3-29 所 示 Allocation ABC Max ABC Need ABC P P P P P 图 3-29 每 个 进 程 的 Need 矩 阵 由 于 当 前 系 统 中 的 可 用 资 源 数 为 (1, 4, 0), 只 能 满 足 进 程 P2 的 需 求, 进 程 P2 获 得 资 源 并 执 行, 完 成 后 释 放 资 源, 此 时 系 统 中 可 用 资 源 变 为 (2, 7, 5); 此 时 进 程 P1 的 请 求 可 以 满 足, 进 程 P1 获 得 资 源 并 执 行, 完 成 后 释 放 资 源, 此 时 系 统 中 可 用 资 源 变 为 (3, 7, 5); 此 时 进 程 P0 可 以 被 满 足,P0 运 行 并 完 成 释 放 资 源 后 系 统 中 的 可 用 资 源 数 为 (3, 7, 8); 然 后 P3 继 续 执 行,P3 完 成 后 系 统 中 的 可 用 资 源 数 为 (3, 7, 10); 最 后 P4 运 行 如 果 系 统 中 可 利 用 资 源 Available 为 (0, 6, 2), 则 可 以 满 足 P3 的 要 求,P3 完 成 后 系 统 中 的 可 用 资 源 数 量 为 (0, 6, 4), 可 以 满 足 P4 的 要 求,P4 完 成 后 系 统 中 可 用 资 源 数 量 为 (0, 6, 5), 可 以 满 足 进 程 P0 的 要 求,P0 完 成 后 系 统 中 可 用 资 源 数 量 为 (0, 6, 8,) 无 法 继 续 满 足 其 他 进 程 的 要 求, 所 以 此 时 系 统 中 处 于 非 安 全 状 态 解 答 : 该 状 态 是 安 全 的, 系 统 中 存 在 一 个 安 全 序 列 P2,P1,P0,P3,P4 银 行 家 算 法 的 工 作 过 程 如 图 3-30 所 示 Allocation ABC Max ABC Need ABC Work ABC Finished P True P True P True P ,7,10 True P ,7,11 True 图 3-30 银 行 家 算 法 的 工 作 过 程 如 果 系 统 中 可 利 用 资 源 Available 为 (0, 6, 2), 银 行 家 算 法 的 工 作 过 程 如 图 3-31 所 示

141 第 3 章 处 理 机 调 度 与 死 锁 127 Allocation ABC Max ABC Need ABC Work ABC Finished P True P True P True P False P 可 见 此 时 系 统 处 于 非 安 全 状 态 图 3-31 改 变 了 可 利 用 资 源 的 银 行 家 算 法 工 作 过 程 3.10 习 题 一 选 择 题 1. 在 进 程 管 理 中, 当 时, 进 程 状 态 从 运 行 态 转 换 到 就 绪 态 A. 进 程 被 调 度 程 序 选 中 B. 时 间 片 用 完 C. 等 待 某 一 事 件 发 生 D. 等 待 的 事 件 发 生 2. 对 于 处 理 机 调 度 中 的 高 响 应 比 调 度 算 法, 通 常, 影 响 响 应 比 的 主 要 因 素 可 以 是 A. 程 序 长 度 B. 静 态 优 先 数 C. 运 行 时 间 D. 等 待 时 间 3. 优 先 权 是 在 创 建 进 程 时 确 定 的, 确 定 之 后 在 整 个 进 程 运 行 期 间 不 再 改 变 A. 先 来 先 服 务 B. 静 态 C. 动 态 D. 短 作 业 4. 以 下 哪 一 些 是 基 于 时 间 片 的 调 度 算 法 A. 时 间 片 轮 转 算 法 B. 多 级 反 馈 队 列 调 度 算 法 C. 抢 占 式 调 度 算 法 D. FCFS 调 度 算 法 E. 高 响 应 比 优 先 调 度 算 法 5. 当 出 现 情 况 时, 系 统 可 能 产 生 死 锁 A. 进 程 释 放 资 源 B. 一 个 进 程 进 入 死 循 环 C. 多 个 进 程 竞 争 资 源 出 现 了 循 环 等 待 D. 多 个 进 程 竞 争 共 享 型 设 备 6. 一 进 程 在 获 得 资 源 后, 只 能 在 使 用 完 资 源 后 由 自 己 释 放, 这 属 于 死 锁 必 要 条 件 的 A. 互 斥 条 件 B. 请 求 和 释 放 条 件 C. 不 剥 夺 条 件 D. 环 路 等 待 条 件 7. 某 系 统 中 有 3 个 并 发 进 程, 都 需 要 同 类 资 源 4 个, 试 问 该 系 统 不 会 发 生 死 锁 的 最 小 资 源 数 是 A. 9 B. 10 C. 11 D 死 锁 定 理 是 用 于 处 理 死 锁 的 方 法 科 学 出 版 社

142 128 操 作 系 统 A. 预 防 死 锁 B. 避 免 死 锁 C. 检 测 死 锁 D. 解 除 死 锁 9. 解 除 死 锁 时, 可 以 通 过 方 法 实 现 系 统 的 损 失 最 少 A. 撤 销 死 锁 进 程 B. 剥 夺 发 生 死 锁 进 程 的 资 源 C. 剥 夺 没 有 发 生 死 锁 进 程 的 资 源 分 配 给 发 生 死 锁 的 进 程 D. 撤 销 没 有 发 生 死 锁 10. 死 锁 检 测 时 检 查 的 是 A. 资 源 分 配 图 B. 前 趋 图 C. 搜 索 树 D. 安 全 图 11. 采 用 资 源 剥 夺 的 方 式 解 除 死 锁, 还 可 以 采 用 方 式 A. 执 行 并 操 作 B. 撤 销 进 程 C. 拒 绝 分 配 D. 修 改 信 号 量 12. 死 锁 的 四 个 必 要 条 件 无 法 破 坏 的 是 A. 互 斥 条 件 B. 请 求 与 保 持 条 件 C. 非 抢 夺 条 件 D. 循 环 等 待 条 件 13. 银 行 家 算 法 通 过 破 坏 来 避 免 死 锁 A. 互 斥 条 件 B. 部 分 分 配 条 件 C. 不 可 抢 占 条 件 D. 循 环 等 待 条 件 14. 调 用 银 行 家 算 法 进 行 安 全 序 列 检 查 时, 不 是 必 须 要 提 供 的 参 数 A. 系 统 资 源 总 量 B. 当 前 可 用 量 C. 用 户 最 大 需 求 量 D. 用 户 已 占 有 资 源 量 二 填 空 题 1. 进 程 的 两 种 调 度 方 式 是 调 度 和 调 度 其 中, 的 系 统 开 销 小, 但 实 时 系 统 不 能 采 用 2. 在 进 程 调 度 的 抢 占 方 式 中, 抢 占 的 原 则 有 原 则 和 原 则, 以 及 短 进 程 优 先 的 原 则 3. 在 响 应 比 最 高 者 优 先 的 作 业 调 度 算 法 中, 当 各 个 作 业 等 待 时 间 相 同 时, 的 作 业 将 得 到 优 先 调 度 ; 当 各 个 作 业 要 求 运 行 的 时 间 相 同 时, 的 作 业 得 到 优 先 调 度 4. 进 程 调 度 算 法 采 用 固 定 时 间 片 轮 转 法, 时 间 片 过 大, 就 会 使 轮 转 法 转 化 为 调 度 算 法 5. S 为 死 锁 状 态 的 充 要 条 件 是, 该 充 要 条 件 称 为 死 锁 定 理 6. 假 设 系 统 拥 有 某 类 资 源 10 个 该 系 统 上 运 行 的 所 有 作 业, 其 对 该 类 资 源 的 占 有 量 在 任 一 时 刻 不 会 超 过 2 个 为 提 高 资 源 利 用 率, 打 算 对 这 种 资 源 采 用 动 态 分 配, 用 限 制 系 统 中 并 发 执 行 的 作 业 数 来 防 止 发 生 死 锁 你 认 为 作 业 调 度 允 许 并 发 执 行 的 最 大 作 业 数 应 是 7. 预 防 死 锁 的 三 种 方 法 是

143 第 3 章 处 理 机 调 度 与 死 锁 解 除 死 锁 的 方 法 有 两 种, 即 9. 不 让 死 锁 发 生 的 策 略 可 以 分 为 静 态 和 动 态 的 两 种, 死 锁 避 免 属 于 策 略 10. 对 待 死 锁, 一 般 应 考 虑 死 锁 的 预 防 避 免 检 测 和 解 除 四 个 问 题 典 型 的 银 行 家 算 法 是 属 于, 破 坏 环 路 等 待 条 件 是 属 于, 而 剥 夺 资 源 是 的 基 本 方 法 三 简 答 题 1. 试 归 纳 出 在 操 作 系 统 中 引 起 进 程 调 度 可 能 有 的 原 因 有 哪 些? 2. 可 抢 夺 式 优 先 级 进 程 调 度 是 如 何 实 现 的? 3. 选 择 调 度 方 式 和 调 度 算 法 时, 应 遵 循 的 准 则 是 什 么? 4. 死 锁 产 生 的 四 个 必 要 条 件 是 什 么? 用 于 保 证 系 统 不 会 产 生 死 锁 的 方 法 有 哪 些? 5. 请 给 出 分 布 式 系 统 中 死 锁 难 以 处 理 的 主 要 原 因 举 例 说 明 分 布 式 系 统 中 的 虚 幻 死 锁 (Phantom Deadlock) 现 象, 并 说 明 其 原 因 6. 死 锁 的 防 止 避 免 和 检 测 三 者 有 什 么 不 同? 7. 要 使 一 个 系 统 不 发 生 死 锁, 一 般 可 采 用 哪 些 方 法? 简 述 它 们 的 实 现 原 理 科 学 出 版 社

眼病防治

眼病防治 ( 20 010010) 787 1092 1/32 498.50 4 980 2004 9 1 2004 9 1 1 1 000 ISBN 7-204-05940-9/R 019 1880.00 ( 20.00 ) ...1...1...2...3...5...5...6...7...9... 11...13...14...15...17...18...19...20...21 I II...21...22...23...24...25...27...27...28...29...30...31...33...33...34...36...38...39...40...41...42...43...45

More information

中国南北特色风味名菜 _八)

中国南北特色风味名菜 _八) ( 20 010010) 7871092 1/32 356.25 4 760 2004 8 1 2004 8 1 11 000 ISBN 7-204-05943-3/Z102 1026.00 ( 18.00 ) ...1...2...2...4...6...7...8...9... 10... 11... 12... 13... 13... 14... 15... 17... 18... 19...

More information

心理障碍防治(下).doc

心理障碍防治(下).doc ( 20 010010) 787 1092 1/32 498.50 4 980 2004 9 1 2004 9 1 1 1 000 ISBN 7-204-05940-9/R 019 1880.00 ( 20.00 ) ...1...2...2...3...4...5...6...7...8...9...10... 11...12...13...15...16...17...19...21 I ...23...24...26...27...28...30...32...34...37...39...40...42...42...44...47...50...52...56...58...60...64...68

More information

Microsoft Word - MP2018_Report_Chi _12Apr2012_.doc

Microsoft Word - MP2018_Report_Chi _12Apr2012_.doc 人 力 資 源 推 算 報 告 香 港 特 別 行 政 區 政 府 二 零 一 二 年 四 月 此 頁 刻 意 留 空 - 2 - 目 錄 頁 前 言 詞 彙 縮 寫 及 注 意 事 項 摘 要 第 一 章 : 第 二 章 : 第 三 章 : 第 四 章 : 附 件 一 : 附 件 二 : 附 件 三 : 附 件 四 : 附 件 五 : 附 件 六 : 附 件 七 : 引 言 及 技 術 大 綱 人

More information

南華大學數位論文

南華大學數位論文 1 i -------------------------------------------------- ii iii iv v vi vii 36~39 108 viii 15 108 ix 1 2 3 30 1 ~43 2 3 ~16 1 2 4 4 5 3 6 8 6 4 4 7 15 8 ----- 5 94 4 5 6 43 10 78 9 7 10 11 12 10 11 12 9137

More information

李天命的思考藝術

李天命的思考藝術 ii iii iv v vi vii viii ix x 3 1 2 3 4 4 5 6 7 8 9 5 10 1 2 11 6 12 13 7 8 14 15 16 17 18 9 19 20 21 22 10 23 24 23 11 25 26 7 27 28 12 13 29 30 31 28 32 14 33 34 35 36 5 15 3 1 2 3 4 5 6 7 8 9 10 11

More information

皮肤病防治.doc

皮肤病防治.doc ...1...1...2...3...4...5...6...7...7...9...10... 11...12...14...15...16...18...19...21 I ...22...22...24...25...26...27...27...29...30...31...32...33...34...34...36...36...37...38...40...41...41...42 II

More information

性病防治

性病防治 ...1...2...3...4...5...5...6...7...7...7...8...8...9...9...10...10... 11... 11 I ...12...12...12...13...14...14...15...17...20...20...21...22...23...23...25...27...33...34...34...35...35 II ...36...38...39...40...41...44...49...49...53...56...57...57...58...58...59...60...60...63...63...65...66

More information

中国南北特色风味名菜 _一)

中国南北特色风味名菜 _一) ...1...1...2...3...3...4...5...6...7...7...8...9... 10... 11... 13... 13... 14... 16... 17 I ... 18... 19... 20... 21... 22... 23... 24... 25... 27... 28... 29... 30... 32... 33... 34... 35... 36... 37...

More information

全唐诗24

全唐诗24 ... 1... 1... 2... 2... 3... 3... 4... 4... 5... 5... 6... 6... 7... 7... 8... 8... 9... 9...10...10...10...11...12...12...12...13...13 I II...14...14...14...15...15...15...16...16...16...17...17...18...18...18...19...19...19...20...20...20...21...21...22...22...23...23...23...24

More information

509 (ii) (iii) (iv) (v) 200, , , , C 57

509 (ii) (iii) (iv) (v) 200, , , , C 57 59 (ii) (iii) (iv) (v) 500,000 500,000 59I 18 (ii) (iii) (iv) 200,000 56 509 (ii) (iii) (iv) (v) 200,000 200,000 200,000 500,000 57 43C 57 (ii) 60 90 14 5 50,000 43F 43C (ii) 282 24 40(1B) 24 40(1) 58

More information

中医疗法(下).doc

中医疗法(下).doc ( 20 010010) 787 1092 1/32 498.50 4 980 2004 9 1 2004 9 1 1 1 000 ISBN 7-204-05940-9/R 019 1880.00 ( 20.00 ) ...1...2...3...4...13...15...17...17...24...25...26...26...28...28...29...31...31...33...33

More information

全唐诗28

全唐诗28 ... 1... 1... 1... 2... 2... 2... 3... 3... 4... 4... 4... 5... 5... 5... 5... 6... 6... 6... 6... 7... 7... 7... 7... 8... 8 I II... 8... 9... 9... 9...10...10...10...11...11...11...11...12...12...12...13...13...13...14...14...14...15...15...15...16...16...16...17...17

More information

穨學前教育課程指引.PDF

穨學前教育課程指引.PDF i 1 1.1 1 1.2 1 4 2.1 4 2.2 5 2.3 7 2.4 9 2.5 11 2.6 1 2 1 5 3.1 1 5 3.2 1 5 19 4.1 19 4.2 19 4.3 2 1 4.4 29 4.5 38 4.6 4 3 4.7 47 50 5.1 5 0 5.2 5 0 5.3 6 2 5.4 9 4 5.5 1 2 6 ( ) 1 2 7 ( ) 1 31 ( ) 1

More information

「香港中學文言文課程的設計與教學」單元設計範本

「香港中學文言文課程的設計與教學」單元設計範本 1. 2. 3. (1) (6) ( 21-52 ) (7) (12) (13) (16) (17) (20) (21) (24) (25) (31) (32) (58) 1 2 2007-2018 7 () 3 (1070) (1019-1086) 4 () () () () 5 () () 6 21 1. 2. 3. 1. 2. 3. 4. 5. 6. 7. 8. 9. ( ) 7 1. 2.

More information

ZYWGML

ZYWGML 21 世 纪 高 职 高 专 教 材 供 中 医 中 西 医 结 合 类 专 业 用 中 医 五 官 科 学 毋 桂 花 主 编 北 京 内 容 简 介 本 书 是 21 世 纪 高 职 高 专 教 材 ( 供 中 医 中 西 医 结 合 类 专 业 用 ) 中 的 一 种, 主 要 论 述 耳 鼻 咽 喉 口 腔 疾 病 及 眼 科 疾 病 的 发 生 发 展 诊 断 治 疗 本 书 的 编 写

More information

vi 黃 帝 內 經 即 學 即 用 別 做 反 自 然 的 事 053 成 年 人 應 該 斷 奶 055 吃 肉 吃 素 因 人 而 異 057 要 分 清 飢 和 餓 058 生 活 現 代 化 與 本 能 退 化 061 調 神 就 是 調 節 奏 063 想 冬 泳, 先 問 問 自 己

vi 黃 帝 內 經 即 學 即 用 別 做 反 自 然 的 事 053 成 年 人 應 該 斷 奶 055 吃 肉 吃 素 因 人 而 異 057 要 分 清 飢 和 餓 058 生 活 現 代 化 與 本 能 退 化 061 調 神 就 是 調 節 奏 063 想 冬 泳, 先 問 問 自 己 目 錄 001 第 一 講 道 法 自 然 養 生 首 先 要 找 對 方 向 003 健 身 不 同 於 健 體 006 隨 順 自 然 的 節 拍 008 調 和 的 重 要 013 吃 飯 的 講 究 017 飲 水 的 學 問 021 喝 適 合 自 己 的 茶 025 起 居 作 息 要 規 律 029 形 與 神 俱 靠 甚 麼 031 還 原 現 場 033 039 第 二 講 背 道

More information

中医疗法(上).doc

中医疗法(上).doc ( 20 010010) 787 1092 1/32 498.50 4 980 2004 9 1 2004 9 1 1 1 000 ISBN 7-204-05940-9/R 019 1880.00 ( 20.00 ) ...1...1...1...2...4...5...7...13...15...17...18...19...21...23...24...24...26...26...27 I ...28...29...30...30...31...32...33...34...35...36...37...39...40...41...42...43...43...45...46...47...47...48

More information

穨ecr2_c.PDF

穨ecr2_c.PDF i ii iii iv v vi vii viii 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 1 26 27 2 28 29 30 31 32 33 34 35 36 37 38 39 40 3 4 41 42 43 5 44 45 46 6 47 48 49 50 51 52 1 53 2 54 55 3 56

More information

電腦相關罪行跨部門工作小組-報告書

電腦相關罪行跨部門工作小組-報告書 - ii - - iii - - iv - - v - - vi - - vii - - viii - (1) 2.1 (2) (3) 13.6 (4) 1.6 (5) 21 (6) (7) 210 (8) (9) (10) (11) ( ) ( 12) 20 60 16 (13) ( ) (

More information

i

i i ii iii iv v vi vii viii ===== 1 2 3 4 5 6 7 8 9 10 ==== 11 12 13 14 15 16 17 18 19 ==== ==== 20 .. ===== ===== ===== ===== ===== ======.. 21 22 ===== ===== ===== ===== 23 24 25 26 27 28 29 ==== ====

More information

发展党员工作手册

发展党员工作手册 发 展 党 员 工 作 问 答 目 录 一 总 论...9 1. 发 展 党 员 工 作 的 方 针 是 什 么? 如 何 正 确 理 解 这 个 方 针?... 9 2. 为 什 么 强 调 发 展 党 员 必 须 保 证 质 量?... 9 3. 如 何 做 到 慎 重 发 展?... 10 4. 如 何 处 理 好 发 展 党 员 工 作 中 的 重 点 与 一 般 的 关 系?...11 5.

More information

i

i 9 1 2 3 4 i 5 6 ii iii iv v vi vii viii 1 1 1 2 3 4 2 5 6 2 3 2.10 ( 2.11 ) ( 2.11 ) ( 2.9 ) 7 8 9 3 10 5% 2% 4 11 93% (2001 02 2003 04 ) ( ) 2,490 (100%) 5 12 25% (2.57% 25%) 6 (2001 02 2003 04 ) 13 100%

More information

39898.indb

39898.indb 1988 4 1998 12 1990 5 40 70.................................................. 40.............................................................. 70..............................................................

More information

Microsoft Word - report final.doc

Microsoft Word - report final.doc 殘 疾 人 士 無 障 礙 運 輸 需 要 研 究 調 查 報 告 書 目 錄 I. 撮 要 II. III. IV. 前 言 調 查 目 的 文 獻 回 顧 V. 調 查 方 法 VI. 調 查 結 果 VII. 分 析 及 討 論 VIII. 建 議 IX. 鳴 謝 I. 撮 要 殘 疾 人 士 在 日 常 生 活 上 面 對 不 少 困 難 與 挑 戰, 健 全 人 士 未 必 可 以 身 同

More information

前 言 根 据 澳 门 特 别 行 政 区 第 11/1999 号 法 律 第 三 条 规 定, 审 计 长 执 行 其 职 责, 已 经 对 财 政 局 提 交 的 2011 年 度 澳 门 特 别 行 政 区 总 帐 目 ( 总 帐 目 ) 进 行 了 审 计 与 2010 年 度 相 同, 本 年 度 的 总 帐 目 由 政 府 一 般 综 合 帐 目 及 特 定 机 构 汇 总 帐 目, 两

More information

一、

一、 ... 1...24...58 - 2 - - 3 - - 4 - - 5 - - 6 - - 7 - - 8 - i. ii. iii. iv. i. ii. iii. iv. v. vi. vii. viii. ix. x. - 9 - xi. - 10 - - 11 - -12- -13- -14- -15- C. @ -16- @ -17- -18- -19- -20- -21- -22-

More information

-i-

-i- -i- -ii- -iii- -iv- -v- -vi- -vii- -viii- -ix- -x- -xi- -xii- 1-1 1-2 1-3 1-4 1-5 1-6 1-7 1-8 1-9 1-10 1-11 1-12 1-13 1-14 1-15 1-16 1-17 1-18 1-19 1-20 1-21 2-1 2-2 2-3 2-4 2-5 2-6 2-7 2-8 2-9 2-10 2-11

More information

Microsoft Word - 强迫性活动一览表.docx

Microsoft Word - 强迫性活动一览表.docx 1 1 - / 2 - / 3 - / 4 - / 5 - I. 1. / 2. / 3. 4. 5. 6. 7. 8. 9 10 11. 12. 2 13. 14. 15. 16. 17. 18. 19. 20 21. 22 23. 24. / / 25. 26. 27. 28. 29. 30. 31. II. 1. 2 3. 4 3 5. 6 7 8. 9 10 11 12 13 14. 15.

More information

Microsoft Word - Panel Paper on T&D-Chinese _as at 6.2.2013__final_.doc

Microsoft Word - Panel Paper on T&D-Chinese _as at 6.2.2013__final_.doc 二 零 一 三 年 二 月 十 八 日 會 議 討 論 文 件 立 法 會 CB(4)395/12-13(03) 號 文 件 立 法 會 公 務 員 及 資 助 機 構 員 工 事 務 委 員 會 公 務 員 培 訓 及 發 展 概 況 目 的 本 文 件 介 紹 公 務 員 事 務 局 為 公 務 員 所 提 供 培 訓 和 發 展 的 最 新 概 況, 以 及 將 於 二 零 一 三 年 推 出

More information

江苏宁沪高速公路股份有限公司.PDF

江苏宁沪高速公路股份有限公司.PDF - 1 - - 2 - - 3 - - 4 - - 5 - - 6 - - 7 - - 8 - 33.33% ( ) ( ) ( ) 33.33% ( ) ( ) ( ) 1 1 1992 8 3200001100976 1997 6 27 H 12.22 2001 1 16 A 1.5 2001 12 3 503,774.75 14,914,399,845.00 13,445,370,274.00

More information

2. 我 沒 有 說 實 話, 因 為 我 的 鞋 子 其 實 是 [ 黑 色 / 藍 色 / 其 他 顏 色.]. 如 果 我 說 我 現 在 是 坐 著 的, 我 說 的 是 實 話 嗎? [ 我 說 的 對 還 是 不 對 ]? [ 等 對 方 回 答 ] 3. 這 是 [ 實 話 / 對 的

2. 我 沒 有 說 實 話, 因 為 我 的 鞋 子 其 實 是 [ 黑 色 / 藍 色 / 其 他 顏 色.]. 如 果 我 說 我 現 在 是 坐 著 的, 我 說 的 是 實 話 嗎? [ 我 說 的 對 還 是 不 對 ]? [ 等 對 方 回 答 ] 3. 這 是 [ 實 話 / 對 的 附 錄 美 國 國 家 兒 童 健 康 與 人 類 發 展 中 心 (NICHD) 偵 訊 指 導 手 冊 I. 開 場 白 1. 你 好, 我 的 名 字 是, 我 是 警 察 [ 介 紹 房 間 內 的 其 他 人, 不 過, 在 理 想 狀 態 下, 房 間 裡 不 該 有 其 他 人 ] 今 天 是 ( 年 月 日 ), 現 在 是 ( 幾 點 幾 分 ) 我 是 在 ( 地 點 ) 問 你

More information

ZYXM.S2

ZYXM.S2 高 等 医 学 院 校 选 用 教 材 ( 供 成 人 教 育 中 医 药 专 业 中 西 医 结 合 专 业 使 用 ) 中 药 学 王 茂 盛 主 编 2 0 0 1 内 容 简 介 本 书 是 供 成 人 教 育 中 医 药 专 业 中 西 医 结 合 专 业 使 用 的 教 材 全 书 分 总 论 和 各 论 两 部 分, 总 论 部 分 介 绍 了 中 药 的 发 展 产 地 采 集 性

More information

绝妙故事

绝妙故事 980.00 III... 1... 1... 4... 5... 8...10...11...12...14...16...18...20...23...23...24...25...27...29...29...31...34...35...36...39...41 IV...43...44...46...47...48...49...50...51...52...54...56...57...59...60...61...62...63...66...67...68...69...70...72...74...76...77...79...80

More information

Microsoft Word - Paper on PA (Chi)_2016.01.19.docx

Microsoft Word - Paper on PA (Chi)_2016.01.19.docx 立 法 會 發 展 事 務 委 員 會 二 零 一 六 年 施 政 報 告 及 施 政 綱 領 有 關 發 展 局 的 措 施 引 言 行 政 長 官 在 二 零 一 六 年 一 月 十 三 日 發 表 題 為 創 新 經 濟 改 善 民 生 促 進 和 諧 繁 榮 共 享 的 二 零 一 六 年 施 政 報 告 施 政 報 告 夾 附 施 政 綱 領, 臚 列 政 府 推 行 的 新 措 施 和

More information

Page i

Page i 况 1 1.1.1 1.1.2 1.1.3 2 2.1 2.1.1 2.1.2 2.1.3 2.1.4 Page i 2.2 2.2.1 2.2.2 2.2.3 2.2.4 2.2.5 2.2.6 2.3 2.3.1 Page ii 2.3.2 2.3.3 2.3.4 2.4 2.4.1 2.4.2 2.4.3 Page iii 2.5 2.5.1 2.6 2.6.1 2.6.2 3 3.1 3.1.1

More information

捕捉儿童敏感期

捕捉儿童敏感期 目弽 2010 捕捉儿童敏感期 I a mao 2010-3-27 整理 早教资料每日分享 http://user.qzone.qq.com/2637884895 目弽 目彔 目弽... I 出版前言... - 1 竨一章 4 丢孝子癿敂感朏敀乞... - 1 - 妞妞 0 4 岁 海颖 妞妞癿妈妈... - 1 黑白相亝癿地斱... - 1 斵转... - 2 就丌要新帰子... - 2 小霸王...

More information

<4D6963726F736F667420576F7264202D203938BEC7A67EABD7B942B0CAC15AC075B3E6BF57A9DBA5CDC2B2B3B92DA5BFBD542E646F63>

<4D6963726F736F667420576F7264202D203938BEC7A67EABD7B942B0CAC15AC075B3E6BF57A9DBA5CDC2B2B3B92DA5BFBD542E646F63> 98 年 3 月 11 日 依 本 校 98 學 年 度 招 生 委 員 會 第 1 次 會 議 核 定 大 同 技 術 學 院 98 學 年 度 重 點 運 動 項 目 績 優 學 生 單 獨 招 生 簡 章 大 同 技 術 學 院 招 生 委 員 會 編 印 校 址 :600 嘉 義 市 彌 陀 路 253 號 電 話 :(05)2223124 轉 203 教 務 處 招 生 專 線 :(05)2223124

More information

世界名画及画家介绍(四).doc

世界名画及画家介绍(四).doc II...1...2...2...3...4...5...7...7...8...9...9...10... 11...12...13...14...15...15...16...18...18...19...20 III...21...21...22...24...24...25...26...27...28...29...30...30...31...33...33...34...35...36...36...37...38...39...40...41...42...43

More information

尿路感染防治.doc

尿路感染防治.doc ...1...1...2...4...6...7...7...10...12...13...15...16...18...19...24...25...26...27...28 I II...29...30...31...32...33...34...36...37...37...38...40...40...41...43...44...46...47...48...48...49...52 III...55...56...56...57...58

More information

緒 言 董 事 會 宣 佈, 為 能 更 具 效 率 調 配 本 集 團 內 的 資 金 有 效 降 低 集 團 的 對 外 貸 款, 並 促 進 本 集 團 內 公 司 間 的 結 算 服 務, 於 2016 年 9 月 30 日, 本 公 司 中 糧 財 務 與 管 理 公 司 訂 立 財 務

緒 言 董 事 會 宣 佈, 為 能 更 具 效 率 調 配 本 集 團 內 的 資 金 有 效 降 低 集 團 的 對 外 貸 款, 並 促 進 本 集 團 內 公 司 間 的 結 算 服 務, 於 2016 年 9 月 30 日, 本 公 司 中 糧 財 務 與 管 理 公 司 訂 立 財 務 香 港 交 易 及 結 算 所 有 限 公 司 及 香 港 聯 合 交 易 所 有 限 公 司 對 本 公 告 的 內 容 概 不 負 責, 對 其 準 確 性 或 完 整 性 亦 不 發 表 任 何 聲 明, 並 明 確 表 示, 概 不 對 因 本 公 告 全 部 或 任 何 部 分 內 容 而 產 生 或 因 倚 賴 該 等 內 容 而 引 致 的 任 何 損 失 承 擔 任 何 責 任 JOY

More information

樹 木 管 理 專 責 小 組 報 告 人 樹 共 融 綠 滿 家 園

樹 木 管 理 專 責 小 組 報 告 人 樹 共 融 綠 滿 家 園 樹 木 管 理 專 責 小 組 報 告 人 樹 共 融 綠 滿 家 園 序 言 我 們 都 愛 樹, 愛 那 鬱 鬱 葱 葱 的 綠 意, 愛 那 股 清 新 的 氣 息, 更 愛 那 溽 暑 中 遍 地 搖 曳 的 斑 斕 樹 蔭 人 與 樹 本 應 是 那 麼 近, 但 去 年 8 月 赤 柱 塌 樹 意 外, 卻 令 我 們 赫 然 發 現, 樹 木 原 來 也 可 以 潛 藏 著 危 險,

More information

榫 卯 是 什 麼? 何 時 開 始 應 用 於 建 築 中? 38 中 國 傳 統 建 築 的 屋 頂 有 哪 幾 種 形 式? 40 大 內 高 手 的 大 內 指 什 麼? 42 街 坊 四 鄰 的 坊 和 街 分 別 指 什 麼? 44 北 京 四 合 院 的 典 型 格 局 是 怎 樣 的

榫 卯 是 什 麼? 何 時 開 始 應 用 於 建 築 中? 38 中 國 傳 統 建 築 的 屋 頂 有 哪 幾 種 形 式? 40 大 內 高 手 的 大 內 指 什 麼? 42 街 坊 四 鄰 的 坊 和 街 分 別 指 什 麼? 44 北 京 四 合 院 的 典 型 格 局 是 怎 樣 的 目 錄 中 華 醫 藥 以 醫 術 救 人 為 何 被 稱 為 懸 壺 濟 世? 2 什 麼 樣 的 醫 生 才 能 被 稱 為 華 佗 再 世? 4 中 醫 如 何 從 臉 色 看 人 的 特 質? 6 中 醫 怎 樣 從 五 官 看 病? 8 中 醫 看 舌 頭 能 看 出 些 什 麼 來? 10 中 醫 真 的 能 靠 一 個 枕 頭, 三 根 指 頭 診 病 嗎? 12 切 脈 能 判 斷

More information

目 录 院 领 导 职 责... 1 院 长 职 责... 1 医 疗 副 院 长 职 责... 1 教 学 副 院 长 职 责... 2 科 研 副 院 长 职 责... 2 后 勤 副 院 长 职 责... 3 主 管 南 院 区 副 院 长 职 责... 3 党 委 书 记 职 责... 4

目 录 院 领 导 职 责... 1 院 长 职 责... 1 医 疗 副 院 长 职 责... 1 教 学 副 院 长 职 责... 2 科 研 副 院 长 职 责... 2 后 勤 副 院 长 职 责... 3 主 管 南 院 区 副 院 长 职 责... 3 党 委 书 记 职 责... 4 目 录 院 领 导 职 责... 1 院 长 职 责... 1 医 疗 副 院 长 职 责... 1 教 学 副 院 长 职 责... 2 科 研 副 院 长 职 责... 2 后 勤 副 院 长 职 责... 3 主 管 南 院 区 副 院 长 职 责... 3 党 委 书 记 职 责... 4 纪 委 书 记 职 责... 5 院 长 办 公 室... 6 院 长 办 公 室 工 作 职 责...

More information

<4D6963726F736F667420576F7264202D20A4A4B0EAB371AB4FB3E65FA4A4A4E5AAA95F5F32303133>

<4D6963726F736F667420576F7264202D20A4A4B0EAB371AB4FB3E65FA4A4A4E5AAA95F5F32303133> 香 港 德 輔 道 中 71 號 永 安 集 團 大 廈 9 樓 電 話 :2867 0888 傳 真 :3906 9906 查 詢 熱 線 :3187 5100 中 國 通 意 外 急 救 醫 療 計 劃 保 單 投 保 人 以 一 份 投 保 書 及 聲 明 謹 向 中 銀 集 團 保 險 有 限 公 司 ( 下 稱 本 公 司 ) 申 請 下 述 保 險 該 份 投 保 書 及 聲 明 已 被

More information

(i) (ii) (iii) (iv) (v) (vi) (vii) (viii) (ix) (x) (xi) 60.99%39.01%

(i) (ii) (iii) (iv) (v) (vi) (vii) (viii) (ix) (x) (xi) 60.99%39.01% 48.55% 1998 19986 30%20086 2009 2009 200 (i) (ii) (iii) (iv) (v) (vi) (vii) (viii) (ix) (x) (xi) 60.99%39.01% 200820092010 772 928960200820092010 1512928 201 1. 20091222(2009)7267 20042008 16,980,954.02

More information

第 二 輯 目 錄.indd 2 目 錄 編 寫 說 明 附 : 香 港 中 學 文 憑 中 國 語 文 科 評 核 模 式 概 述 綜 合 能 力 考 核 考 試 簡 介 及 應 試 技 巧 常 用 實 用 文 文 體 格 式 及 寫 作 技 巧 綜 合 能 力 分 項 等 級 描 述 練 習 一

第 二 輯 目 錄.indd 2 目 錄 編 寫 說 明 附 : 香 港 中 學 文 憑 中 國 語 文 科 評 核 模 式 概 述 綜 合 能 力 考 核 考 試 簡 介 及 應 試 技 巧 常 用 實 用 文 文 體 格 式 及 寫 作 技 巧 綜 合 能 力 分 項 等 級 描 述 練 習 一 作 出 發 者 : 劉 梓 淩 版 : 精 工 出 版 社 行 : 精 工 印 書 局 香 港 銅 鑼 灣 道 168 號 電 話 :2571 1770 2554 1247 傳 真 :2806 0974 2873 2412 網 二 O 一 一 年 址 :http://www.jingkung.com 初 版 版 權 所 有, 翻 版 必 究 如 未 獲 得 本 公 司 同 意, 不 得 用 任 何

More information

, 7, Windows,,,, : ,,,, ;,, ( CIP) /,,. : ;, ( 21 ) ISBN : -. TP CIP ( 2005) 1

, 7, Windows,,,, : ,,,, ;,, ( CIP) /,,. : ;, ( 21 ) ISBN : -. TP CIP ( 2005) 1 21 , 7, Windows,,,, : 010-62782989 13501256678 13801310933,,,, ;,, ( CIP) /,,. : ;, 2005. 11 ( 21 ) ISBN 7-81082 - 634-4... - : -. TP316-44 CIP ( 2005) 123583 : : : : 100084 : 010-62776969 : 100044 : 010-51686414

More information

II II

II II I I II II III 1. 2. 3. III 4. IV 5. 6. 8. 9. 10. 12. IV V V VI VI VII VII VIII VIII IX IX X X XI XI XII XII 1 1 2 2 3 3 4 33 35 4 5 5 6 6 7 ( ) 7 8 8 9 9 10 10 11 11 12 12 13 13 14 14 15 15 16 16 17 17

More information

Teaching kit_A4_part4.indd

Teaching kit_A4_part4.indd 4 ( 學 生 ) i. 認 識 專 題 研 習 甚 麽 是 專 題 研 習? 專 題 研 習 是 學 會 學 習 的 其 中 一 個 關 鍵 項 目 學 生 根 據 自 己 或 老 師 所 訂 立 的 主 題, 依 照 本 身 的 興 趣 和 能 力, 在 老 師 的 指 導 下, 擬 定 研 習 題 目, 設 定 探 討 的 策 略 和 方 法, 進 行 一 系 列 有 意 義 的 探 索 歷

More information

群科課程綱要總體課程計畫書

群科課程綱要總體課程計畫書 核 准 文 號 :102 年 4 月 22 日 臺 教 國 署 高 字 第 1020036237 號 國 立 曾 文 高 級 農 工 職 業 學 校 群 科 課 程 綱 要 總 體 課 程 計 畫 書 (102 學 年 度 入 學 學 生 適 用 ) 中 華 民 國 102 年 04 月 22 日 國 立 曾 文 高 級 農 工 職 業 學 校 群 科 課 程 綱 要 總 體 課 程 計 畫 書 核

More information

穨_2_.PDF

穨_2_.PDF 6 7.... 9.. 11.. 12... 14.. 15.... 3 .. 17 18.. 20... 25... 27... 29 30.. 4 31 32 34-35 36-38 39 40 5 6 : 1. 2. 1. 55 (2) 2. : 2.1 2.2 2.3 3. 4. ( ) 5. 6. ( ) 7. ( ) 8. ( ) 9. ( ) 10. 7 ( ) 1. 2. 3. 4.

More information

经华名家讲堂

经华名家讲堂 5.1 5.1.1 5.1.2 5.2 5.2.1 5.2.2 5.2.3 5.2.4 5.2.5 5.3 5.3.1 5.3.2 5.3.3 / 5.3.4 / 5.3.5 / 5.4 Internet 5.4.1 Internet 5.4.2 Intranet 1. 2. 1 31 5 5.1 5.1.1 Internet 1 Host 20 60 IBM 2000 2 20 60 20 60

More information

(Chi)_.indb

(Chi)_.indb 1,000,000 4,000,000 1,000,000 10,000,000 30,000,000 V-1 1,000,000 2,000,000 20,000,00010,000,0005,000,000 3,000,000 30 20% 35% 20%30% V-2 1) 2)3) 171 10,000,00050% 35% 171 V-3 30 V-4 50,000100,000 1) 2)

More information

14A 0.1%5% 14A 14A.52 1 2 3 30 2

14A 0.1%5% 14A 14A.52 1 2 3 30 2 2389 30 1 14A 0.1%5% 14A 14A.52 1 2 3 30 2 (a) (b) (c) (d) (e) 3 (i) (ii) (iii) (iv) (v) (vi) (vii) 4 (1) (2) (3) (4) (5) 400,000 (a) 400,000300,000 100,000 5 (b) 30% (i)(ii) 200,000 400,000 400,000 30,000,000

More information

1 2 6 8 15 36 48 55 58 65 67 74 76 150 152 1 3 1 2 4 2 2001 2000 1999 12 31 12 31 12 31 304,347 322,932 231,047 14,018 16,154 5,665 (i) 0.162 0.193 0.082 (ii) 0.165 0.227 0.082 (iii) 10.08 13.37 6.47 0.688

More information

untitled

untitled CHONGQING INTERNATIONAL ENTERPRISE INVESTMENT CO.,LTD. I II III IV V VI ...7...10...11...13...13...14...15...15...21...32...50...53...54...56...56...56.59...61...61...66...69...72...74...74...75...75...75...77

More information

1956 12 1955 101 1 1957 443 1956 237 s s i 39 424 401 iii 9 ix 31 iv 15 iii 2 Vi 46 i 24 VI iii 25 III i 7 III viii 9 I V 1 I vi 8 225 1480 I ii 10 IV viii 4 639 559 113 [ 384 322 ] III

More information

_Chi.ps, page Preflight ( _Chi.indd )

_Chi.ps, page Preflight ( _Chi.indd ) on conviction3 5 1. / 2. 14 3. 2 2 3 4. 372 12 5. 6. 1 7. 1 2 i ii iii iv 8. 9. 1 12 2 2 i ii iii i ii iii 3 iv http://www.pcpd.org.hk v i ii iii 4 i ii i / ii 5 1. 2. 3. i ii iii iv v vi 4. 5. 6 6. 7.

More information

九龍城區議會

九龍城區議會 九 龍 城 區 議 會 食 物 環 境 衞 生 事 務 委 員 會 第 十 次 會 議 記 錄 日 期 : 2013 年 7 月 11 日 ( 星 期 四 ) 時 間 : 下 午 2 時 30 分 地 點 : 九 龍 城 民 政 事 務 處 會 議 室 出 席 者 : 主 席 : 黃 以 謙 議 員 副 主 席 : 黃 潤 昌 議 員 委 員 : 李 慧 琼 議 員, JP ( 於 下 午 3 時

More information

HKAS 002C

HKAS 002C HKAS 002C 認 可 處 認 可 規 例 ( 第 四 版 ) 香 港 認 可 處 二 零 一 一 年 十 一 月 ( 二 零 一 六 年 五 月 第 二 修 訂 版 ) 香 港 特 別 行 政 區 政 府 創 新 科 技 署 出 版 香 港 灣 仔 告 士 打 道 七 號 入 境 事 務 大 樓 三 十 六 樓 版 權 屬 香 港 特 別 行 政 區 政 府 所 有 (2011) ISBN 978-988-18955-4-7

More information

Microsoft Word - Entry-Level Occupational Competencies for TCM in Canada200910_ch _2_.doc

Microsoft Word - Entry-Level Occupational Competencies for TCM in Canada200910_ch _2_.doc 草 稿 致 省 級 管 理 單 位 之 推 薦 書 二 零 零 九 年 十 月 十 七 日 加 拿 大 中 醫 管 理 局 聯 盟 All rights reserved 序 言 加 拿 大 中 醫 管 理 局 聯 盟, 於 二 零 零 八 年 一 月 至 二 零 零 九 年 十 月 間, 擬 定 傳 統 中 醫 執 業 之 基 礎 文 件 由 臨 床 經 驗 豐 富 之 中 醫 師 教 育 者 及

More information

<4D F736F F D20D6D0C9BDB4F3D1A7C6DAC4A9BFBCCAD4D1F9CCE2A3A8B2D9D7F7CFB5CDB3A3A92E646F63>

<4D F736F F D20D6D0C9BDB4F3D1A7C6DAC4A9BFBCCAD4D1F9CCE2A3A8B2D9D7F7CFB5CDB3A3A92E646F63> 中 山 大 学 期 末 考 试 样 题 课 程 名 称 : 网 络 学 院 操 作 系 统 原 理 专 业 : 年 级 : 学 号 : 姓 名 : 成 绩 : 一 选 择 题 ( 每 小 题 2 分, 共 40 分 ) 1. 操 作 系 统 是 计 算 机 系 统 中 必 不 可 少 的 一 个, 它 是 程 序 模 块 的 集 合, 用 于 管 理 和 控 制 软 硬 件 资 源 组 织 工 作

More information

Adobe Photoshop PDF

Adobe Photoshop PDF i ii iii 1 2 3 4 5 6 7 8 9 10 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 16000 12000 8000 4000 8,592 6,860 9,368 7,703 8,472 10,510 9,422 12,299 10,493 13,944

More information

2015 2 104 109 110 112 113 113 113 114 1 (1) 9,654,346,443 6,388,650,779 4,183,429,633 1,183,342,128 (2) 47,710,000 41,600,000 16,600,000 13,200,000 (3), (1) 371,147,787 125,421,629 749,150,179 565,001,961

More information

第 2 頁 (a) 擔 任 機 場 擴 建 統 籌 辦 總 監 的 首 席 政 府 工 程 師 職 位 第 3 點 ) ; (b) 擔 任 ( 機 場 擴 建 統 籌 辦 ) 的 首 長 級 丙 級 政 務 官 職 位 ; 以 及 (c) 擔 任 總 助 理 ( 機 場 擴 建 統 籌 辦 ) 的

第 2 頁 (a) 擔 任 機 場 擴 建 統 籌 辦 總 監 的 首 席 政 府 工 程 師 職 位 第 3 點 ) ; (b) 擔 任 ( 機 場 擴 建 統 籌 辦 ) 的 首 長 級 丙 級 政 務 官 職 位 ; 以 及 (c) 擔 任 總 助 理 ( 機 場 擴 建 統 籌 辦 ) 的 財 務 委 員 會 人 事 編 制 小 組 委 員 會 討 論 文 件 2015 年 11 月 4 日 總 目 158- 政 府 總 部 : 運 輸 及 房 屋 局 ( 運 輸 科 ) 分 目 000 運 作 開 支 請 各 委 員 向 財 務 委 員 會 提 出 下 述 建 議, 即 由 財 務 委 員 會 批 准 當 日 起, 在 運 輸 及 房 屋 局 運 輸 科 機 場 擴 建 工 程 統

More information

智力测试故事

智力测试故事 II 980.00 ... 1... 1... 1... 2... 2... 2... 3... 3... 3... 3... 4... 4... 5... 5... 6... 6... 7... 7... 8... 8... 8... 9... 9...10...10...10 I II...11...11...11...12...13...13...13...14...14...14...15...15...15...16...16...17...17...18...18...19...19...19...19...20...20...21...21...21

More information

建築物拆卸作業守則2004年

建築物拆卸作業守則2004年 建 築 物 拆 卸 作 業 守 則 ㆓ 零 零 ㆕ 年 前 言 建 築 物 拆 卸 作 業 守 則 ( 擬 稿 ) 於 ㆒ 九 九 八 年 ㆓ 月 首 次 出 版, 提 供 指 引, 確 保 於 進 行 拆 卸 工 程 時 按 安 全 及 良 好 的 做 法 行 事, 以 及 工 程 合 符 建 築 物 ( 管 理 ) 規 例 及 建 築 物 ( 拆 卸 工 程 ) 規 例 有 關 拆 卸 工 程

More information

(b) 3 (a) (b) 7 (a) (i) (ii) (iii) (iv) (v) (vi) (vii) 57

(b) 3 (a) (b) 7 (a) (i) (ii) (iii) (iv) (v) (vi) (vii) 57 (i) (ii) (iii) A. 123 2 3(1) (2) (i) 41 (ii) (iii) 121 4(3) (i) (ii) (iii) 123A 3 (a) 56 (b) 3 (a) (b) 7 (a) (i) (ii) (iii) (iv) (v) (vi) (vii) 57 (viii) (ix) (x) 4B(2)(d) (e) (f) (xi) (xii) (b) (a) (i)

More information

cgn

cgn 3654 ( 571 ) 88(4) 2014 3 31 10766 10778 2014 3 31 ( ) 2 21 ( ) 2014 3 31 10768 10778 6 9 1. ( ) 2. 3. 4. 5. 2014 6 3 ( ) 10768 10778 ( ) 2014 3 31 ( 622 ) 11 80 2014 3 31 2014 6 3 10 8 2014 3 31 ( ) 2014

More information

Ps22Pdf

Ps22Pdf (CIP) /. :, 2005 ISBN 7-5375 - 3325-3.... R247.1 TS972.161 CIP (2005) 152967 / / 330 / 050061 / / / / / 880 1230 1/ 32 / 15 / 370 / 2006 1 1 / 2006 1 1 / 24.80 ,,,,,,,,,,,,,,,, ;,,,,, 2006 1 ( ) ( ) (

More information

香 港 舞 蹈 總 會    北 京 舞 蹈 學 院

香 港 舞 蹈 總 會    北 京 舞 蹈 學 院 報 名 規 則 : I. 保 送 教 師 資 格 : 香 港 舞 蹈 總 會 主 辦 二 零 一 六 年 秋 季 趣 學 堂 幼 兒 舞 蹈 課 程 評 核 報 名 及 規 則 ( 請 於 報 名 前 詳 細 閱 讀 整 份 文 件 ) 學 生 必 須 由 認 可 教 師 保 送 參 加 評 核, 而 以 下 為 認 可 教 師 的 資 格 : i. 持 有 由 香 港 舞 蹈 總 會 頒 發 之

More information

01repc_gb.doc

01repc_gb.doc I....1 II. III. IV....1...3...5 V.... 12 VI. VII. VIII. IX.... 14... 18... 21... 21 1... 22 2... 23 3... 25 4 (D3 ).. 26 5 ( )... 27 01repc_gb.doc - 1 - (1) ( ) - 2 - - 3 - http://www.csb.gov.hk/hkgcsb/psc

More information

战神(上).doc

战神(上).doc 项 目 策 划 : 阎 安 丛 书 统 筹 : 龙 的 天 空 责 任 编 辑 : 阎 安 特 约 编 辑 : 孙 健 李 文 雅 责 任 印 制 : 刘 志 恒 图 书 在 版 编 目 (CIP) 数 据 战 神 / 秋 凡 著. 北 京 : 海 洋 出 版 社,2005.8 ( 幻 城 系 列 ) ISBN 7-5027-6388-0 Ⅰ. 战 Ⅱ. 秋 Ⅲ. 科 学 幻 想 小 说 中 国 当

More information

( CIP ) 2003. - :, 2003.1 ISBN 7-5014 - 2617-1... - - - - -.D926.13 CIP (2001)086873 2003 7871092 16 15.75 196 2003 1 1 2003 1 1 ISBN 7-5014 - 2617-1D

( CIP ) 2003. - :, 2003.1 ISBN 7-5014 - 2617-1... - - - - -.D926.13 CIP (2001)086873 2003 7871092 16 15.75 196 2003 1 1 2003 1 1 ISBN 7-5014 - 2617-1D : ( CIP ) 2003. - :, 2003.1 ISBN 7-5014 - 2617-1... - - - - -.D926.13 CIP (2001)086873 2003 7871092 16 15.75 196 2003 1 1 2003 1 1 ISBN 7-5014 - 2617-1D1240 : 30.00 ,, :,,, ;,,, ;,,, ;,,,,,, 2003 1 ),,

More information

Ps22Pdf

Ps22Pdf : : ( CIP).,. :, 2000. 4 ISBN 7-5371- 3677-7............ - - - - - -. I211 CIP ( 2000) 08781 ( 100 : 830001) 850 1168 32 1100 35000 2000 4 1 2000 4 1 : 1 2000 ISBN7 5371 3677 7/ I 1347 : 3988 00 ,, ( )

More information

未命名-14

未命名-14 20 世 纪 军 政 巨 人 百 传 偷 袭 珍 珠 港 山 本 五 十 六 传 [ 日 ] 阿 川 弘 之 著 张 承 译 时 代 文 艺 出 版 社 图 书 在 版 编 目 (CIP) 数 据 20 世 纪 军 政 巨 人 百 传 宋 长 琨 主 编, 长 春 : 时 代 文 艺 出 版 社,2001.12 ISBN 7-5387 -1629-7 Ⅰ. 20. Ⅱ. 宋. Ⅲ. 军 政 人 物

More information

( CIP ) /,. - :,2005.10 ISBN 7-5601-3285-5............ - - - - - -.K878.2 CIP (2005) 077921 : : ( ) ( 421 ) : 8801230 1/ 32 : 6.125 : 154 ISBN 7-5601-

( CIP ) /,. - :,2005.10 ISBN 7-5601-3285-5............ - - - - - -.K878.2 CIP (2005) 077921 : : ( ) ( 421 ) : 8801230 1/ 32 : 6.125 : 154 ISBN 7-5601- ( CIP ) /,. - :,2005.10 ISBN 7-5601-3285-5............ - - - - - -.K878.2 CIP (2005) 077921 : : ( ) ( 421 ) : 8801230 1/ 32 : 6.125 : 154 ISBN 7-5601-3285-5 2005 10 1 2005 10 1 : 1-1000 : 12.00 ,,,, 1995

More information

(CIP) /.:, 1998.6(2001.11 ) ISBN 7 5338 2936 0..........I207.2 CIP (2001)080091 (347 310006) ( ) 8501168 1/ 32 13 2 299000 12013770 1998 6 1 2001 11 2

(CIP) /.:, 1998.6(2001.11 ) ISBN 7 5338 2936 0..........I207.2 CIP (2001)080091 (347 310006) ( ) 8501168 1/ 32 13 2 299000 12013770 1998 6 1 2001 11 2 (CIP) /.:, 1998.6(2001.11 ) ISBN 7 5338 2936 0..........I207.2 CIP (2001)080091 (347 310006) ( ) 8501168 1/ 32 13 2 299000 12013770 1998 6 1 2001 11 2 ISBN 7 5338 2936 0/ G2913 : 18.00 1 5 5 14 25 33 34

More information

(CIP) / : 2006 8 ISBN7 218 05313 0 Ⅰ Ⅱ Ⅲ (1466 1560) - Ⅳ B248 99 CIP (2006)077534 850 11681/32 5 3 200 20068 120068 1 ISBN7 218 05313 0/B 190 20 00 (0

(CIP) / : 2006 8 ISBN7 218 05313 0 Ⅰ Ⅱ Ⅲ (1466 1560) - Ⅳ B248 99 CIP (2006)077534 850 11681/32 5 3 200 20068 120068 1 ISBN7 218 05313 0/B 190 20 00 (0 (CIP) / : 2006 8 ISBN7 218 05313 0 Ⅰ Ⅱ Ⅲ (1466 1560) - Ⅳ B248 99 CIP (2006)077534 850 11681/32 5 3 200 20068 120068 1 ISBN7 218 05313 0/B 190 20 00 (020 83795749) ( : ) 2 (1466) 40 ( ) 16 27 29 40 63

More information

1

1 CIP /. - 2005. 12 ISBN 7-80171 - 425-3 Ⅰ. Ⅱ. Ⅲ. - Ⅳ. C933. 2 CIP 2005 124813 1 100007 787 1092 1 /16 2005 12 1 2006 1 1 1-3000 ISBN 7-80171 - 425-3 /C28 998. 00 1 2 2006 1 1139 1139 1139 1140 1143 1146

More information

Ps22Pdf

Ps22Pdf ,2006.2 ( CIP ) ISBN 7-204 - 04505 - X / :..........I106 CIP (2006)015695 * ( 20 ) : 8501168 1/ 32 :400 : 4800 2006 2 2 2006 2 1 :3000 ISBN 7-204 - 04505 - X/ I810 (38 ) : 998.00 ,,,,, :,,,,,,,,,,,,,,,,,,,,,,,,,

More information

( CIP ) /. - :, 1999.10 ( ) ISBN 7-200 - 03791-5... - - - - -. K291 CIP ( 1999 ) 32637 * ( 6 ) : 100011 * 199 1 199 1 ISBN :

( CIP ) /. - :, 1999.10 ( ) ISBN 7-200 - 03791-5... - - - - -. K291 CIP ( 1999 ) 32637 * ( 6 ) : 100011 * 199 1 199 1 ISBN : ( CIP ) /. - :, 1999.10 ( ) ISBN 7-200 - 03791-5... - - - - -. K291 CIP ( 1999 ) 32637 * ( 6 ) : 100011 * 199 1 199 1 ISBN : , 1616,, 295 1635, 276 1644, 267, ( 1840 ), 1616 ( ) 1661 ( ), 1662 ( ) 1795

More information

Ps22Pdf

Ps22Pdf ,2006.2 ( CIP ) ISBN 7-204 - 04505 - X / :..........I106 CIP (2006)015695 * ( 20 ) : 8501168 1/ 32 :400 : 4800 2006 2 2 2006 2 1 :3000 ISBN 7-204 - 04505 - X/ I810 (38 ) : 998.00 ,!,,!,,,,,?,,,,,,!,,!

More information

Ps22Pdf

Ps22Pdf ,2006.2 ( CIP ) ISBN 7-204 - 04505 - X / :..........I106 CIP (2006)015695 * ( 20 ) : 8501168 1/ 32 :400 : 4800 2006 2 2 2006 2 1 :3000 ISBN 7-204 - 04505 - X/ I810 (38 ) : 998.00 ,,,,,,,,,,,,,,,,,,,,,,,?,,,!,,,,?,,,,,,,,

More information

(CIP),. - :, ISBN E296 CIP ( 2003) ( ) : : : : 6 1 : : : : 32 ( ) : 680 : : 5000 : :

(CIP),. - :, ISBN E296 CIP ( 2003) ( ) : : : : 6 1 : : : : 32 ( ) : 680 : : 5000 : : ( ) 2003 (CIP),. - :,2003.9 ISBN 7-80136 - 915-7... - -.E296 CIP ( 2003) 067822 ( ) : : : : 6 1 : 100080 : : : 32 (8801230 ) : 680 : 29.75 : 5000 : 2003 12 1 : 2003 12 1 ISBN 7-80136 - 915-7K781 : 49.80

More information

( CIP) /. - :, ( ) ISBN I CIP ( 2002) ( ) : : : ( ) 1 : : : /32 : 208 : 5, 400 :

( CIP) /. - :, ( ) ISBN I CIP ( 2002) ( ) : : : ( ) 1 : : : /32 : 208 : 5, 400 : 2006 ( CIP) /. - :, 2002. 6 ( ) ISBN7-80176 - 023-9... - -. I106. 2 CIP ( 2002) 035734 ( ) : : : ( 100089) 1 : : : 8501168 1 /32 : 208 : 5, 400 : 2002 6 1 : 2006 5 3 : ISBN7-80176 - 023-9 : 636. 00 ( 26.

More information

,,, 19, 370,,,,,,, (CIP) /. :, ISBN R28 CIP (2002 ) * * : / 16 : : : 1 4

,,, 19, 370,,,,,,, (CIP) /. :, ISBN R28 CIP (2002 ) * * : / 16 : : : 1 4 ,,, 19, 370,,,,,,, (CIP) /. :, 2002. 2 ISBN 7-5624-2576-0.......... R28 CIP (2002 ) 007159 * * : 787 1092 1/ 16 : 16. 25 : 424 2002 2 1 2002 2 1 : 1 4000 ISBN 7-5624-2576-0/ R 161 :22. 00 ,,,,,,,,,,, :

More information

Ps22Pdf

Ps22Pdf ( ) / / ( CIP) /, :, 2005. 8 (, 2., ) ISBN 7-5634 - 2116-5......... - - -. I565. 44 CIP ( 2005 ) 102498 : : : : ( ) ( 105 : 133002) 8501168 1 /32 10 240 2006 2 2 1 ISBN 7-5634 - 2116-5 / I294 12 : 237.

More information

( CIP ) /. - :, ( ) ISBN F CIP ( 1999 ) * ( 6 ) : * ISBN :

( CIP ) /. - :, ( ) ISBN F CIP ( 1999 ) * ( 6 ) : * ISBN : ( CIP ) /. - :, 1999.10 ( ) ISBN 7-200 - 03791-5... - -. F727. 1 CIP ( 1999 ) 32679 * ( 6 ) : 100011 * 199 1 199 1 ISBN : ,,, ; ;,,,,,,, 6 ;,,, ( ) 938 ( ),,,,,, 1153 ( ),,, 1272 ( 9 ),, 1403 ( ), 1420

More information