CN104166633B - 用于存储器访问保护的方法和系统 - Google Patents

用于存储器访问保护的方法和系统 Download PDF

Info

Publication number
CN104166633B
CN104166633B CN201410204214.0A CN201410204214A CN104166633B CN 104166633 B CN104166633 B CN 104166633B CN 201410204214 A CN201410204214 A CN 201410204214A CN 104166633 B CN104166633 B CN 104166633B
Authority
CN
China
Prior art keywords
code
address
compiled
entry
vacancy
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.)
Expired - Fee Related
Application number
CN201410204214.0A
Other languages
English (en)
Other versions
CN104166633A (zh
Inventor
黄海涛
范晔
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Kaiwei International Co
Marvell International Ltd
Marvell Asia Pte Ltd
Original Assignee
Mawier International Trade Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Mawier International Trade Co Ltd filed Critical Mawier International Trade Co Ltd
Publication of CN104166633A publication Critical patent/CN104166633A/zh
Application granted granted Critical
Publication of CN104166633B publication Critical patent/CN104166633B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/073Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a memory management context, e.g. virtual memory or cache management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0793Remedial or corrective actions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • G06F9/45516Runtime code conversion or optimisation
    • G06F9/4552Involving translation to a different instruction set architecture, e.g. just-in-time translation in a JVM

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Software Systems (AREA)
  • Devices For Executing Special Programs (AREA)
  • Mathematical Physics (AREA)
  • Computer Security & Cryptography (AREA)

Abstract

本公开的各方面提供了用于存储器访问保护的方法和系统,具体地提供了一种用于空地址处理的方法。该方法包括在不在存储器访问码之前添加空校验码的情况下编译代码,与用于空地址的处理代码的第二地址相关联地存储存储器访问码的第一地址,响应于在编译代码的执行期间在第一地址处发生异常,基于存储信息来确定第二地址,以及执行第二地址处的处理代码。

Description

用于存储器访问保护的方法和系统
通过引用结合
本公开要求2013年5月16日提交的美国临时申请号61/824,121、“Method forDelaying Null Check in Java VM”的优先权,其过引用结合被整体地通到本文中。
技术领域
本申请涉及存储器领域,具体地,涉及用于用于存储器访问保护的方法和系统。
背景技术
在此提供的背景描述是出于一般地呈现本公开的背景的目的。目前署名的发明人的工作在其在本背景技术章节以及另外在提交时可能不会有资格作为现有技术的本描述的各方面中被描述的程度上,既然未明示地也未隐含地被承认为针对本公开的现有技术。
一般地,诸如Dalvik等java虚拟机将频繁使用的Java字节码编译成本地代码(native code)以改善运行时性能。在本地代码中,在存储器访问之前执行空校验(nullcheck)。在示例中,在访问对象之前,本地代码包括空校验码以检查对对象的参考是否是空的。当参考不是空的时,使用该参考来访问对象。
发明内容
本公开的各方面提供了一种用于空地址处理的方法。该方法包括:在不在存储器访问码之前添加空校验码的情况下编译代码,与用于空地址的处理代码的第二地址相关联地存储存储器访问码的第一地址,响应于在已编译代码的执行期间在第一地址处发生异常而基于存储信息来确定第二地址,以及执行第二地址处的处理代码。
为了与用于空地址的处理代码的第二地址相关联地存储存储器访问码的第一地址,在一个实施方式中,该方法包括:与第二地址相关联地将第一地址存储在表格中。此外,该方法包括:在表中搜索所述第一地址;以及输出与第一地址相关联地存储的第二地址。本公开的各方面提供了一种存储用于促使处理器执行用于空地址处理的操作的程序指令的非瞬态计算机可读介质。该操作包括:在不在存储器访问码之前添加空校验码的情况下编译代码,与用于空地址的处理代码的第二地址相关联地存储存储器访问码的第一地址,响应于在编译代码的执行期间在第一地址处发生异常而基于存储信息来确定第二地址,以及执行第二地址的处理代码。
本公开的各方面提供了另一方法。该方法包括由Java虚拟机在不在存储器访问码之前添加空校验码的情况下编译代码,与用于空地址的处理代码的第二地址相关联地存储存储器访问码的第一地址,响应于在已编译代码的执行期间在第一地址处发生异常而退出Java虚拟机,以使得内核基于存储信息来确定第二地址,并用所确定地址返回Java虚拟机以执行第二地址处的处理代码。
附图说明
将参考以下各图详细地描述作为示例而提出的本公开的各种实施方式,其中,相同的附图标记参考相同的元件,并且在所述附图中:
图1示出了根据本公开的实施方式的系统示例100的框图;
图2示出了概述根据本公开的实施方式的编译过程200的流程图;
图3示出了概述本公开的实施方式的用于空地址处理的过程300的流程图;
图4A-4C示出了根据本公开的实施方式的代码示例;以及
图5示出了根据本公开的实施方式的用于内核的伪代码示例500。
具体实施方式
图1示出了根据本公开的实施方式的系统示例100的框图。系统100包括诸如处理模块110、存储器模块120等硬件部件,以及诸如存储于存储器模块120中的各种代码指令的软件部件。硬件部件根据软件部件进行操作以执行各种任务。
系统100可以是任何适当系统,诸如台式计算机、膝上型计算机、平板计算机、智能电话等。系统100可以包括其他适当部件(未示出),诸如显示器、触摸屏、扩音器、通信部件等。在实施方式中,系统100包括单个集成电路(IC)芯片,其在单个IC芯片上集成了诸如处理模块110、存储器模块120等各种电路。在另一实施方式中,系统100包括多个IC芯片,诸如处理器芯片、存储器芯片等。
处理模块110包括一个或多个处理器,诸如中央处理单元(CPU)111等,以执行各种代码指令以执行各种任务。代码指令可以是能够被CPU111直接地执行的低级代码,诸如机器代码(本地代码),或者可以是能够被翻译成机器代码且然后执行的高级代码,诸如在Java语言中、在C语言中等。
能够使用任何适当架构来实现CPU111,诸如x86、ARM等。在示例中,当CPU111具有x86架构时,CPU111能够执行对于x86架构而言特定的x86指令集中的机器代码。在另一示例中,当CPU111具有ARM架构,CPU111能够执行对于ARM架构而言特定的ARM指令集中的机器代码。
存储器模块120包括为各种存储需要提供存储空间的一个或多个存储介质。在示例中,存储器模块120存储将被处理模块110执行的代码指令并存储将被处理模块110处理的数据。在另一示例中,存储器模块120包括为系统存储分配的存储空间,并且包括为用户存储分配的存储空间。
存储介质包括但不限于硬盘驱动器、光盘、固态驱动器、只读存储器(ROM)、动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)、闪速存储器等。
根据本公开的一方面,存储器模块120存储各种计算机程序,诸如系统程序、应用程序等。每个计算机程序包括将被执行的用于执行任务的代码指令。在图1示例中,在存储器模块120中分配存储空间130以存储用于内核的程序。该内核是使用户应用程序与系统100的硬件部件对接的用于系统100的操作系统的一部分。例如,内核管理来自诸如用户应用程序等的软件部件的输入/输出请求,并将其翻译成数据处理指令以用于硬件部件,该硬件部件诸如处理模块110、存储器模块120等。
此外,在图1示例中,在存储器模块120中分配存储空间140以存储适合于系统100的Java软件程序。Java软件程序被安装在系统100中以提供Java运行时环境(JRE),使得能够在系统100中执行Java字节码。在示例中,执行Java软件程序以启动系统100中的Java虚拟机以执行Java字节码。在示例中,系统100是安卓系统,并且存储空间140存储用于安卓系统的Dalvik软件程序。
在一个实施方式中,用Java语言来生成用户应用程序的源代码。源代码被编译而生成用于应用程序的Java字节码。Java字节码可由各种Java虚拟机执行。在图1示例中,分配存储空间150以存储用于用户应用程序的Java字节码。为了执行Java字节码,系统100启动Java虚拟机。Java虚拟机为Java字节码提供Java运行时环境。在执行Java字节码之后,在本示例中终止Java虚拟机。
根据本公开的一方面,Java虚拟机将解释和及时(JIT)编译用于Java字节码执行。在示例中,Java虚拟机检测Java字节码中的频繁执行轨迹,诸如路径、环路等,并以与不那么频繁执行的轨迹不同的方式来执行频繁执行轨迹。例如,Java虚拟机跟踪用于轨迹的执行的数目。当用于轨迹的执行数目小于阈值(例如,2)时,Java虚拟机通过解释来执行轨迹;并且当用于轨迹的执行数目等于或大于该阈值时,Java虚拟机使用JIT编译来将Java字节码的轨迹编译成本地代码的轨迹,并将本地代码的轨迹高速缓存在存储器模块120中。在图1示例中,存储空间155被分配为JIT高速缓存器以高速缓存已编译本地代码。然后,针对轨迹的进一步执行,Java虚拟机执行存储在存储空间155处的高速缓存本地代码。
一般地,在Java语言中,使用参考来访问存储器模块120中的对象和阵列成员。为了确保安全的存储器访问,在示例中,Java虚拟机能够在存储器访问码之前添加本地代码中的空校验码,诸如对象访问码、阵列成员访问码等。空校验码检查参考是否是空的,并且代码执行流程根据空校验而分叉。在示例中,当空校验为假(即参考并不是空的)时,Java虚拟机遵循代码序列以执行存储器访问码。当空校验为真(例如,参考是空的)时,Java虚拟机概念代码序列以执行处理空参考情况的空处理代码。
根据本公开的一方面,添加的空校验码采取额外的时钟循环来执行。另外,由于代码执行流程在空校验码处分叉,所以空校验码是用于指令调度的边界。因此,添加空校验码引起用于代码优化的代码范围减小。
根据本公开的方面,系统100中的Java虚拟机并不在存储器访问码(诸如对象访问码、阵列成员访问码等)之前在本地代码中添加空校验。替代地,Java虚拟机在空地址表中添加条目,诸如存储在存储器模块120中的表格160。该条目与空处理代码的地址相关联地存储存储器访问码的地址。在图1示例中,表160包括用于将存储器访问码的地址存储在本地代码中的第一字段(PC ADDRESS)和用于存储空处理代码的地址的第二字段(NULLHANDLING ADDRESS)。
在操作期间,当用于存储器访问码的参考不是空时,连续地执行本地代码。由于本地代码并不具有空校验码,则节省用于执行空校验码的时钟循环。另外,在由于空校验码而没有调度边界的情况下,可扩大用于代码优化的代码范围。然后,能够优化较大范围的本地代码以进一步改善Java虚拟机性能。
然而,当用于存储器访问码的参考是空或接近于空,则参考指向一般地被保护免于用户访问的系统空间,一般地,系统100退出应用程序,并且进入内核中的异常情况处理功能。根据本公开的一方面,系统100的内核确定空处理代码的地址。然后,系统100在空处理代码的地址处返回应用程序。在实施方式中,系统100的内核例如基于表160根据引起异常情况的存储器访问码的地址(例如,系统100的程序计数器(PC)中的地址),来确定空处理代码的地址。在示例中,内核在表160中搜索存储器访问码的地址。当内核在表160中找到在第一字段中具有存储器访问码的地址的条目时,内核获得存储在条目的第二字段中的空处理代码的地址。然后,系统100在所确定地址处返回应用程序以执行空处理代码。
图2示出了概述根据本公开的实施方式的用于编译的过程示例200的流程图。在图1示例中,采取Java语言的应用程序被翻译成Java字节码,并且该Java字节码被存储在存储器模块120中的存储空间150处。在实施方式中,为了执行Java字节码,系统100执行存储于存储空间140处的Java软件程序以开始Java虚拟机。Java虚拟机提供用于执行Java字节码的Java运行时环境。在示例中,Java虚拟机使用JIT编译来将Java字节码的频繁使用轨迹编译成本地代码,并且Java虚拟机执行已编译本地代码以改善性能。在示例中,Java虚拟机使用过程200来将存储器访问码从Java字节码编译成本地代码。该过程在S201处开始并前进至S210。
在210处,接收存储器访问码以用于编译。在示例中,存储器访问码在频繁使用Java字节码的轨迹中。
在S220处,存储器访问码在不添加空校验的情况下被编译成本地代码。在示例中,系统100中的Java虚拟机将存储器访问码从Java字节码编译成本地代码,而不在本地代码中的存储器访问码之前添加空校验码。
在S230处,与用于在存储器访问码处处理空的空处理代码相关联地存储本地代码中的存储器访问码的地址。在图1示例中,将本地代码中的已编译存储器访问码的地址存储在表160中的条目的第一字段中,并将用于在存储器访问码处的处理空参考的空处理代码的地址存储在条目的第二字段中。然后,过程前进至S240并终止。
应注意的是,能够反复地使用过程200来将Java字节码的频繁使用轨迹中的任何存储器访问码编译成本地代码。
图3示出了概述根据本公开的实施方式的用于运行时间的空地址处理的过程300的流程图。在图1示例中,系统100中的Java虚拟机在不添加空校验的情况下将频繁使用Java字节码编译成本地代码,并且然后执行本地代码。过程300被系统100用来处理空地址情况。该过程在S301处开始并前进至S310。
在S310处,系统在用户模式下执行本地代码。在图1的示例中,当系统100执行用于用户应用程序的代码、诸如存储在存储空间150处的应用程序时,系统100处于用户模式。此外,在图1示例中,应用程序中的Java字节码的频繁使用轨迹在没有存储在存储空间155处的空校验的情况下编译成本地代码,并且该本地代码在用户模式下被系统100执行。
在S320处,系统响应于针对存储器访问的空参考而退出用户模式。在图1示例中,由于本地代码在存储器访问码前面不包括空校验码,所以当用于存储器访问的参考为空或接近于空时,生成特定信号(例如,SIGSEGV)以向系统100信号通知分段违规,并且系统100退出用户模式,并响应于特定信号而进入地址异常模式。
在S330处,系统确定用于存储器访问码的空处理代码的地址。在图1的示例中,当系统100处于地址异常模式时,在实施方式中,内核针对本地代码中的存储器访问码的地址而搜索表160中的第一字段。当内核找到条目中的匹配时,内核提取该条目的第二字段中的空处理代码的地址。在示例中,表160被存储在为用户存储分配的存储空间,并且该内核使用诸如ioctl()之类的系统调用来访问表160。
在S340处,系统100返回到用户模式以处理空地址。在图1示例中,将程序计数器设置成空处理代码的地址,并且系统100返回至用户模式以执行空处理代码以处理空地址。然后该过程前进至S399并终止。
图4A示出了采取Java语言的应用程序代码410的一部分。应用程序代码410包括对象访问码415。
图4B示出了采取Java字节码的应用程序代码420的一部分。在实施方式中,应用程序代码410被编译成应用程序代码420。应用程序代码420包括对应于图4A中的对象访问码415的对象访问码425。在图1的示例中,应用程序代码420例如被存储在存储空间150处。
图4C示出了采取本地代码的应用程序代码430的一部分。在示例中,Java虚拟机在运行时间将应用程序代码420的频繁使用轨迹编译成应用程序代码430。本地代码中的应用程序代码430包括对应于图4B中的对象访问码425的对象访问码435。应注意的是,应用程序代码430在对象访问码435之前不包括空校验码(例如,cbz指令)。使用图1中的示例,应用程序代码430被存储在例如为JIT高速缓存器分配的存储空间155处。在JIT高速缓存器中的地址(例如,0x46692012)处高速缓存对象访问码435。应注意的是应用程序代码430包括空处理代码445,其在JIT高速缓存器中的地址(例如,0x46692044)处开始以处理对象访问码435处的空地址。
根据本公开的一方面,与空处理代码445的地址相关联地存储对象访问码435的地址。在示例中,在编译时,对象访问码435的地址被存储在表160的条目中的第一字段中,并且空处理代码445的地址被存储在条目的第二字段中,如图1中所示。
图5示出了根据本公开的某些实施方式的Linux内核的伪代码示例500。在示例中,在系统100中使用Linux内核。Linux内核包括当存储器访问码触发异常情况时被调用的函数“_do_user_fault”。例如,响应于特定信号SIGSEGV而调用该函数。
根据伪代码500,该函数检查触发异常情况的存储器访问码的地址是否在诸如表160之类的空地址表中。当该地址在空地址表中时,程序计数器变成与存储器访问码的地址相关联地存储的空处理代码的地址。然后,该函数返回至用户模式。
虽然已结合作为示例而提出的本公开的特定实施方式描述了本公开的各方面,但可对示例进行替换、修改以及变更。相应的,如在本文中所阐述的实施方式意图是说明性而非限制性的。在不脱离下面阐述的权利要求的范围的情况下,存在可实现的变更。

Claims (17)

1.一种用于空地址处理的方法,所述方法包括:
在不在本地代码中的用于访问存储器的码之前添加空校验码的情况下编译代码,以生成所述本地代码并生成表中的条目,所述表包括所述码的第一地址和与在所述第一地址处访问所述存储器相关联的空处理代码的第二地址;
响应于在已编译的所述代码的执行期间在所述第一地址处发生异常,基于所述表中的所述条目来确定所述第二地址;以及
执行所述第二地址处的所述空处理代码。
2.根据权利要求1所述的方法,其中,响应于在已编译的所述代码的所述执行期间在所述第一地址处发生异常,基于所述表中的所述条目来确定所述第二地址还包括:
在所述表中搜索所述第一地址;以及
输出与所述第一地址相关联地存储的所述第二地址。
3.根据权利要求1所述的方法,其中,响应于在已编译的所述代码的所述执行期间在所述第一地址处发生异常,基于所述表中的所述条目来确定所述第二地址还包括:
由内核来确定与所述第一地址相关联的所述第二地址。
4.根据权利要求1所述的方法,其中,在不在所述码之前添加空校验码的情况下编译所述代码还包括以下中的至少一个:
在不在阵列成员访问码之前添加所述空校验码的情况下编译所述代码;以及
在不在对象访问码之前添加所述空校验码的情况下编译所述代码。
5.根据权利要求1所述的方法,其中,在不在所述码之前添加所述空校验码的情况下编译所述代码还包括:
由Java虚拟机在不在所述码之前添加所述空校验码的情况下编译所述代码。
6.根据权利要求5所述的方法,其中,与用于所述空地址的所述空处理代码的所述第二地址相关联地存储所述码的所述第一地址还包括:
由所述Java虚拟机来与用于所述空地址的所述空处理代码的所述第二地址相关联地存储所述码的所述第一地址。
7.根据权利要求6所述的方法,其中,响应于在已编译的所述代码的所述执行期间在所述第一地址处发生异常,基于所述表中的所述条目来确定所述第二地址还包括:
由内核来确定与所述第一地址相关联的所述第二地址。
8.根据权利要求7所述的方法,其中,执行所述第二地址处的所述空处理代码还包括:
返回到所述Java虚拟机以执行所述第二地址处的所述空处理代码。
9.一种存储用于促使处理器执行用于空地址处理的操作的程序指令的非瞬态计算机可读介质,所述操作包括:
在不在本地代码中的用于访问存储器的码之前添加空校验码的情况下编译代码,以生成所述本地代码并生成表中的条目,所述表包括所述码的第一地址和与在所述第一地址处访问所述存储器相关联的空处理代码的第二地址;
响应于在已编译的所述代码的执行期间在所述第一地址处发生异常,基于所述表中的所述条目来确定所述第二地址;以及
执行所述第二地址处的所述空处理代码。
10.根据权利要求9所述的非瞬态计算机可读介质,其中,响应于在已编译的所述代码的所述执行期间在所述第一地址处发生异常,基于所述表中的所述条目来确定所述第二地址的所述操作还包括:
在所述表中搜索所述第一地址;以及
输出与所述第一地址相关联地存储的所述第二地址。
11.根据权利要求9所述的非瞬态计算机可读介质,其中,响应于在已编译的所述代码的所述执行期间在所述第一地址处发生异常,基于所述表中的所述条目来确定所述第二地址的所述操作还包括:
由内核来确定与所述第一地址相关联的所述第二地址。
12.根据权利要求9所述的非瞬态计算机可读介质,其中,在不在所述码之前添加所述空校验码的情况下编译所述代码的所述操作还包括以下中的至少一个:
在不在阵列成员访问码之前添加所述空校验码的情况下编译所述代码;以及
在不在对象访问码之前添加所述空校验码的情况下编译所述代码。
13.根据权利要求9所述的非瞬态计算机可读介质,其中,在不在所述码之前添加所述空校验码的情况下编译所述代码的所述操作还包括:
由Java虚拟机在不在所述码之前添加所述空校验码的情况下编译所述代码。
14.根据权利要求13所述的非瞬态计算机可读介质,其中,与用于所述空地址的所述空处理代码的所述第二地址相关联地存储所述码的所述第一地址的所述操作还包括:
由所述Java虚拟机来与用于所述空地址的所述空处理代码的所述第二地址相关联地存储所述码的所述第一地址。
15.根据权利要求14所述的非瞬态计算机可读介质,其中,响应于在已编译的所述代码的所述执行期间在所述第一地址处发生异常,基于所述表中的所述条目来确定所述第二地址的所述操作还包括:
由内核来确定与所述第一地址相关联的所述第二地址。
16.根据权利要求15所述的非瞬态计算机可读介质,其中,执行所述第二地址处的所述空处理代码的所述操作还包括:
返回到所述Java虚拟机以执行所述第二地址处的所述空处理代码。
17.一种用于空地址处理的方法,包括:
由Java虚拟机在不在本地代码中的用于访问存储器的码之前添加空校验码的情况下编译代码,以生成所述本地代码并生成表中的条目,所述表包括所述码的第一地址和与在所述第一地址处访问存储器相关联的空处理代码的第二地址;
响应于在已编译的所述代码的执行期间在所述第一地址处发生异常,退出所述Java虚拟机以使得内核基于所述表中的所述条目来确定所述第二地址;以及
用确定的所述第二地址返回至Java虚拟机以执行所述第二地址处的所述空处理代码。
CN201410204214.0A 2013-05-16 2014-05-14 用于存储器访问保护的方法和系统 Expired - Fee Related CN104166633B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US201361824121P 2013-05-16 2013-05-16
US61/824,121 2013-05-16

Publications (2)

Publication Number Publication Date
CN104166633A CN104166633A (zh) 2014-11-26
CN104166633B true CN104166633B (zh) 2019-06-25

Family

ID=51896766

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410204214.0A Expired - Fee Related CN104166633B (zh) 2013-05-16 2014-05-14 用于存储器访问保护的方法和系统

Country Status (2)

Country Link
US (1) US9747146B2 (zh)
CN (1) CN104166633B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10929160B1 (en) * 2018-12-12 2021-02-23 The Mathworks, Inc. Composite-trace just-in-time compilation

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1790268A (zh) * 2004-12-14 2006-06-21 艾克斯麦提克方案私人有限公司 通过散列技术的编译时间链接
US8307432B1 (en) * 2008-10-07 2012-11-06 Trend Micro Incorporated Generic shellcode detection

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7802080B2 (en) * 2004-03-24 2010-09-21 Arm Limited Null exception handling
US7448029B2 (en) * 2004-04-26 2008-11-04 International Business Machines Corporation Modification of array access checking in AIX
US7752424B2 (en) * 2007-08-08 2010-07-06 Arm Limited Null value checking instruction

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1790268A (zh) * 2004-12-14 2006-06-21 艾克斯麦提克方案私人有限公司 通过散列技术的编译时间链接
US8307432B1 (en) * 2008-10-07 2012-11-06 Trend Micro Incorporated Generic shellcode detection

Also Published As

Publication number Publication date
CN104166633A (zh) 2014-11-26
US20140344543A1 (en) 2014-11-20
US9747146B2 (en) 2017-08-29

Similar Documents

Publication Publication Date Title
US8990786B2 (en) Program optimizing apparatus, program optimizing method, and program optimizing article of manufacture
US10474369B2 (en) Mapping guest pages to disk blocks to improve virtual machine management processes
JP7483950B2 (ja) バイナリ変換を実行するためのシステム及び方法
US9201635B2 (en) Just-in-time dynamic translation for translation, compilation, and execution of non-native instructions
TWI612439B (zh) 用以偵測未經授權之記憶體存取的計算裝置、方法及機器可讀儲存媒體
US20180189168A1 (en) Test automation using multiple programming languages
US9323508B2 (en) Method and system for compiler optimization
US9213563B2 (en) Implementing a jump instruction in a dynamic translator that uses instruction code translation and just-in-time compilation
CN105723348A (zh) 使用事务性存储器检测未授权存储器修改及访问
US9904581B2 (en) System, method, program, and code generation unit
US9529610B2 (en) Updating compiled native instruction paths
US9524178B2 (en) Defining an instruction path to be compiled by a just-in-time (JIT) compiler
US10346310B2 (en) Cache block apparatus and methods
US8893100B2 (en) Return address optimisation for a dynamic code translator
KR20140091747A (ko) 트랜잭션을 지원하는 컴퓨터 아키텍처에서 코드 특수화에 대한 예외를 사용하는 방법 및 시스템
US20170228315A1 (en) Execution using multiple page tables
EP3049921A1 (en) Methods and apparatus to validate translated guest code in a dynamic binary translator
US20140298340A1 (en) Virtual machine system, virtualization mechanism, and data management method
US8261251B2 (en) Modification of array access checking in AIX
US9183018B2 (en) Dynamic on/off just-in-time compilation in a dynamic translator using instruction code translation
CN104166633B (zh) 用于存储器访问保护的方法和系统
US20170351617A1 (en) Information processing device, information processing method, and non-transitory computer-readable recording medium storing information processing program
US11144329B2 (en) Processor microcode with embedded jump table
US20150186168A1 (en) Dedicating processing resources to just-in-time compilers and instruction processors in a dynamic translator
KR20230161466A (ko) 오프로드된 동작에서의 실행 위험 검출

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20200427

Address after: Ford street, Grand Cayman, Cayman Islands

Patentee after: Kaiwei international Co.

Address before: Hamilton, Bermuda

Patentee before: Marvell International Ltd.

Effective date of registration: 20200427

Address after: Singapore City

Patentee after: Marvell Asia Pte. Ltd.

Address before: Ford street, Grand Cayman, Cayman Islands

Patentee before: Kaiwei international Co.

Effective date of registration: 20200427

Address after: Hamilton, Bermuda

Patentee after: Marvell International Ltd.

Address before: Babado J San Mega Le

Patentee before: MARVELL WORLD TRADE Ltd.

CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20190625