一种内存虚拟化的方法及装置

    公开(公告)号:CN104750623B

    公开(公告)日:2017-11-24

    申请号:CN201310752024.8

    申请日:2013-12-31

    Abstract: 本发明实施例公开了一种内存虚拟化的方法及装置,涉及电子信息技术领域,能够在需要修改映射关系时,避免了使用宿主机的内核修改映射关系。本发明的方法包括:建立HVA层到硬盘的存储空间之间的映射关系;为客户机的进程在HVA层中分配地址空间,并建立GVA层到HVA层中的被分配的地址空间之间的映射关系;建立访存指令指向的HVA层中的被分配的地址空间上的地址到硬盘的存储空间之间的映射关系;从宿主机获取目标数据。本发明适用于将计算设备的内存虚拟化的场景中。

    函数调用路径编解码方法、装置及系统

    公开(公告)号:CN105224305A

    公开(公告)日:2016-01-06

    申请号:CN201410310847.X

    申请日:2014-07-01

    Abstract: 一种函数调用路径编解码方法、装置及系统,其中所述方法包括,执行程序过程中,构建调用函数到当前跳转目标函数的函数调用边;对新构建的函数调用边进行编码,包括:将当前的路径编码现场保存至编码信息的记录中,路径编码现场包括现场路径编码值、调用点地址和目标地址;将新路径编码值更新为当前最大路径编码值+1;为编码信息添加对应的时间戳并对程序进行插桩。在本发明实施例中,实时动态构建程序的函数调用图的同时,还对动态构建的函数调用图进行相应的动态编码,由于保存了到达当前函数的路径中所有的新增函数调用边的路径信息和避免新设置的编码值与原有编码值发生冲突,所以使本申请中的动态编码后的函数调用路径编码可以被正确的解码。

    一种抵御代码重用攻击的方法

    公开(公告)号:CN105022956A

    公开(公告)日:2015-11-04

    申请号:CN201510501698.X

    申请日:2015-08-14

    CPC classification number: G06F21/54

    Abstract: 本发明提供一种抵御代码重用攻击的方法,其特征在于,包括下列步骤:1)在工作进程运行过程中,洗牌进程生成工作进程的新版本代码并将其存入代码缓存区,所述代码缓存区被工作进程和洗牌进程所共享;2)所述工作进程完成新旧版本代码的切换。本发明具有下列技术效果:本发明实现了应用级的持续随机化,能够有效地防御代码重用攻击。本发明的防御代码重用攻击方法不需要修改操作系统内核,不需要修改现有的CPU硬件,并且不需要源代码的支持,兼容性高。本发明的防御代码重用攻击方法不会破坏DEP机制,能够避免额外的安全隐患。本发明的防御代码重用攻击方法的开销非常低。

    包含栈变量函数的优化方法

    公开(公告)号:CN101847096B

    公开(公告)日:2012-12-12

    申请号:CN201010107353.3

    申请日:2010-02-05

    Inventor: 李建军 武成岗

    Abstract: 本发明提供一种包含栈变量函数的优化方法,包括:申请一段物理内存空间作为所要优化的函数的映像栈,然后再申请一段虚拟内存空间作为所要优化的函数的影子栈;在所要优化的函数中选择要被提升到空闲寄存器中的栈变量;插入将被优化函数的函数栈从系统栈切换到映像栈的指令、将栈变量的内容提升到寄存器中的指令以及将映像栈中的虚存页设为保护状态的指令;将所有包含对所提升栈变量操作的指令替换为对相应寄存器操作的指令,将所有对未提升的栈变量的操作替换为对所述影子栈上相应虚存地址的操作;插入将映像栈中的虚存页解除保护状态的指令、将被提升的栈变量的内容从寄存器存回内存的指令、将函数栈帧从映像栈切换回系统栈的指令。

    一种RISC处理器浮点栈指令翻译装置及方法

    公开(公告)号:CN101286122B

    公开(公告)日:2011-03-23

    申请号:CN200810112231.6

    申请日:2008-05-22

    Abstract: 本发明公开了RISC处理器及其浮点栈指令翻译装置及方法,其选择目标体系结构的多个浮点寄存器作为目标寄存器,并以一整型数据变量和浮点数组变量,作为模拟TOP寄存器和模拟数据寄存器,模拟源体系结构的TOP寄存器操作和数据寄存器;在翻译浮点栈指令中,根据不同的浮点栈指令,选择未被分配的目标寄存器,将所述浮点栈指令的模拟数据寄存器映射到相应的所述未被分配的目标寄存器,对所述相应的目标寄存器进行翻译操作,并根据目标寄存器的变化更新模拟TOP寄存器以及模拟数据寄存器;其能够节省因固定映射寄存器而生产的数据交换和数据传输指令翻译时的开销,提高二进制翻译系统的效率。

    一种基于阶段分析的缓存动态划分方法和系统

    公开(公告)号:CN101894048A

    公开(公告)日:2010-11-24

    申请号:CN201010212895.7

    申请日:2010-06-28

    Abstract: 本发明公开了一种基于phase分析的cache动态划分方法和系统,所述方法,包括下列步骤:启动决策进程,系统状态初始化为搜索状态并构建静态搜索树;启动应用程序进程;决策进程开始执行步骤100到300的循环,直至应用程序进程结束;划分决策模块读取采样数据,并根据采样数据识别出程序在当前时间片下运行的phase号,并更新历史记录;划分决策模块收集程序的当前phase在搜索集下各划分的性能数据,根据phase分析结果和系统状态确定下一时间片的Cache划分;当前时间片的决策过程结束,确定出下一时间片的Cache划分,再调用划分执行模块完成cache划分。

    包含栈变量函数的优化方法

    公开(公告)号:CN101847096A

    公开(公告)日:2010-09-29

    申请号:CN201010107353.3

    申请日:2010-02-05

    Inventor: 李建军 武成岗

    Abstract: 本发明提供一种包含栈变量函数的优化方法,包括:申请一段物理内存空间作为所要优化的函数的映像栈,然后再申请一段虚拟内存空间作为所要优化的函数的影子栈;在所要优化的函数中选择要被提升到空闲寄存器中的栈变量;插入将被优化函数的函数栈从系统栈切换到映像栈的指令、将栈变量的内容提升到寄存器中的指令以及将映像栈中的虚存页设为保护状态的指令;将所有包含对所提升栈变量操作的指令替换为对相应寄存器操作的指令,将所有对未提升的栈变量的操作替换为对所述影子栈上相应虚存地址的操作;插入将映像栈中的虚存页解除保护状态的指令、将被提升的栈变量的内容从寄存器存回内存的指令、将函数栈帧从映像栈切换回系统栈的指令。

    二进制翻译器中线程共享目标本地码缓存替换方法及系统

    公开(公告)号:CN101482851A

    公开(公告)日:2009-07-15

    申请号:CN200810247438.4

    申请日:2008-12-31

    Inventor: 张盈 武成岗

    Abstract: 本发明涉及二进制翻译器中线程共享code cache的替换方法及系统。该方法包括:步骤10,将本地码空间划分成N个相同大小的可替换单元和一个永不替换单元,N为自然数;可替换单元用于进行普通本地码的分配以及实施替换策略,永不替换单元用来保存与线程同步相关的本地码;步骤20,从当前可替换单元中分配本地码,直到当前可替换单元的容量达到上限时再从下一个可替换单元开始分配本地码;步骤30,当本地码空间达到容量的上限时,以可替换单元为单位按照先进先出策略进行本地码替换。本发明提出并实现了多线程code cache的替换方案,这种替换方案可广泛适用于各种体系结构之上的二进制翻译器中,在开销较小的同时保证了线程的并发性。

    一种RISC处理器及其浮点栈指令翻译装置及方法

    公开(公告)号:CN101286122A

    公开(公告)日:2008-10-15

    申请号:CN200810112231.6

    申请日:2008-05-22

    Abstract: 本发明公开了RISC处理器及其浮点栈指令翻译装置及方法,其选择目标体系结构的多个浮点寄存器作为目标寄存器,并以一整型数据变量和浮点数组变量,作为模拟TOP寄存器和模拟数据寄存器,模拟源体系结构的TOP寄存器操作和数据寄存器;在翻译浮点栈指令中,根据不同的浮点栈指令,选择未被分配的目标寄存器,将所述浮点栈指令的模拟数据寄存器映射到相应的所述未被分配的目标寄存器,对所述相应的目标寄存器进行翻译操作,并根据目标寄存器的变化更新模拟TOP寄存器以及模拟数据寄存器;其能够节省因固定映射寄存器而生产的数据交换和数据传输指令翻译时的开销,提高二进制翻译系统的效率。

    一种二进制翻译中库函数调用的处理方法

    公开(公告)号:CN100359472C

    公开(公告)日:2008-01-02

    申请号:CN200510080339.8

    申请日:2005-07-01

    Abstract: 本发明公开了一种二进制翻译中库函数调用的处理方法,尽可能地对源X86二进制程序中的库函数调用进行识别和提升;对于可包装库函数,用目标机本地的约定进行传参和返回值处理,这样省去了对X86参数压栈和从堆栈中取返回值的模拟,避免了频繁的内存操作,使用本地的库函数,也不会因为翻译PLT、fixup函数、库函数的源二进制代码造成代码膨胀导致的性能损失,提高了程序执行的效率;对于PLT短路库函数,虽然继续维护X86模拟堆栈,但是控制流不进入PLT和动态链接器的fixup函数,即不翻译PLT和动态链接器的fixup函数的源二进制代码,避免了因为翻译PLT、fixup函数造成代码膨胀导致的性能损失,控制流直接进入库函数的本地码,也能够较好地提高程序执行的效率。

Patent Agency Ranking