《中央处理器热插拔的实现方法及装置.pdf》由会员分享,可在线阅读,更多相关《中央处理器热插拔的实现方法及装置.pdf(23页完整版)》请在专利查询网上搜索。
1、(10)申请公布号 CN 103699444 A (43)申请公布日 2014.04.02 CN 103699444 A (21)申请号 201310694881.7 (22)申请日 2013.12.17 G06F 9/50(2006.01) G06F 9/445(2006.01) (71)申请人 华为技术有限公司 地址 518129 广东省深圳市龙岗区坂田华为 总部办公楼 申请人 中国科学院计算技术研究所 (72)发明人 薛栋梁 解壁伟 高云伟 詹剑锋 (74)专利代理机构 北京同立钧成知识产权代理 有限公司 11205 代理人 刘芳 (54) 发明名称 中央处理器热插拔的实现方法及装置 (。
2、57) 摘要 本发明实施例提供一种中央处理器热插拔 的实现方法及装置, 该方法包括 : Primary 操作系 统实例为 Secondary 操作系统实例配置热插入 初始化代码, ; Primary 操作系统实例向目标 CPU 发送处理器间中断 IPI, 以触发目标 CPU 进行热 插入初始化, 热插入初始化为目标 CPU 进行热插 入时的初始化过程 ; Primary 操作系统实例检测 目标 CPU 是否完成热插入初始化 ; 若 Primary 操 作系统实例检测到目标 CPU 完成热插入初始化, 则向 Secondary 操作系统实例发送中断, 以使 Secondary 操作系统实例热插入。
3、目标 CPU, 实现在 Secondary 操作系统内实现 CPU 的 Hot Plug。 (51)Int.Cl. 权利要求书 3 页 说明书 13 页 附图 6 页 (19)中华人民共和国国家知识产权局 (12)发明专利申请 权利要求书3页 说明书13页 附图6页 (10)申请公布号 CN 103699444 A CN 103699444 A 1/3 页 2 1. 一种中央处理器热插拔的实现方法, 其特征在于, 适用于具有原始 Primary 操作系 统实例与至少一个第二 Secondary 操作系统实例的多处理器操作系统, 该方法包括 : 所述 Primary 操作系统实例为所述 Seco。
4、ndary 操作系统实例配置热插入初始化代码, 所述热插入初始化代码包括在所述 Secondary 操作系统中插入目标中央处理器 CPU 时, 所 述目标 CPU 进行热插入所需的功能性代码 ; 所述 Primary 操作系统实例向所述目标 CPU 发送处理器间中断 IPI, 以触发所述目标 CPU 进行热插入初始化, 所述热插入初始化为所述目标 CPU 进行热插入时的初始化过程 ; 所述 Primary 操作系统实例检测所述目标 CPU 是否完成所述热插入初始化 ; 若所述 Primary 操作系统实例检测到所述目标 CPU 完成所述热插入初始化, 则向所 述 Secondary 操作系统实。
5、例发送中断, 以使所述 Secondary 操作系统实例热插入所述目标 CPU。 2. 根据权利要求 1 所述的方法, 其特征在于, 所述 Primary 操作系统实例为所述 Secondary 操作系统实例配置热插入初始化代码, 包括 : 所述Primary操作系统实例在所述Primary操作系统实例的机器物理地址配置所述热 插入初始化代码 ; 所述Primary操作系统实例在所述Secondary操作系统实例的第一物理地址配置所述 热插入初始化代码, 所述第一物理地址为低地址 ; 所述Primary操作系统实例在所述Secondary操作系统实例的第二物理地址配置所述 热插入初始化代码, 。
6、所述第二物理地址为低地址, 所述第一物理地址与所述第二物理地址 为不同的低地址。 3. 根据权利要求 2 所述的方法, 其特征在于, 所述 Primary 操作系统实例向所述目标 CPU 发送处理器间中断 IPI, 以触发所述目标 CPU 进行热插入初始化, 包括 : 所述 Primary 操作系统实例向所述目标 CPU 发送处理器间中断 IPI, 以触发所述目 标 CPU 在所述机器物理地址执行所述热插入初始化代码, 从而完成实模式到保护模式的转 换 ; 所述 Primary 操作系统实例向所述目标 CPU 发送处理器间中断 IPI, 以触发所述目标 CPU 在所述第一物理地址执行所述热插入。
7、初始化代码, 从而完成从所述 Primary 操作系统 实例的空间到 Secondary 操作系统实例的空间的转换 ; 所述 Primary 操作系统实例向所述目标 CPU 发送处理器间中断 IPI, 以触发所述目标 CPU 在所述第二物理地址执行所述热插入初始化代码, 并执行处理器暂停指令 HLT。 4.根据权利要求13任一项所述的方法, 其特征在于, 所述Primary操作系统实例为 所述 Secondary 操作系统实例配置热插入初始化代码之前, 还包括 : 所述 Primary 操作系统实例判断所述 Secondary 操作系统实例中的 CPU 数量是否小于 预设的阀值 ; 若小于, 。
8、则所述 Primary 操作系统实例为所述 Secondary 操作系统实例选择所述目标 CPU。 5. 根据权利要求 4 所述的方法, 所述 Primary 操作系统实例为所述 Secondary 操作系 统实例选择所述目标 CPU, 包括 : 所述 Primary 操作系统实例根据 CPU 分配状态位图, 为所述 Secondary 操作系统实例 权 利 要 求 书 CN 103699444 A 2 2/3 页 3 选择所述目标CPU, 所述CPU分配状态位图记录所述多处理器操作系统中的各CPU的分配状 态。 6. 一种中央处理器热插拔的实现方法, 其特征在于, 适用于具有原始 Prima。
9、ry 操作系 统实例与至少一个第二 Secondary 操作系统实例的多处理器操作系统, 该方法包括 : 所述 Secondary 操作系统实例清空目标 CPU 上的工作队列, 以使得所述目标 CPU 执行 处理器暂停指令 HLT ; 所述 Secondary 操作系统实例将所述目标 CPU 标识为空闲 CPU ; 所述 Secondary 操作系统实例向所述 Primary 操作系统实例发送所述目标 CPU 的标 识, 以使得所述 Primary 操作系统实例将所述目标 CPU 存储到所述多处理系统的 CPU 资源 池。 7. 根据权利要求 6 所述的方法, 其特征在于, 所述 Second。
10、ary 操作系统实例清空目标 CPU 上的工作队列, 以使得所述目标 CPU 执行处理器暂停指 令 HLT 之前, 包括 : 所述 Secondary 操作系统实例选择目标中央处理器 CPU。 8.根据权利要求6或7所述的方法, 其特征在于, 所述Secondary操作系统实例将所述 目标 CPU 标识为空闲 CPU 之后, 所述 Secondary 操作系统实例向所述 Primary 操作系统实 例发送所述目标 CPU 的标识之前, 包括 : 所述 Secondary 操作系统实例判断是否需要将所述目标 CPU 返回给所述 Primary 操作 系统实例 ; Secondary 操作系统实例。
11、向 Primary 操作系统实例发送目标 CPU 的标识, 包括 : 若 Secondary 操作系统实例判断判断出需要将目标 CPU 返回给 Primary 操作系统实 例, 则向所述 Primary 操作系统实例发送目标 CPU 的标识。 9. 一种中央处理器热插拔的实现装置, 其特征在于, 包括 : 配置模块, 用于为所述 Secondary 操作系统实例配置热插入初始化代码, 所述热插入 初始化代码包括在所述 Secondary 操作系统中插入目标中央处理器 CPU 时, 所述目标 CPU 进行热插入所需的功能性代码 ; 第一发送模块, 用于向所述目标 CPU 发送处理器间中断 IPI。
12、, 以触发所述目标 CPU 进行 热插入初始化, 所述热插入初始化为所述目标 CPU 进行热插入时的初始化过程 ; 检测模块, 用于检测所述目标 CPU 是否完成所述热插入初始化 ; 第二发送模块, 还用于若所述检测模块检测到所述 Primary 操作系统实例检测到所述 目标 CPU 完成所述热插入初始化, 则向所述 Secondary 操作系统实例发送中断, 以使所述 Secondary 操作系统实例热插入所述目标 CPU。 10. 根据权利要求 9 所述的装置, 其特征在于, 所述配置模块包括 : 第一配置模块, 用于在所述 Primary 操作系统实例的机器物理地址配置所述热插入初 始化。
13、代码 ; 第二配置模块, 用于在所述 Secondary 操作系统实例的第一物理地址配置所述热插入 初始化代码, 所述第一物理地址为低地址 ; 第三配置模块, 用于在所述 Secondary 操作系统实例的第二物理地址配置所述热插入 初始化代码, 所述第二物理地址为低地址, 所述第一物理地址与所述第二物理地址为不同 的低地址。 权 利 要 求 书 CN 103699444 A 3 3/3 页 4 11. 根据权利要求 10 所述的装置, 其特征在于, 所述第一发送模块包括 : 第一发送单元, 用于向所述目标 CPU 发送处理器间中断 IPI, 以触发所述目标 CPU 在所 述机器物理地址执行所。
14、述热插入初始化代码, 从而完成实模式到保护模式的转换 ; 第二发送单元, 用于向所述目标 CPU 发送处理器间中断 IPI, 以触发所述目标 CPU 在所 述第一物理地址执行所述热插入初始化代码, 从而完成从所述 Primary 操作系统实例的空 间到 Secondary 操作系统实例的空间的转换 ; 第三发送单元, 用于向所述目标 CPU 发送处理器间中断 IPI, 以触发所述目标 CPU 在所 述第二物理地址执行所述热插入初始化代码, 并执行处理器暂停指令 HLT。 12. 根据权利要求 9 11 任一项所述的装置, 其特征在于, 所述装置还包括 : 判断模块, 用于判断所述 Second。
15、ary 操作系统实例中的 CPU 数量是否小于预设的阀 值 ; 选择模块, 用于若所述判断模块判断出所述 Secondary 操作系统实例中的 CPU 数量小 于预设的阀值, 则为所述 Secondary 操作系统实例选择所述目标 CPU。 13. 根据权利要求 12 所述的装置, 其特征在于, 所述选择模块, 用于根据CPU分配状态位图, 为所述Secondary操作系统实例选择所述 目标 CPU, 所述 CPU 分配状态位图记录所述多处理器操作系统中的各 CPU 的分配状态。 14. 一种中央处理器热插拔的实现装置, 其特征在于, 包括 : 处理模块, 用于清空目标CPU上的工作队列, 以。
16、使得所述目标CPU执行处理器暂停指令 HLT ; 标识模块, 用于将所述目标 CPU 标识为空闲 CPU ; 发送模块, 用于向所述 Primary 操作系统实例发送所述目标 CPU 的标识, 以使得所述 Primary 操作系统实例将所述目标 CPU 存储到所述多处理系统的 CPU 资源池。 15. 根据权利要求 14 所述的装置, 其特征在于, 所述装置还包括 : 选择模块, 用于选择目标中央处理器 CPU。 16. 根据权利要求 14 或 15 所述的装置, 其特征在于, 所述装置还包括 : 判断模块, 用于判断是否需要将所述目标 CPU 返回给所述 Primary 操作系统实例 ; 所。
17、述发送模块, 用于若所述判断模块判断出需要将目标 CPU 返回给 Primary 操作系统 实例, 则向所述 Primary 操作系统实例发送目标 CPU 的标识。 权 利 要 求 书 CN 103699444 A 4 1/13 页 5 中央处理器热插拔的实现方法及装置 技术领域 0001 本发明实施例涉及通信领域, 尤其涉及一种中央处理器热插拔的实现方法及装 置。 背景技术 0002 随着计算机技术的不断发发展, 在一个中央处理器 (Central Processing Unit, CPU)上部署多个内核 (core)形成具有强大处理能力的多核中央处理器, 包括多个多核 处理器的计算机系统称。
18、为多处理器操作系统。多处理器操作系统中, 首先启动的操作 系统实例为原始 (Primary) 操作系统实例, 后续启动的一个或多个操作系统实例称为第 二 (Secondary)操作系统实例。当需要为 Secondary 操作系统实例运行时, 可能需求从 Primary 操作系统实例获取 CPU 并启动该 CPU 即需要热插入 (Hot Plug) 。 0003 现有的多处理器操作系统, 如 Linux 多处理器操作系统, 为了实现 Hot Plug, 需要 调用一系列函数完成整个 CPU 的启动过程。该过程中, 负责热插入过程的 CPU 为主 CPU, 待启动的 CPU 为目标 CPU, 目标。
19、 CPU 接收到主 CPU 发送的处理器间中断 (Inter-Processor Interrupt, IPI) 后, 从低地空间执行跳板 (Trampoline) 进入保护模式, 再由主 CPU 进行一 系列的初始化操作, 将目标CPU纳入系统资源池。 然后, 目标CPU调度Idle进程, 完成启动。 0004 然而, 该 Hot Plug 过程中, 由于低地址空间由 Primary 操作系统实例管理, 而 Primary 操作系统实例与 Secondary 操作系统实例属于两个不同的操作系统 (Operating System, OS) 空间, Secondary 操作系统实例不能占用 P。
20、rimary 操作系统实例管理的低地址 空间。因此, 现有技术仅实现了 Primary 操作系统内 CPU 的 Hot Plug, 而 Secondary 操作系 统实例由于不能自主的将系统资源池中的 CPU 从实模式切换到保护模式, 进而无法在运行 过程中启动目标 CPU, 即无法在 Secondary 操作系统实例内实现 CPU 的 Hot Plug。 发明内容 0005 本发明实施例提供一种中央处理器热插拔的实现方法及装置, 实现 CPU 在 Secondary 操作系统实例内的 Hot Plug。 0006 第一个方面, 本发明实施例提供一种中央处理器热插拔的实现方法, 适用于具有 原。
21、始 Primary 操作系统实例与至少一个第二 Secondary 操作系统实例的多处理器操作系 统, 该方法包括 : 0007 所述Primary操作系统实例为所述Secondary操作系统实例配置热插入初始化代 码, 所述热插入初始化代码包括在所述Secondary操作系统中插入目标中央处理器CPU时, 所述目标 CPU 进行热插入所需的功能性代码 ; 0008 所述 Primary 操作系统实例向所述目标 CPU 发送处理器间中断 IPI, 以触发所述 目标 CPU 进行热插入初始化, 所述热插入初始化为所述目标 CPU 进行热插入时的初始化过 程 ; 0009 所述 Primary 操。
22、作系统实例检测所述目标 CPU 是否完成所述热插入初始化 ; 说 明 书 CN 103699444 A 5 2/13 页 6 0010 若所述 Primary 操作系统实例检测到所述目标 CPU 完成所述热插入初始化, 则向 所述 Secondary 操作系统实例发送中断, 以使所述 Secondary 操作系统实例热插入所述目 标 CPU。 0011 在第一个方面的第一种可能的实现方式中, 所述 Primary 操作系统实例为所述 Secondary 操作系统实例配置热插入初始化代码, 包括 : 0012 所述Primary操作系统实例在所述Primary操作系统实例的机器物理地址配置所 述。
23、热插入初始化代码 ; 0013 所述Primary操作系统实例在所述Secondary操作系统实例的第一物理地址配置 所述热插入初始化代码, 所述第一物理地址为低地址 ; 0014 所述Primary操作系统实例在所述Secondary操作系统实例的第二物理地址配置 所述热插入初始化代码, 所述第二物理地址为低地址, 所述第一物理地址与所述第二物理 地址为不同的低地址。 0015 结合第一个方面的第一种可能的实现方式, 在第一个方面的第二种可能的实现方 式中, 所述 Primary 操作系统实例向所述目标 CPU 发送处理器间中断 IPI, 以触发所述目标 CPU 进行热插入初始化, 包括 :。
24、 0016 所述Primary操作系统实例向所述目标CPU发送处理器间中断IPI, 以触发所述目 标 CPU 在所述机器物理地址执行所述热插入初始化代码, 从而完成实模式到保护模式的转 换 ; 0017 所述Primary操作系统实例向所述目标CPU发送处理器间中断IPI, 以触发所述目 标 CPU 在所述第一物理地址执行所述热插入初始化代码, 从而完成从所述 Primary 操作系 统实例的空间到 Secondary 操作系统实例的空间的转换 ; 0018 所述Primary操作系统实例向所述目标CPU发送处理器间中断IPI, 以触发所述目 标 CPU 在所述第二物理地址执行所述热插入初始化。
25、代码, 并执行处理器暂停指令 HLT。 0019 结合第一个方面、 第一个方面的第一种或第二种可能的实现方式, 在第一个方面 的第三种可能的实现方式中, 所述 Primary 操作系统实例为所述 Secondary 操作系统实例 配置热插入初始化代码之前, 还包括 : 0020 所述 Primary 操作系统实例判断所述 Secondary 操作系统实例中的 CPU 数量是否 小于预设的阀值 ; 0021 若小于, 则所述 Primary 操作系统实例为所述 Secondary 操作系统实例选择所述 目标 CPU。 0022 结合第一个方面的第三种可能的实现方式, 在第一个方面的第四种可能的实。
26、现方 式中, 所述 Primary 操作系统实例为所述 Secondary 操作系统实例选择所述目标 CPU, 包 括 : 0023 所述 Primary 操作系统实例根据 CPU 分配状态位图, 为所述 Secondary 操作系统 实例选择所述目标CPU, 所述CPU分配状态位图记录所述多处理器操作系统中的各CPU的分 配状态。 0024 第二个方面, 本发明实施例提供一种中央处理器热插拔的实现方法, 适用于具有 原始 Primary 操作系统实例与至少一个第二 Secondary 操作系统实例的多处理器操作系 统, 该方法包括 : 说 明 书 CN 103699444 A 6 3/13 。
27、页 7 0025 所述 Secondary 操作系统实例清空目标 CPU 上的工作队列, 以使得所述目标 CPU 执行处理器暂停指令 HLT ; 0026 所述 Secondary 操作系统实例将所述目标 CPU 标识为空闲 CPU ; 0027 所述 Secondary 操作系统实例向所述 Primary 操作系统实例发送所述目标 CPU 的 标识, 以使得所述 Primary 操作系统实例将所述目标 CPU 存储到所述多处理系统的 CPU 资 源池。 0028 在第二个方面的第一种可能的实现方式中, 所述 Secondary 操作系统实例清空目 标 CPU 上的工作队列, 以使得所述目标 。
28、CPU 执行处理器暂停指令 HLT 之前, 包括 : 0029 所述 Secondary 操作系统实例选择目标中央处理器 CPU ; 0030 结合第二个方面或第二个方面的第一种可能的实现方式中, 所述 Secondary 操 作系统实例将所述目标 CPU 标识为空闲 CPU 之后, 所述 Secondary 操作系统实例向所述 Primary 操作系统实例发送所述目标 CPU 的标识之前, 包括 : 0031 所述 Secondary 操作系统实例判断是否需要将所述目标 CPU 返回给所述 Primary 操作系统实例 ; 0032 Secondary 操作系统实例向 Primary 操作系。
29、统实例发送目标 CPU 的标识, 包括 : 0033 若 Secondary 操作系统实例判断判断出需要将目标 CPU 返回给 Primary 操作系统 实例, 则向所述 Primary 操作系统实例发送目标 CPU 的标识。 0034 第三个方面, 本发明实施例提供一种中央处理器热插拔的实现装置, 包括 : 0035 配置模块, 用于为所述 Secondary 操作系统实例配置热插入初始化代码, 所述热 插入初始化代码包括在所述 Secondary 操作系统中插入目标中央处理器 CPU 时, 所述目标 CPU 进行热插入所需的功能性代码 ; 0036 第一发送模块, 用于向所述目标 CPU 。
30、发送处理器间中断 IPI, 以触发所述目标 CPU 进行热插入初始化, 所述热插入初始化为所述目标 CPU 进行热插入时的初始化过程 ; 0037 检测模块, 用于检测所述目标 CPU 是否完成所述热插入初始化 ; 0038 第二发送模块, 还用于若所述检测模块检测到所述 Primary 操作系统实例检测到 所述目标CPU完成所述热插入初始化, 则向所述Secondary操作系统实例发送中断, 以使所 述 Secondary 操作系统实例热插入所述目标 CPU。 0039 在第三个方面的第一种可能的实现方式中, 所述配置模块包括 : 0040 第一配置模块, 用于在所述 Primary 操作系。
31、统实例的机器物理地址配置所述热插 入初始化代码 ; 0041 第二配置模块, 用于在所述 Secondary 操作系统实例的第一物理地址配置所述热 插入初始化代码, 所述第一物理地址为低地址 ; 0042 第三配置模块, 用于在所述 Secondary 操作系统实例的第二物理地址配置所述热 插入初始化代码, 所述第二物理地址为低地址, 所述第一物理地址与所述第二物理地址为 不同的低地址。 0043 结合第三个方面的第一种可能的实现方式, 在第三个方面的第二种可能的实现方 式中, 所述第一发送模块包括 : 0044 第一发送单元, 用于向所述目标 CPU 发送处理器间中断 IPI, 以触发所述目。
32、标 CPU 在所述机器物理地址执行所述热插入初始化代码, 从而完成实模式到保护模式的转换 ; 说 明 书 CN 103699444 A 7 4/13 页 8 0045 第二发送单元, 用于向所述目标 CPU 发送处理器间中断 IPI, 以触发所述目标 CPU 在所述第一物理地址执行所述热插入初始化代码, 从而完成从所述 Primary 操作系统实例 的空间到 Secondary 操作系统实例的空间的转换 ; 0046 第三发送单元, 用于向所述目标 CPU 发送处理器间中断 IPI, 以触发所述目标 CPU 在所述第二物理地址执行所述热插入初始化代码, 并执行处理器暂停指令 HLT。 0047。
33、 结合第三个方面、 第三个方面的第一种或第二种可能的实现方式, 在第三个方面 的第三种可能的实现方式种, 所述装置还包括 : 0048 判断模块, 用于判断所述 Secondary 操作系统实例中的 CPU 数量是否小于预设的 阀值 ; 0049 选择模块, 用于若所述判断模块判断出所述 Secondary 操作系统实例中的 CPU 数 量小于预设的阀值, 则为所述 Secondary 操作系统实例选择所述目标 CPU。 0050 结合第三个方面的第三种可能的实现方式, 在第三个方面的第四种可能的实现方 式中, 所述选择模块, 用于根据 CPU 分配状态位图, 为所述 Secondary 操作。
34、系统实例选择所 述目标 CPU, 所述 CPU 分配状态位图记录所述多处理器操作系统中的各 CPU 的分配状态。 0051 第四个方面, 本发明实施例提供一种中央处理器热插拔的实现装置, 包括 : 0052 处理模块, 用于清空目标CPU上的工作队列, 以使得所述目标CPU执行处理器暂停 指令 HLT ; 0053 标识模块, 用于将所述目标 CPU 标识为空闲 CPU ; 0054 发送模块, 用于向所述Primary操作系统实例发送所述目标CPU的标识, 以使得所 述 Primary 操作系统实例将所述目标 CPU 存储到所述多处理系统的 CPU 资源池。 0055 在第四个方面的第一种可。
35、能的实现方式中, 所述装置还包括 : 0056 选择模块, 用于选择目标中央处理器 CPU。 0057 结合第四个方面或第四个方面的第一种可能的实现方式中, 所述装置还包括 : 0058 判断模块, 用于判断是否需要将所述目标 CPU 返回给所述 Primary 操作系统实 例 ; 0059 所述发送模块, 用于若所述判断模块判断出需要将目标 CPU 返回给 Primary 操作 系统实例, 则向所述 Primary 操作系统实例发送目标 CPU 的标识。 0060 本发明实施例提供的中央处理器热插拔的实现方法及装置, Primary 操作系统实 例为 Secondary 操作系统实例配置热插。
36、入初始化代码, 并向目标 CPU 发送 IPI, 使得目标 CPU完成热插入初始化。 当检测出目标CPU完成热插入初始化后, 向Secondary操作系统实 例发送用于启动目标 CPU 的 APIC 中断, 使 Secondary 操作系统实例热插入目标 CPU, 从而 为 Secondary 操作系统实例内进行动态 CPU 资源调整提供底层技术支撑, 将 Primary 操作 系统实例中的空闲 CPU 热插入到 Secondary 操作系统, 实现在 Secondary 操作系统内实现 CPU 的 Hot Plug。 附图说明 0061 为了更清楚地说明本发明实施例或现有技术中的技术方案, 。
37、下面将对实施例或现 有技术描述中所需要使用的附图作一简单地介绍, 显而易见地, 下面描述中的附图是本发 明的一些实施例, 对于本领域普通技术人员来讲, 在不付出创造性劳动性的前提下, 还可以 说 明 书 CN 103699444 A 8 5/13 页 9 根据这些附图获得其他的附图。 0062 图 1 为本发明中央处理器热插拔的实现方法实施例一的流程图 ; 0063 图 2 为本发明中央处理器热插拔的实现方法实施例二的流程图 ; 0064 图 3 为本发明中央处理器热插拔的实现方法实施例三的流程图 ; 0065 图 4 为本发明中央处理器热插拔的实现方法实施例四的流程图 ; 0066 图 5 。
38、为本发明中央处理器热插拔的实现装置实施例一的结构示意图 ; 0067 图 6 为本发明中央处理器热插拔的实现装置实施例二的结构示意图 ; 0068 图 7 为本发明中央处理器热插拔的实现装置实施例三的结构示意图 ; 0069 图 8 为本发明中央处理器热插拔的实现装置实施例四的结构示意图 ; 0070 图 9 为本发明中央处理器热插拔的实现装置实施例五的结构示意图 ; 0071 图 10 为本发明中央处理器热插拔的实现装置实施例六的结构示意图。 具体实施方式 0072 为使本发明实施例的目的、 技术方案和优点更加清楚, 下面将结合本发明实施例 中的附图, 对本发明实施例中的技术方案进行清楚、 。
39、完整地描述, 显然, 所描述的实施例是 本发明一部分实施例, 而不是全部的实施例。 基于本发明中的实施例, 本领域普通技术人员 在没有做出创造性劳动前提下所获得的所有其他实施例, 都属于本发明保护的范围。 0073 图 1 为本发明中央处理器热插拔的实现方法实施例一的流程图。本实施例适用于 具有 Primary 操作系统实例与至少一个 Secondary 操作系统实例的多处理器操作系统, 应 用于 Secondary 操作系统需要对目标 CPU 进行 Hot plug 的情景。具体的, 本实施例包括如 下步骤 : 0074 101、 Primary 操作系统实例为 Secondary 操作系统。
40、实例配置热插入初始化代码, 热插入初始化代码包括在 Secondary 操作系统中插入目标中央处理器 CPU 时, 目标 CPU 进 行热插入所需的功能性代码。 0075 多处理器操作系统中, Primary 操作系统实例也可称之为重量级操作系统 (Heavy OS) , 是具有资源分配、 回收、 虚拟化及协调等功能的通用操作系统, 也是在硬件上第一个启 动的操作系统实例, 负责全局资源的管理, 例如, 控制多处理器操作系统中的 CPU 资源、 内 存资源、 物理设备或虚拟设备等资源。Secondary 操作系统实例也可称之为轻量级操作系 统 (Light OS) , 是基于 Heavy OS。
41、 所管理的资源而创建定制的操作系统, 只能管理自身的资 源, 从 Heavy OS 申请资源, 或将资源释放后返还给 Heavy OS。本步骤中, Primary 操作系统 为 Secondary 操作系统配置热插入初始话代码, 该热插入初始代码包括在 Secondary 操作 系统中热插入目标CPU, 即待插入CPU所需的功能性代码, 例如, 使目标CPU从实模式转换到 保护模式的模式转换代码、 使目标 CPU 从 Primary 操作系统空间转换到 Secondary 操作系 统空间的空间转换代码等。 0076 102、 Primary 操作系统实例向目标 CPU 发送处理器间中断 IPI。
42、, 以触发目标 CPU 进 行热插入初始化, 热插入初始化为目标 CPU 进行热插入时的初始化过程。 0077 在为目标 CPU 准备好热插入初始化代码后, Primary 操作系统向目标 CPU 发送处 理期间中断 (Inter-Processor Interrupt, IPI) , 触发所述目标CPU进行热插入初始化。 例 如, 根据准备好的热插入初始化代码, 从实模式转换到保护模式、 从 Primary 操作系统空间 说 明 书 CN 103699444 A 9 6/13 页 10 转换到 Secondary 操作系统空间等。 0078 103、 Primary 操作系统实例检测目标 C。
43、PU 是否完成热插入初始化。 0079 本步骤中, Primary 操作系统通过探测目标 CPU 是否成功的执行完热插入初始化 代码等, 从而检测目标 CPU 是否完成热插入初始化。 0080 104、 若Primary操作系统实例检测到目标CPU完成热插入初始化, 则向Secondary 操作系统实例发送中断, 以使 Secondary 操作系统实例热插入目标 CPU。 0081 本步骤中, 当 Primary 操作系统实现检测到目标 CPU 已成功的执行完热插入初始 化代码, 即完成热插入初始化, 则向 Secondary 操作系统实例发送中断, 如高级的可编程的 中断控制器 (Advan。
44、ced Programmable Interrupt Controller, APIC) , 从而使得Secondary 操作系统实例启动目标 CPU, 即热插入目标 CPU。 0082 本发明实施例提供的中央处理器热插拔的实现方法, Primary 操作系统实例为 Secondary 操作系统实例配置热插入初始化代码, 并向目标 CPU 发送 IPI, 使得目标 CPU 完 成热插入初始化。当检测出目标 CPU 完成热插入初始化后, 向 Secondary 操作系统实例 发送用于启动目标 CPU 的 APIC 中断, 使 Secondary 操作系统实例热插入目标 CPU, 从而为 Seco。
45、ndary操作系统实例内进行动态CPU资源调整提供底层技术支撑, 将Primary操作系统 实例中的空闲 CPU 热插入到 Secondary 操作系统, 实现在 Secondary 操作系统内实现 CPU 的 HotPlug。 0083 图 2 为本发明中央处理器热插拔的实现方法实施例二的流程图。本实施例适用于 具有 Primary 操作系统实例与至少一个 Secondary 操作系统实例的多处理器操作系统, 应 用于 Secondary 操作系统需要对目标 CPU 进行 Hot plug 的情景。在上述实施例一的基础 上, 本实施例中, 多处理器操作系统具体为 Rainforest 系统。。
46、具体的, 本实施例包括如下步 骤 : 0084 201、 Primary 操作系统实例判断 Secondary 操作系统实例中的 CPU 数量是否小于 预设的阀值。 0085 Primary 操作系统实例维护一个数据结构, 该数据结构中记录有可分配给 Secondary 操作系统实例的最大 CPU 数量和已分配数量。对于一个具体的 Secondary 操 作系统实例, 如启动大规模应用的、 数据计算量大的负荷较重的 Secondary 操作系统实例, Primary 操作系统实例判断已分配给该 Secondary 操作系统实例的 CPU 个数 M, 是否小于该 Secondary 操作系统实例。
47、初始化时支持的最大 CPU 个数 N, 即预设的阀值 N, 若 M N, 则继 续后续步骤 ; 否则, 禁止后续步骤。 0086 202、 Primary 操作系统为 Secondary 操作系统选择目标 CPU。 0087 本步骤中, Primary 操作系统从其管理的 CPU 资源中选择一个空闲的 CPU 作为目 标 CPU, 即待插入 Secondary 操作系统实例的 CPU。 0088 可选的, Primary 操作系统实例可根据 CPU 分配状态位图, 为 Secondary 操作系统 实例选择目标 CPU, 其中, CPU 分配状态位图例如可以为用于描述当前多处理器系统 CPU 。
48、的 资源和 APIC 资源的描述符和数据结构的 MP Table, Primary 操作系统实例与 Secondary 操 作系统实例各自具有 MP Table。 0089 具体如步骤 2021、 2022。 0090 2021、 Primary 操作系统维护 CPU 分配状态位图。 说 明 书 CN 103699444 A 10 7/13 页 11 0091 CPU 分配状态位图记录多处理器操作系统中的各 CPU 的分配状态。如果某 CPU 归 Primary操作系统管理, 则置位, 即标识为1, ; 否则, 若某CPU已被分配给Secondary操作系 统, 则置零, 即标识为 0。 00。
49、92 2022、 Primary 操作系统根据 CPU 分配状态位图, 为 Secondary 操作系统选择目标 CPU。 0093 Primary操作系统实例扫描CPU分配状态位图, 从标识为0的CPU中随机的或是通 过计算等, 得到一个当前可分配给 Secondary 操作系统的 CPU, 作为目标 CPU。 0094 203、 Primary 操作系统实例为所述 Secondary 操作系统实例配置热插入初始化代 码。 0095 具体的, 本步骤包括如下子步骤 : 0096 2031、 Primary 操作系统实例在 Primary 操作系统实例的机器物理地址配置热插 入初始化代码。 0097 Primary 操作系统实例为 Secondary 操作系统实例准备跳板 (trampoline)代 码, 将该 t。