收藏 分享(赏)

双核与程序的关系.doc

上传人:cjc2202537 文档编号:192113 上传时间:2018-03-23 格式:DOC 页数:8 大小:115KB
下载 相关 举报
双核与程序的关系.doc_第1页
第1页 / 共8页
双核与程序的关系.doc_第2页
第2页 / 共8页
双核与程序的关系.doc_第3页
第3页 / 共8页
双核与程序的关系.doc_第4页
第4页 / 共8页
双核与程序的关系.doc_第5页
第5页 / 共8页
点击查看更多>>
资源描述

1、双核与程序的关系王亿首(郑州大学 信息与工程学院)摘 要 : 伴 随 着 计 算 机 的 发 展 , 双 核 计 算 机 已 经 成 为 了 一 个 主 流 , 有 些 程 序在 运 行 时 只 能 使 用 一 个 内 核 进 行 工 作 , 另 外 一 个 内 核 是 闲 置 的 , 造 成 了 资 源的 浪 费 。 程 序 在 运 行 过 程 中 是 怎 样 合 理 分 配 使 用 这 两 个 内 核 进 行 运 算 , 使 硬件 资 源 得 到 合 理 的 使 用 , 了 解 程 序 的 运 行 机 制 , 以 及 cpu 的 调 度 问 题 , 采 用多 线 程 编 程 , 合 理 分

2、 配 硬 件 资 源 。关 键 词 : 双 核 程 序 调 度 操 作 系 统 进 程 线 程1 双核1.1 双核的定义双 核 处 理 器 即 是 基 于 单 个 半 导 体 的 一 个 处 理 器 上 拥 有 两 个 一 样 功 能 的 处 理 器 核 心 。换 句 话 说 , 将 两 个 物 理 处 理 器 核 心 整 合 入 一 个 核 中 。 双 核 心 处 理 器 技 术 的 引 入 是 提 高 处理 器 性 能 的 有 效 方 法 。 因 为 处 理 器 实 际 性 能 是 处 理 器 在 每 个 时 钟 周 期 内 所 能 处 理 器 指 令数 的 总 量 , 因 此 增 加 一

3、 个 内 核 , 处 理 器 每 个 时 钟 周 期 内 可 执 行 的 单 元 数 将 增 加 一 倍 。 将两 个 内 核 做 在 一 个 Die( 晶 元 ) 上 , 通 过 直 连 架 构 连 接 起 来 , 集 成 度 更 高 。1.2 双核的工作原理双 核 CPU 的 工 作 原 理 就 是 在 一 个 处 理 器 上 集 成 两 个 运 算 核 心 , 从 而 提 高 计 算 能 力 。当 然 如 果 你 想 让 系 统 达 到 最 大 性 能 , 必 须 充 分 利 用 两 个 内 核 中 的 所 有 可 执 行 单 元 :即让 所 有 执 行 单 元 都 工 作 。 这 个

4、就 涉 及 到 双 核 CPU 的 优 化 设 置 问 题 了 。 解 决 两 个 核 心同 时 工 作 , 这 就 涉 及 到 内 存 的 分 配 问 题 , 双 通 道 内 存 技 术 是 解 决 CPU 总 线 带 宽 与 内 存带 宽 的 矛 盾 的 低 价 、 高 性 能 的 方 案 。 双 通 道 内 存 技 术 其 实 是 一 种 内 存 控 制 和 管 理 技 术 ,它 依 赖 于 芯 片 组 的 内 存 控 制 器 发 生 作 用 , 在 理 论 上 能 够 使 两 条 同 等 规 格 内 存 所 提 供 的 带宽 增 长 一 倍 。2 程序 进程 线程程 序 在 编 译 之

5、 后 实 际 的 运 行 中 是 一 个 或 多 个 进 程 , 而 进 程 又 被 分 成 多 个 线 程 ,cpu 对 程 序 的 处 理 是 对 与 线 程 而 讲 的 , 也 就 是 线 程 的 调 度 , 线 程 的 调 度 与 操 作 系 统 有 关 ,而 哪 一 个 线 程 先 被 cpu 调 度 , 又 是 有 线 程 的 优 先 级 来 决 定 的 。2.1 操作系统操 作 系 统 ( Operating System, 简 称 OS) 是 一 管 理 电 脑 硬 件 与 软 件 资 源 的 程 序 ,同 时 也 是 计 算 机 系 统 的 内 核 与 基 石 , 是 控 制

6、 其 他 程 序 运 行 , 管 理 系 统 资 源 并 为 用 户 提 供操 作 界 面 的 系 统 软 件 的 集 合 。2.2 进程进 程 是 操 作 系 统 结 构 的 基 础 ; 是 一 个 正 在 执 行 的 程 序 ; 计 算 机 中 正 在 运 行 的 程 序 实例 ; 可 以 分 配 给 处 理 器 并 由 处 理 器 执 行 的 一 个 实 体 ; 由 单 一 顺 序 的 执 行 显 示 , 一 个 当 前状 态 和 一 组 相 关 的 系 统 资 源 所 描 述 的 活 动 单 元 。2.3 线程线 程 ( thread) 是 “进 程 “中 某 个 单 一 顺 序 的

7、控 制 流 。 也 被 称 为 轻 量 进 程( lightweight processes) 。 计 算 机 科 学 术 语 , 指 运 行 中 的 程 序 的 调 度 单 位 。 线 程(thread),有 时 被 称 为 轻 量 级 进 程 (Lightweight Process, LWP), 是 程 序 执 行 流 的 最 小单 元 。 一 个 标 准 的 线 程 由 线 程 ID, 当 前 指 令 指 针 (PC), 寄 存 器 集 合 和 堆 栈 组 成 。2.4 进程与线程的关系线 程 与 进 程 的 关 系 , 线 程 是 一 种 操 作 系 统 对 象 , 代 表 着 一

8、个 进 程 中 要 被 执 行 的 代 码的 路 径 。 每 一 个 WIN32 应 用 程 序 至 少 有 一 个 线 程 -通 常 称 为 住 线 程 或 默 认 线 程 -但 应用 程 序 可 以 自 由 地 创 建 其 他 线 程 来 执 行 其 他 任 务 。进 程 是 程 序 的 一 次 动 态 执 行 过 程 , 它 对 应 了 从 代 码 加 载 、 执 行 到 执 行 完 毕 的 一 个 完整 过 程 , 这 个 过 程 也 是 进 程 本 身 从 产 生 、 发 展 到 消 亡 的 过 程 , 线 程 是 比 进 程 更 小 的 执行 单 位 。 一 个 进 程 在 其 执

9、 行 过 程 能 够 中 , 可 以 产 生 多 个 线 程 , 形 成 多 条 执 行 线 索 。 每条 线 索 , 即 每 个 线 程 也 有 它 自 身 的 产 生 、 存 在 和 消 亡 过 程 , 也 是 一 个 动 态 的 概 念 。 一 个程 序 应 该 只 有 一 个 进 程 吧 , 但 是 可 以 拥 有 多 个 线 程 。 可 以 说 , 一 个 执 文 件 被 运 行 后 , 就可 以 称 为 是 一 个 进 程 了 。 但 是 进 程 只 是 存 在 内 存 中 , 实 际 上 他 是 不 会 做 任 何 事 情 的 。 这个 时 候 , 起 作 用 的 就 是 线 程

10、 了 。 线 程 是 程 序 的 执 行 者 , 一 个 程 序 至 少 有 一 个 线 程 , 但 是在 多 线 程 的 操 作 系 统 中 , 可 以 有 一 个 以 上 的 线 程 。3 计算机工作原理计 算 机 工 作 的 原 理 : 如 图 ( 1)外存(硬盘、光盘)输入设备(CPU)中央处理器输出设备(RAM)内存图(1)计 算 机 在 运 行 时 , 先 从 内 存 中 取 出 第 一 条 指 令 , 通 过 控 制 器 的 译 码 , 按 指 令 的 要 求 ,从 存 贮 器 中 取 出 数 据 进 行 指 定 的 运 算 和 逻 辑 操 作 等 加 工 , 然 后 再 按 地

11、 址 把 结 果 送 到 内 存中 去 。 接 下 来 , 再 取 出 第 二 条 指 令 , 在 控 制 器 的 指 挥 下 完 成 规 定 操 作 。 依 此 进 行 下 去 ,直 至 遇 到 停 止 指 令 。 在 执 行 程 序 和 处 理 数 据 时 必 须 将 程 序 和 数 据 从 外 存 储 器 装 入 主 存 储器 中 , 然 后 才 能 使 计 算 机 在 工 作 时 能 够 自 动 调 整 地 从 存 储 器 中 取 出 指 令 并 加 以 执 行 。 程序 与 数 据 一 样 存 贮 , 按 程 序 编 排 的 顺 序 , 一 步 一 步 地 取 出 指 令 , 自 动

12、 地 完 成 指 令 规 定 的操 作 1。做 一 个 cpu 对 一 般 程 序 的 执 行 实 验 , 初 步 了 解 cpu 与 程 序 之 间 的 关 系 ,分 析 双 核 情 况 与 单 核 情 况 对 程 序 的 处 理 能 力试 验 环 境1)处 理 器 ; 双 核 Intel(R) Pentium(R) D cpu 2.80GHZ Intel(R) Pentium(R) D cpu 2.80GHZ2) 内 存 ; 480MB3) 操 作 系 统 windows XP4) 实 验 环 境 .net 2005实 验 目 的验 证 双 核 的 处 理 能 力 并 不 等 单 核 的

13、二 倍 , 而 是 小 于 单 核 处 理 能 力 的 二 倍 , 即 :单 核 处 理 能 力 *2双 核 处 理 能 力实 验 方 法先 将 程 序 在 单 核 情 况 下 运 行 , 记 录 cpu 运 行 情 况 , 再 将 程 序 在 双 核 情 况 下 运 行 ,再 次 记 录 cpu 运 行 情 况 。实 验 程 序static void Main(string args)double m=999.999, n=88.88;while (true)m = m * n;实 验 结 果 :实 验 结 果 分 析 :通 过 图 像 处 理 分 析 , 双 核 处 理 资 源 消 耗 是

14、 单 核 的 4/3 倍 , 但 资 源 的 占 有 程 度 是 单核 的 2 倍 , 时 间 处 理 与 单 核 的 基 本 相 等 ( 单 核 运 行 情 况 下 cpu 也 没 有 达 到 100%) , 总体 来 说 , 以 牺 牲 硬 件 为 代 价 来 换 取 换 取 更 高 效 的 数 据 处 理 能 力 和 运 算 能 力 。4 程序分解与 cpu 调度4.1 程序到进程一 个 程 序 是 怎 样 分 解 成 多 个 线 程 的 , 一 个 程 序 经 过 编 译 之 后 形 成 一 个 可 执 行 文 件 ,经 操 作 系 统 的 执 行 , 形 成 一 个 进 程 , 程

15、序 运 行 的 独 立 的 单 位 , 拥 有 自 己 的 资 源 , 但 是 他并 没 有 做 什 么 事 情 , 只 有 当 cpu开 始 执 行 程 序 的 时 候 , 进 程 将 被 分 解 成 多 个 线 程 , 线 程只 是 是 CPU调 度 和 分 派 的 基 本 单 位 , 它 是 比 进 程 更 小 的 能 独 立 运 行 的 基 本 单 位 。 线 程 自己 基 本 上 不 拥 有 系 统 资 源 , 只 拥 有 一 点 在 运 行 中 必 不 可 少 的 资 源 (如 程 序 计 数 器 、 一 组寄 存 器 和 栈 ), 但 是 它 可 与 同 属 个 进 程 的 其

16、他 的 线 程 共 享 进 程 所 拥 有 的 全 部 资 源 。4.2 进程到线程一 个 进 程 又 是 怎 样 分 解 成 多 个 线 程 的 , 一 个 进 程 创 建 一 个 主 线 程 , 主 线 程 有 根 据 需要 产 生 辅 助 线 程 , 主 线 程 创 建 其 它 线 程 并 设 定 其 优 先 级 。 优 先 级 共 有 32级 , 从 0到31, 系 统 按 照 不 同 的 优 先 级 调 度 线 程 的 运 行 。 0-15级 是 普 通 优 先 级 , 线 程 的 优 先 级 可以 动 态 变 化 。 高 优 先 级 线 程 优 先 运 行 , 只 有 高 优 先

17、级 线 程 不 运 行 时 , 才 调 度 低 优 先 级线 程 运 行 。 优 先 级 相 同 的 线 程 按 照 时 间 片 轮 流 运 行 。 16-31 级 是 实 时 优 先 级 , 实 时 优先 级 与 普 通 优 先 级 的 最 大 区 别 在 于 相 同 优 先 级 进 程 的 运 行 不 按 照 时 间 片 轮 转 , 而 是 先 运行 的 线 程 就 先 控 制 cpu, 如 果 它 不 主 动 放 弃 控 制 , 同 级 的 或 低 优 先 级 的 线 程 就 无 法 运 行 。例 如 : 生 产 线 上 的 计 算 机 通 讯 接 收 数 据 又 要 响 应 用 户 的

18、 输 入 并 改 变 通 讯 传 输 中 所 传 送的 数 据 内 容 , 根 据 以 上 对 进 程 、 线 程 的 分 析 , 同 进 程 内 的 线 程 间 切 换 比 进 程 间 的 切 换 要短 , 尤 其 是 用 户 级 线 程 间 的 切 换 ; 同 一 进 程 内 的 线 程 间 通 信 的 比 进 程 间 的 通 信 效 率 要 高 ,考 虑 用 一 个 应 用 程 序 (一 个 进 程 )、 两 个 线 程 主 线 程 接 收 用 户 的 输 入 并 通 知 辅 线 程 , 辅 线程 由 主 线 程 刨 建 并 不 停 地 向 五 条 生 产 线 要 历 史 数 据 当 辅

19、 线 程 接 收 判 主 线 程 的 信 息 。 在 主线 程 中 创 建 辅 线 程 优 先 级 tpHlgher困 辅 线 程 作 为 不 停 地 通 讯 , 而 主 线 程 只 接 收 用 户 输 入2。4.3 cpu 调度Cpu对 多 个 线 程 的 调 度 , 操 作 系 统 会 负 责 为 每 个 线 程 分 配 cpu时 间 。 一 个 线 程 所 分配 到 的 cpu时 间 主 要 取 决 于 该 线 程 的 优 先 级 , 而 线 程 的 优 先 级 又 取 决 于 进 程 的 优 先 级 类和 线 程 本 身 的 相 对 优 先 级 。 调 度 程 序 运 行 时 , 要

20、在 所 有 可 运 行 状 态 的 进 程 中 选 择 最 值 得运 行 的 进 程 投 入 运 行 。 在 每 个 进 程 的 task_struct结 构 中 有 以 下 四 项 :policy、 priority、 counter、 rt_priority。 这 四 项 是 选 择 进 程 的 依 据 。 其 中 ,policy是 进 程 的 调 度 策 略 , 用 来 区 分 实 时 进 程 和 普 通 进 程 , 实 时 进 程 优 先 于 普 通 进 程 运行 ; priority是 进 程 (包 括 实 时 和 普 通 )的 静 态 优 先 级 ; counter是 进 程 剩

21、余 的 时 间 片 ,它 的 起 始 值 就 是 priority的 值 ; 由 于 counter在 后 面 计 算 一 个 处 于 可 运 行 状 态 的 进 程 值得 运 行 的 程 度 goodness时 起 重 要 作 用 , 因 此 , counter也 可 以 看 作 是 进 程 的 动 态 优 先 级 。rt_priority是 实 时 进 程 特 有 的 , 用 于 实 时 进 程 间 的 选 择 。 函 数 goodness()来 衡 量 一 个处 于 可 运 行 状 态 的 进 程 值 得 运 行 的 程 度 。 该 函 数 综 合 了 以 上 提 到 的 四 项 , 还

22、 结 合 了 一 些其 他 的 因 素 , 给 每 个 处 于 可 运 行 状 态 的 进 程 赋 予 一 个 权 值 (weight), 调 度 程 序 以 这 个权 值 作 为 选 择 进 程 的 唯 一 依 据 。 因 此 进 程 的 优 先 级 可 以 由 程 序 来 设 置 , 在 程 序 运 行 过 程中 , 优 先 级 又 会 动 态 的 改 变 。线 程 优 先 级 别 是 从 两 个 不 同 的 方 面 来 分 配 的 : 一 个 是 从 Win32 应 用 程 序 编 程 接 口 ,另 一 个 是 从 Windows 的 内 核 。 Win32 API 的 进 程 在 创

23、建 时 所 分 配 的 优 先 级 包 括 :Real-time, High, Above Normal, Normal, Below Normal, and Idle, 进 程 中 各 个 线程 的 相 关 优 先 级 包 括 : Time-critical, Highest, Above-normal, Normal, Below-normal, Lowest, and Idle。 应 用 程 序 默 认 的 优 先 级 为 Normal。 运 行 在 内 核 模 式 的线 程 可 以 被 用 户 模 式 的 线 程 抢 占 掉 , 这 与 线 程 的 状 态 无 关 , 优 先 级 是

24、决 定 性 因 素 。综 上 所 述 , 在 程 序 中 设 置 进 程 与 线 程 的 优 先 级 , 并 不 能 完 全 决 定 程 序 执 行 时 对cpu 的 调 度 , 因 为 优 先 级 还 是 动 态 变 化 的 , 具 体 的 方 法 由 操 作 系 统 来 决 定 , 不 同 的 操 作系 统 又 会 采 用 不 同 的 算 法 改 变 优 先 级 , 以 达 到 不 同 的 目 的 。 例 如 实 时 性 操 作 系 统 等 。了 解 一 些 基 本 的 知 识 后 在 深 入 分 析 一 下 双 核 机 器 上 运 行 程 序 的 效 果 , 还 做 前 边 的 实验 ,

25、 不 过 这 次 改 成 多 线 程 。试 验 环 境1)处 理 器 ; 双 核 Intel(R) Pentium(R) D cpu 2.80GHZ Intel(R) Pentium(R) D cpu 2.80GHZ2) 内 存 ; 480MB3) 操 作 系 统 windows XP4) 实 验 环 境 .net 2005实 验 目 的验 证 在 多 线 程 情 况 下 双 核 的 分 配 情 况 , 以 及 处 理 的 效 率 。实 验 方 法将 程 序 运 行 在 双 核 的 条 件 下 , 记 录 cpu 情 况 , 以 及 时 间 情 况 , 运 行 单 核 条 件 下 ,cpu 情

26、 况 , 以 及 时 间 情 况 。实 验 程 序static void Main(string args)ThreadStart threadstart = new ThreadStart(done);Thread thread = new Thread(threadstart);thread.Start();done();public static void done()double m = 999.999, n = 88.88;while (true)m = m * n;实 验 结 果实 验 分 析 : 与 上 一 个 实 验 相 比 , 在 多 线 程 情 况 下 , 才 能 更 好

27、的 体 现 出 双 核 的 意 义 ,在 仅 有 一 个 程 序 运 行 的 时 候 , 双 核 与 单 核 的 处 理 时 间 基 本 相 等 , 只 是 把 以 前 本 应 该 由 一个 核 来 处 理 的 任 务 分 给 两 核 来 处 理 , 从 程 序 的 执 行 来 说 还 是 串 行 , 在 多 线 程 情 况 下 , 每个 进 程 是 一 个 独 立 的 实 体 , 基 于 每 个 进 程 产 生 的 线 程 , 由 不 同 的 核 来 处 理 , 相 对 于 单 核的 串 行 处 理 来 说 , 双 核 对 线 程 进 行 并 行 调 度 , 减 少 了 程 序 的 执 行

28、时 间 , 从 理 论 上 来 说 ,应 给 能 过 将 其 执 行 速 度 减 少 为 单 核 处 理 的 一 半 , 但 由 于 总 线 分 配 , 资 源 争 夺 等 因 素 , 很难 达 到 理 论 的 结 果 , 但 在 一 定 程 度 上 来 说 已 经 加 快 了 程 序 的 运 行 。从 以 上 对 的 对 比 分 析 来 说 , 在 编 程 时 , 如 果 程 序 在 多 核 处 理 器 下 运 行 , 这 时 就 要 考虑 采 用 多 线 程 编 程 , 以 达 到 合 理 使 用 处 理 器 , 加 快 程 序 的 运 行 速 度 。1 冯 .诺 依 曼 原 理2 王 群 蔡 朝 晖 浅 谈 进 程 与 线 程 的 区 别3 程 昌 品 张 愉 荣 VC 实 现 Windows 操 作 系 统 下 多 线 程 的 调 度 与 应 用4 Jeffrey Richter Microsoft Press 机 械 工 业 出 版 社 Windows 核 心 编 程 5 王 群 蔡 朝 晖 浅 谈 进 程 与 线 程 的 区 别6 周 晓 慧 王 建 中 李 强 王 申 康 现 代 操 作 系 统 中 的 进 程 、 线 程 及 在 Windows OS下 的 应 用

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 教育学

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报