一种基于动态二进制插桩的可回溯仿真方法及系统技术方案

技术编号:29672844 阅读:13 留言:0更新日期:2021-08-13 21:54
本发明专利技术公开了一种基于动态二进制插桩的可回溯仿真方法及系统,该方法包括:通过动态二进制插桩方法对正在运行的仿真程序和底层操作系统之间引入虚拟文件层;根据动态二进制插桩方法拦截目标函数参数,对仿真系统模型组件的各个接口加以拦截,以获得仿真事件状态;根据仿真事件状态,构建基于事件的检查点。该方法利用动态二进制插桩技术,在不修改仿真程序源代码的情况下,插入虚拟文件层拦截所有文件操作,在内存中的缓冲区执行,避免了内存和磁盘文件在重启检查点时的不一致问题。此外,由动态插桩引入的额外代码和原程序执行在同一个地址空间中,通过拦截仿真模型组件相关接口,基于获取的仿真事件状态信息设置检查点,具有更强的实用性。

【技术实现步骤摘要】
一种基于动态二进制插桩的可回溯仿真方法及系统
本专利技术涉及仿真以及容错等相关
,特别涉及一种基于动态二进制插桩的可回溯仿真方法及系统。
技术介绍
传统的推演仿真系统是一种离线的推演系统,整个推演过程可分为三个阶段:准备阶段、推演阶段、评估阶段。准备阶段的主要任务是制作想定文件,并由相关人员依据任务规划,结合想定文件,配置各种资源的初始位置、数量、仿真模型、行动路线等参数。推演阶段由仿真引擎加载上一阶段配置的数据,运行推演并给出推演结果,最后在评估阶段对推演结果进行评估。需要强调的是,仿真进程启动之后,仿真引擎加载初始参数并依照想定自动推演整个仿真事件,在此期间,工作人员不需要也不能对仿真进程做出任何干预。在线推演需要在推演阶段根据当前仿真事件状态灵活的进行各种人工干预以调整仿真参数,主导仿真事件走向。根据推演阶段不同的人工干预,可以更加快速的推演出各种行动策略,而在线推演的特点就需要整个仿真过程具有可回溯性,否则每次获得一个仿真结果就需要重新从头执行一次仿真程序,这将付出更多的时间和人力成本。检查点/重启技术是计算机容错领域的主流容错技术,它可以在进程执行期间以指定的时间间隔不断的保存进程的执行状态,形成一系列的检查点,而后在进程崩溃后直接从最近的检查点恢复进程执行状态继续执行,以降低各种错误造成的工作损失。基于检查点的仿真回溯策略是一种提高回溯效率的新方法。然而,大部分现存检查点工具仅仅关注进程的易失性数据而忽略进程持久性数据,这导致了各种各样的文件支持性问题,比如仅支持活动文件、限制文件操作、需要修改仿真程序源代码等。此外,由于仿真程序的特殊性,仿真程序对应检查点往往和仿真时间相关,因此,需要检查点的设置策略可以和仿真事件演进相关。为一个应用创建检查点,通常需要考虑三个进程组成部分:易失性状态、持久性状态、系统环境。易失性状态是指进程中掉电即失的相关数据,例如:进程栈、数据段、寄存器等。持久性状态是指那些和进程相关的文件和数据库等能够长时间保存的数据。系统环境代表应用需要通过操作系统访问的系统资源,例如交换区和文件系统等。对系统环境不同的理解将设计出不同的检查点工具。现存检查点工具往往将文件相关内容归类于系统环境,因此,他们大多数都不支持文件相关的持久性状态回滚。在过去的20年里,容错领域也诞生了许多独立的文件检查点算法和工具,但是,仍然有许多问题尚未解决。以下列举三个现存文件检查点工具的缺陷:(1)仅支持幂等操作和极少数非幂等操作。幂等操作包括所有不会改变文件一致性状态的操作,例如文件读操作。而文件写、截断等一系列会改变文件状态的操作均归类于非幂等操作。此类文件检查点算法限制用户应用对文件的操作范围,严重影响用户应用功能实现。(2)仅支持活动文件。活动文件是指那些在设置检查点时处于打开状态的文件。此类文件检查点工具会在设置检查点时遍历所有处于打开状态的文件句柄,而后记录文件当前长度。在回滚文件状态时,简单的截断文件到之前记录的长度。(3)必须更改用户应用源代码才可以使用检查点功能。当前,大部分功能较为完善的检查点工具均采用库的形式提供其功能,而用户应用则需要引入库函数才能调用检查点方法。此类方法不仅会增加开发者工作负担,同时也会造成隐藏的缺陷。此外,容错领域中以固定时间间隔设置检查点的策略在仿真环境下并不适用,需要一种新的、可以根据仿真事件状态设置检查点的新方法。
技术实现思路
本专利技术的目的是针对现有技术的不足,提供一种基于动态二进制插桩的可回溯仿真方法及系统,该方法可克服现存文件检查点的各种缺陷,可以根据仿真事件状态设置检查点,进一步实现根据事件推演状态。第一方面,本专利技术实施例提供一种基于动态二进制插桩的可回溯仿真方法,应用于仿真系统;所述方法包括:通过动态二进制插桩方法对正在运行的仿真程序和底层操作系统之间引入虚拟文件层;所述虚拟文件层用于缓冲文件操作到内存;根据所述动态二进制插桩方法拦截目标函数参数,对仿真系统模型组件的各个接口加以拦截,以获得仿真事件状态;根据所述仿真事件状态,构建基于事件的检查点。在一个实施例中,通过二进制插桩方法对正在运行的程序和底层操作系统之间引入虚拟文件层,包括:封装底层操作系统原生文件操作函数;利用动态二进制插桩方法,拦截并替换可执行进程对文件接口的调用;以使目标进程对原生接口的访问,调用封装的对应的所述原生文件操作函数;所述动态二进制插桩方法引入的代码在所述目标进程调用时,获得进程对文件的操作信息;将所述操作信息对应的操作在内存缓冲区中执行。在一个实施例中,所述仿真程序对应的进程包括仿真进程和服务进程;根据所述仿真事件状态,构建基于事件的检查点;包括:根据所述仿真事件状态,设定创建检查点的时机;创建仿真状态拦截方法;所述拦截方法在预设事件发生后,阻塞仿真进程执行,发出检查点创建信号;利用动态二进制插桩方法,将所述拦截方法,插入所述仿真进程中;所述服务进程随时接收所述检查点创建信号,启动内存检查点工具对所述仿真进程设置检查点。在一个实施例中,所述操作信息对应的操作,包括:当进程写第一数据时,直接写入缓冲区对应区域;当进程读第二数据时,从磁盘加载所述第二数据到缓冲区,从缓冲区返回所述第二数据;当进程访问的第三数据已经在缓冲区存在时,直接返回所述第三数据。第二方面,本专利技术实施例还提供一种基于动态二进制插桩的可回溯仿真系统,包括:虚拟文件层模块,用于通过动态二进制插桩方法对正在运行的仿真程序和底层操作系统之间引入虚拟文件层;所述虚拟文件层用于缓冲文件操作到内存;状态感知器模块,用于根据所述动态二进制插桩方法拦截目标函数参数,对仿真系统模型组件的各个接口加以拦截,以获得仿真事件状态;构建事件检查点模块,用于根据所述仿真事件状态,构建基于事件的检查点。在一个实施例中,所述虚拟文件层模块,包括:封装单元,用于封装底层操作系统原生文件操作函数;调用单元,用于利用动态二进制插桩方法,拦截并替换可执行进程对文件接口的调用;以使目标进程对原生接口的访问,调用封装的对应的所述原生文件操作函数;执行单元,用于所述动态二进制插桩方法引入的代码在所述目标进程调用时,获得进程对文件的操作信息;将所述操作信息对应的操作在内存缓冲区中执行。在一个实施例中,所述仿真程序对应的进程包括仿真进程和服务进程;所述构建事件检查点模块,包括:设定单元,用于根据所述仿真事件状态,设定创建检查点的时机;创建单元,用于创建仿真状态拦截方法;所述拦截方法在预设事件发生后,阻塞仿真进程执行,发出检查点创建信号;插入单元,用于利用动态二进制插桩方法,将所述拦截方法,插入所述仿真进程中;设置单元,用于所述服务进程随时接收所述检查点创建信号,启动内存检查点工具对所述仿真进程设置检查点。在一个实施例中,所述执行单元中的所述操作信息对应的操作,本文档来自技高网
...

【技术保护点】
1.一种基于动态二进制插桩的可回溯仿真方法,其特征在于,应用于仿真系统;所述方法包括:/n通过动态二进制插桩方法对正在运行的仿真程序和底层操作系统之间引入虚拟文件层;所述虚拟文件层用于缓冲文件操作到内存;/n根据所述动态二进制插桩方法拦截目标函数参数,对仿真系统模型组件的各个接口加以拦截,以获得仿真事件状态;/n根据所述仿真事件状态,构建基于事件的检查点。/n

【技术特征摘要】
1.一种基于动态二进制插桩的可回溯仿真方法,其特征在于,应用于仿真系统;所述方法包括:
通过动态二进制插桩方法对正在运行的仿真程序和底层操作系统之间引入虚拟文件层;所述虚拟文件层用于缓冲文件操作到内存;
根据所述动态二进制插桩方法拦截目标函数参数,对仿真系统模型组件的各个接口加以拦截,以获得仿真事件状态;
根据所述仿真事件状态,构建基于事件的检查点。


2.根据权利要求1所述的一种基于动态二进制插桩的可回溯仿真方法,其特征在于,通过二进制插桩方法对正在运行的程序和底层操作系统之间引入虚拟文件层,包括:
封装底层操作系统原生文件操作函数;
利用动态二进制插桩方法,拦截并替换可执行进程对文件接口的调用;以使目标进程对原生接口的访问,调用封装的对应的所述原生文件操作函数;
所述动态二进制插桩方法引入的代码在所述目标进程调用时,获得进程对文件的操作信息;将所述操作信息对应的操作在内存缓冲区中执行。


3.根据权利要求1所述的一种基于动态二进制插桩的可回溯仿真方法,其特征在于,所述仿真程序对应的进程包括仿真进程和服务进程;
根据所述仿真事件状态,构建基于事件的检查点;包括:
根据所述仿真事件状态,设定创建检查点的时机;
创建仿真状态拦截方法;所述拦截方法在预设事件发生后,阻塞仿真进程执行,发出检查点创建信号;
利用动态二进制插桩方法,将所述拦截方法,插入所述仿真进程中;
所述服务进程随时接收所述检查点创建信号,启动内存检查点工具对所述仿真进程设置检查点。


4.根据权利要求2所述的一种基于动态二进制插桩的可回溯仿真方法,其特征在于,所述操作信息对应的操作,包括:
当进程写第一数据时,直接写入缓冲区对应区域;
当进程读第二数据时,从磁盘加载所述第二数据到缓冲区,从缓冲区返回所述第二数据;
当进程访问的第三数据已经在缓冲区存在时,直接返回所述第三数据。


5.一种基于动...

【专利技术属性】
技术研发人员:计卫星王一拙魏双剑陈秋瑞杨凯石峰
申请(专利权)人:北京理工大学北京仿真中心
类型:发明
国别省市:北京;11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1