底层消息接口模拟方法及模拟装置.pdf

上传人:GAME****980 文档编号:4245486 上传时间:2018-09-11 格式:PDF 页数:16 大小:519.60KB
返回 下载 相关 举报
摘要
申请专利号:

CN201010508866.5

申请日:

2010.10.12

公开号:

CN102446113A

公开日:

2012.05.09

当前法律状态:

授权

有效性:

有权

法律详情:

授权|||实质审查的生效IPC(主分类):G06F 9/455申请日:20101012|||公开

IPC分类号:

G06F9/455

主分类号:

G06F9/455

申请人:

无锡江南计算技术研究所

发明人:

谷洪峰; 杨金才; 王丹云; 潘治; 李岱峰

地址:

214083 江苏省无锡市滨湖区军东新村030号

优先权:

专利代理机构:

北京集佳知识产权代理有限公司 11227

代理人:

骆苏华

PDF下载: PDF下载
内容摘要

一种底层消息接口模拟方法,包括:模拟执行目标机的操作系统;监测所述目标机的操作系统代码中的进程切换,并于监测到所述进程切换后触发注释机制,生成底层消息子过程索引表;对目标机指令流中的每一条指令进行识别处理,并于识别出底层消息子过程调用时执行该消息接口的模拟处理,获取消息参数虚地址;将所述消息参数虚地址转换为消息参数物理地址;调用所述底层消息子过程索引表执行消息功能模拟,根据所述消息参数物理地址实现消息的传递。基于上述方法,还提供了一种底层消息接口模拟装置。本发明能够基于全结构并行计算机状态支持多节点消息功能的模拟,简化了模拟方式,提高并行应用程序的模拟效率。

权利要求书

1: 一种底层消息接口模拟方法, 其特征在于, 包括 : 模拟执行目标机的操作系统 ; 监测所述目标机的操作系统代码中的进程切换, 并于监测到所述进程切换后触发注释 机制, 生成底层消息子过程索引表 ; 对目标机指令流中的每一条指令进行识别处理, 并于识别出底层消息子过程调用指令 时执行该消息接口的模拟处理, 获取消息参数虚地址 ; 将所述消息参数虚地址转换为消息参数物理地址 ; 调用所述底层消息子过程索引表执行消息功能模拟, 根据所述消息参数物理地址实现 消息的传递。
2: 根据权利要求 1 所述的底层消息接口模拟方法, 其特征在于, 所述注释机制包括 : 从 所述目标机的操作系统的核心内存中读取将要切换进程的进程号和进程名称, 并于识别出 将要切换的进程为应用进程后从其代码中读取符号表信息, 从中抽取出底层消息子过程名 称和地址, 生成底层消息子过程索引表。
3: 根据权利要求 1 或 2 所述的底层消息接口模拟方法, 其特征在于, 所述底层消息子过 程索引表包括底层消息子过程的名称、 地址以及消息功能模拟调用入口。
4: 根据权利要求 3 所述的底层消息接口模拟方法, 其特征在于, 所述调用所述底层消 息子过程索引表执行消息功能模拟包括调用所述底层消息子过程索引表中的所述消息功 能模拟调用入口, 启动消息功能模拟。
5: 根据权利要求 3 所述的底层消息接口模拟方法, 其特征在于, 所述对目标机指令流 中的每一条指令进行识别处理, 并于识别出底层消息子过程调用指令时执行该消息接口的 模拟处理, 获取消息参数虚地址包括 : 对目标机指令流中的每一条指令进行识别处理, 并于 识别为所述指令为转移跳转指令时取出其转移目标地址, 将所述转移目标地址与所述底层 消息子过程索引表中的底层消息子过程的地址进行匹配, 若匹配成功则识别出所述指令为 底层消息子过程调用指令, 执行该消息接口的模拟处理, 获取消息参数虚地址。
6: 根据权利要求 2 所述的底层消息接口模拟方法, 其特征在于, 所述识别出将要切换 的进程为应用进程包括 : 调用进程名称切换处理函数, 由其对将要切换的进程的进程名称 进行识别, 若将要切换的进程不属于系统进程, 则将要切换的进程为应用进程。
7: 根据权利要求 1 所述的底层消息接口模拟方法, 其特征在于, 所述将所述消息参数 虚地址转换为消息参数物理地址是通过访问所述目标机的操作系统的多级页表完成的。
8: 根据权利要求 1 所述的底层消息接口模拟方法, 其特征在于, 所述消息参数虚地址 包括消息参数中源方和目的方的虚地址。
9: 根据权利要求 1 所述的底层消息接口模拟方法, 其特征在于, 所述底层消息接口模 拟方法基于全结构并行计算机状态。
10: 一种底层消息接口模拟装置, 其特征在于, 包括 : 指令流模拟控制模块、 应用代码 底层消息识别模块、 消息接口模拟处理模块、 消息参数物理地址代换模块, 所述指令流模拟控制模块用于控制模拟执行目标机代码中的每一条指令, 包括调用所 述应用代码底层消息识别模块并获取其反馈结果 ; 所述应用代码底层消息识别模块用于接受所述指令流模拟控制模块的调用, 监测所述 目标机的操作系统代码中的进程切换, 并于监测到所述进程切换后触发注释机制, 生成底 2 层消息子过程索引表 ; 还用于接受所述指令流模拟控制模块的调用, 对目标机指令流中的 每一条指令进行识别处理, 并于识别出底层消息子过程调用指令时调用所述消息接口模拟 处理模块使其执行该消息接口的模拟处理 ; 所述消息接口模拟处理模块用于接受所述应用代码底层消息识别模块的调用, 获取消 息参数虚地址, 调用所述消息参数物理地址代换模块, 同时将所述消息参数虚地址传送给 所述消息参数物理地址代换模块进行消息参数虚地址到消息参数物理地址的转换 ; 还用于 调用所述底层消息子过程索引表执行消息功能模拟, 根据所述消息参数物理地址代换模块 返回的所述消息参数物理地址实现消息的传递。 所述消息参数物理地址代换模块用于接受所述消息接口模拟处理模块的调用, 将所述 消息参数虚地址转换为消息参数物理地址, 并将所述消息参数物理地址返回给所述消息接 口模拟处理模块。
11: 根据权利要求 10 所述的底层消息接口模拟装置, 其特征在于, 所述应用代码底层 消息识别模块包括应用代码载入识别单元和底层消息子过程调用识别单元, 所述应用代码载入识别单元用于监测目标机的操作系统代码中的进程切换, 并于监测 到所述进程切换后触发注释机制, 生成底层消息子过程索引表 ; 所述底层消息子过程调用识别单元用于对目标机指令流中的每一条指令进行识别处 理, 并于识别出底层消息子过程调用时调用所述消息接口模拟处理模块使其执行该消息接 口的模拟处理。
12: 根据权利要求 11 所述的底层消息接口模拟装置, 其特征在于, 所述注释机制包括 : 所述应用代码载入识别单元从所述目标机的操作系统的核心内存中读取将要切换进程的 进程号和进程名称, 并于识别出将要切换的进程为应用进程后从其代码中读取符号表信 息, 从中抽取出底层消息子过程名称和地址, 生成底层消息子过程索引表。
13: 根据权利要求 10 至 12 中任一项所述的底层消息接口模拟装置, 其特征在于, 所述 底层消息子过程索引表包括底层消息子过程的名称、 地址以及消息功能模拟调用入口。
14: 根据权利要求 13 所述的底层消息接口模拟装置, 其特征在于, 所述消息接口模拟 处理模块调用所述底层消息子过程索引表执行消息功能模拟包括调用所述底层消息子过 程索引表中的所述消息功能模拟调用入口, 启动消息功能模拟。
15: 根据权利要求 11 所述的底层消息接口模拟装置, 其特征在于, 所述底层消息子过 程调用识别单元对目标机指令流中的每一条指令进行识别处理, 并于识别出底层消息子过 程调用指令时调用所述消息接口模拟处理模块使其执行该消息接口的模拟处理, 包括 : 对 目标机指令流中的每一条指令进行识别处理, 并于识别出所述指令为转移跳转指令时取出 其转移目标地址, 将所述转移目标地址与所述底层消息子过程索引表中的底层消息子过程 的地址进行匹配, 若匹配成功则识别出所述指令为底层消息子过程调用指令, 调用所述消 息接口模拟处理模块使其执行该消息接口的模拟处理。 其特征在于, 所述底层消息子过
16: 根据权利要求 11 所述的底层消息接口模拟装置, 程调用识别单元识别出将要切换的进程为应用进程包括 : 调用进程名称切换处理函数, 由 其对将要切换的进程的进程名称进行识别, 若将要切换的进程不属于系统进程, 则将要切 换的进程为应用进程。
17: 根据权利要求 10 所述的底层消息接口模拟装置, 其特征在于, 所述消息参数物理 3 地址代换模块将所述消息参数虚地址转换为消息参数物理地址是通过访问所述目标机的 操作系统的多级页表完成的。
18: 根据权利要求 10 所述的底层消息接口模拟装置, 其特征在于, 所述消息参数虚地 址包括消息参数中源方和目的方的虚地址。
19: 根据权利要求 10 所述的底层消息接口模拟装置, 其特征在于, 所述底层消息接口 模拟装置基于全结构并行计算机状态。
20: 一种模拟器, 其特征在于, 包括权利要求 10 至 19 中任一项所述的底层消息接口模 拟装置。

说明书


底层消息接口模拟方法及模拟装置

    技术领域 本发明涉及计算机模拟与仿真技术领域, 特别涉及一种底层消息接口模拟方法及 模拟装置。
     背景技术 计算机系统结构建模是以模拟的方法实现计算机系统的结构。 通过对计算机系统 结构建模, 研究者能够用可配置的结构形式来考察目标机软件在被模拟的系统结构上执行 时的行为与特征, 使得在真实计算机系统平台能够使用以前, 尽早发现该计算机结构的设 计问题, 实施该平台的软件开发与调试。 其中, 全结构状态模拟和消息模拟是计算机结构建 模的两个重要方面。
     全结构包括用户态结构和系统态结构。系统态结构包括计算机的特权结构、 主存 管理单元 (MMU, Memory Management Unit)、 异常与中断处理和外部设备。全结构状态模拟 支持操作系统 (OS, Operating System) 的引导, 能够模拟考察 OS 的结构行为, 支持 OS 的模 拟调试, 但当模拟运行用户程序时, 用户虚地址空间是由被模拟的运行时 OS 代码动态代换 为物理地址空间的, 不能够被模拟软件直接访问 ; 消息模拟实现用户程序节点间消息通信 功能的模拟, 能够模拟多节点并行计算机结构的行为, 支持并行软件的模拟调试。 传统的模 拟技术包括节点级模拟、 用户态模拟和全指令模拟等技术。节点级模拟不模型化多节点并 行结构, 不支持含有消息通信的并行程序模拟 ; 而用户态模拟不模型化系统态结构的行为, 不支持 OS 结构的模拟。全指令模拟是指模拟应用程序代码中能够见到的所有指令, 特别是 既模拟底层消息接口调用指令, 也模拟底层消息子过程实现的所有指令, 消息空间的访问 由被模拟的 OS 和消息子过程指令来完成。全指令模拟方法需要模拟与消息内部实现有关 的所有结构, 模拟软件复杂, 模拟速度慢, 这降低了底层消息接口以上各层软件模拟开发与 调试的有效性, 难以区分上层软件和底层消息软件的模拟行为。
     由此可见, 这些方法都有模拟功能上的不足或者存在模拟软件复杂、 模拟速度慢 的缺陷, 不能解决全结构并行计算机消息的快速模拟问题。
     相关技术还可参考申请号为 98808090.7 的中国专利申请, 该专利申请公开了一 种指令仿真系统以及一种用宿主处理器来模拟目标处理器的方法。
     发明内容
     本发明要解决的技术问题是提供一种全结构并行计算机状态下底层消息接口的 模拟方法及模拟装置, 通过全结构虚拟目标机模式下消息接口的识别和消息参数虚地址的 直接代换, 直接模拟消息接口的功能, 简化了模拟方式, 并提高了消息模拟的效率。
     为解决上述问题, 本发明提供了一种底层消息接口模拟方法, 包括 :
     模拟执行目标机的操作系统 ;
     监测所述目标机的操作系统代码中的进程切换, 并于监测到所述进程切换后触发 注释机制, 生成底层消息子过程索引表 ;对目标机指令流中的每一条指令进行识别处理, 并于识别出底层消息子过程调用 指令时执行该消息接口的模拟处理, 获取消息参数虚地址 ;
     将所述消息参数虚地址转换为消息参数物理地址 ;
     调用所述底层消息子过程索引表执行消息功能模拟, 根据所述消息参数物理地址 实现消息的传递。
     可选的, 所述注释机制包括 : 从所述目标机的操作系统的核心内存中读取将要切 换进程的进程号和进程名称, 并于识别出将要切换的进程为应用进程后从其代码中读取符 号表信息, 从中抽取出底层消息子过程名称和地址, 生成底层消息子过程索引表。
     可选的, 所述底层消息子过程索引表包括底层消息子过程的名称、 地址以及消息 功能模拟调用入口。
     可选的, 所述调用所述底层消息子过程索引表执行消息功能模拟包括调用所述底 层消息子过程索引表中的所述消息功能模拟调用入口, 启动消息功能模拟。
     可选的, 所述对目标机指令流中的每一条指令进行识别处理, 并于识别出底层消 息子过程调用指令时执行该消息接口的模拟处理, 获取消息参数虚地址包括 : 对目标机指 令流中的每一条指令进行识别处理, 并于识别为所述指令为转移跳转指令时取出其转移目 标地址, 将所述转移目标地址与所述底层消息子过程索引表中的底层消息子过程的地址进 行匹配, 若匹配成功则识别出所述指令为底层消息子过程调用指令, 执行该消息接口的模 拟处理, 获取消息参数虚地址。 可选的, 所述识别出将要切换的进程为应用进程包括 : 调用进程名称切换处理函 数, 由其对将要切换的进程的进程名称进行识别, 若将要切换的进程不属于系统进程, 则将 要切换的进程为应用进程。
     可选的, 所述将所述消息参数虚地址转换为消息参数物理地址是通过访问所述目 标机的操作系统的多级页表完成的。
     可选的, 所述消息参数虚地址包括消息参数中源方和目的方的虚地址。
     可选的, 所述底层消息接口模拟方法基于全结构并行计算机状态。
     为解决上述问题, 本发明还提供了一种底层消息接口模拟装置, 包括 :
     指令流模拟控制模块、 应用代码底层消息识别模块、 消息接口模拟处理模块、 消息 参数物理地址代换模块,
     所述指令流模拟控制模块用于控制模拟执行目标机代码中的每一条指令, 包括调 用所述应用代码底层消息识别模块并获取其反馈结果 ;
     所述应用代码底层消息识别模块用于接受所述指令流模拟控制模块的调用, 监测 所述目标机的操作系统代码中的进程切换, 并于监测到所述进程切换后触发注释机制, 生 成底层消息子过程索引表 ; 还用于接受所述指令流模拟控制模块的调用, 对目标机指令流 中的每一条指令进行识别处理, 并于识别出底层消息子过程调用指令时调用所述消息接口 模拟处理模块使其执行该消息接口的模拟处理 ;
     所述消息接口模拟处理模块用于接受所述应用代码底层消息识别模块的调用, 获 取消息参数虚地址, 调用所述消息参数物理地址代换模块, 同时将所述消息参数虚地址传 送给所述消息参数物理地址代换模块进行消息参数虚地址到消息参数物理地址的转换 ; 还 用于调用所述底层消息子过程索引表执行消息功能模拟, 根据所述消息参数物理地址代换
     模块返回的所述消息参数物理地址实现消息的传递。
     所述消息参数物理地址代换模块用于接受所述消息接口模拟处理模块的调用, 将 所述消息参数虚地址转换为消息参数物理地址, 并将所述消息参数物理地址返回给所述消 息接口模拟处理模块。
     可选的, 所述应用代码底层消息识别模块包括应用代码载入识别单元和底层消息 子过程调用识别单元,
     所述应用代码载入识别单元用于监测目标机的操作系统代码中的进程切换, 并于 监测到所述进程切换后触发注释机制, 生成底层消息子过程索引表 ;
     所述底层消息子过程调用识别单元用于对目标机指令流中的每一条指令进行识 别处理, 并于识别出底层消息子过程调用时调用所述消息接口模拟处理模块使其执行该消 息接口的模拟处理。
     可选的, 所述注释机制包括 : 所述应用代码载入识别单元从所述目标机的操作系 统的核心内存中读取将要切换进程的进程号和进程名称, 并于识别出将要切换的进程为应 用进程后从其代码中读取符号表信息, 从中抽取出底层消息子过程名称和地址, 生成底层 消息子过程索引表。 可选的, 所述底层消息子过程索引表包括底层消息子过程的名称、 地址以及消息 功能模拟调用入口。
     可选的, 所述消息接口模拟处理模块调用所述底层消息子过程索引表执行消息功 能模拟包括调用所述底层消息子过程索引表中的所述消息功能模拟调用入口, 启动消息功 能模拟。
     可选的, 所述底层消息子过程调用识别单元对目标机指令流中的每一条指令进行 识别处理, 并于识别出底层消息子过程调用指令时调用所述消息接口模拟处理模块使其执 行该消息接口的模拟处理, 包括 : 对目标机指令流中的每一条指令进行识别处理, 并于识别 出所述指令为转移跳转指令时取出其转移目标地址, 将所述转移目标地址与所述底层消息 子过程索引表中的底层消息子过程的地址进行匹配, 若匹配成功则识别出所述指令为底层 消息子过程调用指令, 调用所述消息接口模拟处理模块使其执行该消息接口的模拟处理。
     可选的, 所述底层消息子过程调用识别单元识别出将要切换的进程为应用进程包 括: 调用进程名称切换处理函数, 由其对将要切换的进程的进程名称进行识别, 若将要切换 的进程不属于系统进程, 则将要切换的进程为应用进程。
     可选的, 所述消息参数物理地址代换模块将所述消息参数虚地址转换为消息参数 物理地址是通过访问所述目标机的操作系统的多级页表完成的。
     可选的, 所述消息参数虚地址包括消息参数中源方和目的方的虚地址。
     可选的, 所述底层消息接口模拟装置基于全结构并行计算机状态。
     另外, 本发明还提供了一种模拟器, 包括上述发明内容任一项所述的底层消息接 口模拟装置。
     与现有技术相比, 本发明具有以下优点 :
     不需要进行全指令模拟, 跳过了消息接口实现中操作系统行为的模拟 ; 而是在指 令流模拟控制模块的控制下调用应用代码底层消息识别模块识别出底层消息子过程调用 指令, 由所述应用代码底层消息识别模块调用所述消息接口模拟处理模块使其执行该消息
     接口的模拟处理, 获取消息参数虚地址并由所述消息接口模拟处理模块调用消息参数物理 地址代换模块, 对消息接口参数中的消息参数虚地址通过直接访问目标机的操作系统多级 页表的方法代换成消息功能模拟直接访问的物理地址。因此, 上述技术方案避免了对消息 子过程实现指令的模拟, 不需要引入消息通信指令及相应硬件结构的模拟, 同时又基于全 结构并行计算机状态支持了多节点消息功能的模拟, 其模拟方式更为简单, 因而更容易实 施, 并且提高了并行应用程序的模拟效率。 附图说明
     图 1 是本发明提供的底层消息接口模拟方法流程示意图 ;
     图 2 是本发明提供的底层消息接口模拟装置的结构示意图 ;
     图 3 是本发明提供的底层消息接口模拟装置的实施方式示意图 ;
     图 4 是消息参数虚地址示意图 ;
     图 5 是用于消息参数物理地址代换的多级页表格式示意图。 具体实施方式 为使本发明的上述目的、 特征和优点能够更为明显易懂, 下面结合附图对本发明 的具体实施方式做详细的说明。
     在以下描述中阐述了具体细节以便于充分理解本发明。 但是本发明能够以多种不 同于在此描述的其它方式来实施, 本领域技术人员可以在不违背本发明内涵的情况下做类 似推广。因此本发明不受下面公开的具体实施方式的限制。
     图 1 是本发明提供的底层消息接口模拟方法流程示意图。为解决现有技术中模拟 功能上的不足或者存在模拟软件复杂、 模拟速度慢的缺陷, 不能解决全结构并行计算机消 息的快速模拟问题, 本发明提供的底层消息接口模拟方法如图 1 所示, 包括 :
     步骤 S101, 模拟执行目标机的操作系统 ;
     步骤 S102, 监测所述目标机的操作系统代码中的进程切换, 并于监测到所述进程 切换后触发注释机制, 生成底层消息子过程索引表 ;
     步骤 S103, 对目标机指令流中的每一条指令进行识别处理, 并于识别出底层消息 子过程调用指令时执行该消息接口的模拟处理, 获取消息参数虚地址 ;
     步骤 S104, 将所述消息参数虚地址转换为消息参数物理地址 ;
     步骤 S105, 调用所述底层消息子过程索引表执行消息功能模拟, 根据所述消息参 数物理地址实现消息的传递。
     对应于上述底层消息接口模拟方法, 可由本发明提供的的底层消息接口模拟装置 实现。图 2 是本发明提供的底层消息接口模拟装置的结构示意图, 如图 2 所示, 所述底层消 息接口模拟装置包括 : 指令流模拟控制模块 101、 应用代码底层消息识别模块 102、 消息接 口模拟处理模块 103、 消息参数物理地址代换模块 104。
     所述指令流模拟控制模块 101 用于控制模拟执行目标机代码中的每一条指令, 包 括调用所述应用代码底层消息识别模块 102 并获取其反馈结果。
     所述应用代码底层消息识别模块 102 用于接受所述指令流模拟控制模块 101 的调 用, 监测所述目标机的操作系统代码中的进程切换, 并于监测到所述进程切换后触发注释
     机制, 生成底层消息子过程索引表 ; 还用于接受所述指令流模拟控制模块 101 的调用, 对目 标机指令流中的每一条指令进行识别处理, 并于识别出底层消息子过程调用指令时调用所 述消息接口模拟处理模块 103 使其执行该消息接口的模拟处理。所述应用代码底层消息识 别模块 102 包括应用代码载入识别单元 102a 和底层消息子过程调用识别单元 102b, 所述应 用代码载入识别单元 102a 用于监测目标机的操作系统代码中进程切换, 并于监测到所述 进程切换后触发注释机制, 生成底层消息子过程索引表 ; 所述底层消息子过程调用识别单 元 102b 用于对目标机指令流中的每一条指令进行识别处理, 并于识别出底层消息子过程 调用时调用所述消息接口模拟处理模块 103 使其执行该消息接口的模拟处理。
     所述消息接口模拟处理模块 103 用于接受所述应用代码底层消息识别模块 102 的 调用, 获取消息参数虚地址, 调用所述消息参数物理地址代换模块 104, 同时将所述消息参 数虚地址传送给所述消息参数物理地址代换模块 104 进行消息参数虚地址到消息参数物 理地址的转换 ; 还用于调用所述底层消息子过程索引表执行消息功能模拟, 根据所述消息 参数物理地址代换模块 104 返回的所述消息参数物理地址实现消息的传递。
     所述消息参数物理地址代换模块 104 用于接受所述消息接口模拟处理模块 103 的 调用, 将所述消息参数虚地址转换为消息参数物理地址, 并将所述消息参数物理地址返回 给所述消息接口模拟处理模块 103。
     下面结合附图对所述底层消息接口模拟装置的实施方式进行详细说明。图 3 是本 发明提供的底层消息接口模拟装置的实施方式示意图。 参阅图 3, 与图 2 所示底层消息接口 模拟装置一致, 包括 : 指令流模拟控制模块 101、 应用代码底层消息识别模块 102、 消息接口 模拟处理模块 103、 消息参数物理地址代换模块 104, 应用代码底层消息识别模块 102 包括 应用代码载入识别单元 102a 和底层消息子过程调用识别单元 102b。所述底层消息接口模 拟装置可基于全结构并行计算机状态, 因此支持了多节点消息功能模拟。
     在启动包含所述底层消息接口模拟装置的模拟器之前, 还需要进行些启动前准 备, 例如将被模拟应用程序目标代码加载到虚拟盘中, 之后启动模拟器, 模拟引导目标机的 操作系统, 进入操作系统交互界面, 等待用户命令。所述目标机为被模拟的计算机, 目标机 的操作系统即为被模拟计算机的操作系统, 可以为 Linux、 Unix 等操作系统。
     指令流模拟控制模块 101 在模拟过程中是总的控制核心, 用于控制模拟执行目标 机代码中的每一条指令, 包括调用所述应用代码底层消息识别模块 102 并获取其反馈结 果。所述目标机代码包括操作系统代码和应用程序代码, 而模拟则是由目标机代码的执行 所驱动的, 指令流模拟控制即控制模拟执行目标机代码中的每一条指令, 是按目标机代码 中的指令流控制整个模拟过程的驱动器。指令流模拟控制模块 101 调用所述应用代码底 层消息识别模块 102 中的应用代码载入识别单元 102a 对目标机的操作系统加载目标机应 用程序代码的过程进行识别, 具体地, 由所述应用代码载入识别单元 102a 监测目标机的操 作系统代码中进程切换, 参阅图 3, 当目标机的操作系统代码 109 加载目标机应用代码 110 时, 会执行到特定的函数, 例如执行到 flush_thread 函数, 则表明要进行进程的切换, 即所 述应用代码载入识别单元 102a 监测到进程的切换, 此时便触发注释机制。所述注释机制包 括: 所述应用代码载入识别单元 102a 从所述目标机的操作系统的核心内存中读取将要切 换进程的进程号和进程名称, 并于识别出将要切换的进程为应用进程后从其代码中读取符 号表信息, 从中抽取出底层消息子过程名称和地址, 生成底层消息子过程索引表。 注释是一个在模拟执行过程中不改变目标机指令流模拟处理流程而运行任意处理脚本的机制, 它包 括事件 ( 触发条件 ) 和动作两个部分。注释可以被目标机硬件事件或用户自定义事件所触 发, 这些事件, 例如新进程创建、 进入空转或执行到一个应用程序中特定的过程等这样一些 事件。例如 :
     annotation set pc kernel::fush_thread : START{
     < 该事件发生后的一系列处理动作 >
     }
     是一个注释, 表示在进入 “flush_thread” 过程的入口处, 触发识别应用程序加载、 读取符号表信息、 建立底层消息子过程索引表等信息的动作。参阅图 3, 对所述注释机制的 过程具体说明 : 当触发注释机制后, 所述应用代码载入识别单元 102a 从目标机的操作系统 的核心内存中读取将要切换的进程的进程号和进程名称, 对进程名称进行识别, 识别将要 切换的进程是否为应用进程。所述底层消息子过程调用识别单元 102a 识别出将要切换的 进程为应用进程是通过调用进程名称切换处理函数, 例如 proc_changename 函数 ( 该函数 可以 C 语言实现 ), 由其对将要切换的进程的进程名称进行识别, 若将要切换的进程不属于 系统进程, 例如 swapper、 linuxrc、 events、 aio、 pdflush、 migration、 ksoftirqd、 kswapd、 bdoor、 kblockd 等系统进程, 则将要切换的进程为应用进程。当然, 在实际实施时, 还会判 断将要切换的进程的进程名称是否为当前进程名称, 如果与当前进程名称相同则说明这并 非是一次进程间的切换。 在识别出将要切换的进程为应用进程后从其代码中读取符号表信 息 105, 从中抽取出底层消息子过程名称和地址, 生成底层消息子过程索引表 106。在模拟 环境中, 会静态建立包含所有底层消息子过程名称和相应消息功能模拟调用入口的底层消 息子过程信息表, 模拟过程中待从符号表信息 105 中抽取出子过程名称和地址后, 将该子 过程名称与所述底层消息子过程信息表中的所有底层消息子过程名称逐一进行比较, 如果 名称相同, 则将该子过程名称和地址连同底层消息子过程信息表中的相应消息功能模拟调 用入口作为一个底层消息子过程条目填入所述底层消息子过程索引表 106。所述底层消息 子过程索引表 106 中包括底层消息子过程的名称 106a、 底层消息子过程的地址 106b 以及消 息功能模拟调用入口 106c。在生成所述底层消息子过程索引表 106 后, 所述底层消息子过 程调用识别单元 102a 会将反馈结果传送给所述指令流模拟控制模块 101, 由其控制继续目 标机指令流的模拟执行。
     所述指令流模拟控制模块 101 在对目标机指令流模拟控制过程中还调用底层消 息子过程调用识别单元 102b, 所述底层消息子过程调用识别单元 102b 接受所述指令流模 拟控制模块 101 的调用后, 对目标机指令流中的每一条指令进行识别处理, 并于识别出底 层消息子过程调用指令时调用所述消息接口模拟处理模块 103 使其执行该消息接口的模 拟处理。具体地, 所述底层消息子过程调用识别单元 102b 对目标机指令流中的每一条进行 识别处理, 并于识别出所述指令为转移跳转指令时取出其转移目标地址, 将所述转移目标 地址与所述底层消息子过程索引表 106 中的底层消息子过程的地址 106b 进行匹配, 若匹配 成功则表明该转移跳转指令为底层消息子过程调用指令, 即识别出所述指令为底层消息子 过程调用指令, 则调用所述消息接口模拟处理模块 103 使其执行该消息接口的模拟处理。
     所述消息接口模拟处理模块 103 接受所述底层消息子过程调用识别单元 102b 的 调用后, 从所述目标机的处理器 ( 即被模拟的 CPU) 的参数寄存器中获取消息参数虚地址,调用所述消息参数物理地址代换模块 104, 同时将所述消息参数虚地址传送给所述消息参 数物理地址代换模块 104 进行消息参数虚地址到消息参数物理地址的转换。所述消息参数 虚地址包括消息参数中源方和目的方的虚地址。具体地, 所述消息参数物理地址代换模块 104 将所述消息参数虚地址转换为消息参数物理地址是通过访问所述目标机的操作系统的 多级页表 107 完成的。实际实施中, 由于所述多级页表 107 的结构取决于目标机的操作系 统, 不同的操作系统则多级页表 107 的结构也可能不同, 下面举例对通过访问所述目标机 的操作系统的多级页表 107 完成所述消息参数虚地址转换为消息参数物理地址的过程进 行说明。图 4 是消息参数虚地址示意图, 图 4 所示的消息参数虚地址为 64 位, 其中包括消 息参数中源方和目的方的虚地址, 将该地址划分为五个部分, 分别为 5 位 (43 ~ 47) 的 L0、 10 位 (33 ~ 42) 的 L1、 10 位 (23 ~ 32) 的 L2、 10 位 (13 ~ 22) 的 L3 和 13 位 (0 ~ 12) 的 页内偏移 Offset。图 5 是用于消息参数物理地址代换的多级页表格式示意图, 参阅图 5, 消 息参数虚地址转换为消息参数物理地址的具体步骤是 :
     1) 取模拟器设置的起始物理地址, 以下步骤所述的物理地址均是相对于该起始物 理地址的相对地址 ;
     2) 将包含消息参数中源方、 目的方的虚地址的 64 位消息参数虚地址如图 4 所示划 分为五个部分, 得到 L0、 L1、 L2、 L3 和 Offset ; 3) 由目标机的处理器号 (CPU 号 ) 计算页表基址寄存器 (PTBR, Page-Table Base Register), 得到 1 级页表区索引单元 ; 例如 PTBR = (0xd008+CPU 号 *0x200), 其中, 0xd008 是目标机的操作系统的多级页表结构起点, 不同的目标机处理器 ( 不同的目标机 CPU 号 ) 的多级页表结构地址相差 0x200 个字节位置 ;
     4) 从 1 级页表区索引单元取出 64 位, 加上 L0, 得到 2 级页表区索引单元 ;
     5) 从 2 级页表区索引单元取出高 32 位左移 13 位, 加上 L1, 得到 3 级页表区索引 单元 ;
     6) 从 3 级页表区索引单元取出高 32 位左移 13 位, 加上 L2, 得到 4 级页表区索引 单元 ;
     7) 从 4 级页表区索引单元取出高 32 位左移 13 位, 加上 L3, 得到最后物理地址代 换单元 ;
     8) 从最后物理地址代换单元取出高 32 位左移 13 位, 加上页内偏移 Offset, 得到 最终代换出的物理地址。
     继续参阅图 3, 所述消息参数物理地址代换模块 104 通过访问目标机的操作系统 的多级页表 107 对所述消息参数虚地址转换获得消息参数物理地址 108 后, 并将其返回给 所述消息接口模拟处理模块 103, 所述消息接口模拟处理模块 103 调用所述底层消息子过 程索引表 106 中的所述消息功能模拟调用入口 106c, 启动消息功能模拟, 根据所述消息参 数物理地址代换模块 104 返回的所述消息参数物理地址 108 实现消息的传递。至此, 底层 消息接口模拟的整个流程结束。
     此外, 本领域技术人员可以理解实现上述实施例的全部或部分是可以通过程序来 指令相关的硬件来完成, 所述的程序可以存储于计算机可读存储介质中, 所述存储介质可 以是 ROM、 RAM、 磁碟、 光盘等。
     综上, 本发明提供的底层消息接口模拟方法及模拟装置至少具有如下有益效果 :
     不需要进行全指令模拟, 跳过了消息接口实现中操作系统行为的模拟 ; 而是在指 令流模拟控制模块的控制下调用应用代码底层消息识别模块识别出底层消息子过程调用 指令, 由所述应用代码底层消息识别模块调用所述消息接口模拟处理模块使其执行该消息 接口的模拟处理, 获取消息参数虚地址并由所述消息接口模拟处理模块调用消息参数物理 地址代换模块, 对消息接口参数中的消息参数虚地址通过直接访问目标机的操作系统多级 页表的方法代换成消息功能模拟直接访问的物理地址。因此, 上述技术方案避免了对消息 子过程实现指令的模拟, 不需要引入消息通信指令及相应硬件结构的模拟, 同时又基于全 结构并行计算机状态支持了多节点消息功能的模拟, 其模拟方式更为简单, 因而更容易实 施, 并且提高了并行应用程序的模拟效率。
     本发明虽然已以较佳实施例公开如上, 但其并不是用来限定本发明, 任何本领域 技术人员在不脱离本发明的精神和范围内, 都可以利用上述揭示的方法和技术内容对本发 明技术方案做出可能的变动和修改, 因此, 凡是未脱离本发明技术方案的内容, 依据本发明 的技术实质对以上实施例所作的任何简单修改、 等同变化及修饰, 均属于本发明技术方案 的保护范围。

底层消息接口模拟方法及模拟装置.pdf_第1页
第1页 / 共16页
底层消息接口模拟方法及模拟装置.pdf_第2页
第2页 / 共16页
底层消息接口模拟方法及模拟装置.pdf_第3页
第3页 / 共16页
点击查看更多>>
资源描述

《底层消息接口模拟方法及模拟装置.pdf》由会员分享,可在线阅读,更多相关《底层消息接口模拟方法及模拟装置.pdf(16页珍藏版)》请在专利查询网上搜索。

1、(10)申请公布号 CN 102446113 A (43)申请公布日 2012.05.09 C N 1 0 2 4 4 6 1 1 3 A *CN102446113A* (21)申请号 201010508866.5 (22)申请日 2010.10.12 G06F 9/455(2006.01) (71)申请人无锡江南计算技术研究所 地址 214083 江苏省无锡市滨湖区军东新村 030号 (72)发明人谷洪峰 杨金才 王丹云 潘治 李岱峰 (74)专利代理机构北京集佳知识产权代理有限 公司 11227 代理人骆苏华 (54) 发明名称 底层消息接口模拟方法及模拟装置 (57) 摘要 一种底层消息。

2、接口模拟方法,包括:模拟执行 目标机的操作系统;监测所述目标机的操作系统 代码中的进程切换,并于监测到所述进程切换后 触发注释机制,生成底层消息子过程索引表;对 目标机指令流中的每一条指令进行识别处理,并 于识别出底层消息子过程调用时执行该消息接口 的模拟处理,获取消息参数虚地址;将所述消息 参数虚地址转换为消息参数物理地址;调用所述 底层消息子过程索引表执行消息功能模拟,根据 所述消息参数物理地址实现消息的传递。基于上 述方法,还提供了一种底层消息接口模拟装置。本 发明能够基于全结构并行计算机状态支持多节点 消息功能的模拟,简化了模拟方式,提高并行应用 程序的模拟效率。 (51)Int.Cl。

3、. (19)中华人民共和国国家知识产权局 (12)发明专利申请 权利要求书 3 页 说明书 8 页 附图 4 页 CN 102446134 A 1/3页 2 1.一种底层消息接口模拟方法,其特征在于,包括: 模拟执行目标机的操作系统; 监测所述目标机的操作系统代码中的进程切换,并于监测到所述进程切换后触发注释 机制,生成底层消息子过程索引表; 对目标机指令流中的每一条指令进行识别处理,并于识别出底层消息子过程调用指令 时执行该消息接口的模拟处理,获取消息参数虚地址; 将所述消息参数虚地址转换为消息参数物理地址; 调用所述底层消息子过程索引表执行消息功能模拟,根据所述消息参数物理地址实现 消息的。

4、传递。 2.根据权利要求1所述的底层消息接口模拟方法,其特征在于,所述注释机制包括:从 所述目标机的操作系统的核心内存中读取将要切换进程的进程号和进程名称,并于识别出 将要切换的进程为应用进程后从其代码中读取符号表信息,从中抽取出底层消息子过程名 称和地址,生成底层消息子过程索引表。 3.根据权利要求1或2所述的底层消息接口模拟方法,其特征在于,所述底层消息子过 程索引表包括底层消息子过程的名称、地址以及消息功能模拟调用入口。 4.根据权利要求3所述的底层消息接口模拟方法,其特征在于,所述调用所述底层消 息子过程索引表执行消息功能模拟包括调用所述底层消息子过程索引表中的所述消息功 能模拟调用入。

5、口,启动消息功能模拟。 5.根据权利要求3所述的底层消息接口模拟方法,其特征在于,所述对目标机指令流 中的每一条指令进行识别处理,并于识别出底层消息子过程调用指令时执行该消息接口的 模拟处理,获取消息参数虚地址包括:对目标机指令流中的每一条指令进行识别处理,并于 识别为所述指令为转移跳转指令时取出其转移目标地址,将所述转移目标地址与所述底层 消息子过程索引表中的底层消息子过程的地址进行匹配,若匹配成功则识别出所述指令为 底层消息子过程调用指令,执行该消息接口的模拟处理,获取消息参数虚地址。 6.根据权利要求2所述的底层消息接口模拟方法,其特征在于,所述识别出将要切换 的进程为应用进程包括:调用。

6、进程名称切换处理函数,由其对将要切换的进程的进程名称 进行识别,若将要切换的进程不属于系统进程,则将要切换的进程为应用进程。 7.根据权利要求1所述的底层消息接口模拟方法,其特征在于,所述将所述消息参数 虚地址转换为消息参数物理地址是通过访问所述目标机的操作系统的多级页表完成的。 8.根据权利要求1所述的底层消息接口模拟方法,其特征在于,所述消息参数虚地址 包括消息参数中源方和目的方的虚地址。 9.根据权利要求1所述的底层消息接口模拟方法,其特征在于,所述底层消息接口模 拟方法基于全结构并行计算机状态。 10.一种底层消息接口模拟装置,其特征在于,包括:指令流模拟控制模块、应用代码 底层消息识。

7、别模块、消息接口模拟处理模块、消息参数物理地址代换模块, 所述指令流模拟控制模块用于控制模拟执行目标机代码中的每一条指令,包括调用所 述应用代码底层消息识别模块并获取其反馈结果; 所述应用代码底层消息识别模块用于接受所述指令流模拟控制模块的调用,监测所述 目标机的操作系统代码中的进程切换,并于监测到所述进程切换后触发注释机制,生成底 权 利 要 求 书CN 102446113 A CN 102446134 A 2/3页 3 层消息子过程索引表;还用于接受所述指令流模拟控制模块的调用,对目标机指令流中的 每一条指令进行识别处理,并于识别出底层消息子过程调用指令时调用所述消息接口模拟 处理模块使其。

8、执行该消息接口的模拟处理; 所述消息接口模拟处理模块用于接受所述应用代码底层消息识别模块的调用,获取消 息参数虚地址,调用所述消息参数物理地址代换模块,同时将所述消息参数虚地址传送给 所述消息参数物理地址代换模块进行消息参数虚地址到消息参数物理地址的转换;还用于 调用所述底层消息子过程索引表执行消息功能模拟,根据所述消息参数物理地址代换模块 返回的所述消息参数物理地址实现消息的传递。 所述消息参数物理地址代换模块用于接受所述消息接口模拟处理模块的调用,将所述 消息参数虚地址转换为消息参数物理地址,并将所述消息参数物理地址返回给所述消息接 口模拟处理模块。 11.根据权利要求10所述的底层消息接。

9、口模拟装置,其特征在于,所述应用代码底层 消息识别模块包括应用代码载入识别单元和底层消息子过程调用识别单元, 所述应用代码载入识别单元用于监测目标机的操作系统代码中的进程切换,并于监测 到所述进程切换后触发注释机制,生成底层消息子过程索引表; 所述底层消息子过程调用识别单元用于对目标机指令流中的每一条指令进行识别处 理,并于识别出底层消息子过程调用时调用所述消息接口模拟处理模块使其执行该消息接 口的模拟处理。 12.根据权利要求11所述的底层消息接口模拟装置,其特征在于,所述注释机制包括: 所述应用代码载入识别单元从所述目标机的操作系统的核心内存中读取将要切换进程的 进程号和进程名称,并于识别。

10、出将要切换的进程为应用进程后从其代码中读取符号表信 息,从中抽取出底层消息子过程名称和地址,生成底层消息子过程索引表。 13.根据权利要求10至12中任一项所述的底层消息接口模拟装置,其特征在于,所述 底层消息子过程索引表包括底层消息子过程的名称、地址以及消息功能模拟调用入口。 14.根据权利要求13所述的底层消息接口模拟装置,其特征在于,所述消息接口模拟 处理模块调用所述底层消息子过程索引表执行消息功能模拟包括调用所述底层消息子过 程索引表中的所述消息功能模拟调用入口,启动消息功能模拟。 15.根据权利要求11所述的底层消息接口模拟装置,其特征在于,所述底层消息子过 程调用识别单元对目标机指。

11、令流中的每一条指令进行识别处理,并于识别出底层消息子过 程调用指令时调用所述消息接口模拟处理模块使其执行该消息接口的模拟处理,包括:对 目标机指令流中的每一条指令进行识别处理,并于识别出所述指令为转移跳转指令时取出 其转移目标地址,将所述转移目标地址与所述底层消息子过程索引表中的底层消息子过程 的地址进行匹配,若匹配成功则识别出所述指令为底层消息子过程调用指令,调用所述消 息接口模拟处理模块使其执行该消息接口的模拟处理。 16.根据权利要求11所述的底层消息接口模拟装置,其特征在于,所述底层消息子过 程调用识别单元识别出将要切换的进程为应用进程包括:调用进程名称切换处理函数,由 其对将要切换的。

12、进程的进程名称进行识别,若将要切换的进程不属于系统进程,则将要切 换的进程为应用进程。 17.根据权利要求10所述的底层消息接口模拟装置,其特征在于,所述消息参数物理 权 利 要 求 书CN 102446113 A CN 102446134 A 3/3页 4 地址代换模块将所述消息参数虚地址转换为消息参数物理地址是通过访问所述目标机的 操作系统的多级页表完成的。 18.根据权利要求10所述的底层消息接口模拟装置,其特征在于,所述消息参数虚地 址包括消息参数中源方和目的方的虚地址。 19.根据权利要求10所述的底层消息接口模拟装置,其特征在于,所述底层消息接口 模拟装置基于全结构并行计算机状态。。

13、 20.一种模拟器,其特征在于,包括权利要求10至19中任一项所述的底层消息接口模 拟装置。 权 利 要 求 书CN 102446113 A CN 102446134 A 1/8页 5 底层消息接口模拟方法及模拟装置 技术领域 0001 本发明涉及计算机模拟与仿真技术领域,特别涉及一种底层消息接口模拟方法及 模拟装置。 背景技术 0002 计算机系统结构建模是以模拟的方法实现计算机系统的结构。通过对计算机系统 结构建模,研究者能够用可配置的结构形式来考察目标机软件在被模拟的系统结构上执行 时的行为与特征,使得在真实计算机系统平台能够使用以前,尽早发现该计算机结构的设 计问题,实施该平台的软件开。

14、发与调试。其中,全结构状态模拟和消息模拟是计算机结构建 模的两个重要方面。 0003 全结构包括用户态结构和系统态结构。系统态结构包括计算机的特权结构、主存 管理单元(MMU,Memory Management Unit)、异常与中断处理和外部设备。全结构状态模拟 支持操作系统(OS,Operating System)的引导,能够模拟考察OS的结构行为,支持OS的模 拟调试,但当模拟运行用户程序时,用户虚地址空间是由被模拟的运行时OS代码动态代换 为物理地址空间的,不能够被模拟软件直接访问;消息模拟实现用户程序节点间消息通信 功能的模拟,能够模拟多节点并行计算机结构的行为,支持并行软件的模拟调。

15、试。传统的模 拟技术包括节点级模拟、用户态模拟和全指令模拟等技术。节点级模拟不模型化多节点并 行结构,不支持含有消息通信的并行程序模拟;而用户态模拟不模型化系统态结构的行为, 不支持OS结构的模拟。全指令模拟是指模拟应用程序代码中能够见到的所有指令,特别是 既模拟底层消息接口调用指令,也模拟底层消息子过程实现的所有指令,消息空间的访问 由被模拟的OS和消息子过程指令来完成。全指令模拟方法需要模拟与消息内部实现有关 的所有结构,模拟软件复杂,模拟速度慢,这降低了底层消息接口以上各层软件模拟开发与 调试的有效性,难以区分上层软件和底层消息软件的模拟行为。 0004 由此可见,这些方法都有模拟功能上。

16、的不足或者存在模拟软件复杂、模拟速度慢 的缺陷,不能解决全结构并行计算机消息的快速模拟问题。 0005 相关技术还可参考申请号为98808090.7的中国专利申请,该专利申请公开了一 种指令仿真系统以及一种用宿主处理器来模拟目标处理器的方法。 发明内容 0006 本发明要解决的技术问题是提供一种全结构并行计算机状态下底层消息接口的 模拟方法及模拟装置,通过全结构虚拟目标机模式下消息接口的识别和消息参数虚地址的 直接代换,直接模拟消息接口的功能,简化了模拟方式,并提高了消息模拟的效率。 0007 为解决上述问题,本发明提供了一种底层消息接口模拟方法,包括: 0008 模拟执行目标机的操作系统; 。

17、0009 监测所述目标机的操作系统代码中的进程切换,并于监测到所述进程切换后触发 注释机制,生成底层消息子过程索引表; 说 明 书CN 102446113 A CN 102446134 A 2/8页 6 0010 对目标机指令流中的每一条指令进行识别处理,并于识别出底层消息子过程调用 指令时执行该消息接口的模拟处理,获取消息参数虚地址; 0011 将所述消息参数虚地址转换为消息参数物理地址; 0012 调用所述底层消息子过程索引表执行消息功能模拟,根据所述消息参数物理地址 实现消息的传递。 0013 可选的,所述注释机制包括:从所述目标机的操作系统的核心内存中读取将要切 换进程的进程号和进程名。

18、称,并于识别出将要切换的进程为应用进程后从其代码中读取符 号表信息,从中抽取出底层消息子过程名称和地址,生成底层消息子过程索引表。 0014 可选的,所述底层消息子过程索引表包括底层消息子过程的名称、地址以及消息 功能模拟调用入口。 0015 可选的,所述调用所述底层消息子过程索引表执行消息功能模拟包括调用所述底 层消息子过程索引表中的所述消息功能模拟调用入口,启动消息功能模拟。 0016 可选的,所述对目标机指令流中的每一条指令进行识别处理,并于识别出底层消 息子过程调用指令时执行该消息接口的模拟处理,获取消息参数虚地址包括:对目标机指 令流中的每一条指令进行识别处理,并于识别为所述指令为转。

19、移跳转指令时取出其转移目 标地址,将所述转移目标地址与所述底层消息子过程索引表中的底层消息子过程的地址进 行匹配,若匹配成功则识别出所述指令为底层消息子过程调用指令,执行该消息接口的模 拟处理,获取消息参数虚地址。 0017 可选的,所述识别出将要切换的进程为应用进程包括:调用进程名称切换处理函 数,由其对将要切换的进程的进程名称进行识别,若将要切换的进程不属于系统进程,则将 要切换的进程为应用进程。 0018 可选的,所述将所述消息参数虚地址转换为消息参数物理地址是通过访问所述目 标机的操作系统的多级页表完成的。 0019 可选的,所述消息参数虚地址包括消息参数中源方和目的方的虚地址。 00。

20、20 可选的,所述底层消息接口模拟方法基于全结构并行计算机状态。 0021 为解决上述问题,本发明还提供了一种底层消息接口模拟装置,包括: 0022 指令流模拟控制模块、应用代码底层消息识别模块、消息接口模拟处理模块、消息 参数物理地址代换模块, 0023 所述指令流模拟控制模块用于控制模拟执行目标机代码中的每一条指令,包括调 用所述应用代码底层消息识别模块并获取其反馈结果; 0024 所述应用代码底层消息识别模块用于接受所述指令流模拟控制模块的调用,监测 所述目标机的操作系统代码中的进程切换,并于监测到所述进程切换后触发注释机制,生 成底层消息子过程索引表;还用于接受所述指令流模拟控制模块的。

21、调用,对目标机指令流 中的每一条指令进行识别处理,并于识别出底层消息子过程调用指令时调用所述消息接口 模拟处理模块使其执行该消息接口的模拟处理; 0025 所述消息接口模拟处理模块用于接受所述应用代码底层消息识别模块的调用,获 取消息参数虚地址,调用所述消息参数物理地址代换模块,同时将所述消息参数虚地址传 送给所述消息参数物理地址代换模块进行消息参数虚地址到消息参数物理地址的转换;还 用于调用所述底层消息子过程索引表执行消息功能模拟,根据所述消息参数物理地址代换 说 明 书CN 102446113 A CN 102446134 A 3/8页 7 模块返回的所述消息参数物理地址实现消息的传递。 。

22、0026 所述消息参数物理地址代换模块用于接受所述消息接口模拟处理模块的调用,将 所述消息参数虚地址转换为消息参数物理地址,并将所述消息参数物理地址返回给所述消 息接口模拟处理模块。 0027 可选的,所述应用代码底层消息识别模块包括应用代码载入识别单元和底层消息 子过程调用识别单元, 0028 所述应用代码载入识别单元用于监测目标机的操作系统代码中的进程切换,并于 监测到所述进程切换后触发注释机制,生成底层消息子过程索引表; 0029 所述底层消息子过程调用识别单元用于对目标机指令流中的每一条指令进行识 别处理,并于识别出底层消息子过程调用时调用所述消息接口模拟处理模块使其执行该消 息接口的。

23、模拟处理。 0030 可选的,所述注释机制包括:所述应用代码载入识别单元从所述目标机的操作系 统的核心内存中读取将要切换进程的进程号和进程名称,并于识别出将要切换的进程为应 用进程后从其代码中读取符号表信息,从中抽取出底层消息子过程名称和地址,生成底层 消息子过程索引表。 0031 可选的,所述底层消息子过程索引表包括底层消息子过程的名称、地址以及消息 功能模拟调用入口。 0032 可选的,所述消息接口模拟处理模块调用所述底层消息子过程索引表执行消息功 能模拟包括调用所述底层消息子过程索引表中的所述消息功能模拟调用入口,启动消息功 能模拟。 0033 可选的,所述底层消息子过程调用识别单元对目。

24、标机指令流中的每一条指令进行 识别处理,并于识别出底层消息子过程调用指令时调用所述消息接口模拟处理模块使其执 行该消息接口的模拟处理,包括:对目标机指令流中的每一条指令进行识别处理,并于识别 出所述指令为转移跳转指令时取出其转移目标地址,将所述转移目标地址与所述底层消息 子过程索引表中的底层消息子过程的地址进行匹配,若匹配成功则识别出所述指令为底层 消息子过程调用指令,调用所述消息接口模拟处理模块使其执行该消息接口的模拟处理。 0034 可选的,所述底层消息子过程调用识别单元识别出将要切换的进程为应用进程包 括:调用进程名称切换处理函数,由其对将要切换的进程的进程名称进行识别,若将要切换 的进。

25、程不属于系统进程,则将要切换的进程为应用进程。 0035 可选的,所述消息参数物理地址代换模块将所述消息参数虚地址转换为消息参数 物理地址是通过访问所述目标机的操作系统的多级页表完成的。 0036 可选的,所述消息参数虚地址包括消息参数中源方和目的方的虚地址。 0037 可选的,所述底层消息接口模拟装置基于全结构并行计算机状态。 0038 另外,本发明还提供了一种模拟器,包括上述发明内容任一项所述的底层消息接 口模拟装置。 0039 与现有技术相比,本发明具有以下优点: 0040 不需要进行全指令模拟,跳过了消息接口实现中操作系统行为的模拟;而是在指 令流模拟控制模块的控制下调用应用代码底层消。

26、息识别模块识别出底层消息子过程调用 指令,由所述应用代码底层消息识别模块调用所述消息接口模拟处理模块使其执行该消息 说 明 书CN 102446113 A CN 102446134 A 4/8页 8 接口的模拟处理,获取消息参数虚地址并由所述消息接口模拟处理模块调用消息参数物理 地址代换模块,对消息接口参数中的消息参数虚地址通过直接访问目标机的操作系统多级 页表的方法代换成消息功能模拟直接访问的物理地址。因此,上述技术方案避免了对消息 子过程实现指令的模拟,不需要引入消息通信指令及相应硬件结构的模拟,同时又基于全 结构并行计算机状态支持了多节点消息功能的模拟,其模拟方式更为简单,因而更容易实 。

27、施,并且提高了并行应用程序的模拟效率。 附图说明 0041 图1是本发明提供的底层消息接口模拟方法流程示意图; 0042 图2是本发明提供的底层消息接口模拟装置的结构示意图; 0043 图3是本发明提供的底层消息接口模拟装置的实施方式示意图; 0044 图4是消息参数虚地址示意图; 0045 图5是用于消息参数物理地址代换的多级页表格式示意图。 具体实施方式 0046 为使本发明的上述目的、特征和优点能够更为明显易懂,下面结合附图对本发明 的具体实施方式做详细的说明。 0047 在以下描述中阐述了具体细节以便于充分理解本发明。但是本发明能够以多种不 同于在此描述的其它方式来实施,本领域技术人员。

28、可以在不违背本发明内涵的情况下做类 似推广。因此本发明不受下面公开的具体实施方式的限制。 0048 图1是本发明提供的底层消息接口模拟方法流程示意图。为解决现有技术中模拟 功能上的不足或者存在模拟软件复杂、模拟速度慢的缺陷,不能解决全结构并行计算机消 息的快速模拟问题,本发明提供的底层消息接口模拟方法如图1所示,包括: 0049 步骤S101,模拟执行目标机的操作系统; 0050 步骤S102,监测所述目标机的操作系统代码中的进程切换,并于监测到所述进程 切换后触发注释机制,生成底层消息子过程索引表; 0051 步骤S103,对目标机指令流中的每一条指令进行识别处理,并于识别出底层消息 子过程。

29、调用指令时执行该消息接口的模拟处理,获取消息参数虚地址; 0052 步骤S104,将所述消息参数虚地址转换为消息参数物理地址; 0053 步骤S105,调用所述底层消息子过程索引表执行消息功能模拟,根据所述消息参 数物理地址实现消息的传递。 0054 对应于上述底层消息接口模拟方法,可由本发明提供的的底层消息接口模拟装置 实现。图2是本发明提供的底层消息接口模拟装置的结构示意图,如图2所示,所述底层消 息接口模拟装置包括:指令流模拟控制模块101、应用代码底层消息识别模块102、消息接 口模拟处理模块103、消息参数物理地址代换模块104。 0055 所述指令流模拟控制模块101用于控制模拟执。

30、行目标机代码中的每一条指令,包 括调用所述应用代码底层消息识别模块102并获取其反馈结果。 0056 所述应用代码底层消息识别模块102用于接受所述指令流模拟控制模块101的调 用,监测所述目标机的操作系统代码中的进程切换,并于监测到所述进程切换后触发注释 说 明 书CN 102446113 A CN 102446134 A 5/8页 9 机制,生成底层消息子过程索引表;还用于接受所述指令流模拟控制模块101的调用,对目 标机指令流中的每一条指令进行识别处理,并于识别出底层消息子过程调用指令时调用所 述消息接口模拟处理模块103使其执行该消息接口的模拟处理。所述应用代码底层消息识 别模块102。

31、包括应用代码载入识别单元102a和底层消息子过程调用识别单元102b,所述应 用代码载入识别单元102a用于监测目标机的操作系统代码中进程切换,并于监测到所述 进程切换后触发注释机制,生成底层消息子过程索引表;所述底层消息子过程调用识别单 元102b用于对目标机指令流中的每一条指令进行识别处理,并于识别出底层消息子过程 调用时调用所述消息接口模拟处理模块103使其执行该消息接口的模拟处理。 0057 所述消息接口模拟处理模块103用于接受所述应用代码底层消息识别模块102的 调用,获取消息参数虚地址,调用所述消息参数物理地址代换模块104,同时将所述消息参 数虚地址传送给所述消息参数物理地址代。

32、换模块104进行消息参数虚地址到消息参数物 理地址的转换;还用于调用所述底层消息子过程索引表执行消息功能模拟,根据所述消息 参数物理地址代换模块104返回的所述消息参数物理地址实现消息的传递。 0058 所述消息参数物理地址代换模块104用于接受所述消息接口模拟处理模块103的 调用,将所述消息参数虚地址转换为消息参数物理地址,并将所述消息参数物理地址返回 给所述消息接口模拟处理模块103。 0059 下面结合附图对所述底层消息接口模拟装置的实施方式进行详细说明。图3是本 发明提供的底层消息接口模拟装置的实施方式示意图。参阅图3,与图2所示底层消息接口 模拟装置一致,包括:指令流模拟控制模块1。

33、01、应用代码底层消息识别模块102、消息接口 模拟处理模块103、消息参数物理地址代换模块104,应用代码底层消息识别模块102包括 应用代码载入识别单元102a和底层消息子过程调用识别单元102b。所述底层消息接口模 拟装置可基于全结构并行计算机状态,因此支持了多节点消息功能模拟。 0060 在启动包含所述底层消息接口模拟装置的模拟器之前,还需要进行些启动前准 备,例如将被模拟应用程序目标代码加载到虚拟盘中,之后启动模拟器,模拟引导目标机的 操作系统,进入操作系统交互界面,等待用户命令。所述目标机为被模拟的计算机,目标机 的操作系统即为被模拟计算机的操作系统,可以为Linux、Unix等操。

34、作系统。 0061 指令流模拟控制模块101在模拟过程中是总的控制核心,用于控制模拟执行目标 机代码中的每一条指令,包括调用所述应用代码底层消息识别模块102并获取其反馈结 果。所述目标机代码包括操作系统代码和应用程序代码,而模拟则是由目标机代码的执行 所驱动的,指令流模拟控制即控制模拟执行目标机代码中的每一条指令,是按目标机代码 中的指令流控制整个模拟过程的驱动器。指令流模拟控制模块101调用所述应用代码底 层消息识别模块102中的应用代码载入识别单元102a对目标机的操作系统加载目标机应 用程序代码的过程进行识别,具体地,由所述应用代码载入识别单元102a监测目标机的操 作系统代码中进程切。

35、换,参阅图3,当目标机的操作系统代码109加载目标机应用代码110 时,会执行到特定的函数,例如执行到flush_thread函数,则表明要进行进程的切换,即所 述应用代码载入识别单元102a监测到进程的切换,此时便触发注释机制。所述注释机制包 括:所述应用代码载入识别单元102a从所述目标机的操作系统的核心内存中读取将要切 换进程的进程号和进程名称,并于识别出将要切换的进程为应用进程后从其代码中读取符 号表信息,从中抽取出底层消息子过程名称和地址,生成底层消息子过程索引表。注释是一 说 明 书CN 102446113 A CN 102446134 A 6/8页 10 个在模拟执行过程中不改变。

36、目标机指令流模拟处理流程而运行任意处理脚本的机制,它包 括事件(触发条件)和动作两个部分。注释可以被目标机硬件事件或用户自定义事件所触 发,这些事件,例如新进程创建、进入空转或执行到一个应用程序中特定的过程等这样一些 事件。例如: 0062 annotation set pc kernel:fush_thread:START 0063 0064 0065 是一个注释,表示在进入“flush_thread”过程的入口处,触发识别应用程序加载、 读取符号表信息、建立底层消息子过程索引表等信息的动作。参阅图3,对所述注释机制的 过程具体说明:当触发注释机制后,所述应用代码载入识别单元102a从目标机。

37、的操作系统 的核心内存中读取将要切换的进程的进程号和进程名称,对进程名称进行识别,识别将要 切换的进程是否为应用进程。所述底层消息子过程调用识别单元102a识别出将要切换的 进程为应用进程是通过调用进程名称切换处理函数,例如proc_changename函数(该函数 可以C语言实现),由其对将要切换的进程的进程名称进行识别,若将要切换的进程不属于 系统进程,例如swapper、linuxrc、events、aio、pdflush、migration、ksoftirqd、kswapd、 bdoor、kblockd等系统进程,则将要切换的进程为应用进程。当然,在实际实施时,还会判 断将要切换的进程。

38、的进程名称是否为当前进程名称,如果与当前进程名称相同则说明这并 非是一次进程间的切换。在识别出将要切换的进程为应用进程后从其代码中读取符号表信 息105,从中抽取出底层消息子过程名称和地址,生成底层消息子过程索引表106。在模拟 环境中,会静态建立包含所有底层消息子过程名称和相应消息功能模拟调用入口的底层消 息子过程信息表,模拟过程中待从符号表信息105中抽取出子过程名称和地址后,将该子 过程名称与所述底层消息子过程信息表中的所有底层消息子过程名称逐一进行比较,如果 名称相同,则将该子过程名称和地址连同底层消息子过程信息表中的相应消息功能模拟调 用入口作为一个底层消息子过程条目填入所述底层消息。

39、子过程索引表106。所述底层消息 子过程索引表106中包括底层消息子过程的名称106a、底层消息子过程的地址106b以及消 息功能模拟调用入口106c。在生成所述底层消息子过程索引表106后,所述底层消息子过 程调用识别单元102a会将反馈结果传送给所述指令流模拟控制模块101,由其控制继续目 标机指令流的模拟执行。 0066 所述指令流模拟控制模块101在对目标机指令流模拟控制过程中还调用底层消 息子过程调用识别单元102b,所述底层消息子过程调用识别单元102b接受所述指令流模 拟控制模块101的调用后,对目标机指令流中的每一条指令进行识别处理,并于识别出底 层消息子过程调用指令时调用所述。

40、消息接口模拟处理模块103使其执行该消息接口的模 拟处理。具体地,所述底层消息子过程调用识别单元102b对目标机指令流中的每一条进行 识别处理,并于识别出所述指令为转移跳转指令时取出其转移目标地址,将所述转移目标 地址与所述底层消息子过程索引表106中的底层消息子过程的地址106b进行匹配,若匹配 成功则表明该转移跳转指令为底层消息子过程调用指令,即识别出所述指令为底层消息子 过程调用指令,则调用所述消息接口模拟处理模块103使其执行该消息接口的模拟处理。 0067 所述消息接口模拟处理模块103接受所述底层消息子过程调用识别单元102b的 调用后,从所述目标机的处理器(即被模拟的CPU)的参。

41、数寄存器中获取消息参数虚地址, 说 明 书CN 102446113 A CN 102446134 A 7/8页 11 调用所述消息参数物理地址代换模块104,同时将所述消息参数虚地址传送给所述消息参 数物理地址代换模块104进行消息参数虚地址到消息参数物理地址的转换。所述消息参数 虚地址包括消息参数中源方和目的方的虚地址。具体地,所述消息参数物理地址代换模块 104将所述消息参数虚地址转换为消息参数物理地址是通过访问所述目标机的操作系统的 多级页表107完成的。实际实施中,由于所述多级页表107的结构取决于目标机的操作系 统,不同的操作系统则多级页表107的结构也可能不同,下面举例对通过访问所。

42、述目标机 的操作系统的多级页表107完成所述消息参数虚地址转换为消息参数物理地址的过程进 行说明。图4是消息参数虚地址示意图,图4所示的消息参数虚地址为64位,其中包括消 息参数中源方和目的方的虚地址,将该地址划分为五个部分,分别为5位(4347)的L0、 10位(3342)的L1、10位(2332)的L2、10位(1322)的L3和13位(012)的 页内偏移Offset。图5是用于消息参数物理地址代换的多级页表格式示意图,参阅图5,消 息参数虚地址转换为消息参数物理地址的具体步骤是: 0068 1)取模拟器设置的起始物理地址,以下步骤所述的物理地址均是相对于该起始物 理地址的相对地址; 0。

43、069 2)将包含消息参数中源方、目的方的虚地址的64位消息参数虚地址如图4所示划 分为五个部分,得到L0、L1、L2、L3和Offset; 0070 3)由目标机的处理器号(CPU号)计算页表基址寄存器(PTBR,Page-Table Base Register),得到1级页表区索引单元;例如PTBR(0xd008+CPU号*0x200),其中,0xd008 是目标机的操作系统的多级页表结构起点,不同的目标机处理器(不同的目标机CPU号) 的多级页表结构地址相差0x200个字节位置; 0071 4)从1级页表区索引单元取出64位,加上L0,得到2级页表区索引单元; 0072 5)从2级页表区。

44、索引单元取出高32位左移13位,加上L1,得到3级页表区索引 单元; 0073 6)从3级页表区索引单元取出高32位左移13位,加上L2,得到4级页表区索引 单元; 0074 7)从4级页表区索引单元取出高32位左移13位,加上L3,得到最后物理地址代 换单元; 0075 8)从最后物理地址代换单元取出高32位左移13位,加上页内偏移Offset,得到 最终代换出的物理地址。 0076 继续参阅图3,所述消息参数物理地址代换模块104通过访问目标机的操作系统 的多级页表107对所述消息参数虚地址转换获得消息参数物理地址108后,并将其返回给 所述消息接口模拟处理模块103,所述消息接口模拟处理。

45、模块103调用所述底层消息子过 程索引表106中的所述消息功能模拟调用入口106c,启动消息功能模拟,根据所述消息参 数物理地址代换模块104返回的所述消息参数物理地址108实现消息的传递。至此,底层 消息接口模拟的整个流程结束。 0077 此外,本领域技术人员可以理解实现上述实施例的全部或部分是可以通过程序来 指令相关的硬件来完成,所述的程序可以存储于计算机可读存储介质中,所述存储介质可 以是ROM、RAM、磁碟、光盘等。 0078 综上,本发明提供的底层消息接口模拟方法及模拟装置至少具有如下有益效果: 说 明 书CN 102446113 A CN 102446134 A 8/8页 12 0。

46、079 不需要进行全指令模拟,跳过了消息接口实现中操作系统行为的模拟;而是在指 令流模拟控制模块的控制下调用应用代码底层消息识别模块识别出底层消息子过程调用 指令,由所述应用代码底层消息识别模块调用所述消息接口模拟处理模块使其执行该消息 接口的模拟处理,获取消息参数虚地址并由所述消息接口模拟处理模块调用消息参数物理 地址代换模块,对消息接口参数中的消息参数虚地址通过直接访问目标机的操作系统多级 页表的方法代换成消息功能模拟直接访问的物理地址。因此,上述技术方案避免了对消息 子过程实现指令的模拟,不需要引入消息通信指令及相应硬件结构的模拟,同时又基于全 结构并行计算机状态支持了多节点消息功能的模。

47、拟,其模拟方式更为简单,因而更容易实 施,并且提高了并行应用程序的模拟效率。 0080 本发明虽然已以较佳实施例公开如上,但其并不是用来限定本发明,任何本领域 技术人员在不脱离本发明的精神和范围内,都可以利用上述揭示的方法和技术内容对本发 明技术方案做出可能的变动和修改,因此,凡是未脱离本发明技术方案的内容,依据本发明 的技术实质对以上实施例所作的任何简单修改、等同变化及修饰,均属于本发明技术方案 的保护范围。 说 明 书CN 102446113 A CN 102446134 A 1/4页 13 图1 说 明 书 附 图CN 102446113 A CN 102446134 A 2/4页 14 图2 说 明 书 附 图CN 102446113 A CN 102446134 A 3/4页 15 图3 图4 说 明 书 附 图CN 102446113 A CN 102446134 A 4/4页 16 图5 说 明 书 附 图CN 102446113 A 。

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

当前位置:首页 > 物理 > 计算;推算;计数


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1