CN104903859B - 异构计算环境中的过程迁移方法和系统 - Google Patents

异构计算环境中的过程迁移方法和系统 Download PDF

Info

Publication number
CN104903859B
CN104903859B CN201380062061.4A CN201380062061A CN104903859B CN 104903859 B CN104903859 B CN 104903859B CN 201380062061 A CN201380062061 A CN 201380062061A CN 104903859 B CN104903859 B CN 104903859B
Authority
CN
China
Prior art keywords
source
goal systems
destination
run
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.)
Expired - Fee Related
Application number
CN201380062061.4A
Other languages
English (en)
Other versions
CN104903859A (zh
Inventor
J·勒里希
W·雷切特
U·魏甘德
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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of CN104903859A publication Critical patent/CN104903859A/zh
Application granted granted Critical
Publication of CN104903859B publication Critical patent/CN104903859B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • 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/45508Runtime interpretation or emulation, e g. emulator loops, bytecode interpretation
    • 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
    • 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/485Task life-cycle, e.g. stopping, restarting, resuming execution
    • G06F9/4856Task life-cycle, e.g. stopping, restarting, resuming execution resumption being on a different machine, e.g. task migration, virtual machine migration
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1095Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
    • 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/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/4557Distribution of virtual machine instances; Migration and load balancing

Abstract

本发明涉及一种用于将至少一个过程从带有源操作系统(OS1)的源系统(S1)迁移到带有目标操作系统(OS2)的目标系统(S2)的方法,其中,所述源和目标系统(S1,S2)以及所述源或目标操作系统(OS1,OS2)不同,其中,所述目标系统(S2)包括:-目标虚拟化和迁移组件(VM2),其与所述源系统(S1)的源虚拟化和迁移组件(VM1)兼容,适于接收由所述源虚拟化和迁移组件(VM1)发送的迁移触发信息;-仿真器(EM12),适于使用所述目标系统(S2)仿真所述源系统(S1);-编译器(C12),适于将与在所述源系统(S1)上执行的过程相关联的源应用程序代码(C1)翻译成可在所述目标系统(S2)上执行的二进制目标应用程序代码(C2);-系统调用翻译器(SCT12),用于将指向所述源操作系统(OS1)的系统调用翻译成指向所述目标操作系统(OS2)的系统调用;-运行时库翻译器(RTT12),用于将指向所述源操作系统(OS1)的运行时库的调用翻译成指向所述目标操作系统(OS2)的运行时库的调用。

Description

异构计算环境中的过程迁移方法和系统
技术领域
本发明一般地涉及过程迁移领域。更具体地,本发明涉及用于异构计算环境中的过程迁移、即从源硬件系统上的源操作系统到目标硬件系统上的目标操作系统的过程迁移的方法和系统,其中,所述源和目标操作系统不同,并且所述源和目标硬件不同。
背景技术
采用标准化的网络接口来互相连接使用不同硬件和不同操作系统的计算机是公知技术。尤其是云环境,其可能包括多种多样的服务器机器架构和操作系统(异构云环境)。
这种服务器机器需要进行定期维护或面临导致服务器停机的其他停电。为了避免这个问题,一些服务器机器提供到另一个服务器机器的虚拟服务器零停机迁移。然而,这些解决方案总是要求目标机器具有与源机器相同的架构。
在异构云环境中,在必须实现零停机迁移的时间点,可能没有与源服务器机器具有相同架构的服务器机器可用,而是有具有不同架构、不同架构级别或安装有不同硬件特性的服务器机器。
可以在目标机器上采用源机器的仿真器来迁移到不同的硬件/架构,然而,通常来说,代码仿真的整体性能较差。但是,在这样一种场景下,需要进行完整虚拟服务器的迁移,即,不可能将在源机器上运行的不同应用程序移动到不同的目标机器上。
因此,具有用于实现异构云场景中的应用程序的迁移的机制将是有利的,其中,被迁移的应用程序在目标机器上以本机模式或者接近本机模式运行,从而提供最大可能的灵活性。
在本发明上下文中的迁移可以涉及实时迁移(live migration)或非实时迁移(non-live migration)。实时迁移意味着在不中断的情况下迁移一个运行的过程。非实时迁移意味着在源系统上暂停运行的过程,在源系统上保存过程的状态,将过程状态从源系统传送到目标系统。在传送了过程状态之后,在源系统上终止该过程,并在目标系统上重启。
发明内容
本发明的实施例的一个目标是提供用于在异构计算环境中迁移过程的改进的计算机实现的方法、计算机可读介质和系统。该目标是采用独立权利要求的特征来实现的。在从属权利要求中给出了优选实施例。除非在这里明确指明,本发明的实施例可以彼此自由地合并。
在第一方面,本发明涉及一种用于将至少一个过程从带有源操作系统的源系统迁移到带有目标操作系统的目标系统的计算机实现的方法,其中,所述源和目标系统以及所述源或目标操作系统不同,其中,所述目标系统(S2)包括:
-目标虚拟化和迁移组件,其与所述源系统的源虚拟化和迁移组件兼容,适于接收由所述源虚拟化和迁移组件发送的迁移触发信息;
-仿真器,适于使用所述目标系统仿真所述源系统;
-编译器,适于将与在所述源系统上执行的过程相关联的源应用程序代码翻译成可在所述目标系统上执行的二进制目标应用程序代码;
-系统调用翻译器,用于将指向所述源操作系统的系统调用翻译成指向所述目标操作系统的系统调用;
-运行时库翻译器,用于将指向所述源操作系统的运行时库的调用翻译成指向所述目标操作系统的运行时库的调用;
其中,所述方法包括下列步骤:
-通过使用所述源和目标虚拟化和迁移组件开始所述至少一个过程的迁移;
-在所述目标系统中为要迁移的所述过程分配虚拟地址空间;
-将要迁移的所述过程的虚拟地址空间的存储器(memory)复制到所述目标系统的所述分配的虚拟地址空间;
-将关于与所述过程相关联的操作系统状态的信息复制到所述目标操作系统;
-借助所述仿真器在所述目标操作系统上执行要迁移的所述过程,其中,所述仿真器开始执行与所述过程相关联的代码并进行或启动下列步骤:
-借助所述系统调用翻译器在用于所述目标操作系统的系统调用中以及借助所述运行时库翻译器在用于所述目标操作系统的运行时库调用中,翻译与所述过程相关联的用于源操作系统的系统调用和运行时库调用;
-如果所述源应用程序代码还未被翻译,借助所述编译器将与要迁移的所述过程相关联的所述源应用程序代码翻译成可在所述目标系统上执行的二进制目标应用程序代码;以及
-在所述目标系统上开始执行所述翻译的二进制目标应用程序代码。
因此,该方法使得能够在零停机情况下将过程从源系统迁移到目标系统,即,在两个不同的操作系统/硬件组合之间进行过程的实时迁移。这样,可以把要临时关机的服务器上的过程分发到不同的目标系统。从而,本发明提出了两阶段的迁移,即,首先,在目标系统上仿真源系统,以使得源系统上的被迁移的过程能够被立即执行。为了提高性能,
在第二阶段,将源应用程序代码翻译成目标应用程序代码,其可以在目标系统上本机执行。在翻译之后,可以停止仿真过程,以便节约计算资源。
根据本发明的优选实施例,翻译系统调用和运行时库调用以及翻译所述源应用程序代码的步骤是按需执行的。在目标系统内启动了要被翻译的过程的仿真之后,逐步地翻译源应用程序代码。例如,如果在仿真器内执行一段源代码,并且该段源代码之前未被翻译,则立即翻译该段源代码。类似地,如果出现过去未翻译的系统调用或运行时库调用,则在使用之后立即翻译这些系统调用。
根据本发明的优选实施例,编译器是实时编译器。通过采用实时编译、也称为动态编译,在运行时产生机器可读的二进制目标代码,即,在快要执行时才对代码进行编译。因而,对于实时编译器的输入可以是由实时编译器修改的中间代码或机器可读二进制代码。实时编译提高了过程迁移的性能。
根据本发明的优选实施例,要由编译器编译的源应用程序代码是二进制机器代码、二进制机器代码和中间代码的组合、或中间代码。中间代码是程序源代码在其已经被解析并且执行了词汇和语义分析之后的抽象的编译器内部表示。在使用二进制机器代码时,可以直接使用要被仿真器执行的代码来产生二进制目标代码,即,仿真器和编译器使用相同的二进制代码。相反地,使用中间代码使得编译器可以基于初始源代码的抽象表示对程序进行再编译和优化。这个方法很可能导致目标系统的二进制代码基本上就象从初始源代码直接产生的一样。
根据本发明的优选实施例,在不中断的情况下迁移该过程,其中,当开始在所述目标系统上执行所述翻译后的二进制目标应用程序代码时,停止该过程的仿真。通过将过程从源系统迁移到目标系统的仿真器并且随后在目标系统上以本机模式执行该过程,即,通过使用翻译后的二进制应用程序代码,可以在零停机的情况下将过程传递到目标系统,即,在执行要迁移的过程时,没有或至少没有显著的中断。
根据本发明的优选实施例,在启动仿真器之前,在目标操作系统的仿真器过程的上下文中相同地预先分配关于与要迁移的过程相关的源操作系统(OS1)的状态的信息。为了迁移过程,将限定源操作系统的状态的特定操作系统资源、例如过程标识符、页表设置、文件描述符、系统V IPC资源等传送到目标操作系统的上下文中至关重要。在相同地预先分配了资源之后,在仿真器中运行的过程可以立即并且直接地使用这些资源。
根据本发明的优选实施例,将关于源操作系统的状态的信息放在目标操作系统的上下文中的任何地方,将对这些信息的访问从源操作系统的上下文中的系统资源动态匹配到目标操作系统的上下文中的系统资源。
根据本发明的优选实施例,翻译系统调用和运行时库调用以及翻译所述源应用程序代码的步骤是采用至少两个系统调用翻译器、至少两个运行时库翻译器、至少两个仿真器和/或至少两个编译器的级联来进行的。从而,如果缺少用于特定操作系统/硬件组合的系统调用翻译器、运行时库翻译器、仿真器和/或编译器,则可以通过堆叠至少两个这样的翻译器、仿真器和编译器来实现迁移,并能够进行代码的转换、调用等等。
根据本发明的优选实施例,将至少两个不相关的过程从一个源系统迁移到至少两个目标系统,用于分离和/或分发计算负荷。从而,可以将准备要关机的源系统上的过程迁移到多个目标服务器上,从而使得特定目标服务器所必须要接管的工作负荷最小。
根据本发明的优选实施例,将翻译后的二进制目标应用程序代码高速缓存和/或持久地存储在目标系统的储存库中,从而可以重用,优选地,即使在目标系统关机之后也可以重用。还可以将翻译后的二进制目标应用程序代码发送到具有相同操作系统/硬件配置的另一个目标系统上来重用。
根据本发明的优选实施例,将翻译后的二进制目标应用程序代码持久地存储在中央储存库中,以供源和目标系统访问。仿真器和/或编译器可以在以后重用已经翻译的目标应用程序代码或部分翻译后的目标应用程序代码,而不用自己执行翻译。
根据本发明的优选实施例,将源应用程序代码翻译成二进制目标应用程序代码是由中央编译实体进行的。中央编译实体可以适于以高度并行并且非常快速的方式翻译代码。中央编译实体可以用来接管目标系统的所有编译任务。或者,中央编译实体可以用来预先翻译特定的经常使用的代码部分,并将翻译后的代码存储在储存库中。在可以迁移之前,目标系统可以从储存库预先加载这些预先翻译的代码部分。可以通过采用这些预先翻译的代码部分来构建最终的目标应用程序代码,从而显著地加速迁移。
根据本发明的优选实施例,通过采用检查实体,将迁移之前在源系统上运行的应用程序代码的执行的语义与迁移之后在目标系统上的翻译后的二进制代码的执行的语义进行比较。这确保代码的翻译和调用是正确的,过程因而被正确地迁移。
在又一个方面,本发明涉及一种用于迁移过程的基于计算机的系统,所述系统包括至少一个带有源操作系统的源系统和带有目标操作系统的目标系统,其中,所述源和目标系统以及所述源或目标操作系统不同,其中,所述目标系统包括:
-目标虚拟化和迁移组件,其与源系统的源虚拟化和迁移组件兼容,适于接收由源虚拟化和迁移组件发送的迁移触发信息;
-仿真器,适于使用目标系统仿真源系统;
-编译器,适于将与在源系统(S1)上执行的过程相关联的源应用程序代码翻译成可在目标系统上执行的二进制目标应用程序代码;
-系统调用翻译器,用于将指向源操作系统的系统调用翻译成指向目标操作系统的系统调用;
-运行时库翻译器,用于将指向源操作系统的运行时库的调用翻译成指向目标操作系统的运行时库的调用;
其中,所述系统适于:
-通过使用所述源和目标虚拟化和迁移组件迁移至少一个过程;
-在目标系统中为要迁移的所述过程分配虚拟地址空间;
-将要迁移的过程的虚拟地址空间的存储器复制到所述目标系统的所述分配的虚拟地址空间;
-将关于与所述过程相关联的操作系统状态的信息复制到目标操作系统;
-借助所述仿真器在所述目标操作系统上执行要迁移的过程,其中,所述仿真器适于开始执行与所述过程相关联的代码并进行或启动下列步骤:
-借助所述系统调用翻译器在用于所述目标操作系统的系统调用中以及借助所述运行时库翻译器在用于所述目标操作系统的运行时库调用中,翻译与所述过程相关联的用于源操作系统的系统调用和运行时库调用;
-如果所述源应用程序代码还未被翻译,借助所述编译器将与要迁移的所述过程相关联的所述源应用程序代码翻译成可在所述目标系统上执行的二进制目标应用程序代码;以及
-在所述目标系统上开始执行所述翻译的二进制目标应用程序代码。
附图说明
在下面参考附图通过例子的方式更详细地描述了本发明的优选实施例:
图1显示了一个计算环境的示意性架构;
图2显示了源和目标系统的示意性结构;
图3显示了根据本发明的迁移过程的示意性流程图;
图4显示了采用翻译和仿真实体的堆叠的源和目标系统的示意性结构。
具体实施方式
所属技术领域的技术人员知道,本发明的各个方面可以实现为系统、方法或计算机程序产品。因此,本发明的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、驻留软件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“系统”。此外,本发明的各个方面还可以实现为在一个或多个计算机可读介质中的计算机程序产品的形式,该计算机可读介质中包含计算机可读的程序代码。可以采用一个或多个计算机可读介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件的上下文中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括——但不限于——电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于——无线、有线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言的任意组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++等,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)
参考图1,显示了计算环境1的常规架构。例如,两个计算系统S1、S2通过网络连接3相连,使得计算系统S1、S2可以彼此通信。计算环境是异构环境,即,系统S1的硬件HW1不同于系统S2的硬件HW2。另外,计算系统S1、S2可以包括不同的操作系统,即系统1包括第一操作系统OS1,系统2包括第二操作系统OS2,其中,操作系统OS1和OS2不同。计算系统S1、S2可以是专用服务器或虚拟服务器,其可以运行在虚拟机监视器、也称为管理程序(hypervisor)之上。在下面的描述中,将至少一个过程PM从计算系统S1迁移到计算系统S2,即,相对于迁移来说,计算系统S1是源系统,计算系统S2是目标系统。
图2更加详细地显示了源系统S1和目标系统S2。源系统S1包括具有特定硬件架构的硬件HW1。源系统S1的操作系统OS1包括虚拟化和迁移组件VM1、系统调用接口SC1和运行时库接口RT1。虚拟化和迁移组件VM1优选地位于操作系统OS1内。其适于启动和实现要被迁移的过程PM从源系统S1到目标系统S2的迁移。换句话说,虚拟化和迁移VM1建立源系统S1的迁移接口。系统调用接口SC1是用于处理由过程PM启动的系统调用的接口。经由系统调用接口SC1,过程能够从操作系统内核请求服务。这可以包括硬件相关的服务(例如,访问硬盘)、创建和执行新过程、以及与整体内核服务通信(如调度)。所述运行时库接口RT1处理由过程PM启动的库调用。库调用是计算机技术中用于通过简化系统调用来减少应用程序代码的公知方式。
要被迁移的一个过程或者一组过程运行在源系统S1上。过程PM与编译后的源应用程序代码C1、即只能在源系统S1的硬件HW1上运行、而不能在目标系统S2上运行的二进制机器代码相关联。编译后的源应用程序代码C1能够经由操作系统OS1的系统调用接口SC1启动系统调用,经由运行时库接口RT1启动库调用。
另外,目标系统S2包括具有不同于硬件HW1的特定硬件架构的硬件HW2。目标系统S2的操作系统OS2包括虚拟化和迁移组件VM2、系统调用接口SC2和运行时库接口RT2。虚拟化和迁移组件VM2优选地位于操作系统OS2内。其与源系统S1的虚拟化和迁移组件VM1兼容,即,虚拟化和迁移组件VM2适于作为过程PM的迁移目标,该过程PM的迁移由虚拟化和迁移组件VM1启动。换句话说,虚拟化和迁移组件VM2建立虚拟化和迁移组件VM1的相对件(counterpiece),以便允许源系统S1和目标系统S2之间的过程迁移。
系统调用接口SC2是用于处理指向操作系统OS2的系统调用的接口。所述运行时库接口RT2处理指向操作系统OS2的库调用。
进一步地,目标系统S2包括仿真器E12,仿真器E12适于在目标系统S2上仿真源系统S1的硬件HW1。在仿真器E12内,可以以仿真模式在目标系统S2上运行过程PM,即,在目标系统S2内再现源系统S1的功能性,使得过程PM能够在目标系统S2上执行。
目标系统S2进一步包括编译器C12,编译器C12适于将能够在源系统S1上执行的源应用程序代码C1翻译成适于直接在目标系统S2上执行的目标应用程序代码C2。优选地,编译器C12是动态实时(just-in-time)编译器,其能够在运行时编译代码。优选地,在目标系统S2上以仿真模式执行过程期间,可以在仿真器E12遇到要编译的源应用程序代码C1的应用程序代码段时,按需对源应用程序代码C1进行编译。
为了将指向源操作系统OS1的系统调用翻译成指向目标操作系统OS2的调用,目标系统S2包括系统调用翻译器SCT12。系统调用翻译器SCT12适于接收指向源操作系统OS1的系统调用,并将其翻译成可以由目标操作系统OS2处理或操作的系统调用。优选地,系统调用翻译器SCT12提供用于接收指向源操作系统OS1的系统调用的系统调用接口SC1,以及用于将翻译后的系统调用发送到由操作系统OS2提供的系统调用接口SC2的接口。从而,可以将由源应用程序代码C1或目标应用程序代码C2产生的、并寻址到操作系统OS1的系统调用变换为操作系统OS2的本机系统调用。
另外,目标系统S2包括运行时库翻译器RTT12。运行时库翻译器RTT12适于接收指向源操作系统OS1的运行时库的库调用,并将其翻译成可以由目标操作系统OS2处理或操作的、并指向目标操作系统OS2的运行时库的库调用。优选地,运行时库翻译器RTT12提供用于接收指向源操作系统OS1的库调用的运行时库接口RT1,以及用于将翻译后的库调用发送到由操作系统OS2提供的运行时库接口RT2的接口。从而,可以将由源应用程序代码C1或目标应用程序代码C2产生的、并寻址到操作系统OS1的运行时库的库调用变换为操作系统OS2的本机库调用。
下面通过图3解释过程PM从源系统S1向目标系统S2的例示性迁移。在迁移过程的开始,要被迁移的过程PM运行在源系统S1上(10)。如果请求将运行在源系统S1上的过程PM迁移到目标系统S2(11),则检查目标系统S2是否与源系统S1兼容,即目标系统S2是否包括与源系统S1相同的操作系统OS2和硬件HW2(12)。
如果目标系统S2与源系统S1兼容,执行从源系统S1到目标系统S2的标准过程迁移(13)。这个过程是本领域普通技术人员公知的。例如,将与要迁移的过程相关联的存储器以及其他过程参数复制到目标系统S2。在迁移之后,过程PM被启动,可以以本机模式运行(14),即,采用与在源系统S1上运行时相同的二进制应用程序代码、系统调用、运行时库调用等运行。
如果关于兼容性的判断是否定的(12),即目标系统S2与源系统S1不兼容,则调查在目标系统S2上是否有仿真器E12、系统调用翻译器SCT12、运行时库翻译器RTT12和编译器C12,其中,相对于在过程迁移中涉及的系统S1、S2的硬件HW1、HW2和操作系统OS1、OS2,仿真器E12、系统调用翻译器SCT12、运行时库翻译器RTT12和编译器C12必须兼容,以执行上面提到的仿真和翻译任务(15)。
如果在目标系统S2上有兼容的仿真器E12、系统调用翻译器SCT12、运行时库翻译器RTT12和编译器C12,则将过程PM迁移到目标系统S2上的仿真器E12的仿真器环境中(16)。通过交互虚拟化和迁移组件VM1、VM2来实现迁移。在将过程PM从虚拟化和迁移组件VM1迁移到虚拟化和迁移组件VM2时,将过程PM的虚拟地址空间的存储器复制到操作系统OS2。进一步地,将与过程PM相关联的操作系统状态复制到操作系统OS2。操作系统状态包括本地资源和全局资源。本地资源例如为页表设置、文件描述符、系统V IPC资源(信号量(semaphores)、共享存储器区域、队列等等)、过程标识符等。全局资源例如为开放网络连接、网络共享等等。
在所述复制完成之后,利用仿真器EM12、即以仿真模式在目标系统S2上启动过程PM的执行(17)。在通过在目标系统S2上仿真源系统S1来执行过程PM期间,过程PM启动适于操作系统OS1的系统调用和运行时库调用。系统调用翻译器SCT12将指向操作系统OS1的系统调用替换或翻译成指向操作系统OS2的本机系统调用,这样,在替换或翻译之后,原先寻址到操作系统OS1的系统调用可以由操作系统OS2来处理(18)。类似地,运行时库翻译器RTT12将指向操作系统OS1的运行时库调用替换或翻译成指向操作系统OS2的本机运行时库调用(19)。
为了将源应用程序代码C1翻译成目标应用程序代码C2从而可以最终由操作系统OS2执行,仿真器EM12触发编译器C12执行代码翻译(20)。编译器C12接收源应用程序代码C1,并将其翻译成可以在目标系统S2上本机执行的目标应用程序代码C2,即,目标应用程序代码C2是适于目标系统S2的本机二进制代码。优选地,编译器C12可以智能地识别源应用程序代码C1的哪些部分在之前的翻译步骤中已经被翻译。那些已经被翻译的部分被重新运用,只有之前未被翻译的剩余部分才被翻译。更近一步地,编译器C12可以是动态实时(just-in-time)编译器,即,在源应用程序代码C1由仿真器EM12执行时,将源应用程序代码C1翻译成目标应用程序代码C2。另外,翻译器可以按需地执行源应用程序代码C1的翻译,即,在仿真器EM12使用源应用程序代码C1的特定段而该特定段在过去未被编译成目标应用程序代码C2时,增量地执行翻译。从而,源应用程序代码C1的代码段由目标应用程序代码C2的代码段动态地替换(21)。优选地,将目标应用程序代码C2临时保存在目标系统S2中。
在完成源应用程序代码C1到目标应用程序代码C2的编译之后,将所得到的目标应用程序代码C2存储在目标系统S2的持久储存库、即非易失性存储装置中(22)。从而,在执行之前描述的从虚拟化和迁移组件VM1到虚拟化和迁移组件VM2的迁移过程时,例如可以通过另外迁移持久储存库的内容来重用目标应用程序代码C2。将目标应用程序代码C2持久地存储在目标系统S2上的进一步的好处在于,在重启目标系统S2之后,其仍然可以被重用,即,可以保存用于仿真源系统S1并将源应用程序代码C1重新编译成目标应用程序代码C2的系统资源。
最后,停止以仿真模式执行过程PM,在使用之前产生的目标应用程序代码C2的同时,过程PM执行适于HW2的本机二进制代码(23)。可能需要继续执行系统调用翻译和运行时库调用翻译。
如果确定仿真器E12、系统调用翻译器SCT12、运行时库翻译器RTT12和编译器C12的可用性的调查步骤(15)的结果是否定的,则拒绝从源系统S1到目标系统S2的迁移(24)。优选地,在拒绝之前,有一个中间调查步骤,用于确定是否可以通过堆叠翻译和仿真过程来进行从源系统S1到目标系统S2的迁移。在异构计算环境中,可能不会对于源系统和目标系统S1、S2的每一个可能的组合都存在仿真器、编译器、系统调用翻译器和/或运行时库调用翻译器。
为了能够实现到不支持的操作系统OS2和/或硬件HW2的迁移,可以堆叠各个现有的翻译和仿真过程,从而所得到的过程堆叠允许在任何操作系统OS2和/或硬件HW2上执行所希望的源应用程序代码C1。例如,通过在Linux/Intel系统调用和运行时库调用翻译器上的过程PM,借助Intel到Power仿真器和实时编译器将Intel代码翻译成Power版Linux(Linux on Power)代码,并在Power版Linux到AIX翻译器之上运行所得到的代码,可以实现在AIX系统上运行Windows/Intel过程PM。换句话说,如果编译器C12、系统调用翻译器SCT12和/或运行时库翻译器RTT12不可用,但用于将过程从源系统1迁移到一个第三系统的编译器C13、系统调用翻译器SCT13和运行时库翻译器RTT13以及用于将过程从第三系统迁移到目标系统2的编译器C32、系统调用翻译器SCT32和运行时库翻译器RTT32可用,则可以使用该堆叠方式来执行从源系统1到目标系统2的迁移(图4)。
对于过程PM的迁移,需要将与过程PM相关联的操作系统状态传送到操作系统OS2。操作系统状态包括页表设置、文件描述符、系统V IPC资源(信号量、共享存储器区域、队列等等)、过程标识符等。操作系统状态在迁移过程期间不能被改变。这意味着当在目标系统S2上执行对源系统S1的仿真时,操作系统状态在操作系统OS2的上下文中必须完全相同,否则,不能在操作系统OS2上正确地执行仿真过程。可以有至少两种不同的可能性来在目标系统S2上提供与要迁移的过程相关联的操作系统状态:
第一种可能性是在操作系统OS2的上下文中预先分配操作系统状态。在迁移开始时,操作系统OS2在启动仿真器之前,首先在操作系统OS2的上下文中分配用于操作系统状态的所有资源。当对要迁移的过程PM的仿真开始时,其将预先分配的资源用于所仿真的过程,将操作系统OS的上下文中的剩余资源用于执行实际的仿真器过程。第二种可能性是将关于操作系统状态的资源放在操作系统OS2的上下文中的任何地方。为了能够访问关于操作系统状态的信息,进行对关于操作系统的真实信息的动态匹配。在这种情况下,可以在分配操作系统OS2的上下文中的操作系统状态之前开始在目标系统S2上的仿真,但由于匹配所导致的额外的计算工作量,整个迁移性能会变低。
在本发明的优选实施例中,可以有一个中央储存库来持久保存可唯一识别的代码部分。在迁移过程中涉及的所有系统都可以访问该中央储存库。特别地,该中央储存库可以安排在云环境中。变换二进制应用程序代码的仿真器或编译器可以将编译结果提交给中央存储库来持久保存。如果在迁移过程中涉及的系统的仿真器或编译器要将源应用程序代码C1编译成目标应用程序代码C2,仿真器或编译器可以启动对中央储存库的访问来进行检查,如果要被编译的代码或代码的一部分在过去已经被编译,则其在中央储存库中是可用的。如果是这样,仿真器或编译器可以取出并重用该已经编译过的代码或代码的一部分。
特别地,在具有大量计算实体的计算环境中,可能有至少一个编译实体,用于将适于源操作系统OS1和/或硬件HW1的应用程序代码翻译成适于源操作系统OS2和/或硬件HW2的二进制应用程序代码。编译实体可以适于进行高度并行和快速的代码编译。其可以从仿真器接收编译任务,执行所请求的编译,并将编译后的代码发送回发出请求的仿真器。另外,或者可替代地,可以将编译后的代码发送到中央储存库。
优选地,在使用中间代码技术时执行代码的编译。除了用于编译的二进制应用程序代码之外,编译器可以产生标准化的中间语言代码。当增加中间语言代码时,动态再编译被简化,并且,作为再编译的又一个方面,可以为目标系统产生更好的优化后的二进制代码,并允许消除系统调用和运行时库调用翻译。例如,中间语言代码和相关联的二进制应用程序代码可以一起存储在中央储存库中。取决于在迁移过程中涉及的系统的操作系统和硬件配置,可以基于中间语言代码完成编译,或者可以选择已经编译过的二进制代码。
另外,可以在目标系统内或在计算环境内采用检查实体,作为一个公共实体。该检查实体将迁移之前在源系统S1上运行的二进制代码的执行的语义与迁移之后在目标系统S2上执行翻译后的二进制代码的语义进行比较。实施检查实体的目标是为了找出在将源应用程序代码C1编译成目标应用程序代码C2时是否出错。如果发现在相应语义之间存在不同,则可以拒绝迁移尝试,从而避免出错的情况。

Claims (15)

1.一种用于将至少一个过程从带有源操作系统(OS1)的源系统(S1)迁移到带有目标操作系统(OS2)的目标系统(S2)的计算机实现的方法,其中,所述源和目标系统(S1,S2)以及所述源或目标操作系统(OS1,OS2)不同,其中,所述目标系统(S2)包括:
-目标虚拟化和迁移组件(VM2),其与所述源系统(S1)的源虚拟化和迁移组件(VM1)兼容,适于接收由所述源虚拟化和迁移组件(VM1)发送的迁移触发信息;
-仿真器(EM12),适于使用所述目标系统(S2)仿真所述源系统(S1);
-编译器(C12),适于将与在所述源系统(S1)上执行的过程相关联的源应用程序代码(C1)翻译成可在所述目标系统(S2)上执行的二进制目标应用程序代码(C2);
-系统调用翻译器(SCT12),用于将指向所述源操作系统(OS1)的系统调用翻译成指向所述目标操作系统(OS2)的系统调用;
-运行时库翻译器(RTT12),用于将指向所述源操作系统(OS1)的运行时库的调用翻译成指向所述目标操作系统(OS2)的运行时库的调用;
其中,所述方法包括下列步骤:
-通过使用所述源和目标虚拟化和迁移组件(VM1,VM2)开始所述至少一个过程(PM)的迁移;
-在所述目标系统(S2)中为要迁移的所述过程(PM)分配虚拟地址空间;
-将要迁移的所述过程(PM)的虚拟地址空间的存储器复制到所述目标系统(S2)的所述分配的虚拟地址空间;
-将关于与所述过程(PM)相关联的操作系统状态的信息复制到所述目标操作系统(OS2);
-借助所述仿真器(EM12)在所述目标操作系统(OS2)上执行要迁移的所述过程(PM),其中,所述仿真器开始执行与所述过程(PM)相关联的代码并进行或启动下列步骤:
-借助所述系统调用翻译器(SCT12)在用于所述目标操作系统(OS2)的系统调用中以及借助所述运行时库翻译器(RTT12)在用于所述目标操作系统(OS2)的运行时库调用中,翻译与所述过程相关联的用于源操作系统(OS1)的系统调用和运行时库调用;
-如果所述源应用程序代码(C1)还未被翻译,借助所述编译器(C12)将与要迁移的所述过程(PM)相关联的所述源应用程序代码(C1)翻译成可在所述目标系统(S2)上执行的二进制目标应用程序代码(C2);以及
-在所述目标系统(S2)上开始执行所述翻译的二进制目标应用程序代码(C2)。
2.如权利要求1所述的方法,其中,翻译系统调用和运行时库调用以及翻译所述源应用程序代码(C1)的步骤是按需执行的。
3.根据权利要求1或2所述的方法,其中,所述编译器(C12)是实时编译器。
4.根据权利要求1或2所述的方法,其中,要由所述编译器(C12)编译的源应用程序代码(C1)是二进制机器代码、二进制机器代码和中间代码的组合、或中间代码。
5.根据权利要求1或2所述的方法,其中,在不中断的情况下迁移所述过程,其中,当开始在所述目标系统(S2)上执行所述翻译后的二进制目标应用程序代码(C2)时,停止所述过程(PM)的仿真。
6.根据权利要求1或2所述的方法,其中,在启动所述仿真器(EM12)之前,在所述目标操作系统(OS2)的仿真器过程的上下文中相同地预先分配关于所述源操作系统(OS1)的状态的信息。
7.根据权利要求1或2所述的方法,其中,将关于所述源操作系统(OS1)的状态的信息放在所述目标操作系统(OS2)的过程上下文中的任何地方,将对这些信息的访问从源操作系统(OS1)的上下文中的系统资源动态匹配到目标操作系统(OS2)的上下文中的系统资源。
8.根据权利要求1或2所述的方法,其中,翻译系统调用和运行时库调用以及翻译所述源应用程序代码(C1)的步骤是采用至少两个系统调用翻译器、和/或至少两个运行时库翻译器、和/或至少两个仿真器和/或至少两个编译器的级联来进行的。
9.根据权利要求1或2所述的方法,其中,将至少两个不相关的过程从一个源系统迁移到至少两个目标系统,用于分离和/或分发计算负荷。
10.根据权利要求1或2所述的方法,其中,将翻译后的二进制目标应用程序代码(C2)高速缓存和/或持久地存储在所述目标系统(S2)的储存库中。
11.根据权利要求1或2所述的方法,其中,将翻译后的二进制目标应用程序代码(C2)持久地存储在中央储存库中,以供所述源和目标系统(S1,S2)访问。
12.根据权利要求1或2所述的方法,其中,将源应用程序代码(C1)翻译成二进制目标应用程序代码(C2)是由中央编译实体进行的。
13.根据权利要求1或2所述的方法,其中,通过采用检查实体,将迁移之前在所述源系统(S1)上运行的应用程序代码(C1)的执行的语义与迁移之后在所述目标系统(S2)上的翻译后的二进制代码的执行的语义进行比较。
14.一种用于迁移过程的基于计算机的系统,所述系统包括至少一个带有源操作系统(OS1)的源系统(S1)和带有目标操作系统(OS2)的目标系统(S2),其中,所述源和目标系统(S1,S2)以及所述源或目标操作系统(OS1,OS2)不同,其中,所述目标系统(S2)包括:
-目标虚拟化和迁移组件(VM2),其与所述源系统(S1)的源虚拟化和迁移组件(VM1)兼容,适于接收由所述源虚拟化和迁移组件(VM1)发送的迁移触发信息;
-仿真器(EM12),适于使用所述目标系统(S2)仿真所述源系统(S1);
-编译器(C12),适于将与在所述源系统(S1)上执行的过程相关联的源应用程序代码(C1)翻译成可在所述目标系统(S2)上执行的二进制目标应用程序代码(C2);
-系统调用翻译器(SCT12),用于将指向所述源操作系统(OS1)的系统调用翻译成指向所述目标操作系统(OS2)的系统调用;
-运行时库翻译器(RTT12),用于将指向所述源操作系统(OS1)的运行时库的调用翻译成指向所述目标操作系统(OS2)的运行时库的调用;
其中,所述系统适于:
-通过使用所述源和目标虚拟化和迁移组件(VM1,VM2)迁移所述至少一个过程(PM);
-在所述目标系统(S2)中为要迁移的所述过程(PM)分配虚拟地址空间;
-将要迁移的所述过程(PM)的虚拟地址空间的存储器复制到所述目标系统(S2)的所述分配的虚拟地址空间;
-将关于与所述过程(PM)相关联的操作系统状态的信息复制到所述目标操作系统(OS2);
-借助所述仿真器(EM12)在所述目标操作系统(OS2)上执行要迁移的所述过程(PM),其中,所述仿真器适于开始执行与所述过程(PM)相关联的代码并进行或启动下列步骤:
-借助所述系统调用翻译器(SCT12)在用于所述目标操作系统(OS2)的系统调用中以及借助所述运行时库翻译器(RTT12)在用于所述目标操作系统(OS2)的运行时库调用中,翻译与所述过程相关联的用于源操作系统(OS1)的系统调用和运行时库调用;
-如果所述源应用程序代码(C1)还未被翻译,借助所述编译器(C12)将与要迁移的所述过程(PM)相关联的所述源应用程序代码(C1)翻译成可在所述目标系统(S2)上执行的二进制目标应用程序代码(C2);以及
-在所述目标系统(S2)上开始执行所述翻译的二进制目标应用程序代码(C2)。
15.一种存储有计算机程序的计算机可读介质,其中所述计算机程序当其在计算机上运行时使所述计算机执行权利要求1至13中的任何一个所述的方法的步骤。
CN201380062061.4A 2012-12-03 2013-10-18 异构计算环境中的过程迁移方法和系统 Expired - Fee Related CN104903859B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB1221700.6A GB2508433A (en) 2012-12-03 2012-12-03 Migration of processes in heterogeneous computing environments using emulating and compiling source code on target system
GB1221700.6 2012-12-03
PCT/IB2013/059438 WO2014087268A1 (en) 2012-12-03 2013-10-18 Method and system for migration of processes in heterogeneous computing environments

Publications (2)

Publication Number Publication Date
CN104903859A CN104903859A (zh) 2015-09-09
CN104903859B true CN104903859B (zh) 2017-07-18

Family

ID=50683764

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201380062061.4A Expired - Fee Related CN104903859B (zh) 2012-12-03 2013-10-18 异构计算环境中的过程迁移方法和系统

Country Status (6)

Country Link
US (1) US9569246B2 (zh)
JP (1) JP6099760B2 (zh)
CN (1) CN104903859B (zh)
DE (1) DE112013004344T5 (zh)
GB (1) GB2508433A (zh)
WO (1) WO2014087268A1 (zh)

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2014155684A1 (ja) 2013-03-29 2014-10-02 富士通株式会社 プログラム、情報処理システム、およびプログラム移行方法
WO2015089390A1 (en) * 2013-12-13 2015-06-18 Ab Initio Technology Llc Dynamically determing a mode of a data processing application
US9760408B2 (en) * 2014-03-26 2017-09-12 Unisys Corporation Distributed I/O operations performed in a continuous computing fabric environment
WO2016003646A1 (en) * 2014-06-30 2016-01-07 Unisys Corporation Enterprise management for secure network communications over ipsec
US20160285958A1 (en) * 2015-03-27 2016-09-29 Intel Corporation Application container for live migration of mobile applications
JP6458650B2 (ja) * 2015-06-08 2019-01-30 富士通株式会社 情報処理システム、情報処理プログラムおよび情報処理装置
CN106325819B (zh) * 2015-06-17 2019-08-02 华为技术有限公司 计算机指令处理方法、协处理器和系统
US10303498B2 (en) * 2015-10-01 2019-05-28 Microsoft Technology Licensing, Llc Performance optimizations for emulators
US10409560B1 (en) * 2015-11-18 2019-09-10 Amazon Technologies, Inc. Acceleration techniques for graph analysis programs
US9703573B1 (en) 2016-04-26 2017-07-11 International Business Machines Corporation Interposer for dynamic mapping of API calls
US11829337B2 (en) * 2016-11-16 2023-11-28 Sap Se Minimizing downtime in migrating content of databases systems
TWI660307B (zh) 2017-06-09 2019-05-21 國立交通大學 二元碼轉譯裝置及方法
US10467211B2 (en) 2017-11-15 2019-11-05 International Business Machines Corporation Representing and analyzing cloud computing data as pseudo systems
US10540175B2 (en) * 2018-03-05 2020-01-21 Appzero Software Corp. Up-level applications to a new OS
US11059435B2 (en) * 2018-09-17 2021-07-13 Drimaes, Inc. Vehicle software control device
US10778709B2 (en) 2018-10-31 2020-09-15 International Business Machines Corporation Cloud-native extensibility provided to security analytics
GB201919236D0 (en) * 2019-12-23 2020-02-05 Toothbrush Club Ltd A method for recycling consumable items
CN113032035B (zh) * 2019-12-24 2022-07-12 Oppo广东移动通信有限公司 配置文件处理方法、装置以及电子设备
US11231918B1 (en) 2020-08-31 2022-01-25 Microsoft Technologly Licensing, LLC Native emulation compatible application binary interface for supporting emulation of foreign code
US11403100B2 (en) 2020-08-31 2022-08-02 Microsoft Technology Licensing, Llc Dual architecture function pointers having consistent reference addresses
US11803407B1 (en) * 2020-09-29 2023-10-31 Amazon Technologies, Inc. Emulation layer for overcoming incompatibilities in virtual machine instance migration
CN113064699B (zh) * 2021-04-09 2022-12-13 上海安畅网络科技股份有限公司 一种异构云不停服务的迁移方法、装置、设备及存储介质
CN115543547B (zh) * 2022-11-30 2023-04-18 北京太极信息系统技术有限公司 一种异构虚拟化平台中虚拟机的迁移方法及系统

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101464812A (zh) * 2009-01-06 2009-06-24 北京航空航天大学 一种虚拟机迁移方法
CN102193824A (zh) * 2010-03-18 2011-09-21 微软公司 虚拟机均质化以实现跨异构型计算机的迁移

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7334235B2 (en) * 1999-06-16 2008-02-19 Microsoft Corporation Operating system application programming interfaces and methods of using operating systems
US7484208B1 (en) * 2002-12-12 2009-01-27 Michael Nelson Virtual machine migration
JP2004231114A (ja) 2003-01-31 2004-08-19 Koyo Seiko Co Ltd ステアリング装置
US7076769B2 (en) * 2003-03-28 2006-07-11 Intel Corporation Apparatus and method for reproduction of a source ISA application state corresponding to a target ISA application state at an execution stop point
JP2004303114A (ja) * 2003-04-01 2004-10-28 Hitachi Ltd インタープリタおよびネイティブコード実行方法
JP4349871B2 (ja) * 2003-09-09 2009-10-21 株式会社日立製作所 ファイル共有装置及びファイル共有装置間のデータ移行方法
US7613847B2 (en) * 2006-05-16 2009-11-03 Hewlett-Packard Development Company, L.P. Partially virtualizing an I/O device for use by virtual machines
US9521186B2 (en) 2007-09-13 2016-12-13 International Business Machines Corporation Method and system for file transfer over a messaging infrastructure
JP2009211190A (ja) * 2008-02-29 2009-09-17 Hitachi Ltd 情報処理装置
US8813069B2 (en) * 2009-05-29 2014-08-19 Red Hat, Inc. Migration of functionalities across systems
US8438256B2 (en) * 2009-06-26 2013-05-07 Vmware, Inc. Migrating functionality in virtualized mobile devices
US20110113426A1 (en) 2009-11-09 2011-05-12 Hsiang-Tsung Kung Apparatuses for switching the running of a virtual machine between multiple computer devices belonging to the same computer platform and the associated switching methods
JP5427574B2 (ja) * 2009-12-02 2014-02-26 株式会社日立製作所 仮想計算機の移動管理方法、前記移動管理方法を用いた計算機、前記移動管理方法を用いた仮想化機構および前記移動管理方法を用いた計算機システム
US8984507B2 (en) * 2010-04-26 2015-03-17 International Business Machines Corporation Cross architecture virtual machine migration
US20120137278A1 (en) * 2010-11-30 2012-05-31 International Business Machines Corporation Generating a customized set of tasks for migration of a deployed software solution
US9495183B2 (en) * 2011-05-16 2016-11-15 Microsoft Technology Licensing, Llc Instruction set emulation for guest operating systems
US8683468B2 (en) * 2011-05-16 2014-03-25 Advanced Micro Devices, Inc. Automatic kernel migration for heterogeneous cores
US20130054734A1 (en) * 2011-08-23 2013-02-28 Microsoft Corporation Migration of cloud applications between a local computing device and cloud
US9201704B2 (en) * 2012-04-05 2015-12-01 Cisco Technology, Inc. System and method for migrating application virtual machines in a network environment

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101464812A (zh) * 2009-01-06 2009-06-24 北京航空航天大学 一种虚拟机迁移方法
CN102193824A (zh) * 2010-03-18 2011-09-21 微软公司 虚拟机均质化以实现跨异构型计算机的迁移

Also Published As

Publication number Publication date
JP2016504673A (ja) 2016-02-12
DE112013004344T5 (de) 2015-05-28
JP6099760B2 (ja) 2017-03-22
US9569246B2 (en) 2017-02-14
US20150301848A1 (en) 2015-10-22
GB2508433A (en) 2014-06-04
WO2014087268A1 (en) 2014-06-12
CN104903859A (zh) 2015-09-09

Similar Documents

Publication Publication Date Title
CN104903859B (zh) 异构计算环境中的过程迁移方法和系统
CN110730951B (zh) 基于单体遗留应用的微服务的容器化部署
US10509686B2 (en) Distributable computational units in a continuous computing fabric environment
JP5139975B2 (ja) 複数の経路最適化を備える関数レベルジャストインタイム変換エンジン
CN101271401B (zh) 一种具备单一系统映像的服务器机群系统
KR101665219B1 (ko) 네스티드 에뮬레이션 및 동적 링킹 환경
US20180074843A1 (en) System, method, and computer program product for linking devices for coordinated operation
US11301562B2 (en) Function execution based on data locality and securing integration flows
CN106325970A (zh) 编译方法和编译系统
US20210042138A1 (en) Computing devices
US20040024953A1 (en) Method of using a plurality of virtual memory spaces for providing efficient binary compatibility between a plurality of source architectures and a single target architecture
WO2022148390A1 (zh) 一种在区块链中部署、更新、调用智能合约的方法
US11249786B2 (en) Virtualizing hardware components that implement AI applications
US7350193B2 (en) Procedure invocation in an integrated computing environment having both compiled and interpreted code segments
US20230027902A1 (en) Creating Product Orchestration Engines
CN111782335A (zh) 通过进程内操作系统的扩展应用机制
CN114546581A (zh) 一种无服务容器启动方法及相关设备
Choi et al. x86‐Android performance improvement for x86 smart mobile devices
Olivier et al. A syscall-level binary-compatible unikernel
KR20110080767A (ko) 액티브엑스 컨트롤 변환 시스템 및 방법
RU2521265C2 (ru) Система и способ автоматической обработки системных ошибок программного обеспечения
CN115543486B (zh) 面向无服务器计算的冷启动延迟优化方法、装置和设备
Ma Revisiting Isolation for System Security and Efficiency in the Era of Internet of Things
CN115988066A (zh) 一种无侵入式异构微服务框架的自适配接入方法及系统
Jin et al. Heterogeneous-ISA Application Migration in Edge Computing: Challenges, Techniques and Open Issues

Legal Events

Date Code Title Description
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20170718

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