CN101558382A - 关于程序代码转换的管理进程文件系统的方法及设备 - Google Patents
关于程序代码转换的管理进程文件系统的方法及设备 Download PDFInfo
- Publication number
- CN101558382A CN101558382A CNA2007800367377A CN200780036737A CN101558382A CN 101558382 A CN101558382 A CN 101558382A CN A2007800367377 A CNA2007800367377 A CN A2007800367377A CN 200780036737 A CN200780036737 A CN 200780036737A CN 101558382 A CN101558382 A CN 101558382A
- Authority
- CN
- China
- Prior art keywords
- translator
- data structure
- information
- subject
- code
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
- G06F9/45516—Runtime code conversion or optimisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45537—Provision of facilities of other operating environments, e.g. WINE
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
一种在动态二元转换器中将主体代码转换成目标代码期间管理对主体进程文件系统的引用的技术。由转换器接收在主体处理器上执行的主体代码,并且产生在目标处理器上执行的对应的目标代码。转换器配置成建立、填充及维持进程数据结构,以便能由转换器产生代码,在转换器中有效地处置对主体进程文件系统的主体引用。
Description
技术领域
本发明主要涉及计算机及计算机软件的领域,更具体地讲,涉及可用在例如转换引用进程文件系统的程序代码的代码转换器、仿真器及加速器中的程序代码转换方法及设备。
背景技术
在整个嵌入式及非嵌入式CPU市场中常见的有指令集架构(ISA),其含有多种软件,能被“加速”以提高性能或被“转换”至各种可能的处理器以提供更好的成本/性能效益,只要这些处理器能够透明地存取相关的软件即可。然而,目前主要的CPU架构在时间上锁定其ISA而无法提高性能与扩大市场,因此“合成CPU”的共同架构会有帮助。
常希望能将针对第一类型的计算机处理器(“主体”(subject)处理器)而写的程序代码在第二类型的处理器(“目标”处理器)上运行。于此,仿真器或转换器用来执行程序代码的转换,使得主体程序可在目标处理器上运行。第WO00/22521号PCT申请揭露程序代码转换方法及设备以促进此类加速、转换及共同架构的能力,这些将为本发明的实施例所利用。
在某些操作系统中,特别包括类似Unix的操作系统,会提供进程文件系统。可由一个进程使用进程文件系统以存取关于其它进程及关于处理器所提供的硬件环境的信息。例如,来自太阳微系统公司(Sun Microsystems Inc.)的所罗斯(Solaris)操作系统提供进程文件系统,其包含在称为/proc的目录中的虚拟文件系统。在进程运行时由操作系统动态建立/proc的内容与结构,通常为每一个现存的进程产生并维持一个子目录。
提供如上所述的进程文件系统可能会使程序代码转换复杂化。举三个明显的例子。第一,若目标操作系统不提供进程文件系统,但主体代码引用进程文件系统,则会有固有不兼容性。
第二,若目标操作系统确实提供进程文件系统,其配置与操作仍可能会与主体代码所引用的进程文件系统不兼容。
第三,若目标操作系统确实提供兼容的进程文件系统,则可能难以区分转换器进程与目标进程文件系统中的其它进程。
允许关于主体进程的信息整合至目标操作系统的进程文件系统的一种作法是变更目标处理器的操作系统。变更目标操作系统可改变目标进程文件系统建构与管理的方式,并且通过建立内核(kernel)模块并将其插入至目标操作系统中来实现,或通过直接变更目标操作系统的源代码来实现。然而,变更目标操作系统是难度很高的工作,且可能使目标操作系统变得不稳定。
提供关于主体程序代码的转换管理进程文件系统的方法。可配置能将主体代码转换为目标代码的转换器,而得以识别出主体程序中对主体进程文件系统的引用,并产生目标代码。所产生的目标代码能使转换器以与主体处理器的预期行为一致的方式引用并提供进程信息。
本发明的优选实施例使转换器能方便地管理主体进程信息,而不需变更目标操作系统。这可避免目标操作系统的不稳定,并允许转换器在转换期间正确地处理潜在不稳定的主体进程的行为。
本发明可由此改善进行程序代码转换时的性能。
发明内容
根据本发明,提供在权利要求中所提出的设备及方法。根据从属权利要求以及以下描述,本发明的优选特征将会清楚。
在一个示例性方面中,提供一种计算机设备,包含:目标处理器以及转换器进程,响应于接收的在主体处理器上执行的主体代码指令建立该转换器进程;其中,该转换器进程配置成:(a)以有关建立的转换器进程的信息填充进程数据结构,以及(b)响应于接收的主体代码中对主体进程文件系统中的信息的引用而引用步骤(a)的进程数据结构。
该转换器进程可配置成响应于接收的各主体代码指令建立另外的转换器进程,其中,当在主体处理器上执行该主体代码指令时,该主体代码指令将建立主体进程。多个转换器进程的各转换器进程可填充及引用共同的进程数据结构。进程数据结构适当地包含下列之一或两者:(a)各转换器进程可访问的目录,以及(b)各转换器进程可访问的共享的内存区域。该计算机设备可进一步包含审核器,所述审核器配置成检查其信息存在于进程数据结构中的转换器进程的状态,并从该进程数据结构移除关于不再运行的转换器进程的信息。
在另一示例性方面中,提供一种关于程序代码转换的管理进程文件系统的方法,该程序代码转换将在主体处理器上执行的主体代码转换成在目标处理器上执行的目标代码,该方法包含下列步骤:(a)响应于接收的主体代码指令建立转换器进程,其中,当在主体处理器上执行该主体代码指令时,该主体代码指令将建立主体进程;(b)以关于响应于接收的主体代码而建立的一个或多个转换器进程的信息填充转换器进程可访问的进程数据结构;以及(c)响应于在接收的主体代码中对主体进程文件系统中的信息的引用而引用步骤(b)中填充的数据结构。
该方法可进一步包含下列步骤:检查其信息存储于该进程数据结构中的进程的状态,以及从该进程数据结构移除关于不再运行的转换器进程的信息,例如,周期性地执行检查其信息存储于该数据结构中的进程的状态。该方法可进一步包含下列步骤:(d)通过记录已对进程数据结构中的信息作出引用的转换器进程的识别符并记录其信息已被引用的转换器进程的识别符,来记录该引用。该方法可进一步包含下列步骤:当其信息被引用的转换器进程不再运行时从该进程数据结构移除于步骤(d)所记录的数据。
在另一方面中,提供一种计算机可读介质,其上记录有可由计算机实施以执行关于从在主体处理器上执行的主体代码转换成在目标处理器上执行的目标代码的程序代码转换的管理进程文件系统的方法的指令,该方法包含下列步骤:(a)响应于接收的主体代码指令建立转换器进程,其中,当在主体处理器上执行该主体代码指令时,该主体代码指令将建立主体进程;(b)以关于响应于接收的主体代码而建立的一个或多个转换器进程的信息填充转换器进程可访问的进程数据结构;以及(c)响应于在接收的主体代码中对主体进程文件系统中的信息的引用而引用步骤(b)中填充的数据结构。
在另一方面中,提供一种转换器设备,配置成接收在主体处理器上执行的主体代码以及产生在目标处理器上执行的目标代码;其中,该转换器配置成:(a)以关于响应于接收的主体代码而建立的一个或多个转换器进程的信息填充进程数据结构,以及(b)响应于在接收的主体代码中对主体进程文件系统中的信息的引用而引用步骤(a)的进程数据结构。
提供依照根据本发明的用于程序代码转换的改良架构的各种实施例可实现的各种方面及优点的总结,作为帮助本领域技术人员更迅速理解本发明的详细讨论的介绍,因此并不意图以任何方式限制权利要求的范畴。
附图说明
包含在此说明书中并构成说明书的一部分的附图示出目前较佳实施例,并如下描述:
图1为示出本发明实施例可应用于其中的设备的方框图;
图2为本发明实施例所利用的转换器单元的示意图;
图3为示出本发明实施例所利用的设备的方框图;
图4为示出本发明示例实施例所利用的通讯信道的示意图;以及
图5为示出根据本发明示例实施例的管理进程文件系统的方法的示意图。
具体实施方式
提供下列说明以使本领域技术人员得以制造并使用本发明,并且提出发明人认为最佳的实施本发明的模式。然而,对本领域技术人员而言各种变更是显而易见的,因为已在此特别限定了本发明的主要原则以提供改善的程序代码转换方法和设备。
参照图1,主体程序17意图在具有主体处理器3的主体运算平台1上执行。然而,目标运算平台10用来经由执行程序代码转换的转换器单元19执行主体程序17。转换器单元19执行从主体代码17至目标代码21的代码转换,使得目标代码21可在目标运算平台10上执行。
如本领域技术人员所熟悉地,主体处理器3具有一组主体寄存器5。主体内存8保持主体代码17及主体操作系统2等等。类似地,图1的示例目标运算平台10包含具有多个目标寄存器15的目标处理器13以及内存18,该内存18存储多个运算组件,包括目标操作系统20、主体代码17、转换器代码19及转换的目标代码21。目标运算平台10通常为应用微处理器之计算机或其它适合的计算机。
在一个实施例中,转换器代码19为最佳化或非最佳化地将一个主体指令集架构(ISA)的主体代码转换成另一ISA的转换的目标代码的仿真器。在另一实施例中,转换器19作为加速器,用于执行程序代码最佳化而将主体代码转换成目标代码。
转换器代码19为实现转换器的源代码的适当编译的版本,并与操作系统20一同在目标处理器13上运行。可理解到图1中所示的结构仅为示例性的,例如,根据实施例的软件、方法及进程可以以驻留在操作系统20之内或之下的代码来实现。主体代码17、转换器代码19、操作系统20及内存18的存储机制可以为本领域技术人员已知的任何类型。
在根据图1的设备中,在运行期间,动态执行程序代码转换,以在目标代码21运行的同时在目标架构10上执行。即,转换器19与转换的目标代码21并行运行。经过转换器19运行目标代码17会涉及以交错的方式执行的两种不同的代码:转换器代码19及目标代码21。因此,根据存储的转换的程序的主体代码17,在运行期间由转换器代码19来产生目标代码21。
在一个实施例中,转换器单元19仿真主体架构1的相关部分,如主体处理器3,尤其是主体寄存器5,同时实际上在目标处理器13上将主体程序17作为目标代码21执行。在该优选实施例中,提供至少一个全局寄存器库27(亦称为全局寄存器组27或抽象寄存器组27)。在多处理器环境中,根据主体处理器的架构可随意提供多个的抽象寄存器组27。由转换器19及目标代码21的组件来提供主体状态的表示。即,转换器19在各种明确的编程语言装置(如变量及/或对象)中存储主体状态。相反地,转换的目标代码21在目标寄存器15及内存位置18(它们由目标代码21的目标指令操纵)中隐含地提供主体处理器状态。例如,全局寄存器库27的低级表示仅为分配的内存区域。然而,在转换器19的源代码中,全局寄存器库27为可以以较高级存取并操纵的数据数组或对象。
术语“基本块”为本领域技术人员所知。基本块为具有确切进入点与确切离开点的一段代码,其将块代码限制于单一控制路径。因此,基本块为控制流的有效基础单位。适当地,转换器19将主体代码17分成多个基本块,其中各基本块为在单一进入点的第一个指令到单一离开点的最后一个指令(如跳转、调用或分支指令)之间的顺序指令集。转换器19可选择这些基本块之一(块模式)或选择一组基本块(组块模式)。组块适当地包含被视为单个单位的两个或更多个基本块。此外,转换器可形成等同块(iso-blocks),其表示相同的主体代码的基本块,但进入条件不同。
在优选实施例中,根据主体指令序列产生中间表示(IR)树,作为从原始主体程序17产生目标代码21的进程的一部分。IR树为主体程序所计算的表达及执行的操作的抽象表示。之后,根据IR树产生目标代码21。IR节点的集合实际上为有向无环图(DAG),但常俗称为“树”。
如本领域技术人员可理解地,在一个实施例中,使用如C++的面向对象的编程语言来实现转换器19。例如,将IR节点实现为C++对象,将对其它节点的引用实现为对与那些其它节点相应的C++对象的C++引用。因此,将IR树实现为IR节点对象的集合,含有各种相互的引用。
此外,在目前所讨论的实施例中,IR产生使用一组抽象寄存器定义,其对应于主体程序17意图于其上运行的主体架构的特定特征。例如,对于主体架构上的各物理寄存器(即图1的物理寄存器5)存在唯一的抽象寄存器定义。因此,转换器中的抽象寄存器定义可实现为含有对IR节点对象(即IR树)的引用的C++对象。所述一组抽象寄存器定义引用的所有IR树的集合称为工作IR森林(因为“森林”含有多个抽象寄存器根,每个根引用一个IR树)。这些IR树及其它进程适当地形成转换器19的一部分。
图2更详细描绘在目标运算平台10上运行时的转换器19。如上所述,转换器19的前端包括解码器单元191,其对主体程序17目前所需的区段解码,以提供多个主体代码块171a、171b、171c(通常每个主体代码块含有主体代码的一个基本块),并且还可提供与各主体块及其中所含的主体指令有关的解码器信息172,其将协助转换器19的后续操作。在一些实施例中,在转换器19的核心中的IR单元192从解码的主体指令产生中间表示(IR),并可执行与中间表示有关的最佳化。作为转换器19后端一部分的编码器193产生(植入)可由目标处理器13执行的目标代码21。在此简单的示例中,产生三个目标代码块211a至211c,以在目标平台10上执行与在主体平台1上执行主体代码块171a至171c等效的工作。并且,编码器193可针对一些或全部的目标代码块211a至211c产生头部代码和/或尾部代码212,代码212执行例如设定目标块将操作于其中的环境以及适当时将控制传送给转换器19的功能。
图3为描绘本发明实施例所利用的设备的更详细的示意图。在图3中所示的示例中,转换器19配置成执行Solaris至Linux的转换。然而,将于后详述,本发明还可用在针对最佳化与加速的目的而执行的转换,例如从Linux至Linux或Solaris至Solaris的转换。
在图3中所示的Solaris至Linux的实施例中,目标处理器13包含进程文件系统20a作为目标操作系统20的一部分,但将于后详述,在主体代码17对进程文件系统进行引用时并非绝对或的确一般地使用目标处理器13的进程文件系统20a。
主体代码17包含第一主体可执行文件17a,其可转换成第一目标代码21a。第一主体可执行文件17a含有若在主体处理器上执行则建立至少一个进程的指令。当第一转换器进程19a遇到主体可执行文件17a中的建立进程的指令时,在转换器进程19a可访问的进程数据结构190中产生相应的条目。
主体代码17可含当在主体处理器执行时会建立多于一个进程的指令。图3还显示可第二转换器进程19b。第二转换器进程19b用于将第二主体可执行文件17b转换成目标代码21b。
可在转换器进程工作之前通过主体代码的第一块初始化进程数据结构190,或替代地当在主体代码的第一块中遇到第一主体代码指令时初始化进程数据结构190。
在示例实施例中,进程数据结构190包含可访问在目标处理器13上运行的转换器进程的目录。在其它示例实施例中,进程数据结构190可包含可访问在目标处理器13上运行的转换器进程的共享内存区域。进程数据结构190含有进程识别符。
转换器进程配置成识别主体代码17中与主体进程文件系统有关的特定指令,并且仿真将由主体进程文件系统提供的所需功能。转换器进程使用进程数据结构190来实现上述处理。
例如,主体可执行文件17a可请求在主体进程文件系统中具有条目的进程的细节。当主体代码在主体处理器上运行时,该请求通常作为引用主体进程文件系统中的信息的前驱被执行。
在主体处理器在Solaris下运行的示例实施例中,主体可执行文件17a可调用函数:
getdents(/proc/)
响应此指令,转换器进程19a配置成从进程数据结构190提供相应的信息。进程数据结构190已被初始化并被填充有与各建立的主体进程有关的信息。例如,转换器进程可建立目录/tmp/pds以包含进程信息,并且各转换器进程可以以用于正被转换的各主体进程的进程识别符的形式向该目录填充进程信息。
为了方便,进程数据结构190可配置成使得存储在进程数据结构中的进程识别符直接对应于主体代码进程识别符。在其它示例实施例中,进程数据结构包含用于各个进程的文件,该文件包含进程识别符以及与该进程有关的信息。
在此示例中的转换器进程19a可接着执行目标函数:
getdents(/tmp/pds),其将从进程数据结构返回相关的进程识别符。
在转换器进程转换Solaris代码以在Linux处理器上运行的当前示例中,转换器进程针对各进程在目录/tmp/pds中建立通讯套接字。为了方便,转换器进程配置成将对应于相关的进程识别符的名字分配给每一个套接字。
一旦获得相关的进程识别符,主体代码17a就可能引用一个进程。例如,转换器进程19a可能会遇到主体指令,例如:
open(/proc/{process_identifier}/ctl)
其中,{process_identifier}为主体可执行文件17a预期运行的进程的识别符。在示例实施例中,{process_identifier}可为由第二转换器进程19b转换的进程的识别符。若例如遇到并如上所述处置先前主体代码getdents(/proc/)指令,则主体代码17可预期运行进程。
转换器进程识别出open(开启)指令与/proc进程文件系统有关,并引用进程数据结构190来处置此指令。然而,在尝试访问进程数据结构190之前,在示例实施例中,转换器进程19a配置成验证将被引用的进程仍在运行中。
转换器进程19a无法控制遇到主体getdents(/proc/)指令以及引用响应于先前getdents(/proc/)指令而提供的信息的主体指令之间的时间段。此外,当遇到引用主体进程的主体指令时,转换器进程19a无法依赖进程数据结构190中识别出的主体进程仍在运行中。
例如,在进程数据结构190中识别出的进程可能在提供其进程识别符之后意外崩溃。因此,在转换器进程19a根据进程数据结构190取得进程识别符列表以及后续使用识别符之间的时间段中,进程识别符列表可能变为过期。
针对在主体代码17中每一个对另一进程的引用,转换器进程还可配置成验证所引用的进程仍在运行中。在示例实施例中,转换器进程19a可通过检查进程数据结构190中的进程的套接字来执行此验证。
延续上述示例,转换器进程19a配置成在继续下一主体指令之前,验证open指令所引用的进程仍在运行中。一旦开启所引用的进程,主体代码就可接着执行另外的工作,如停止进程。此操作的典型主体代码指令为:
write(fd,PCSTOP);其中,fd为识别涉及的进程的文件描述符。
同样地,为使转换器进程19a正确地仿真此主体指令,所涉及的进程必须实际上正在运行中。因此,转换器进程19a配置成再次检查所涉及的进程的状态。若所涉及的进程仍如预期般正在运行,则转换器进程19a可请求转换所涉及的进程的转换器进程执行停止。
在示例实施例中,转换器进程19a请求转换器进程19b来执行停止。
虽然图3中所示的示例实施例包含引用进程数据结构190以控制在第二转换器进程19b下运行的进程的第一转换器进程19a,但可能存在转换器进程引用进程数据结构中与本身有关的数据的情况。例如,进程数据结构可包含关于进程的内存映射的信息,并且转换器可遇到主体指令,例如:
open(/proc/{process_identifier}/map),其中,所涉及的{process_identifier}为自引用。
若在任何时候,转换器实例确定所引用的进程意外停止运行,则转换器进程可返回出错通知。由转换器提供的出错通知可以与当主体程序在主体处理器上本地运行时预期的行为一致。
为了维持进程数据结构190中的信息,转换器进程可配置成审核存在于进程数据结构190中的识别符。此审核可由一个转换器进程代表所有转换器进程来执行,或可由各转换器进程执行以分散审核的工作量。替代地,可由转换器外部的模块来执行审核,该模块操作以维持运行在目标处理器上的所有转换器进程的进程数据结构。此种模块可包含图3中所示的审核器195。
审核器195可识别出在第一转换器进程下运行的进程正引用在第二转换器进程下运行的进程。例如,当第一转换器进程遇到诸如write(fd,PCSTOP)的主体指令时,审核器195记录在第一转换器进程下运行的进程正引用在第二转换器进程下运行的进程。若write(写入)指令经由审核器195传输至第二转换器进程,则可很方便地实现上述处理。便利地,审核器195可将这些引用记录在进程数据结构190中。
可使用如上所述的套接字经由图4中所示的通路便利地传输转换器进程、审核器及进程数据结构之间的讯息。
若所引用的进程仍在运行,则第二转换器进程从第一转换器进程接收讯息,并通知第一转换器进程确认所引用的进程已经正确地停止。也可经由审核器195便利地发送此通知。审核器195可接着删除在第一转换器进程下运行的进程引用在第二转换器进程下运行的进程的记录。此记录的删除帮助转换器进程及审核器正确处理现存的进程及不稳定的进程,将于后详述。
若当接收到引用时所引用的进程正在退出,则第二转换器进程丢弃传入的讯息,并且不依照第一转换器进程的请求来执行停止。然而,第二转换器进程配置成向审核器195通知进程的退出,即,进程将很快停止运行。这使审核器接着执行以下处理:从进程数据结构移除所停止的进程的细节、向第一转换器进程通知所引用的进程已经退出;以及删除在第一转换器进程下运行的进程引用在第二转换器进程下运行的进程的记录。从审核器195传送至第一转换器进程的通知允许第一转换器进程返回正确的出错讯息,向主体代码确认不会执行write指令。
若在任何时间,所引用的进程崩溃,则不会接收到从第一转换器进程所发送的讯息。第一转换器进程不知道所引用的进程已崩溃,并且一直等待来自第二转换器进程的响应。在这种情况中,审核器195可为第一转换器进程解决此问题。审核器195配置成检查在进程之间传送的讯息的记录,并且检查记录在进程数据结构中的进程是否正在运行中。若审核器195检测到进程不再运行,则从进程数据结构移除关于该进程的信息,并且移除第一进程已引用第二进程的记录。审核器195可接着将通知返回到第一转换器进程以确认所引用的进程已不再运行。从审核器195传送给第一转换器进程的通知允许第一转换器进程返回正确的出错讯息,向主体代码确认,因为所引用的进程已不再运行,所以不会执行write指令。
审核器195可配置成周期性地检查进程数据结构中关于已不再运行的进程的讯息的记录,并且移除这些陈旧的记录。审核器195可在进程间已传送特定数量的讯息之后替代地或额外地执行此种检查。
为了帮助进一步了解本发明的实施例,提供图5的示例方法图。在步骤S101,响应于接收的主体代码指令,当该指令在主体处理器上执行时建立转换器进程。在步骤S102,已建立的转换器进程向可访问的进程数据结构填充关于在步骤S101建立的转换器进程的信息。在步骤S103,响应于在接收的主体代码中对主体进程文件系统中的信息的引用,引用在步骤S102所填充的数据结构。
在此所述的示例实施例对于转换器中的程序代码的转换特别有效,其中,主体处理器与目标处理器不同。然而,即使主体处理器与目标处理器在具有兼容的进程文件系统的操作系统下操作,例如当主体操作系统与目标操作系统为相同类型时,仍可能期望转换器进程访问其它转换器进程。
在此所述的示例实施例建立并维持用于转换器进程的进程数据结构,该进程数据结构可使得主体代码中对于主体进程文件系统的引用能被正确地处置。通过在进程数据结构中周期性地检查进程状态并且移除,或者相反地标记那些不再运行的进程,转换器能够正确地处理主体代码中对已经退出或崩溃的进程的引用。
如前述,若将被转换的主体代码含有潜在不稳定的进程,则本发明特别有效。从转换器的角度来看,修改目标操作系统来区分目标进程文件系统中的主体进程及目标进程不能容易地使不稳定的进程被正确地识别和处理。然而,在此所述的示例实施例可便利地解决此问题。
示例实施例利用转换器来识别并处置在程序代码转换期间对主体进程文件系统的引用。转换器提供方便的机制,以辨识并处置主体代码中与主体进程文件系统有关的指令与函数调用。然而,应了解到在其它实施例中,可以以其它方式实现用于识别及处置此种指令与函数调用的机制。例如,目标处理器可设置有变更的系统目录或不执行所有的系统调用。当识别到相关指令时,可利用任何适合的机制来打断主体程序代码的控制流。可接着将控制流转换成适合实行本发明的代码。
除了在此所述的示例实施例之外,还可在分离的模块中实现本发明,如与转换器一起使用的硬件模块等。模块可提供在此描述的与转换器进程有关的功能,但以与执行程序代码转换的单元在逻辑上分离的实体方式存在。如上所述,转换器的实施例对于在目标操作系统及主体操作系统不同的环境中执行程序代码转换特别有效。转换器的实施例也对于为了加速或仿真目的而执行程序代码转换特别有效,例如,通过使用进程数据结构实现从特定操作系统的代码到在相同操作系统下运行但有另外的控制级的程序代码转换。
在此所用的术语“转换器”及“转换器进程”应被解读成涵盖可在代码转换期间操作的相关设备,如仿真器、加速器或解析器。详言之,可使用在此所引用的转换器进程。
本发明的设备及方法的不同特征在上述实施例中的每一个中被分别描述。然而,本发明发明人的全部意图在于,在此所述的各实施例的单独的方面可与在此所述的其它实施例结合。
在此所述的方法关于程序代码转换,并且对于提供主体程序代码至目标代码的动态二元转换的运行期间的转换器特别有效。本发明还延伸至作为配置成执行在此所界定的任何方法的计算机系统的一部分操作的转换器设备。并且,本发明延伸至计算机可读取存储介质,其上记录有计算机可实现以执行在此所界定的任何方法的指令。
本发明的至少一些实施例可单独用专门硬件建构而成,并且在此所用的术语,如“模块”或“单元”可包括,但不限于硬件装置,如执行特定任务的现场可编程门阵列(FPGA)或专用集成电路(ASIC)。替代地,本发明的组件可配置为驻留在可寻址的存储介质上并且配置为在一个或多个处理器上执行。因此,在一些实施例中,本发明的功能组件可包括,诸如软件组件、面向对象的软件组件、类组件和任务组件的组件、进程、函数、属性、过程、子程序、程序代码段、驱动程序、固件、微码、电路、数据、数据库、数据结构、表、数组和变量。此外,虽然已参照在此讨论的组件、模块及单元来描述优选实施例,但是这些功能组件可结合成更少的组件或分成额外的组件。
本领域技术人员将理解到,以上描述的示例实施例的各种应用和修改可在不脱离本发明的范围与精神的情况下来配置。因此,应了解到,在权利要求的范围之内,可以以在此特别描述之外的方式实施本发明。
虽然已显示并描述了一些优选实施例,但是本领域技术人员将理解到,在不脱离权利要求限定的本发明的范围的情况下,可进行各种改变和修改。
需要注意,与本说明书同时提交或者在本说明书之前提交的与本申请相关的并且对公众检阅本说明书公开的所有印刷物和文档,其内容通过引用包含于此。
本说明书(包括权利要求、摘要和附图)中公开的所有特征和/或所公开的任何方法或处理的所有步骤可以按照任何组合方式进行组合,除了其中至少一些这样的特征和/或步骤互相排斥的组合。
本说明书(包括权利要求、摘要和附图)中公开的每一特征可以被起到相同、等同或相似目的的可选特征来替换,除非另外明确地声明。因此,除非另外明确地声明,所公开的每一特征仅是一类等同或相似特征的一个示例。
本发明不限于前述实施例的细节。本发明扩展至本说明书(包括权利要求、摘要和附图)中所公开的特征中的任何新颖的特征或任何新颖的特征组合,或者扩展至所公开的任何方法或处理的步骤中的任何新颖的步骤或任何新颖的步骤组合。
Claims (25)
1、一种计算机设备,包含:
目标处理器;以及
转换器进程,响应于接收的在主体处理器上执行的主体代码指令建立该转换器进程,
其中,该转换器进程配置成:
(a)以有关建立的转换器进程的信息填充进程数据结构;以及
(b)响应于接收的主体代码中对主体进程文件系统中的信息的引用而引用步骤(a)的进程数据结构。
2、如权利要求1所述的计算机设备,其中,该转换器进程配置成响应于接收的各主体代码指令建立另外的转换器进程,其中,当在主体处理器上执行该主体代码指令时,该主体代码指令将建立主体进程。
3、如权利要求2所述的计算机设备,其中,各转换器进程为权利要求1所述的转换器进程。
4、如权利要求3所述的计算机设备,其中,各转换器进程填充并且引用共同的进程数据结构。
5、如权利要求4所述的计算机设备,其中,该进程数据结构包含下列之一或两者:(a)各转换器进程可访问的目录;以及(b)各转换器进程可访问的共享的内存区域。
6、如权利要求1所述的计算机设备,其中,该转换器进程配置成以各转换器进程的进程识别符填充该进程数据结构,该进程识别符分配给响应于接收的主体代码指令在主体处理器上执行时建立的主体进程。
7、如权利要求1所述的计算机设备,进一步包含:审核器,该审核器配置成检查其信息存在于进程数据结构中的转换器进程的状态,并从进程数据结构移除关于不再运行的转换器进程的信息。
8、如权利要求7所述的计算机设备,其中,该审核器配置成周期性地检查其信息存在于进程数据结构中的转换器进程的状态。
9、如权利要求7所述的计算机设备,其中,该审核器包含转换器进程的部分。
10、如权利要求1所述的计算机设备,进一步包含审核器,其中,该审核器配置成:
在进程数据结构中记录对信息已作出的引用。
11、如权利要求10所述的计算机设备,其中,该审核器配置成记录作出引用的转换器进程的识别符、以及信息被引用的转换器进程的关联的识别符。
12、如权利要求11所述的计算机设备,其中,该审核器配置成在进程数据结构中记录所述识别符。
13、如权利要求12所述的计算机设备,其中,该审核器配置成当确定其信息被引用的进程已不再运行时从进程数据结构移除所记录的数据。
14、如权利要求1所述的计算机设备,其中,当转换器进程退出时,该转换器进程从进程数据结构移除关于自身的信息。
15、如权利要求1所述的计算机设备,其中,该目标处理器与用于执行接收的主体代码的主体处理器为相同类型。
16、如权利要求1所述的计算机设备,其中,该转换器进程配置成产生在目标处理器上执行的目标代码指令。
17、一种关于程序代码转换的管理进程文件系统的方法,该程序代码转换将在主体处理器上执行的主体代码转换成在目标处理器上执行的目标代码,该方法包含下列步骤:
(a)响应于接收的主体代码指令建立转换器进程,其中,当在主体处理器上执行该主体代码指令时,该主体代码指令将建立主体进程;
(b)以关于响应于接收的主体代码而建立的一个或多个转换器进程的信息填充转换器进程可访问的进程数据结构;以及
(c)响应于在接收的主体代码中对主体进程文件系统中的信息的引用而引用步骤(b)中填充的数据结构。
18、如权利要求17所述的方法,其中,在步骤(b)中填充的进程数据结构为转换器数据结构。
19、如权利要求17所述的方法,进一步包含下列步骤:检查其信息存储于该进程数据结构中的进程的状态,以及从该进程数据结构移除关于不再运行的转换器进程的信息。
20、如权利要求19所述的方法,其中,周期性地执行检查其信息存储于该进程数据结构中的进程的状态的步骤。
21、如权利要求17所述的方法,进一步包含下列步骤:
(d)通过记录已对进程数据结构中的信息作出引用的转换器进程的识别符并记录其信息已被引用的转换器进程的识别符,来记录该引用。
22、如权利要求21所述的方法,进一步包含下列步骤:当其信息被引用的转换器进程不再运行时,从该进程数据结构移除于步骤(d)所记录的数据。
23、如权利要求17所述的方法,进一步包含:从该进程数据结构移除关于不再运行的进程的信息。
24、一种计算机可读介质,其上记录有可由计算机实施以执行如权利要求17所述的方法的指令。
25、一种转换器设备,配置成接收在主体处理器上执行的主体代码并产生在目标处理器上执行的目标代码,其中,该转换器配置成:
(a)以关于响应于接收的主体代码而建立的一个或多个转换器进程的信息填充进程数据结构;以及
(b)响应于在接收的主体代码中对主体进程文件系统中的信息的引用而引用步骤(a)的进程数据结构。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB0619402.1 | 2006-10-02 | ||
GB0619402A GB2442497B (en) | 2006-10-02 | 2006-10-02 | Method and apparatus for administering a process filesystem with respect to program code conversion |
US85454306P | 2006-10-26 | 2006-10-26 | |
US60/854,543 | 2006-10-26 | ||
PCT/GB2007/050598 WO2008041026A1 (en) | 2006-10-02 | 2007-10-01 | Method and apparatus for administering a process filesystem with respect to program code conversion |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101558382A true CN101558382A (zh) | 2009-10-14 |
CN101558382B CN101558382B (zh) | 2015-02-25 |
Family
ID=37435059
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200780036737.7A Active CN101558382B (zh) | 2006-10-02 | 2007-10-01 | 关于程序代码转换的管理进程文件系统的方法及设备 |
Country Status (8)
Country | Link |
---|---|
US (1) | US8286144B2 (zh) |
EP (1) | EP2069926A1 (zh) |
JP (1) | JP5031032B2 (zh) |
KR (1) | KR101244153B1 (zh) |
CN (1) | CN101558382B (zh) |
GB (1) | GB2442497B (zh) |
TW (1) | TWI447649B (zh) |
WO (1) | WO2008041026A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105518622A (zh) * | 2013-09-26 | 2016-04-20 | 英特尔公司 | 验证动态二进制转换器中转换的来宾代码的方法和设备 |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
BRPI1102315A8 (pt) * | 2011-08-04 | 2017-10-10 | Neo Plastic Embalagens Plasticas Ltda | Geomembrana produzida com misturas de polietileno de alta densidade, polietileno linear de baixa densidade e polietileno de baixa densidade |
US20140289280A1 (en) * | 2013-03-15 | 2014-09-25 | Perforce Software, Inc. | System and Method for Bi-directional Conversion of Directed Acyclic Graphs and Inter-File Branching |
KR102405886B1 (ko) * | 2022-03-17 | 2022-06-08 | 주식회사 넷아스 | 아키텍처 변경을 위한 소스 변환 솔루션 제공 장치 및 방법 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1823323A (zh) * | 2003-07-15 | 2006-08-23 | 可递有限公司 | 用于执行本机绑定的方法和装置 |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0695891A (ja) | 1992-09-10 | 1994-04-08 | Toshiba Corp | インタフェース方式 |
JPH11345134A (ja) | 1998-06-03 | 1999-12-14 | Hitachi Ltd | オペレーティングシステム |
EP1385090B1 (en) | 1998-10-10 | 2012-06-13 | International Business Machines Corporation | Program code conversion for variably sized registers |
US7103914B2 (en) * | 2002-06-17 | 2006-09-05 | Bae Systems Information Technology Llc | Trusted computer system |
US7127592B2 (en) * | 2003-01-08 | 2006-10-24 | Sun Microsystems, Inc. | Method and apparatus for dynamically allocating registers in a windowed architecture |
US7543284B2 (en) * | 2003-04-22 | 2009-06-02 | Transitive Limited | Partial dead code elimination optimizations for program code conversion |
US7299460B2 (en) * | 2003-05-29 | 2007-11-20 | Nec Corporation | Method and computer program for converting an assembly language program for one processor to another |
GB0316532D0 (en) * | 2003-07-15 | 2003-08-20 | Transitive Ltd | Method and apparatus for partitioning code in program code conversion |
US7805710B2 (en) * | 2003-07-15 | 2010-09-28 | International Business Machines Corporation | Shared code caching for program code conversion |
JP2005099968A (ja) | 2003-09-24 | 2005-04-14 | Hitachi Ltd | 仮想ファイルシステムを有する計算機システム |
GB2424092A (en) * | 2005-03-11 | 2006-09-13 | Transitive Ltd | Switching between code translation and execution using a trampoline |
EP2069928A1 (en) * | 2006-10-02 | 2009-06-17 | Transitive Limited | Computer system and method of adapting a computer system to support a register window architecture |
-
2006
- 2006-10-02 GB GB0619402A patent/GB2442497B/en active Active
-
2007
- 2007-09-28 US US11/906,106 patent/US8286144B2/en active Active
- 2007-10-01 KR KR1020097009184A patent/KR101244153B1/ko active IP Right Grant
- 2007-10-01 CN CN200780036737.7A patent/CN101558382B/zh active Active
- 2007-10-01 WO PCT/GB2007/050598 patent/WO2008041026A1/en active Application Filing
- 2007-10-01 TW TW096136767A patent/TWI447649B/zh active
- 2007-10-01 EP EP07804501A patent/EP2069926A1/en not_active Withdrawn
- 2007-10-01 JP JP2009529782A patent/JP5031032B2/ja active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1823323A (zh) * | 2003-07-15 | 2006-08-23 | 可递有限公司 | 用于执行本机绑定的方法和装置 |
Non-Patent Citations (2)
Title |
---|
FABRICE BELLARD: "《QEMU,a fast and portable dynamic translator》", 《FREENIX TRACK: 2005 USENIX ANNUAL TECHNICAL CONFERENCE》 * |
江涛等: "利用可装载内核模块加强操作系统访问控制的方法", 《计算机工程》 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105518622A (zh) * | 2013-09-26 | 2016-04-20 | 英特尔公司 | 验证动态二进制转换器中转换的来宾代码的方法和设备 |
CN105518622B (zh) * | 2013-09-26 | 2019-08-27 | 英特尔公司 | 验证动态二进制转换器中转换的来宾代码的方法和设备 |
Also Published As
Publication number | Publication date |
---|---|
TWI447649B (zh) | 2014-08-01 |
TW200834419A (en) | 2008-08-16 |
KR20090085048A (ko) | 2009-08-06 |
GB2442497B (en) | 2010-03-31 |
WO2008041026A1 (en) | 2008-04-10 |
JP5031032B2 (ja) | 2012-09-19 |
JP2010506251A (ja) | 2010-02-25 |
EP2069926A1 (en) | 2009-06-17 |
CN101558382B (zh) | 2015-02-25 |
US8286144B2 (en) | 2012-10-09 |
GB0619402D0 (en) | 2006-11-08 |
KR101244153B1 (ko) | 2013-03-14 |
GB2442497A (en) | 2008-04-09 |
US20080082971A1 (en) | 2008-04-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11556348B2 (en) | Bootstrapping profile-guided compilation and verification | |
US20090144714A1 (en) | Automatic deployment of java classes using byte code instrumentation | |
US20090125879A1 (en) | Apparatus, Method and System for Building Software by Composition | |
CN101667154A (zh) | 用于改善片上仿真系统中高级语言的仿真速度的装置和方法 | |
US20070124365A1 (en) | Method, apparatus and program storage device that provides a user mode device interface | |
CN1292527A (zh) | 逐模块验证 | |
US10303467B2 (en) | Target typing-dependent combinatorial code analysis | |
US8276125B2 (en) | Automatic discovery of the java classloader delegation hierarchy | |
CN1292525A (zh) | 具有逐模块验证的完全迟缓链接 | |
CN105849698B (zh) | 动态编程中的执行防护 | |
CN101558382A (zh) | 关于程序代码转换的管理进程文件系统的方法及设备 | |
CN1169046C (zh) | 完全迟缓链接 | |
CN105404635A (zh) | 字符串匹配的方法、设备和异构计算系统 | |
Wang | Design and Implementation of the MTX Operating system | |
US9898268B2 (en) | Enhanced local commoning | |
JP3241214B2 (ja) | 分散処理装置及びプロセス実行方法 | |
US8978007B2 (en) | Static metadata in dynamic programs | |
US20130007699A1 (en) | Population of dynamic objects representing static namespace hierarchies | |
CN1292526A (zh) | 用于最低上界类型的符号计算的数据流算法 | |
US20170031660A1 (en) | Methods for utilizing powershell modules in .net applications and devices thereof | |
US11086605B1 (en) | Processing portable extensions at build time | |
US8555046B2 (en) | Computer system and its HW abstraction method | |
KR101976993B1 (ko) | 모바일 코드 자동 분석을 위한 동적 바이너리 계측 코드추출장치 및 그 방법 | |
US8453108B1 (en) | Static, configurable kernel interface | |
CN115878197A (zh) | 基于设备树的启动优化方法、系统、芯片、设备和介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
ASS | Succession or assignment of patent right |
Owner name: INTERNATIONAL BUSINESS MACHINE CORP. Free format text: FORMER OWNER: IBM YING CO., LTD. Effective date: 20090911 |
|
C06 | Publication | ||
C41 | Transfer of patent application or patent right or utility model | ||
PB01 | Publication | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20090911 Address after: American New York Applicant after: International Business Machines Corp. Address before: England Hampshire Applicant before: IBM UK Ltd |
|
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |