JP2016504673A - プロセスをマイグレートするためのコンピュータ実装方法、コンピュータベースのシステム、およびコンピュータ可読媒体(異種コンピューティング環境におけるプロセスのマイグレーションのための方法およびシステム) - Google Patents

プロセスをマイグレートするためのコンピュータ実装方法、コンピュータベースのシステム、およびコンピュータ可読媒体(異種コンピューティング環境におけるプロセスのマイグレーションのための方法およびシステム) Download PDF

Info

Publication number
JP2016504673A
JP2016504673A JP2015544563A JP2015544563A JP2016504673A JP 2016504673 A JP2016504673 A JP 2016504673A JP 2015544563 A JP2015544563 A JP 2015544563A JP 2015544563 A JP2015544563 A JP 2015544563A JP 2016504673 A JP2016504673 A JP 2016504673A
Authority
JP
Japan
Prior art keywords
target
source
operating system
application code
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
Application number
JP2015544563A
Other languages
English (en)
Other versions
JP6099760B2 (ja
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.)
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 JP2016504673A publication Critical patent/JP2016504673A/ja
Application granted granted Critical
Publication of JP6099760B2 publication Critical patent/JP6099760B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Stored Programmes (AREA)
  • Devices For Executing Special Programs (AREA)
  • Debugging And Monitoring (AREA)

Abstract

【課題】プロセスをマイグレートするためのコンピュータ実装方法、コンピュータベースのシステム、およびコンピュータ可読媒体を提供すること。【解決手段】本発明は、少なくとも1つのプロセスを、ソース・オペレーティング・システム(OS1)を有するソース・システム(S1)から、ターゲット・オペレーティング・システム(OS2)を有するターゲット・システム(S2)にマイグレートするための方法に関し、前記ソース・システムと前記ターゲット・システム(S1、S2)、および前記ソース・オペレーティング・システムと前記ターゲット・オペレーティング・システム(OS1、OS2)は異なり、ターゲット・システム(S2)は、− ソース・システム(S1)のソース仮想化マイグレーション・コンポーネント(VM1)との互換性があり、ソース仮想化マイグレーション・コンポーネント(VM1)によって送られたマイグレーション・トリガ情報を受け取るように適合された、ターゲット仮想化マイグレーション・コンポーネント(VM2)と、− ターゲット・システム(S2)を使用してソース・システム(S1)をエミュレートするように適合されたエミュレータ(EM12)と、− ソース・システム(S1)上で実行されるプロセスに関連するソース・アプリケーション・コード(C1)を、ターゲット・システム(S2)上で実行可能なバイナリ・ターゲット・アプリケーション・コード(C2)に変換するように適合されたコンパイラ(C12)と、− ソース・オペレーティング・システム(OS1)に向けられたシステム・コールを、ターゲット・オペレーティング・システム(OS2)に向けられたシステム・コールに変換するためのシステム・コール変換器(SCT12)と、− ソース・オペレーティング・システム(OS1)のランタイム・ライブラリに向けられたコールを、ターゲット・オペレーティング・システム(OS2)のランタイム・ライブラリに向けられたコールに変換するためのランタイム・ライブラリ変換器(RTT12)とを備える。【選択図】図2

Description

本発明は一般に、プロセスのマイグレーションの分野に関する。より詳細には、本発明は、異種コンピューティング環境、すなわち、ソース・ハードウェア・システム上のソース・オペレーティング・システムからターゲット・ハードウェア・システム上のターゲット・オペレーティング・システムへの、プロセスのマイグレーションのための方法およびシステムに関する。ここでは、ソース・オペレーティング・システムとターゲット・オペレーティング・システムは異なり、ソース・ハードウェアとターゲット・ハードウェアは異なる。
異なるハードウェアおよび異なるオペレーティング・システムを使用するコンピュータ・システム同士を、標準化されたネットワーク・インタフェースを使用して相互接続することは、周知の技術である。特に、クラウド環境は、多種多様のサーバ・マシン・アーキテクチャおよびオペレーティング・システムを含む場合がある(異種クラウド環境)。
このようなサーバ・マシンは、定期的なメンテナンスを受ける必要があるかまたは他の機能停止に直面するが、これらはサーバ・ダウンタイムにつながる。この問題を回避するために、いくつかのサーバ・マシンは、別のサーバ・マシンへの、仮想サーバのゼロ・ダウンタイム・マイグレーションを提供する。しかし、これらの解決法は、ターゲット・マシンがソース・マシンと同じアーキテクチャのものであることを常に必要とする。
異種クラウド環境では、ゼロ・ダウンタイム・マイグレーションが実施されなければならない時点で、ソース・サーバ・マシンと同じアーキテクチャのサーバ・マシンが利用可能でないのに対して、異なるアーキテクチャの、または異なるアーキテクチャ・レベルの、または異なるハードウェア機能がインストールされたサーバ・マシンが利用可能である場合がある。
ソース・マシンのエミュレータをターゲット・マシン上で利用して、異なるハードウェア/アーキテクチャにマイグレートすることはできるが、コードのエミュレーションは一般に、低い全体性能を被る。しかし、このようなシナリオでは、完全な仮想サーバをマイグレートすることに束縛される。すなわち、ソース・マシン上で実行されている種々のアプリケーションを異なるターゲット・マシンに移動することは不可能である。
したがって、マイグレートされたアプリケーションが、ターゲット・マシン上でネイティブにまたはほぼネイティブに機能し、したがって可能な最大のフレキシビリティを提供する、異種クラウド・シナリオでアプリケーションのマイグレーションを実施するためのメカニズムを有することが有利であろう。
本発明のコンテキストにおけるマイグレーションは、ライブ・マイグレーション、またはライブでないマイグレーションに関係する場合がある。ライブ・マイグレーションは、実行中のプロセスを中断なしでマイグレートすることを意味する。ライブでないマイグレーションは、実行中のプロセスがソース・システム上でサスペンドされ、プロセスの状態がソース・システム上で保存され、プロセスの状態がソース・システムからターゲット・システムに転送されることを意味する。プロセスの状態が転送された後、プロセスは、ソース・システム上で終了され、ターゲット・システム上で再開される。
本発明の実施形態の目的は、異種コンピューティング環境でプロセスをマイグレートするための向上したコンピュータ実装方法、コンピュータ可読媒体、およびシステムを提供することである。この目的は、独立請求項の特徴によって解決される。好ましい実施形態が、従属請求項で提供される。明示的に別段の指示がない限り、本発明の実施形態は、相互に自由に組み合わせることができる。
第1の態様では、本発明は、少なくとも1つのプロセスを、ソース・オペレーティング・システムを有するソース・システムから、ターゲット・オペレーティング・システムを有するターゲット・システムにマイグレートするためのコンピュータ実装方法に関し、前記ソース・システムと前記ターゲット・システム、および前記ソース・オペレーティング・システムと前記ターゲット・オペレーティング・システムは異なり、ターゲット・システムは、
− ソース・システムのソース仮想化マイグレーション・コンポーネントとの互換性があり、ソース仮想化マイグレーション・コンポーネントによって送られたマイグレーション・トリガ情報を受け取るように適合された、ターゲット仮想化マイグレーション・コンポーネントと、
− ターゲット・システムを使用してソース・システムをエミュレートするように適合されたエミュレータと、
− ソース・システム上で実行されるプロセスに関連するソース・アプリケーション・コードを、ターゲット・システム上で実行可能なバイナリ・ターゲット・アプリケーション・コードに変換するように適合されたコンパイラと、
− ソース・オペレーティング・システムに向けられたシステム・コールを、ターゲット・オペレーティング・システムに向けられたシステム・コールに変換するためのシステム・コール変換器と、
− ソース・オペレーティング・システムのランタイム・ライブラリに向けられたコールを、ターゲット・オペレーティング・システムのランタイム・ライブラリに向けられたコールに変換するためのランタイム・ライブラリ変換器とを備え、
この方法は、
− 前記ソース仮想化マイグレーション・コンポーネントおよび前記ターゲット仮想化マイグレーション・コンポーネントを使用して少なくとも1つのプロセスのマイグレーションを開始するステップと、
− マイグレートされることになる前記プロセスのための仮想アドレス空間をターゲット・システム中で割り振るステップと、
− マイグレートされることになるプロセスの仮想アドレス空間のメモリを、前記ターゲット・システムの前記割り振られた仮想アドレス空間にコピーするステップと、
− 前記プロセスに関連するオペレーティング・システム状態に関する情報をターゲット・オペレーティング・システムにコピーするステップと、
− マイグレートされることになるプロセスを、前記エミュレータを用いて前記ターゲット・オペレーティング・システム上で実行するステップとを含み、前記エミュレータは、前記プロセスに関連するコードの実行を開始し、かつ、
− 前記プロセスに関連する、ソース・オペレーティング・システムのためのシステム・コールおよびランタイム・ライブラリ・コールを、前記システム・コール変換器を用いて前記ターゲット・オペレーティング・システムのためのシステム・コールに、かつ前記ランタイム・ライブラリ変換器を用いて前記ターゲット・オペレーティング・システムのためのランタイム・ライブラリ・コールに変換するステップと、
− 前記ソース・アプリケーション・コードがまだ変換されていない場合に、前記コンパイラを用いて、マイグレートされることになるプロセスに関連する前記ソース・アプリケーション・コードを、前記ターゲット・システム上で実行可能なバイナリ・ターゲット・アプリケーション・コードに変換するステップと、
− 前記ターゲット・システム上における前記変換されたバイナリ・ターゲット・アプリケーション・コードの実行を開始するステップとを実施または開始する。
したがって、この方法は、ゼロ・ダウンタイムの場合であっても、プロセスがソース・システムからターゲット・システムにマイグレートされるのを可能にする。すなわち、2つの異なるオペレーティング・システム/ハードウェアの組合せの間で、プロセスのライブ・マイグレーションがある。したがって、一時的にシャットダウンされることになるサーバのプロセスを、種々のターゲット・システムに分散させることができる。これにより、本発明は、マイグレーションにおける2つの段階を提案する。すなわち、最初に、ターゲット・システム上でのソース・システムのエミュレーションがあり、それにより、ソース・システム上のマイグレートされたプロセスをすぐに実行できるようにする。性能を増大させるために、第2段階で、ソース・アプリケーション・コードが、ターゲット・システム上でネイティブに実行できるターゲット・アプリケーション・コードに変換されることになる。変換後、計算リソースを節約するためにエミュレーション・プロセスは停止されてよい。
本発明の好ましい実施形態によれば、システム・コールおよびランタイム・ライブラリ・コールを変換するステップ、ならびに前記ソース・アプリケーション・コードを変換するステップは、オンデマンドで実施される。変換されることになるプロセスのエミュレーションがターゲット・システム内で開始された後、ソース・アプリケーション・コードは段階的に変換される。例えば、ソース・コード・パッセージがエミュレータ内で実行されて、このソース・コード・パッセージが前に変換されていない場合、ソース・コード・パッセージは即座に変換されることになる。同様に、過去に変換されなかったシステム・コールまたはランタイム・ライブラリ・コールが生じた場合、これらのシステム・コールまたはランタイム・ライブラリ・コールは、その使用後に直ちに変換されることになる。
本発明の好ましい実施形態によれば、コンパイラは、ジャストインタイム(just−in−time)コンパイラである。ジャストインタイム・コンパイル(動的コンパイルとも呼ばれる)を使用して、機械可読バイナリ・ターゲット・コードがランタイムに生成される。すなわち、コードは、それが実行されようとしているときにコンパイルされる。これにより、ジャストインタイム・コンパイラへの入力は、中間コードまたは機械可読バイナリ・コードであってよく、このコードはジャストインタイム・コンパイラによって修正される。ジャストインタイム・コンパイルは、プロセスをマイグレートする性能を増大させる。
本発明の好ましい実施形態によれば、コンパイラによってコンパイルされることになるソース・アプリケーション・コードは、バイナリ・マシン・コード、バイナリ・マシン・コードと中間コードの組合せ、または中間コードである。中間コードは、プログラム・ソース・コードが解析されて字句および意味分析が実施された後の、プログラム・ソース・コードの抽象的なコンパイラ内部表現である。バイナリ・マシン・コードを使用するときは、エミュレータによって実行されることになるコードを直接使用して、バイナリ・ターゲット・コードを生成することができる。すなわち、同じバイナリ・コードが、エミュレータによって、ならびにコンパイラに対して使用される。一方、中間コードを使用すると、コンパイラは、元のソース・コードの抽象表現に基づいてプログラムを再コンパイルおよび最適化することができる。この手法では、元のソース・コードから直接生成されたかのように、基本的に同じ、ターゲット・システムのためのバイナリ・コードが得られる可能性が最も高い。
本発明の好ましい実施形態によれば、プロセスは中断なしでマイグレートされ、プロセスのエミュレーションは、前記ターゲット・システム上における前記変換されたバイナリ・ターゲット・アプリケーション・コードの実行が開始されたときに、停止される。プロセスをソース・システムからターゲット・システムのエミュレータにマイグレートし、後にターゲット・システム上でプロセスをネイティブ・モードで実行する(すなわち変換されたバイナリ・アプリケーション・コードを使用して)ことによって、プロセスは、ゼロ・ダウンタイムで、すなわちマイグレートされることになるプロセスの実行における中断なしでまたは少なくとも大きな中断なしで、ターゲット・システムに転送することができる。
本発明の好ましい実施形態によれば、エミュレータを始動させる前に、マイグレートされることになるプロセスに相関するソース・オペレーティング・システムの状態に関する情報が、ターゲット・オペレーティング・システムのエミュレータ・プロセスのコンテキスト中で同一に事前割振りされる。プロセスをマイグレートするためには、ソース・オペレーティング・システムの状態を定義するいくつかのオペレーティング・システム・リソース(例えば、プロセス識別子、ページ・テーブル・セットアップ、ファイル記述子、System V IPCリソースなど)を、ターゲット・オペレーティング・システムのコンテキストに転送することが不可欠である。リソースを同一に事前割振りした後、エミュレータ中で実行されているプロセスは、これらのリソースをすぐに直接に使用することができる。
本発明の好ましい実施形態によれば、ソース・オペレーティング・システムの状態に関する情報は、ターゲット・オペレーティング・システムのコンテキスト中の任意の場所に配置され、これらの情報へのアクセスは、ソース・オペレーティング・システムのコンテキスト中のシステム・リソースから、ターゲット・オペレーティング・システムのコンテキスト中のシステム・リソースに動的にマッピングされる。
本発明の好ましい実施形態によれば、システム・コールおよびランタイム・ライブラリ・コールを変換するステップ、ならびに前記ソース・アプリケーション・コードを変換するステップは、少なくとも2つのシステム・コール変換器、少なくとも2つのランタイム・ライブラリ変換器、少なくとも2つのエミュレータ、または少なくとも2つのコンパイラ、あるいはそれらの組合せの、カスケードを使用して実施される。これにより、オペレーティング・システム/ハードウェアの何らかの組合せに対してシステム・コール変換器、ランタイム・ライブラリ変換器、エミュレータ、またはコンパイラ、あるいはそれらの組合せが不足している場合に、これらの変換器、エミュレータ、およびコンパイラのうちの少なくとも2つをスタックすることによってマイグレーションを実現することができ、したがってコードやコールなどの変形が可能になる。
本発明の好ましい実施形態によれば、計算負荷を分割するためまたは分散させるためあるいはこの両方のために、1つのソース・システムからの少なくとも2つの無関係のプロセスが、少なくとも2つのターゲット・システムにマイグレートされる。これにより、シャットダウンされる予定のソース・システムのプロセスを複数のターゲット・サーバにマイグレートして、特定のターゲット・サーバによって引き継がれなければならない作業負荷を最小限に抑えることが可能である。
本発明の好ましい実施形態によれば、変換されたバイナリ・ターゲット・アプリケーション・コードは、ターゲット・システムのリポジトリにキャッシュされるかまたは永続的に記憶されるかあるいはその両方を施される。これにより、このコードは、好ましくはターゲット・システムのシャットダウン後でも、再使用することができる。変換されたバイナリ・ターゲット・アプリケーション・コードはまた、再使用するために、同じオペレーティング・システム/ハードウェア構成を有する別のターゲット・システムに転送することもできる。
本発明の好ましい実施形態によれば、変換されたバイナリ・ターゲット・アプリケーション・コードは、ソース・システムおよびターゲット・システムによってアクセスされるように、中央リポジトリに永続的に記憶される。エミュレータまたはコンパイラあるいはその両方は、それ自体で変換を実施する代わりに、すでに変換されたターゲット・アプリケーション・コード、または変換されたターゲット・アプリケーション・コードの一部を、後で再使用することができる。
本発明の好ましい実施形態によれば、ソース・アプリケーション・コードからバイナリ・ターゲット・アプリケーション・コードへの変換は、中央コンパイル・エンティティによって実施される。中央コンパイル・エンティティは、高度に並列かつ非常に高速な方式でコードを変換するように適合されてよい。中央コンパイル・エンティティを使用して、ターゲット・システムのコンパイル・タスク全体を引き継ぐことができる。別法として、中央コンパイル・エンティティを使用して、頻繁に使用されるいくつかのコード部分を事前変換し、変換されたコードをリポジトリ内に記憶することができる。ターゲット・システムは、マイグレーションを開始する前に、これらの事前変換済みコード部分をリポジトリから事前ロードすることができる。これらの事前変換済みコード部分を使用して最終的なターゲット・アプリケーション・コードを構築することができ、したがってマイグレーションはかなり高速化される。
本発明の好ましい実施形態によれば、チェッキング・エンティティを使用して、マイグレーション前にソース・システム上で実行されていたアプリケーション・コードの実行のセマンティクスが、ターゲット・システム上のマイグレーション後の変換済みバイナリ・コードの実行のセマンティクスと比較される。これにより、コードおよびコールの変換が正しかったこと、したがってプロセスが適切にマイグレートされたことが保証される。
さらに他の態様では、本発明は、ソース・オペレーティング・システムを有するソース・システムと、ターゲット・オペレーティング・システムを有するターゲット・システムとを少なくとも含む、プロセスをマイグレートするためのコンピュータベースのシステムに関し、前記ソース・システムと前記ターゲット・システム、および前記ソース・オペレーティング・システムと前記ターゲット・オペレーティング・システムは異なり、ターゲット・システムは、
− ソース・システムのソース仮想化マイグレーション・コンポーネントとの互換性があり、ソース仮想化マイグレーション・コンポーネントによって送られたマイグレーション・トリガ情報を受け取るように適合された、ターゲット仮想化マイグレーション・コンポーネントと、
− ターゲット・システムを使用してソース・システムをエミュレートするように適合されたエミュレータと、
− ソース・システム(S1)上で実行されるプロセスに関連するソース・アプリケーション・コードを、ターゲット・システム上で実行可能なバイナリ・ターゲット・アプリケーション・コードに変換するように適合されたコンパイラと、
− ソース・オペレーティング・システムに向けられたシステム・コールを、ターゲット・オペレーティング・システムに向けられたシステム・コールに変換するためのシステム・コール変換器と、
− ソース・オペレーティング・システムのランタイム・ライブラリに向けられたコールを、ターゲット・オペレーティング・システムのランタイム・ライブラリに向けられたコールに変換するためのランタイム・ライブラリ変換器とを備え、
このシステムは、
− 前記ソース仮想化マイグレーション・コンポーネントおよび前記ターゲット仮想化マイグレーション・コンポーネントを使用して少なくとも1つのプロセスのマイグレーションを開始すること、
− マイグレートされることになる前記プロセスのための仮想アドレス空間をターゲット・システム中で割り振ること、
− マイグレートされることになるプロセスの仮想アドレス空間のメモリを、前記ターゲット・システムの前記割り振られた仮想アドレス空間にコピーすること、
− 前記プロセスに関連するオペレーティング・システム状態に関する情報をターゲット・オペレーティング・システムにコピーすること、
− マイグレートされることになるプロセスを、前記エミュレータを用いて前記ターゲット・オペレーティング・システム上で実行すること、を行うように適合され、前記エミュレータは、前記プロセスに関連するコードの実行を開始するように適合され、かつ、
− 前記プロセスに関連する、ソース・オペレーティング・システムのためのシステム・コールおよびランタイム・ライブラリ・コールを、前記システム・コール変換器を用いて前記ターゲット・オペレーティング・システムのためのシステム・コールに、かつ前記ランタイム・ライブラリ変換器を用いて前記ターゲット・オペレーティング・システムのためのランタイム・ライブラリ・コールに変換するステップと、
− 前記ソース・アプリケーション・コードがまだ変換されていない場合に、前記コンパイラを用いて、マイグレートされることになるプロセスに関連する前記ソース・アプリケーション・コードを、前記ターゲット・システム上で実行可能なバイナリ・ターゲット・アプリケーション・コードに変換するステップと、
− 前記ターゲット・システム上における前記変換されたバイナリ・ターゲット・アプリケーション・コードの実行を開始するステップと、を実施または開始するように適合される。
以下、図面を参照しながら、本発明の好ましい実施形態についてほんの一例としてより詳細に述べる。
コンピューティング環境の概略アーキテクチャを示す図である。 ソース・システムおよびターゲット・システムの概略構造を示す図である。 本発明によるマイグレーション・プロセスの概略フローチャートである。 変換およびエミュレーション・エンティティのスタッキングを使用した、ソース・システムおよびターゲット・システムの概略構造を示す図である。
当業者には理解されるであろうが、本発明の態様は、システム、方法、またはコンピュータ・プログラム製品として具現化することができる。したがって、本発明の態様は、完全にハードウェアの実施形態、完全にソフトウェアの実施形態(ファームウェア、常駐ソフトウェア、マイクロコードなどを含む)、または、ソフトウェアとハードウェアの態様を組み合わせた実施形態の形をとることができ、本明細書ではこれらは全て「回路」、「モジュール」、または「システム」と一般に呼ばれる場合がある。さらに、本発明の態様は、コンピュータ可読プログラム・コードが組み入れられた1つまたは複数のコンピュータ可読媒体において具現化されるコンピュータ・プログラム製品の形をとることもできる。1つまたは複数のコンピュータ可読媒体の、任意の組合せを利用することができる。コンピュータ可読媒体は、コンピュータ可読信号媒体またはコンピュータ可読記憶媒体とすることができる。コンピュータ可読記憶媒体は、例えば、電子、磁気、光学、電磁、赤外線、もしくは半導体の、システム、装置、もしくはデバイス、またはこれらの任意の適切な組合せとすることができるが、これらに限定されない。コンピュータ可読記憶媒体のより具体的な例(非網羅的なリスト)は、1つもしくは複数のワイヤを有する電気接続、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM)、読取専用メモリ(ROM)、消去可能プログラム可能な読取専用メモリ(EPROMもしくはフラッシュ・メモリ)、光ファイバ、ポータブル・コンパクト・ディスク読取専用メモリ(CD−ROM)、光学記憶デバイス、磁気記憶デバイス、またはこれらの任意の適切な組合せを含むことになる。この文書のコンテキストでは、コンピュータ可読記憶媒体は、命令実行システム、装置、またはデバイスによって使用されるかまたはそれらに関連して使用されるプログラムを、収録または記憶することのできる、任意の有形媒体とすることができる。
コンピュータ可読信号媒体は、例えばベースバンド中にまたは搬送波の一部として、コンピュータ可読プログラム・コードが組み入れられた伝搬データ信号を含んでよい。このような伝搬信号は、電磁、光学、またはこれらの任意の他の適切な組合せを含めた(ただしこれらに限定されない)様々な形のいずれかをとることができる。コンピュータ可読信号媒体は、コンピュータ可読記憶媒体でないコンピュータ可読媒体であって、命令実行システム、装置、もしくはデバイスによって使用されるかまたはそれらに関連して使用されるプログラムを通信、伝搬または搬送できるコンピュータ可読媒体とすることができる。
コンピュータ可読媒体上に組み入れられたプログラム・コードは、ワイヤレス、有線、光ファイバ・ケーブル、RFなど、またはこれらの任意の適切な組合せを含めた(ただしこれらに限定されない)、任意の適切な媒体を使用して伝送することができる。
本発明の態様に関する動作を実施するためのコンピュータ・プログラム・コードは、Java(R)、Smalltalk(R)、C++などのオブジェクト指向プログラミング言語、および、「C」プログラミング言語または類似のプログラミング言語などの従来の手続き型プログラミング言語を含めた、1つまたは複数のプログラミング言語の任意の組合せで書かれてよい。プログラム・コードは、完全にユーザのコンピュータ上で実行されるか、部分的にユーザのコンピュータ上で実行されるか、または完全にリモート・コンピュータもしくはサーバ上で実行されてよい。後者のシナリオでは、リモート・コンピュータは、ローカル・エリア・ネットワーク(LAN)もしくはワイド・エリア・ネットワーク(WAN)を含めた任意のタイプのネットワークを介してユーザのコンピュータに接続されてよく、または、接続は、外部コンピュータに対して(例えばインターネット・サービス・プロバイダを使用してインターネットを介して)行われてもよい。
図1を参照すると、コンピューティング環境1の従来のアーキテクチャが示されている。例えば、2つのコンピューティング・システムS1、S2がネットワーク接続3を介して結合されて、コンピューティング・システムS1、S2が相互に通信することが可能になる。このコンピューティング環境は、異種環境である。すなわち、システムS1のハードウェアHW1は、システムS2のハードウェアHW2とは異なる。加えて、コンピューティング・システムS1、S2は、異なるオペレーティング・システムを備える場合がある。すなわち、システムS1は第1のオペレーティング・システムOS1を備え、システムS2は第2のオペレーティング・システムOS2を備え、オペレーティング・システムOS1とOS2は異なる。コンピューティング・システムS1、S2は、仮想マシン・モニタ(ハイパーバイザとも呼ばれる)の上で稼働することのできる専用サーバまたは仮想サーバであってよい。以下では、少なくとも1つのプロセスPMが、コンピューティング・システムS1からコンピューティング・システムS2にマイグレートされる。すなわち、このマイグレーションに関して、コンピューティング・システムS1はソース・システムであり、コンピューティング・システムS2はターゲット・システムである。
図2に、ソース・システムS1およびターゲット・システムS2をより詳細に示す。ソース・システムS1は、あるハードウェア・アーキテクチャを伴うハードウェアHW1を備える。ソース・システムS1のオペレーティング・システムOS1は、仮想化マイグレーション・コンポーネントVM1、システム・コール・インタフェースSC1、およびランタイム・ライブラリ・インタフェースRT1を備える。仮想化マイグレーション・コンポーネントVM1は、オペレーティング・システムOS1内に位置することが好ましい。仮想化マイグレーション・コンポーネントVM1は、ソース・システムS1からターゲット・システムS2にマイグレートされることになるプロセスPMのマイグレーションを開始および実施するように適合される。言い換えれば、仮想化マイグレーション・コンポーネントVM1は、ソース・システムS1のマイグレーション・インタフェースを構築する。システム・コール・インタフェースSC1は、プロセスPMによって開始されるシステム・コールを扱うためのインタフェースである。システム・コール・インタフェースSC1を介して、プロセスがオペレーティング・システムのカーネルにサービスを要求することができる。これは、ハードウェアに関係するサービス(例えばハード・ディスクへのアクセス)、新しいプロセスの作成および実行、ならびに統合カーネル・サービスとの通信(スケジューリングのような)を含む場合がある。前出のランタイム・ライブラリ・インタフェースRT1は、プロセスPMによって開始されるライブラリ・コールを扱う。ライブラリ・コールは、システム・コールを抽象化することによってアプリケーション・コードを削減するための、コンピュータ技術における周知の手段である。
マイグレートされることになる、プロセスPM、またはプロセスのグループは、ソース・システムS1上で実行されている。プロセスPMは、コンパイルされたソース・アプリケーション・コードC1(すなわち、ソース・システムS1のハードウェアHW1上でのみ実行できターゲット・システムS2上では実行できないバイナリ・マシン・コード)に関連する。コンパイルされたソース・アプリケーション・コードC1は、オペレーティング・システムOS1のシステム・コール・インタフェースSC1を介したシステム・コール、およびランタイム・ライブラリ・インタフェースRT1を介したライブラリ・コールを開始することができる。
加えて、ターゲット・システムS2は、ハードウェアHW1とは異なりうる、あるハードウェア・アーキテクチャを伴うハードウェアHW2を備える。ターゲット・システムS2のオペレーティング・システムOS2は、仮想化マイグレーション・コンポーネントVM2、システム・コール・インタフェースSC2、およびランタイム・ライブラリ・インタフェースRT2を備える。仮想化マイグレーション・コンポーネントVM2は、オペレーティング・システムOS2内に位置することが好ましい。仮想化マイグレーション・コンポーネントVM2は、ソース・システムS1の仮想化マイグレーション・コンポーネントVM1との互換性を有する。すなわち、仮想化マイグレーション・コンポーネントVM2は、仮想化マイグレーション・コンポーネントVM1によってマイグレーションが開始されたプロセスPMのマイグレーション・ターゲットとしての役割を果たすように適合される。言い換えれば、仮想化マイグレーション・コンポーネントVM2は、仮想化マイグレーション・コンポーネントVM1の相対物を構築して、ソース・システムS1とターゲット・システムS2との間でのプロセスのマイグレーションを可能にする。
システム・コール・インタフェースSC2は、オペレーティング・システムOS2に向けられたシステム・コールを扱うためのインタフェースである。前記ランタイム・ライブラリ・インタフェースRT2は、オペレーティング・システムOS2に向けられたライブラリ・コールを扱う。
さらに、ターゲット・システムS2はエミュレータE12を備え、エミュレータE12は、ソース・システムS1のハードウェアHW1をターゲット・システムS2上でエミュレートするように適合される。エミュレータE12内では、プロセスPMを、ターゲット・システムS2上においてエミュレーション・モードで実行することが可能である。すなわち、ソース・システムS1の機能がターゲット・システムS2内で再現されて、プロセスPMをターゲット・システムS2上で実行することが可能になる。
ターゲット・システムS2はさらにコンパイラC12を備え、コンパイラC12は、ソース・システムS1上で実行できるソース・アプリケーション・コードC1を、ターゲット・システムS2上で直接に実行されるように適合されたターゲット・アプリケーション・コードC2に変換するように適合される。コンパイラC12は、コードをランタイムにコンパイルできる動的ジャストインタイム・コンパイラであることが好ましい。ターゲット・システムS2上でプロセスがエミュレーション・モードで実行されている間に、コンパイルされることになるソース・アプリケーション・コードC1のアプリケーション・コード・パッセージにエミュレータE12が遭遇したとき、ソース・アプリケーション・コード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を用いて、ソース・システムS1からターゲット・システムS2へのプロセスPMの例示的なマイグレーションについて説明する。マイグレーション・プロセスの初め、マイグレートされることになるプロセスPMは、ソース・システムS1上で実行されている(10)。ソース・システムS1上で実行されているプロセスPMをターゲット・システムS2にマイグレートすることが要求された場合(11)、ターゲット・システムS2がソース・システムS1との互換性を有するかどうか、すなわちターゲット・システムS2がソース・システムS1と同じオペレーティング・システムOS2およびハードウェアHW2を備えることがチェックされる(12)。
ターゲット・システムS2がソース・システムS1との互換性を有する場合は、ソース・システムS1からターゲット・システムS2への標準的なプロセス・マイグレーションが実施される(13)。このプロセスは当業者に周知である。例えば、マイグレートされることになるプロセスに関連する、メモリおよび他のプロセス・パラメータが、ターゲット・システムS2にコピーされる。マイグレーション後、プロセスPMが開始され、プロセスPMは、ネイティブ・モードで(すなわち、ソース・システムS1上で実行されている間のものと同じバイナリ・アプリケーション・コード、システム・コール、ランタイム・ライブラリ・コールなどを使用して)実行されてよい(14)。
互換性に関する判定が否定的である場合(12)、すなわちターゲット・システムS2がソース・システムS1との互換性を有さない場合は、エミュレータE12、システム・コール変換器SCT12、ランタイム・ライブラリ変換器RTT12、およびコンパイラC12がターゲット・システムS2上で利用可能かどうかが調べられる。プロセス・マイグレーションに関わるシステムS1、S2のハードウェアHW1、HW2およびオペレーティング・システムOS1、OS2に関する前述のエミュレーションおよび変換タスクを実施するためには、エミュレータE12、システム・コール変換器SCT12、ランタイム・ライブラリ変換器RTT12、およびコンパイラC12が互換性を有さなければならない(15)。
互換性のあるエミュレータE12、システム・コール変換器SCT12、ランタイム・ライブラリ変換器RTT12、およびコンパイラC12がターゲット・システムS2上で利用可能である場合は、プロセスPMは、ターゲット・システムS2上のエミュレータE12のエミュレータ環境にマイグレートされる(16)。マイグレーションは、仮想化マイグレーション・コンポーネントVM1、VM2の対話によって実施される。プロセスPMを仮想化マイグレーション・コンポーネントVM1から仮想化マイグレーション・コンポーネントVM2にマイグレートするとき、プロセスPMの仮想アドレス空間のメモリが、オペレーティング・システムOS2にコピーされる。さらに、プロセスPMに関連するオペレーティング・システム状態が、オペレーティング・システムOS2にコピーされる。オペレーティング・システム状態は、ローカル・リソースおよびグローバル・リソースを含む。ローカル・リソースは、例えば、ページ・テーブル・セットアップ、ファイル記述子、System V IPCリソース(セマフォ、共有メモリ・エリア、キューなど)、プロセス識別子などである。グローバル・リソースは、例えば、オープン・ネットワーク接続、ネットワーク共有などである。
このコピーが終了した後、ターゲット・システムS2上で、エミュレータEM12を用いて、すなわちエミュレーション・モードで、プロセス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は、動的なジャストインタイム・コンパイラであってよい。すなわち、ソース・アプリケーション・コードC1は、ソース・アプリケーション・コードC1がエミュレータEM12によって実行される間に、ターゲット・アプリケーション・コードC2に変換される。加えて、コンパイラは、ソース・アプリケーション・コードC1の変換をオンデマンドで実施することができる。すなわち、変換は、過去にターゲット・アプリケーション・コードC2にコンパイルされなかった、ソース・アプリケーション・コードC1のあるパッセージを、エミュレータEM12が使用するとき、インクリメンタルに実行される。これにより、ソース・アプリケーション・コードC1のコード・セグメントは、ターゲット・アプリケーション・コードC2のコード・セグメントで動的に置換される(21)。ターゲット・アプリケーション・コードC2は、ターゲット・システムS2内で一時的に保存されることが好ましい。
ソース・アプリケーション・コードC1がターゲット・アプリケーション・コードC2に完全にコンパイルされた後、得られたターゲット・アプリケーション・コードC2は、永続的リポジトリに、すなわちターゲット・システムS2の不揮発性記憶手段に記憶される(22)。これにより、ターゲット・アプリケーション・コードC2は、例えば、仮想化マイグレーション・コンポーネントVM1から仮想化マイグレーション・コンポーネントVM2への前述のマイグレーション・プロセスを実施する間に永続的リポジトリの内容を追加でマイグレートすることによって、再使用することができる。ターゲット・アプリケーション・コードC2をターゲット・システムS2上で永続的に記憶することに関するさらに他の利点は、ターゲット・システムS2の再起動後にターゲット・アプリケーション・コードC2を再使用できることである。すなわち、ソース・システムS1をエミュレートしソース・アプリケーション・コードC1をターゲット・アプリケーション・コードC2に再コンパイルするためのシステム・リソースを、節約することができる。
最後に、エミュレーション・モードでのプロセスPMの実施が停止され、プロセスPMは、前に生成されたターゲット・アプリケーション・コードC2を使用しながら、HW2に適したネイティブ・バイナリ・コードを実行する(23)。システム・コール変換およびランタイム・ライブラリ・コール変換を実施し続ける必要がある場合もある。
ターゲット・システムS2上でのエミュレータEM12、システム・コール変換器SCT12、ランタイム・ライブラリ変換器RTT12、およびコンパイラC12の利用可能性を決定する調査ステップ(15)が否定的結果となった場合、ソース・システムS1からターゲット・システムS2へのマイグレーションは拒否されてよい(24)。拒否の前に、変換およびエミュレーション・プロセスのスタッキングによってソース・システムS1からターゲット・システムS2へのマイグレーションが可能かどうかを判定するための中間調査ステップがあることが好ましい。異種コンピューティング環境では、エミュレータ、コンパイラ、システム・コール変換器、またはランタイム・ライブラリ・コール変換器、あるいはそれらの組合せが、ソースおよびターゲット・システムS1、S2のあらゆる可能な組合せについて存在するわけではない場合がある。
サポートされないオペレーティング・システムOS2またはハードウェアHW2あるいはその両方へのマイグレーションを可能にするために、それぞれの既存の変換およびエミュレーション・プロセスをスタックすることができ、したがって、結果的な処理スタックにより、任意のオペレーティング・システムOS2上またはハードウェアHW2上あるいはその両方で、所望のソース・アプリケーション・コードC1を実行することができる。例えば、Windows(R)/Intel(R)プロセスPMをAIX(R)システム上で実行することは、Linux/Intel(R)システム・コールおよびランタイム・ライブラリ・コール変換器の上でプロセスPMを処理し、Intel(R)−Powerエミュレータおよびジャストインタイム・コンパイラを用いてIntel(R)コードをLinux on Powerコードに変換し、得られたコードをLinux on Power−AIX(R)変換器の上で実行することによって、達成できるはずである。言い換えれば、コンパイラC12、システム・コール変換器SCT12、またはランタイム・ライブラリ変換器RTT12、あるいはそれらの組合せが利用可能でないが、プロセスをソース・システムS1から第3のシステムにマイグレートするためのコンパイラC13、システム・コール変換器SCT13、およびランタイム・ライブラリ変換器RTT13、ならびに、プロセスを第3のシステムからターゲット・システムS2にマイグレートするためのコンパイラC32、システム・コール変換器SCT32、およびランタイム・ライブラリ変換器RTT32は利用可能である場合、このスタッキングを使用してソース・システムS1からターゲット・システムS2へのマイグレーションを実施することができる(図4)。
プロセスPMのマイグレーションのためには、プロセスPMに関連するオペレーティング・システム状態をオペレーティング・システムOS2に転送する必要がある。オペレーティング・システム状態は、ページ・テーブル・セットアップ、ファイル記述子、System V IPCリソース(セマフォ、共有メモリ・エリア、キューなど)、プロセス識別子などを含む。オペレーティング・システム状態は、マイグレーション・プロセス中は変更されないものとすることができる。このことは、ターゲット・システムS2上でソース・システムS1のエミュレーションを実施する間、オペレーティング・システム状態がオペレーティング・システムOS2のコンテキスト中で全く同じでなければならないことを意味する。さもなければ、エミュレーション・プロセスをオペレーティング・システムOS2上で正しく実行することはできないはずである。ターゲット・システムS2上でマイグレートされることになるプロセスに関連するオペレーティング・システム状態を提供するための、少なくとも2つの異なる可能性がありうる。
第1の可能性は、オペレーティング・システム状態をオペレーティング・システムOS2のコンテキスト中で事前割振りすることである。マイグレーションの最初に、オペレーティング・システムOS2はまず、エミュレータを始動する前にオペレーティング・システム状態についての組合せのリソースをオペレーティング・システムOS2のコンテキスト中で割り振る。マイグレートされることになるプロセスPMのエミュレーションが開始したとき、エミュレーションは、事前割振りされたリソースを、エミュレートされるプロセスに使用し、オペレーティング・システムOS2のコンテキスト中の残りのリソースを、実際のエミュレータ・プロセスの実行に使用する。
第2の可能性は、オペレーティング・システム状態に関するリソースを、オペレーティング・システムOS2のコンテキスト中の任意の場所に配置することである。オペレーティング・システム状態に関する情報へのアクセスを可能にするために、オペレーティング・システムに関する実際の情報へのマッピングが動的に行われる。この場合、ターゲット・システムS2上でのエミュレーションは、オペレーティング・システム状態をオペレーティング・システムOS2のコンテキスト中で割り振る前に開始できるが、マッピングによる追加の計算労力がかかるので、全体的なマイグレーション性能はより低い場合がある。
本発明の好ましい一実施形態では、一意に識別可能なコード部分を永続的に保存するための中央リポジトリがあってよい。マイグレーション・プロセスに関わる可能性のある全てのシステムは、中央リポジトリへのアクセスを有することができる。特に、中央リポジトリは、クラウド環境内で構成されてよい。バイナリ・アプリケーション・コードを変形するエミュレータまたはコンパイラは、コンパイル結果を永続的に保存するために、コンパイル結果を中央リポジトリにサブミットすることができる。マイグレーション・プロセスに関わるシステムのエミュレータまたはコンパイラが、ソース・アプリケーション・コードC1をターゲット・アプリケーション・コードC2にコンパイルしなければならない場合、エミュレータまたはコンパイラは、コンパイルされることになるコードまたはコード部分が過去にすでにコンパイルされた可能性がありしたがって中央リポジトリ上で利用可能であるかどうかを調べるために、中央リポジトリへのアクセスを開始することができる。そうである場合は、エミュレータまたはコンパイラは、すでにコンパイルされたコードまたはコード部分をフェッチして再使用することができる。
多量のコンピューティング・エンティティを含むコンピューティング環境では特に、ソース・オペレーティング・システムOS1またはハードウェアHW1あるいはその両方に適合されたアプリケーション・コードを、ターゲット・オペレーティング・システムOS2またはハードウェアHW2あるいはその両方に適合されたバイナリ・アプリケーション・コードに変換するための、少なくとも1つのコンパイル・エンティティがある場合がある。コンパイル・エンティティは、コードの高度に並列かつ高速なコンパイルに適合されたものであってよい。コンパイル・エンティティは、コンパイル・タスクをエミュレータから受け取り、要求されたコンパイルを実施し、コンパイルされたコードを要求元エミュレータに送り返すことができる。追加でまたは別法として、コンパイルされたコードは中央リポジトリに送られてもよい。
コードのコンパイルは、中間コード技法を使用しながら実施されることが好ましい。コンパイラは、コンパイルのために、バイナリ・アプリケーション・コードに加えて、標準化された中間言語コードを生み出すことができる。中間言語コードが加わると、動的な再コンパイルは単純化され、ターゲット・システムのためのよりよい最適化されたバイナリ・コードを生み出すことができ、再コンパイルのさらに他の側面として、システム・コールおよびランタイム・ライブラリ・コール変換を不要にすることができる。例えば、中間言語コードおよび関連するバイナリ・アプリケーション・コードは、共に中央リポジトリに記憶されてよい。マイグレーション・プロセスに関わるシステムのオペレーティング・システムおよびハードウェア構成に応じて、コンパイルは、中間言語コードに基づいて行われてもよく、または、すでにコンパイルされたバイナリ・コードが選択されてもよい。
加えて、ターゲット・システム内またはコンピューティング環境内で、チェッキング・エンティティを共通エンティティとして利用することができる。チェッキング・エンティティは、マイグレーション前にソース・システムS1上で実行されていたバイナリ・コードの実行のセマンティクスを、ターゲット・システムS2上のマイグレーション後の変換済みバイナリ・コードの実行のセマンティクスと比較することができる。チェッキング・エンティティを実装することの目標は、ソース・アプリケーション・コードC1をターゲット・アプリケーション・コードC2にコンパイルする際に失敗があったかどうかを見出すことである。それぞれのセマンティクス間の違いが決定された場合、マイグレーションの試みは拒否されてよく、それによりエラー状況が回避される。

Claims (15)

  1. 少なくとも1つのプロセスを、ソース・オペレーティング・システム(OS1)を有するソース・システム(S1)から、ターゲット・オペレーティング・システム(OS2)を有するターゲット・システム(S2)にマイグレートするためのコンピュータ実装方法であって、前記ソース・システムと前記ターゲット・システム(S1、S2)、および前記ソース・オペレーティング・システムと前記ターゲット・オペレーティング・システム(OS1、OS2)が異なり、前記ターゲット・システム(S2)が、
    − 前記ソース・システム(S1)のソース仮想化マイグレーション・コンポーネント(VM1)との互換性があり、前記ソース仮想化マイグレーション・コンポーネント(VM1)によって送られたマイグレーション・トリガ情報を受け取るように適合された、ターゲット仮想化マイグレーション・コンポーネント(VM2)と、
    − 前記ターゲット・システム(S2)を使用して前記ソース・システム(S1)をエミュレートするように適合されたエミュレータ(EM12)と、
    − 前記ソース・システム(S1)上で実行されるプロセスに関連するソース・アプリケーション・コード(C1)を、前記ターゲット・システム(S2)上で実行可能なバイナリ・ターゲット・アプリケーション・コード(C2)に変換するように適合されたコンパイラ(C12)と、
    − 前記ソース・オペレーティング・システム(OS1)に向けられたシステム・コールを、前記ターゲット・オペレーティング・システム(OS2)に向けられたシステム・コールに変換するためのシステム・コール変換器(SCT12)と、
    − 前記ソース・オペレーティング・システム(OS1)のランタイム・ライブラリに向けられたコールを、前記ターゲット・オペレーティング・システム(OS2)のランタイム・ライブラリに向けられたコールに変換するためのランタイム・ライブラリ変換器(RTT12)とを備え、
    前記方法が、
    − 前記ソース仮想化マイグレーション・コンポーネントおよび前記ターゲット仮想化マイグレーション・コンポーネント(VM1、VM2)を使用して前記少なくとも1つのプロセス(PM)のマイグレーションを開始するステップと、
    − マイグレートされることになる前記プロセス(PM)のための仮想アドレス空間を前記ターゲット・システム(S2)中で割り振るステップと、
    − マイグレートされることになる前記プロセス(PM)の仮想アドレス空間のメモリを、前記ターゲット・システム(S2)の前記割り振られた仮想アドレス空間にコピーするステップと、
    − 前記プロセス(PM)に関連するオペレーティング・システム状態に関する情報を前記ターゲット・オペレーティング・システム(OS2)にコピーするステップと、
    − マイグレートされることになる前記プロセス(PM)を、前記エミュレータ(EM12)を用いて前記ターゲット・オペレーティング・システム(OS2)上で実行するステップとを含み、前記エミュレータが、前記プロセス(PM)に関連する前記コードの実行を開始し、かつ、
    − 前記プロセスに関連する、前記ソース・オペレーティング・システム(OS1)のためのシステム・コールおよびランタイム・ライブラリ・コールを、前記システム・コール変換器(SCT12)を用いて前記ターゲット・オペレーティング・システム(OS2)のためのシステム・コールに、かつ前記ランタイム・ライブラリ変換器(RTT12)を用いて前記ターゲット・オペレーティング・システム(OS2)のためのランタイム・ライブラリ・コールに変換するステップと、
    − 前記ソース・アプリケーション・コード(C1)がまだ変換されていない場合に、前記コンパイラ(C12)を用いて、マイグレートされることになる前記プロセス(PM)に関連する前記ソース・アプリケーション・コード(C1)を、前記ターゲット・システム(S2)上で実行可能な前記バイナリ・ターゲット・アプリケーション・コード(C2)に変換するステップと、
    − 前記ターゲット・システム(S2)上における前記変換されたバイナリ・ターゲット・アプリケーション・コード(C2)の実行を開始するステップとを実施または開始する、方法。
  2. システム・コールおよびランタイム・ライブラリ・コールを変換する前記ステップ、ならびに前記ソース・アプリケーション・コード(C1)を変換する前記ステップが、オンデマンドで実施される、請求項1に記載の方法。
  3. 前記コンパイラ(C12)がジャストインタイム・コンパイラである、請求項1または2に記載の方法。
  4. 前記コンパイラ(C12)によってコンパイルされることになる前記ソース・アプリケーション・コード(C1)が、バイナリ・マシン・コード、バイナリ・マシン・コードと中間コードの組合せ、または中間コードである、請求項1ないし3のいずれか一項に記載の方法。
  5. 前記プロセスが中断なしでマイグレートされ、前記プロセス(PM)のエミュレーションが、前記ターゲット・システム(S2)上における前記変換されたバイナリ・ターゲット・アプリケーション・コード(C2)の実行が開始されたときに停止される、請求項1ないし4のいずれか一項に記載の方法。
  6. 前記エミュレータ(EM12)を始動させる前に、前記ソース・オペレーティング・システム(OS1)の状態に関する情報が、前記ターゲット・オペレーティング・システム(OS2)のエミュレータ・プロセスのコンテキスト中で同一に事前割振りされる、請求項1ないし5のいずれか一項に記載の方法。
  7. 前記ソース・オペレーティング・システム(OS1)の状態に関する情報が、前記ターゲット・オペレーティング・システム(OS2)のプロセス・コンテキスト中の任意の場所に配置され、前記情報へのアクセスが、前記ソース・オペレーティング・システム(OS1)のコンテキスト中のシステム・リソースから、前記ターゲット・オペレーティング・システム(OS2)の前記コンテキスト中のシステム・リソースに動的にマッピングされる、請求項1ないし5のいずれか一項に記載の方法。
  8. システム・コールおよびランタイム・ライブラリ・コールを変換する前記ステップ、ならびに前記ソース・アプリケーション・コード(C1)を変換する前記ステップが、少なくとも2つのシステム・コール変換器、少なくとも2つのランタイム・ライブラリ変換器、少なくとも2つのエミュレータ、または少なくとも2つのコンパイラ、あるいはそれらの組合せの、カスケードを使用して実施される、請求項1ないし7のいずれか一項に記載の方法。
  9. 計算負荷を分割するためまたは分散させるためあるいはこの両方のために、1つのソース・システムからの少なくとも2つの無関係のプロセスが、少なくとも2つのターゲット・システムにマイグレートされる、請求項1ないし8のいずれか一項に記載の方法。
  10. 前記変換されたバイナリ・ターゲット・アプリケーション・コード(C2)が、前記ターゲット・システム(S2)のリポジトリにキャッシュされるかまたは永続的に記憶されるかあるいはその両方を施される、請求項1ないし9のいずれか一項に記載の方法。
  11. 前記変換されたバイナリ・ターゲット・アプリケーション・コード(C2)が、前記ソース・システムおよび前記ターゲット・システム(S1、S2)によってアクセスされるように中央リポジトリに永続的に記憶される、請求項1ないし10のいずれか一項に記載の方法。
  12. 前記ソース・アプリケーション・コード(C1)から前記バイナリ・ターゲット・アプリケーション・コード(C2)への変換が中央コンパイル・エンティティによって実施される、請求項1ないし11のいずれか一項に記載の方法。
  13. チェッキング・エンティティを使用して、マイグレーション前に前記ソース・システム(S1)上で実行されていた前記アプリケーション・コード(C1)の実行のセマンティクスが、前記ターゲット・システム(S2)上のマイグレーション後の変換済みバイナリ・コードの実行のセマンティクスと比較される、請求項1ないし12のいずれか一項に記載の方法。
  14. ソース・オペレーティング・システム(OS1)を有するソース・システム(S1)と、ターゲット・オペレーティング・システム(OS2)を有するターゲット・システム(S2)とを少なくとも含む、プロセスをマイグレートするためのコンピュータベースのシステムであって、前記ソース・システムと前記ターゲット・システム(S1、S2)、および前記ソース・オペレーティング・システムと前記ターゲット・オペレーティング・システム(OS1、OS2)が異なり、前記ターゲット・システム(S2)が、
    − 前記ソース・システム(S1)のソース仮想化マイグレーション・コンポーネント(VM1)との互換性があり、前記ソース仮想化マイグレーション・コンポーネント(VM1)によって送られたマイグレーション・トリガ情報を受け取るように適合された、ターゲット仮想化マイグレーション・コンポーネント(VM2)と、
    − 前記ターゲット・システム(S2)を使用して前記ソース・システム(S1)をエミュレートするように適合されたエミュレータ(EM12)と、
    − 前記ソース・システム(S1)上で実行されるプロセスに関連するソース・アプリケーション・コード(C1)を、前記ターゲット・システム(S2)上で実行可能なバイナリ・ターゲット・アプリケーション・コード(C2)に変換するように適合されたコンパイラ(C12)と、
    − 前記ソース・オペレーティング・システム(OS1)に向けられたシステム・コールを、前記ターゲット・オペレーティング・システム(OS2)に向けられたシステム・コールに変換するためのシステム・コール変換器(SCT12)と、
    − 前記ソース・オペレーティング・システム(OS1)のランタイム・ライブラリに向けられたコールを、前記ターゲット・オペレーティング・システム(OS2)のランタイム・ライブラリに向けられたコールに変換するためのランタイム・ライブラリ変換器(RTT12)とを備え、
    前記システムが、
    − 前記ソース仮想化マイグレーション・コンポーネントおよび前記ターゲット仮想化マイグレーション・コンポーネント(VM1、VM2)を使用して前記少なくとも1つのプロセス(PM)のマイグレーションを開始することと、
    − マイグレートされることになる前記プロセス(PM)のための仮想アドレス空間を前記ターゲット・システム(S2)中で割り振ることと、
    − マイグレートされることになる前記プロセス(PM)の仮想アドレス空間のメモリを、前記ターゲット・システム(S2)の前記割り振られた仮想アドレス空間にコピーすることと、
    − 前記プロセス(PM)に関連するオペレーティング・システム状態に関する情報を前記ターゲット・オペレーティング・システム(OS2)にコピーすることと、
    − マイグレートされることになる前記プロセス(PM)を、前記エミュレータ(EM12)を用いて前記ターゲット・オペレーティング・システム(OS2)上で実行することと、を行うように適合され、前記エミュレータが、前記プロセス(PM)に関連する前記コードの実行を開始するように適合され、かつ、
    − 前記プロセスに関連する、前記ソース・オペレーティング・システム(OS1)のためのシステム・コールおよびランタイム・ライブラリ・コールを、前記システム・コール変換器(SCT12)を用いて前記ターゲット・オペレーティング・システム(OS2)のためのシステム・コールに、かつ前記ランタイム・ライブラリ変換器(RTT12)を用いて前記ターゲット・オペレーティング・システム(OS2)のためのランタイム・ライブラリ・コールに変換するステップと、
    − 前記ソース・アプリケーション・コード(C1)がまだ変換されていない場合に、前記コンパイラ(C12)を用いて、マイグレートされることになる前記プロセス(PM)に関連する前記ソース・アプリケーション・コード(C1)を、前記ターゲット・システム(S2)上で実行可能な前記バイナリ・ターゲット・アプリケーション・コード(C2)に変換するステップと、
    − 前記ターゲット・システム(S2)上における前記変換されたバイナリ・ターゲット・アプリケーション・コード(C2)の実行を開始するステップとを実施または開始するように適合された、コンピュータベースのシステム。
  15. コンピュータ可読プログラム・コードが組み入れられたコンピュータ可読媒体であって、プロセッサによって実行されたときに請求項1ないし13のいずれか一項に記載の方法を前記プロセッサに実行させる、コンピュータ可読媒体。
JP2015544563A 2012-12-03 2013-10-18 プロセスをマイグレートするためのコンピュータ実装方法、コンピュータベースのシステム、およびコンピュータプログラム Expired - Fee Related JP6099760B2 (ja)

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
JP2016504673A true JP2016504673A (ja) 2016-02-12
JP6099760B2 JP6099760B2 (ja) 2017-03-22

Family

ID=50683764

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015544563A Expired - Fee Related JP6099760B2 (ja) 2012-12-03 2013-10-18 プロセスをマイグレートするためのコンピュータ実装方法、コンピュータベースのシステム、およびコンピュータプログラム

Country Status (6)

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

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 富士通株式会社 プログラム、情報処理システム、およびプログラム移行方法
US10261801B2 (en) * 2013-12-13 2019-04-16 Ab Initio Technology Llc Dynamically determining a mode of a data processing application
US9684545B2 (en) * 2014-03-26 2017-06-20 Unisys Corporation Distributed and continuous computing in a 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
EP3855310A4 (en) * 2018-09-17 2022-05-18 Drimaes, Inc. SOFTWARE CONTROL DEVICE FOR A VEHICLE
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广东移动通信有限公司 配置文件处理方法、装置以及电子设备
US11403100B2 (en) 2020-08-31 2022-08-02 Microsoft Technology Licensing, Llc Dual architecture function pointers having consistent reference addresses
US11231918B1 (en) 2020-08-31 2022-01-25 Microsoft Technologly Licensing, LLC Native emulation compatible application binary interface for supporting emulation of foreign code
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 (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004231114A (ja) * 2003-01-31 2004-08-19 Koyo Seiko Co Ltd ステアリング装置
JP2011100431A (ja) * 2009-11-09 2011-05-19 Inst For Information Industry 仮想マシン制御装置及び仮想マシン制御方法
JP2011118557A (ja) * 2009-12-02 2011-06-16 Hitachi Ltd 仮想計算機の移動管理方法、前記移動管理方法を用いた計算機、前記移動管理方法を用いた仮想化機構および前記移動管理方法を用いた計算機システム
WO2011134836A1 (en) * 2010-04-26 2011-11-03 International Business Machines Corporation Cross architecture virtual machine migration

Family Cites Families (17)

* 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
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 情報処理装置
CN101464812B (zh) * 2009-01-06 2012-05-30 北京航空航天大学 一种虚拟机迁移方法
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
US9626206B2 (en) * 2010-03-18 2017-04-18 Microsoft Technology Licensing, Llc Virtual machine homogenization to enable migration across heterogeneous computers
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 (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004231114A (ja) * 2003-01-31 2004-08-19 Koyo Seiko Co Ltd ステアリング装置
JP2011100431A (ja) * 2009-11-09 2011-05-19 Inst For Information Industry 仮想マシン制御装置及び仮想マシン制御方法
JP2011118557A (ja) * 2009-12-02 2011-06-16 Hitachi Ltd 仮想計算機の移動管理方法、前記移動管理方法を用いた計算機、前記移動管理方法を用いた仮想化機構および前記移動管理方法を用いた計算機システム
WO2011134836A1 (en) * 2010-04-26 2011-11-03 International Business Machines Corporation Cross architecture virtual machine migration

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
JPN6016042544; 須崎 有康: '"「ネットワークを渡り歩けるコンピュータ」の実装"' 電子情報通信学会技術研究報告 第100巻 第86号, 20000518, pp.149-156, 社団法人電子情報通信学会 *

Also Published As

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

Similar Documents

Publication Publication Date Title
JP6099760B2 (ja) プロセスをマイグレートするためのコンピュータ実装方法、コンピュータベースのシステム、およびコンピュータプログラム
US8819647B2 (en) Performance improvements for nested virtual machines
EP3350696B1 (en) Overriding a migrated method of an updated type
US11301562B2 (en) Function execution based on data locality and securing integration flows
US10768916B2 (en) Dynamic generation of CPU instructions and use of the CPU instructions in generated code for a softcore processor
KR101665219B1 (ko) 네스티드 에뮬레이션 및 동적 링킹 환경
US9003094B2 (en) Optimistic interrupt affinity for devices
US20130054861A1 (en) Pessimistic interrupt affinity for devices
JP5886450B2 (ja) ハイブリッドのエミュレーション及びカーネル関数処理のシステム及び方法
US20100169884A1 (en) Injecting transactions to support the virtualization of a physical device controller
US9207956B2 (en) Class loading device for a java runtime environment, cluster system and method of executing a function
US11960918B2 (en) Creating product orchestration engines
CN107113231B (zh) 将基于图形的计算卸载到后端设备
US20200301721A1 (en) Reusable runtime environments
US11467835B1 (en) Framework integration for instance-attachable accelerator
EP2069926A1 (en) Method and apparatus for administering a process filesystem with respect to program code conversion
Xu et al. MANA-2.0: A future-proof design for transparent checkpointing of MPI at scale
KR20110080767A (ko) 액티브엑스 컨트롤 변환 시스템 및 방법
Kocoloski et al. Hobbes: A multi-kernel infrastructure for application composition
US11061703B2 (en) Managed runtime data marshaling for native code access using a thread local native buffer
US11194612B2 (en) Selective code segment compilation in virtual machine environments
US20220308940A1 (en) Allocating and using file descriptors for an application executing on a plurality of nodes
Liang et al. Heterogeneous Computation Migration on LLVM
Gackstatter A WebAssembly container runtime for serverless edge computing
Petry et al. VirtFun: Function Offload Methodology to Virtualized Environment

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20151127

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20161108

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20161209

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170119

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20170131

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170221

R150 Certificate of patent or registration of utility model

Ref document number: 6099760

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees