支持对称多处理器结构的操作系统设计

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

图 1
SM P 硬件结构模型
SMP 处理机应满足 : 1) 每个 CPU 具有唯一的物理标识。 2) CPU 之间可以通过命令或中断完成通信; 每个 CPU 可以向指定的 CPU 发送中断请求。 3) 具有总线监听能力, CPU 的存储管理支持 MES I ( ME I) 协议, 能保证各 CPU 上 CACH E 中的数据与内 存数据的一致性。 4) 主引导 CPU 可以获取系统处理器的配置。 5) 对总线和存储器的访问要进行仲裁, 保证所有 的 CPU 和设备有平等的访问权利 , 对相同存储器的访 问不会相互干扰。 6) CPU 的数目应满足 总线和存储器的带宽的 限 制。
2
S M P 操作系统设计需考虑的问题
SMP 操作系统的设计需要解决系统引导、 中断处
图 2 SM P 系统初始化流程
理、 进程调度、 软件的可重入性等多个方面的问题。 2 . 1 系统引导 虽然 S MP 系统中所有 CPU 都是平等的 , 没有主次 之分。但是在系统引导和初始化阶段还是有差别的 , 因为在初始阶段系统只有一个 上下文 , 只能由一个 CPU 来处理。 在系统加电之后 , 系统中暂时只有一个 CPU 完成 系统初始化 , 称为 引导处理器 。系统其它的处理器 处于暂停状态, 称为 从处理器 。引导处理器完成自 身的初始化, 并完成系统 MMU 管理机制的初始化 , 完 成系统内核的初始化 , 创建 idle 进程 ; 然后依次启动系 统中的各个 CPU, 主 CPU 在完成了所有从 CPU 的启动 后 , 发命令同步启动所有 CPU 进入多进程并行运行。
源自文库
前运行优先级最低的进程 B, 如果进程 A 的优先级低 于 B, 则调度结束; 否则, 向 B 进程所在的处理机发 IP I 重调度信号。 在 S M P 进程管理时, 当使用停止进程、 重启进程、 挂起进程、 删除进程、 改变进程优先级等服务 , 而被处 理的进程在另一个 CPU 上运行时, 直接操作将存在问 题。如当进程 1 正在 CPU1 上运行, 此时 CPU 2上运行 的进程 2 调用上述服务对进程 1 操作 , 因其无法控制 CPU1 的状态, 因此需要通过处理机之间的 IP I 中断 , 发送相应的 S M P _FUNCT I ON _CALL 到进程 1 运行的 CPU1 , 由 CPU 1进行处理。 2 . 2. 4 进程与处理机关系定义 在 S M P 操作系统中, 进程与处理机的关系可以是 无关的, 也可以通过 Funneling 机制或 Processor affin ity 机制两种机制定义进程与处理机的关系。 1) Funnelin g 机制 在 Funnelin g 机制 中, 通过 配置 , 为每个 CPU 定义好要处理的进程, 例如处理所 有的 I/O 请求或处理所有的中断请求。 该机制 有利于减少 CACHE 的 一致性问题, 因为 每个 CPU 处理一类不同的任务 , 不会在系统中存在同 一数据的多个副本。由于中断的产生会影响 CACH E, 因此当所有的中断在一个 CPU 上处理时 , 系统中的其 它 CPU 将不会受到打扰, 因此会操作的更快。
CPU 出现了致命故障时, 其它 CPU 可无缝地接管它的 工作 , 降低系统的停工时间。 使用 S MP 操作系统, 能使硬件中确切的处理单元 数对应用程 序员透明。应用软件能不 进行任何针对 S M P 的修改而运行。由于多处理器上运行同一个操作 系统 , 可方便的解决系统的负载平衡问题。 1 . 1 S M P 操作系统的设计目标 S M P 结构的操作系统要支持并发的进程执行 , 要 充分利用多个处理器的能力 , 在原有的单处理机的基 础上实现 S MP 操作系统的设计目标: 1)简单化 , 原有的系统结构不因 SMP 机制而复杂 化。 2)并行处理能力, 多个进程同时运行, 并行进程调 度。 3) 内核完 整性, 能正 确的协调好 CPU 的并行活 动, 确保内核的数据结构一致性。 4)系统高性能 , 有效的同 步原语, 锁等待的时间 短。 5) 用户透明性 , 多个 CPU 对用户是透明的 , 即操 作系统提供给用户调用的 AP I与原单机上提供的 AP I 一致。 6)容错能力, 单个 CPU 的故障不影响应用系统的 正常运行。 7)可扩展性, 增加 CPU 不会引起操作系统的重编 译或者内核重配置。 8)兼容性 , 当配置的处理 器数目为 1 时 , S M P操 作系统行为与原有单机操作系统一致。
引言
随着微处理器速度的增长, 提高处理器频率的方 法已受到随之而来的高功耗的限制, 采用 S M P 系统可 花费最小的代价解决系统性能的提高、 实现系统负载 均衡调度、 满足处理器容错的需要。目前 S M P 结构计 算机已经成为现代计算机技术发展的潮流和趋势。 对称多处理机 ( Symm etric M ultiP rocessor), 是指由 一组处理器 ( 多 CPU )组成的一个计算机, 各 CPU 之间 共享内存以及总线结构。在这种结构中, 所有的处理 器都可以平等地访问内存、I/O 和外部中断。虽然 同 时使用多个 CPU, 但由于多个处理器共享内存和其他 资源, 由一个操作系统统一管理 , 因此从用户的角度来 看 , 它们的表现就像一个 CPU 一样, 而其整个系统 的 处理能力却大幅度提高。 随着对称多处理机技术的发展, 如何在原有的操 作系统的基础上 , 实现支持 S M P结构操作系统的开发 已成为需要解决的首要问题。目前 L inux 2 . 4 版本以 上的内核, 采用了细加锁机制支持对 S MP 处理器的支 持。 QNX 则支持操作系统为微核结构的 SMP 设计, 本 文主要介绍满足 S M P 结构的嵌入式操作系统设计过 程需要考虑的问题。
1
S M P 系统概述
SMP 系统是多个 CPU 组成的计算机, 与单处理机
系统相比, S MP 系统通过并行处理可以提高处理进程 的速度。同时 S M P系统具有一定的容错能力, 即当有
收稿日期 : 2007 - 10 - 17 修订日期 : 2008 - 02 - 20
基金项目 : 航空基金资助项目 ( 04F31007 ) 作者简介 : 任晓瑞 ( 1972 - ) , 女, 陕西西安人 , 高级工程师 , 研究方向为嵌入式实时操作系统。
图 3 进程运行队列
但是该机制不利于系统资源的充分利用 , 尤其是 系统负载的平衡使用。 2) P rocessor affinity 机制 该机制允许用户使用 进程运行配置表 , 定义每个进程建议运行的 CPU。与 Funnelin g 相比 , 该机制的限定性较弱。 对 Funnelin g 的配置要求在内核中定义, 而 P roces sor affinity 的实现可以在应用级完成, 用户可以通过调 用服务设定进程建议运行的处理器, 当需要时可重定 义。允许处理器故障时将进程恢复到其它处理器上运 行。 在实时系统中 , P rocessor affin ity 可以减少进程的 调度时间 , 调度 时, 只需 查看该进程上 次运行的处理 器, 将进程派遣到其上运行。 该机制的实现 , 需要在进程控制块中增加进程允 许运行的 CPU 属性, 在进程调度中加以判别处理, 增 加了实现的复杂性。 2 . 3 中断处理 2 . 3. 1 中断管理结构 S M P 中断管理的主要问题是确定由一个 CPU 来 处理所有的中断请求, 还是由所有的 CPU 轮流处理。 如果是轮流处理还需解决中断请求与不同 CPU 的对 应关系。
2008 年 3 月
任晓瑞 等 : 支持对称多处理器结构的操作系统设计
55
就绪队列被全局同时访问、 同时修改 , 需用加以保护。 在实现时考虑进程管理的特殊性。对用于进程管 理每个进程控制块设置一个锁 , 对运行队列及相关的 优先级映射表设置一个锁。 2 . 2 . 2 运行队列 当前运行进程 Process_Executing: 在单处理机中指 向正处于运行态的进程控制块 , 在 S M P 中必须改变对 其的定义, 当前运行的进程的数据结构的指针变成指 针数组 Process_Execu ting [ Num _CPU ] 。 Num _CPU 为 CPU 总数。 每个 CPU 定 义一个 运行队 列, 在 单机进 程调 度 中 , 当前运行进程只有一个 , 运行时可以不从就绪链中 移出 (系统中的最高就绪进程即为当前运行进程 ) , 对 于多 CPU 的 S M P 系统中 , 由于同时 运行的进程有 多 个 , 需要将进程从就绪链中摘下, 放入到各个 CPU 的 运行队列中。
在 SMP 系统结构中 , 所有的 CPU 在运行时 ( 系统 引导和初始化除外 ) 都是 对称 的 , 没有 主次之分。 存储器中的内容是完全共享的 , 只要是引用相同的数 据 , 那么所有的 CPU 和设备都使用相同的物理地址。 在物理上 , 通常采用同一种 CPU, 所有的 CPU 通过同 一条系统总线共享同 一个系统内存及 所有外设。在 SMP 结 构 中 , 每 个 CPU 都 有 自 己 的 高 速 缓 存 ( CACH E ), 用来减少对内存访问的冲突。 SMP 系统硬件结构 , 如图所示。
54 1 . 2 SMP 系统对硬件的要求
航空计算技术
第 38 卷
第 2期
从处理器上电后, 处于复位状态, 等待引导处理器 的启动, 从处理器启动后, 完成自身 CPU 内部寄存器 的初始化 , 设置 CPU 的中断管理机制。各 CPU 初始化 完成后, 停下来等待统一的 起跑 命令; 并转入各自 的 id le进程。
2 . 2 . 3 进程调度 在采用抢占式进程调度的操作系统中 , 进程在以 下两种情况下进行切换: 1) 当前运行的进程自动放弃 CPU 控制权, 此时 进程从就绪链中移出。如: 进程等待资源、 延时等待、 挂起自身等。 2) 当前进程运行过程中 , 有高优先级的进程就绪 , 需要调度。 对于第一种情况 , 调度与单处理机相同, 从就绪队 列中取出最高优先级进程 , 设置为当前 CPU 的执行进 程 ; 如果没有就绪进程 , 则运行本 CPU 的空闲进程 ; 对于第二种情况 , 在 S MP 结构的系统中, 同时 运 行的进程有多个。当 有进程 A 由于获得资源而转 换 为就绪态时 , 需求解决该进程在多个 CPU 上的调度。 为了处理后一种情况 , 在 SMP 操作系统的调度更 改中, 需增加对指定进程调度的功能。主要完成: 查找进程 A 上次运行的处理机 , 如果空闲 , 则 向该 CPU 发 IP I重调度信号。 如果上次运行的处理器不空闲, 则在系统中查 找空闲的 CPU, 并向该 CPU 发 IP I重调度信号。 如果没有空闲的 CPU, 则在所有 CPU 中查找当
在自举阶段, 每一个 CPU 使 用自己不同的栈, 使 得它们不互相干扰地同时自举。 S M P操作系统的引导 如图 2 所示。 2 . 2 进程调度 2 . 2. 1 SMP 结构进程管理 操作系统的功能主要是对进程的调度、 管理, 维护 其运行所需要的资源。为了实现并行进程调度 , 必须 找出所有的调度程序的临界区并且加以保护。操作系 统内核中 , 每类对象会对就绪队列进行操作 , 进程获取 资源时, 如果当前资源不可用 , 则需要将进程从就绪队 列中摘下 , 当资源有效时又要加入到就绪队列中。进 程调度需要在就绪队列中查找下一个调度进程。因此
急需构建能协调多 处理器并发活动并维护系统一致性的 SM P 操作系统来替代原有的单处理器操 作 系统 。 从 SM P 操作系统所需要达到的目标出发 , 对设计满足 SM P 结构操作 系统中的 各方面问题 进 行了讨论 , 主要对操作系统结构 , 多处理器的引导和操作系统初 始化 , 多进程的 并行调度 、 多处理 器 中断的管 理 , 以及程序和数据的可重入性等方面进行了详细的 讨论 。 关键词 : 对称多处理机 ( SM P ); 操作系统 ; 中断管理 ; 进程调度 ; 机间中断 ( IP I) 中图分类 号 : TP 316 文献标识码 : A 文章编号 : 1671- 654X ( 2008) 02- 0053 - 05
第 38 卷
第 2期
航空计算技术 A eronautica l Co m puting T echn ique
Vo . l 38 N o . 2 M ar . 2008
2008 年 3 月
支持对称多处理器结构的操作系统设计
任晓瑞, 时 磊
(中国航空计算技术研究所 , 陕西 西安 710068)
摘 要 : 在提 高系统性 能方面 , S M P 结构计算机 已经成为 现代计算机 技术发展 的潮流和趋 势 , 因 此
相关文档
最新文档