CN102446113A - 底层消息接口模拟方法及模拟装置 - Google Patents
底层消息接口模拟方法及模拟装置 Download PDFInfo
- Publication number
- CN102446113A CN102446113A CN2010105088665A CN201010508866A CN102446113A CN 102446113 A CN102446113 A CN 102446113A CN 2010105088665 A CN2010105088665 A CN 2010105088665A CN 201010508866 A CN201010508866 A CN 201010508866A CN 102446113 A CN102446113 A CN 102446113A
- Authority
- CN
- China
- Prior art keywords
- message
- simulation
- interface
- instruction
- subprocess
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Landscapes
- Debugging And Monitoring (AREA)
Abstract
一种底层消息接口模拟方法,包括:模拟执行目标机的操作系统;监测所述目标机的操作系统代码中的进程切换,并于监测到所述进程切换后触发注释机制,生成底层消息子过程索引表;对目标机指令流中的每一条指令进行识别处理,并于识别出底层消息子过程调用时执行该消息接口的模拟处理,获取消息参数虚地址;将所述消息参数虚地址转换为消息参数物理地址;调用所述底层消息子过程索引表执行消息功能模拟,根据所述消息参数物理地址实现消息的传递。基于上述方法,还提供了一种底层消息接口模拟装置。本发明能够基于全结构并行计算机状态支持多节点消息功能的模拟,简化了模拟方式,提高并行应用程序的模拟效率。
Description
技术领域
本发明涉及计算机模拟与仿真技术领域,特别涉及一种底层消息接口模拟方法及模拟装置。
背景技术
计算机系统结构建模是以模拟的方法实现计算机系统的结构。通过对计算机系统结构建模,研究者能够用可配置的结构形式来考察目标机软件在被模拟的系统结构上执行时的行为与特征,使得在真实计算机系统平台能够使用以前,尽早发现该计算机结构的设计问题,实施该平台的软件开发与调试。其中,全结构状态模拟和消息模拟是计算机结构建模的两个重要方面。
全结构包括用户态结构和系统态结构。系统态结构包括计算机的特权结构、主存管理单元(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-TableBase 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、磁碟、光盘等。
综上,本发明提供的底层消息接口模拟方法及模拟装置至少具有如下有益效果:
不需要进行全指令模拟,跳过了消息接口实现中操作系统行为的模拟;而是在指令流模拟控制模块的控制下调用应用代码底层消息识别模块识别出底层消息子过程调用指令,由所述应用代码底层消息识别模块调用所述消息接口模拟处理模块使其执行该消息接口的模拟处理,获取消息参数虚地址并由所述消息接口模拟处理模块调用消息参数物理地址代换模块,对消息接口参数中的消息参数虚地址通过直接访问目标机的操作系统多级页表的方法代换成消息功能模拟直接访问的物理地址。因此,上述技术方案避免了对消息子过程实现指令的模拟,不需要引入消息通信指令及相应硬件结构的模拟,同时又基于全结构并行计算机状态支持了多节点消息功能的模拟,其模拟方式更为简单,因而更容易实施,并且提高了并行应用程序的模拟效率。
本发明虽然已以较佳实施例公开如上,但其并不是用来限定本发明,任何本领域技术人员在不脱离本发明的精神和范围内,都可以利用上述揭示的方法和技术内容对本发明技术方案做出可能的变动和修改,因此,凡是未脱离本发明技术方案的内容,依据本发明的技术实质对以上实施例所作的任何简单修改、等同变化及修饰,均属于本发明技术方案的保护范围。
Claims (20)
1.一种底层消息接口模拟方法,其特征在于,包括:
模拟执行目标机的操作系统;
监测所述目标机的操作系统代码中的进程切换,并于监测到所述进程切换后触发注释机制,生成底层消息子过程索引表;
对目标机指令流中的每一条指令进行识别处理,并于识别出底层消息子过程调用指令时执行该消息接口的模拟处理,获取消息参数虚地址;
将所述消息参数虚地址转换为消息参数物理地址;
调用所述底层消息子过程索引表执行消息功能模拟,根据所述消息参数物理地址实现消息的传递。
2.根据权利要求1所述的底层消息接口模拟方法,其特征在于,所述注释机制包括:从所述目标机的操作系统的核心内存中读取将要切换进程的进程号和进程名称,并于识别出将要切换的进程为应用进程后从其代码中读取符号表信息,从中抽取出底层消息子过程名称和地址,生成底层消息子过程索引表。
3.根据权利要求1或2所述的底层消息接口模拟方法,其特征在于,所述底层消息子过程索引表包括底层消息子过程的名称、地址以及消息功能模拟调用入口。
4.根据权利要求3所述的底层消息接口模拟方法,其特征在于,所述调用所述底层消息子过程索引表执行消息功能模拟包括调用所述底层消息子过程索引表中的所述消息功能模拟调用入口,启动消息功能模拟。
5.根据权利要求3所述的底层消息接口模拟方法,其特征在于,所述对目标机指令流中的每一条指令进行识别处理,并于识别出底层消息子过程调用指令时执行该消息接口的模拟处理,获取消息参数虚地址包括:对目标机指令流中的每一条指令进行识别处理,并于识别为所述指令为转移跳转指令时取出其转移目标地址,将所述转移目标地址与所述底层消息子过程索引表中的底层消息子过程的地址进行匹配,若匹配成功则识别出所述指令为底层消息子过程调用指令,执行该消息接口的模拟处理,获取消息参数虚地址。
6.根据权利要求2所述的底层消息接口模拟方法,其特征在于,所述识别出将要切换的进程为应用进程包括:调用进程名称切换处理函数,由其对将要切换的进程的进程名称进行识别,若将要切换的进程不属于系统进程,则将要切换的进程为应用进程。
7.根据权利要求1所述的底层消息接口模拟方法,其特征在于,所述将所述消息参数虚地址转换为消息参数物理地址是通过访问所述目标机的操作系统的多级页表完成的。
8.根据权利要求1所述的底层消息接口模拟方法,其特征在于,所述消息参数虚地址包括消息参数中源方和目的方的虚地址。
9.根据权利要求1所述的底层消息接口模拟方法,其特征在于,所述底层消息接口模拟方法基于全结构并行计算机状态。
10.一种底层消息接口模拟装置,其特征在于,包括:指令流模拟控制模块、应用代码底层消息识别模块、消息接口模拟处理模块、消息参数物理地址代换模块,
所述指令流模拟控制模块用于控制模拟执行目标机代码中的每一条指令,包括调用所述应用代码底层消息识别模块并获取其反馈结果;
所述应用代码底层消息识别模块用于接受所述指令流模拟控制模块的调用,监测所述目标机的操作系统代码中的进程切换,并于监测到所述进程切换后触发注释机制,生成底层消息子过程索引表;还用于接受所述指令流模拟控制模块的调用,对目标机指令流中的每一条指令进行识别处理,并于识别出底层消息子过程调用指令时调用所述消息接口模拟处理模块使其执行该消息接口的模拟处理;
所述消息接口模拟处理模块用于接受所述应用代码底层消息识别模块的调用,获取消息参数虚地址,调用所述消息参数物理地址代换模块,同时将所述消息参数虚地址传送给所述消息参数物理地址代换模块进行消息参数虚地址到消息参数物理地址的转换;还用于调用所述底层消息子过程索引表执行消息功能模拟,根据所述消息参数物理地址代换模块返回的所述消息参数物理地址实现消息的传递。
所述消息参数物理地址代换模块用于接受所述消息接口模拟处理模块的调用,将所述消息参数虚地址转换为消息参数物理地址,并将所述消息参数物理地址返回给所述消息接口模拟处理模块。
11.根据权利要求10所述的底层消息接口模拟装置,其特征在于,所述应用代码底层消息识别模块包括应用代码载入识别单元和底层消息子过程调用识别单元,
所述应用代码载入识别单元用于监测目标机的操作系统代码中的进程切换,并于监测到所述进程切换后触发注释机制,生成底层消息子过程索引表;
所述底层消息子过程调用识别单元用于对目标机指令流中的每一条指令进行识别处理,并于识别出底层消息子过程调用时调用所述消息接口模拟处理模块使其执行该消息接口的模拟处理。
12.根据权利要求11所述的底层消息接口模拟装置,其特征在于,所述注释机制包括:所述应用代码载入识别单元从所述目标机的操作系统的核心内存中读取将要切换进程的进程号和进程名称,并于识别出将要切换的进程为应用进程后从其代码中读取符号表信息,从中抽取出底层消息子过程名称和地址,生成底层消息子过程索引表。
13.根据权利要求10至12中任一项所述的底层消息接口模拟装置,其特征在于,所述底层消息子过程索引表包括底层消息子过程的名称、地址以及消息功能模拟调用入口。
14.根据权利要求13所述的底层消息接口模拟装置,其特征在于,所述消息接口模拟处理模块调用所述底层消息子过程索引表执行消息功能模拟包括调用所述底层消息子过程索引表中的所述消息功能模拟调用入口,启动消息功能模拟。
15.根据权利要求11所述的底层消息接口模拟装置,其特征在于,所述底层消息子过程调用识别单元对目标机指令流中的每一条指令进行识别处理,并于识别出底层消息子过程调用指令时调用所述消息接口模拟处理模块使其执行该消息接口的模拟处理,包括:对目标机指令流中的每一条指令进行识别处理,并于识别出所述指令为转移跳转指令时取出其转移目标地址,将所述转移目标地址与所述底层消息子过程索引表中的底层消息子过程的地址进行匹配,若匹配成功则识别出所述指令为底层消息子过程调用指令,调用所述消息接口模拟处理模块使其执行该消息接口的模拟处理。
16.根据权利要求11所述的底层消息接口模拟装置,其特征在于,所述底层消息子过程调用识别单元识别出将要切换的进程为应用进程包括:调用进程名称切换处理函数,由其对将要切换的进程的进程名称进行识别,若将要切换的进程不属于系统进程,则将要切换的进程为应用进程。
17.根据权利要求10所述的底层消息接口模拟装置,其特征在于,所述消息参数物理地址代换模块将所述消息参数虚地址转换为消息参数物理地址是通过访问所述目标机的操作系统的多级页表完成的。
18.根据权利要求10所述的底层消息接口模拟装置,其特征在于,所述消息参数虚地址包括消息参数中源方和目的方的虚地址。
19.根据权利要求10所述的底层消息接口模拟装置,其特征在于,所述底层消息接口模拟装置基于全结构并行计算机状态。
20.一种模拟器,其特征在于,包括权利要求10至19中任一项所述的底层消息接口模拟装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010508866.5A CN102446113B (zh) | 2010-10-12 | 2010-10-12 | 底层消息接口模拟方法及模拟装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010508866.5A CN102446113B (zh) | 2010-10-12 | 2010-10-12 | 底层消息接口模拟方法及模拟装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102446113A true CN102446113A (zh) | 2012-05-09 |
CN102446113B CN102446113B (zh) | 2014-02-26 |
Family
ID=46008627
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201010508866.5A Active CN102446113B (zh) | 2010-10-12 | 2010-10-12 | 底层消息接口模拟方法及模拟装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102446113B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103324480A (zh) * | 2013-06-21 | 2013-09-25 | 徐州赫思曼电子有限公司 | 一种QNX系统下Flash Player thread获取底层消息的方法 |
CN112989740A (zh) * | 2021-04-23 | 2021-06-18 | 北京欣博电子科技有限公司 | 一种仿真方法、装置、计算机设备和存储介质 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100468358C (zh) * | 2005-12-16 | 2009-03-11 | 国际商业机器公司 | 在软件中模拟条件及驱动控制流的系统和方法 |
-
2010
- 2010-10-12 CN CN201010508866.5A patent/CN102446113B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100468358C (zh) * | 2005-12-16 | 2009-03-11 | 国际商业机器公司 | 在软件中模拟条件及驱动控制流的系统和方法 |
Non-Patent Citations (1)
Title |
---|
潘治,杨金才: "基于SimOS的完整机器模拟技术研究", 《2006年全国高性能计算学术会议(HPC 2006)》 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103324480A (zh) * | 2013-06-21 | 2013-09-25 | 徐州赫思曼电子有限公司 | 一种QNX系统下Flash Player thread获取底层消息的方法 |
CN112989740A (zh) * | 2021-04-23 | 2021-06-18 | 北京欣博电子科技有限公司 | 一种仿真方法、装置、计算机设备和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN102446113B (zh) | 2014-02-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5295379B2 (ja) | 組み込みプラットフォームにおけるプログラムの動的リンキング方法および組み込みプラットフォーム | |
CN102652308B (zh) | 将数据高效地载入计算系统的存储器中的方法和系统 | |
EP2115582B1 (en) | Controlling instruction execution in a processing environment | |
CN102279765A (zh) | 预编译托存托管代码 | |
US8875114B2 (en) | Employing identifiers provided by an operating system of a processing environment to optimize the processing environment | |
CN102646052A (zh) | 一种虚拟机部署方法、装置及系统 | |
US7600223B2 (en) | Abstracted managed code execution | |
CN103210373A (zh) | 管理嵌套虚拟化环境 | |
CN105247533A (zh) | 信息处理装置和确定方法 | |
US9477496B2 (en) | Method and apparatus for loading classes and re-organizing class archives | |
CN104205049B (zh) | 混合模拟和内核函数处理系统和方法 | |
CN102388363A (zh) | 以类别档案嵌入原生代码方式应用平台相依例行程序于虚拟机 | |
US7743377B2 (en) | Cooperative threading in a managed code execution environment | |
CN102446113B (zh) | 底层消息接口模拟方法及模拟装置 | |
CN102999374B (zh) | 一种基于虚拟机的信息记录方法 | |
CN117762423A (zh) | Java智能合约的编译方法、装置、存储介质以及电子设备 | |
KR101455668B1 (ko) | 분리 실행 기반의 컨텐츠용 베이식 블록 그룹 정의 장치, 정의 방법 및 그를 기록한 컴퓨터로 판독 가능한 기록매체 | |
US7549045B2 (en) | Delegate registration in a managed code execution environment | |
CN111488286A (zh) | 一种Android模块独立开发的方法及装置 | |
US20060101439A1 (en) | Memory management in a managed code execution environment | |
EP2115574B1 (en) | Employing a buffer to facilitate instruction execution | |
CN103617077A (zh) | 智能型云端化移转的方法与系统 | |
JP2005521117A (ja) | Javaプログラミング環境におけるオブジェクトの表現のための2ティアのクラスタ | |
CN106569829A (zh) | 触摸屏工作模式切换实现方法、触摸屏装置和头戴式设备 | |
CN100495328C (zh) | 用于开发计算机系统的装置及其方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |