JP2006018834A - 仮想マシンに配置された再配置可能な実行ファイルをロードするための方法および装置 - Google Patents

仮想マシンに配置された再配置可能な実行ファイルをロードするための方法および装置 Download PDF

Info

Publication number
JP2006018834A
JP2006018834A JP2005189027A JP2005189027A JP2006018834A JP 2006018834 A JP2006018834 A JP 2006018834A JP 2005189027 A JP2005189027 A JP 2005189027A JP 2005189027 A JP2005189027 A JP 2005189027A JP 2006018834 A JP2006018834 A JP 2006018834A
Authority
JP
Japan
Prior art keywords
executable file
place executable
pointer
place
internal
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.)
Pending
Application number
JP2005189027A
Other languages
English (en)
Inventor
Antero K P Taivalsaari
ケー.ピー. タイバルサアリ アンテロ
William F Pittore
エフ. ピットーレ ウィリアム
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.)
Sun Microsystems Inc
Original Assignee
Sun Microsystems Inc
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 Sun Microsystems Inc filed Critical Sun Microsystems Inc
Publication of JP2006018834A publication Critical patent/JP2006018834A/ja
Pending legal-status Critical Current

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/445Program loading or initiating
    • G06F9/44568Immediately runnable code
    • G06F9/44573Execute-in-place [XIP]

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Memory System (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

【課題】 インプレース実行可能なファイルの仮想マシンへのロードを促進するシステムを提供する。
【解決手段】 本発明のシステム(100)は、インプレース実行可能なファイル(104)を仮想マシン(102)にロードすることにより作動する。仮想マシンにおいて、ファイル(104)は、ファイル104内でメモリ位置を示す内部ポインタおよびインプレース実行可能なファイルがロードされるように構成されるメモリにおいてターゲット位置を特定するターゲットメモリアドレスを含む。本システムはファイル(104)が実際にロードされる実際のメモリアドレスを決定する。実際のメモリアドレスおよびターゲットメモリアドレスが異なる場合、本システムはオフセット値を生成し、オフセット値によってファイル(104)内のそれぞれの内部ポインタを調整し、内部ポインタがファイル(104)内の意図する位置を示すことを可能にする。
【選択図】 図1

Description

本発明は、仮想マシン(Virtual Machine)をサポートするコンピュータシステムに関係する。より詳細には、本発明は、仮想マシンに配置された再配置可能な実行ファイルのローディングを促進する方法および装置に関係する。
The Java 2 Platform,Micro Edition(J2METM)は無線装置空間において非常に多く使用されるようになった。モトローラ、ノキア、NTTドコモ、RIM、シーメンス、および無線装置産業における多くの他のキープレーヤーは、最近、J2MEに有効な装置を大量に出荷し始めた。2003年だけでも2億万台以上のJ2MEに有効な携帯電話が出荷されたと推定される。
しかしながら、J2MEプラットフォームの成功にもかかわらず、JavaTM技術への重要な挑戦がメモリ制限装置空間に残されている。J2MEアプリケーション開発における1つの主要な限定要因はアプリケーションのサイズである。モバイル装置におけるより重要なJ2MEアプリケーションが開発されると、J2MEアプリケーションのダウンロードはますます多くの無線ネットワーク帯域幅を消費する。さらに、小さなJ2MEアプリケーション以外に関係する実行時ダイナミックメモリ装置コストおよびアプリケーション起動コストは、大半の大量市場消費者装置およびJava(登録商標)プログラム言語における重要なモバイルシステムソフトウエア開発にとって依然として過剰である。
JVM(Java(登録商標)仮想マシン:Java Virtual Machine)のメモリ消費およびアプリケーション起動コストを最適化するためにさまざまな技術が用いられる。JVMのメモリ消費およびアプリケーション起動時間を大幅に縮小するための1つの最も有望なアプローチは、「インプレース(in−place)実行」と呼ばれる技術である。
インプレース実行をサポートするJava(登録商標)仮想マシンにおいて、標準的なJava(登録商標)クラスファイル形式は、従来のコストのかかるクラスロードプロセスなしに、表示に置き換えられる。その表示は仮想マシンの実行時(runtime)構造として直接用いられる。クラスのようなスタティックデータ構造、方法テーブル、フィールドテーブル、例外ハンドラ、シンボルは実際仮想マシンにロードしない。代わりに、スタティック表示から直接アクセスされる。スタティック表示がフラッシュメモリまたはROMに保存されるモバイル装置において、その結果、典型的に5倍〜10倍のオーダーの大幅なRAM消費節約また電池保存になる。これらのアプリケーションのスタティックサイズは、典型的に通常のJava(登録商標)クラスファイルまたはJARファイルよりずっと小さい。これは、Java(登録商標)アプリケーションのシンボル情報またはダイナミックなリンク可能性が失われることなく達成される。
不都合にも、インプレース実行は、配置スピードに関しては不利な点を有する。例えば、インプレース実行可能なコードが不変であるため、実行時においてバイトコードを修正する能力に依存する、一般的にさまざまに用いられる実行時最適化は使用されない。さらに、インプレース実行可能なファイル(以下、「IPEファイル」すなわちIPEFと言及される)は携帯用にまた容易にメモリに再配置可能であるように意図されているので、ファイルの中のすべての参照、つまりポインタではなくシンボル参照はオフセットされなければならない。これによって、実行時間において、実行スピードを下げるさらなる間接化技法(indirection)レベルを導入する。
シンボル参照(つまり、ポインタまたはオフセットではなく「名前の」参照)は特に問題がある。なぜなら、シンボル参照を解決することは、典型的に、コストのかかるシンボル自動参照(たとえば、文字列を基にした検索キーを用いるハッシュテーブル自動参照)を必要とするからである。IPEFがターゲット装置にインストールされている場合にターゲット装置に存在するとすでにみなされるデータ構造または機能について言及する場合、シンボル参照はたとえばIPEFにおいてしばしば必要とされる。
これらの問題のために、そのような技術はそうでなければ携帯電話およびJava 2 Platform,Micro Editionの他の典型的なターゲット装置に理想的であるにもかかわらず、インプレース実行はJava(登録商標)仮想マシンにおいていまだに広く利用されていない。
そのため、必要とされるものは、上記に掲げられた問題のないインプレース実行を促進する方法および装置である。
本発明の一実施形態は、仮想マシンにインプレース実行可能なファイルのロードを促進するシステムを提供する。そのシステムは仮想マシンにインプレース実行可能なファイルをロードすることで稼動する。仮想マシンにおいて、インプレース実行可能なファイルは、インプレース実行可能なファイル内においてメモリ位置を示す内部ポインタ、およびインプレース実行可能なファイルがロードされるように構成されているメモリにおけるターゲット位置を特定するターゲットメモリアドレスを含む。そのシステムはそれから、インプレース実行可能なファイルが実際にロードされる実際のメモリアドレスを決定する。実際のメモリアドレスおよびターゲットメモリアドレスが異なる場合、システムは、実際のメモリアドレスとターゲットメモリアドレスの差であるオフセット値を算出する。最後に、システムはインプレース実行可能なファイル内の各内部ポインタをオフセット値によって調整し、内部ポインタがインプレース実行可能なファイル内の意図された位置を示せるようにする。
本実施態様における一変形において、ターゲットメモリアドレスはインプレース実行可能なファイルのヘッダに設置される。
本実施態様における一変形において、インプレース実行可能なファイルはインプレース実行可能なファイル内の内部ポインタの位置を識別する再配置テーブルを含む。
さらなる一変形において、インプレース実行可能なファイルのヘッダから再配置テーブルへのポインタを取り出すことによって、システムは再配置テーブルをロードする。ポインタを取り出すにあたって、システムは再配置テーブルにアクセスするためのポインタを用いる。
さらなる一変形において、それぞれの内部ポインタを調整した後で、システムは再配置テーブルに占められるメモリを再要求(reclaim)する。
さらなる一変形において、それぞれの内部ポインタを調整した後で、システムは再配置テーブルなしで記憶媒体にインプレース実行可能なファイルを書いて応答する(調整された内部ポインタを用いて)。システムはまた、再配置がすでに行われたことを示すインプレース実行可能なファイルヘッダに再配置ビットを設定する。インプレース実行可能なファイルの引き続きの実行の間、システムは、記憶媒体からのインプレース実行可能なファイルにアクセスでき(調整されたポインタを用いて)、それによってポインタの調整を避けることができる。
さらなる一変形において、再配置テーブルはオフセット範囲のリストとして構造化され、それぞれのオフセット範囲はインプレース実行可能なファイル内の内部ポインタの連続セットの開始アドレスおよび終了アドレスを含む。
さらなる一変形において、再配置テーブルはビットマップとして構造化され、それぞれのビットはインプレース実行可能なファイルにおける1つのワードに対応する。セットビットはそのワードが内部ポインタを含むことを示す。さらなる変形において、ビットマップは圧縮され、メモリ消費をさらに減らす。
さらなる一変形において、再配置テーブルはパックリスト(packed list)として構造化される。パックリストにおけるそれぞれのエントリは、インプレース実行可能なファイルにおける内部ポインタの範囲の開始オフセット(先のエントリの開始オフセットに関連する)および開始オフセットから始まる内部ポインタに連続して置かれる数を含む。
本実施態様における一変形において、仮想マシンはプラットフォームから独立した仮想マシンである。
さらなる一変形において、仮想マシンはJava(登録商標)仮想マシンである。
(項目1)
インプレース実行可能なファイルを仮想マシンにロードする方法であって、
該仮想マシンに該インプレース実行可能なファイルをロードすることであって、該インプレース実行可能なファイルは、該インプレース実行可能なファイル内のメモリ位置を示す内部ポインタと、該インプレース実行可能なファイルがロードするように構成されるメモリにおいてターゲット位置を特定するターゲットメモリアドレスとを含む、ことと、
該インプレース実行可能なファイルが実際にロードされる実際のメモリアドレスを決定することと、
該実際のメモリアドレスおよび該ターゲットメモリアドレスが異なる場合に、
該実際のメモリアドレスと該ターゲットメモリアドレスとの違いであるオフセット値を生成することと、該オフセット値によって該インプレース実行可能なファイル内のそれぞれの内部ポインタを調整して、該内部ポインタが該インプレース実行可能なファイル内の意図された位置を示すようにすることと
を包含する、方法。
(項目2)
上記ターゲットメモリアドレスが、上記インプレース実行可能なファイルのヘッダに設置される、項目1に記載の方法。
(項目3)
上記インプレース実行可能なファイルが、該インプレース実行可能なファイル内で内部ポインタの位置を識別する再配置テーブルを含む、項目1に記載の方法。
(項目4)
上記再配置テーブルをロードすることは、
上記配置可能ファイルのヘッダから該再配置テーブルを示すポインタを取り出すことと、
該再配置テーブルにアクセスするために該ポインタを用いることと
を包含する、項目3に記載の方法。
(項目5)
それぞれの内部ポインタを調整した後に、上記方法は、上記再配置テーブルに占められる上記メモリを再利用することをさらに包含する、項目3に記載の方法。
(項目6)
それぞれの内部ポインタを調整した後に、上記方法は、
上記インプレース実行可能なファイルを上記再配置テーブルを有さない記憶媒体に(調整された内部ポインタを用いて)書き戻すことと、
再配置がすでに行われたことを示す該インプレース実行可能なファイルヘッダに再配置ビットを設置することとをさらに包含し、
それによって上記配置可能ファイルのその後の実行が、上記記憶媒体からの(調整されたポインタを有する)該インプレース実行可能なファイルにアクセスでき、それによって該ポインタの調整を回避できる、項目3に記載の方法。
(項目7)
上記再配置テーブルがオフセット範囲のリストとして構成され、それぞれのオフセット値が該インプレース実行可能なファイル内の内部ポインタの連続セットの開始アドレスおよび終了アドレスを含む、項目3の方法。
(項目8)
上記再配置テーブルがビットマップとして構成され、それぞれのビットが該インプレース実行可能なファイルにおける1つのワードに対応し、1つのセットビットが該ワードが内部ポインタを含むことを示す、項目3に記載の方法。
(項目9)
上記ビットマップが圧縮されてメモリ消費をさらに減少する、項目8に記載の方法。
(項目10)
上記再配置テーブルがパックリストとして構成され、該パックリストにおけるそれぞれのエントリは、
上記配置可能ファイルにおける内部ポインタの範囲の開始オフセット(先のエントリの開始オフセットに関連する)と、
該開始オフセットで始まる連続して設置された内部ポインタの数と
を含む、項目3に記載の方法。
(項目11)
上記仮想マシンがプラットフォームから独立した仮想マシンである、項目1に記載の方法。
(項目12)
上記仮想マシンがJava(登録商標)仮想マシンである、項目11に記載の方法。
(項目13)
コンピュータによって実行される場合、インプレース実行可能なファイルを仮想マシンにロードする方法をコンピュータに実行させる命令を格納するコンピュータ読み取り可能記憶媒体であって、該方法は、
該仮想マシンに該インプレース実行可能なファイルをロードすることとであって、該インプレース実行可能なファイルは、該インプレース実行可能なファイル内のメモリ位置を示す内部ポインタと、該インプレース実行可能なファイルがロードするように構成されるメモリにおいてターゲット位置を特定するターゲットメモリアドレスとを含む、ことと、
該インプレース実行可能なファイルが実際にロードされる実際のメモリアドレスを決定することと、
該実際のメモリアドレスと該ターゲットメモリアドレスとが異なる場合に、該実際のメモリアドレスと該ターゲットメモリアドレスとの違いであるオフセット値を生成することと、該オフセット値によって該インプレース実行可能なファイル内のそれぞれの内部ポインタを調整して該内部ポインタが該インプレース実行可能なファイル内の意図された位置を示すようにすることと
を包含する、コンピュータ読み取り可能記憶媒体。
(項目14)
上記ターゲットメモリアドレスが上記インプレース実行可能なファイルのヘッダに設置される、項目13に記載のコンピュータ読み取り可能な記憶媒体。
(項目15)
上記インプレース実行可能なファイルが、該インプレース実行可能なファイル内で内部ポインタの位置を識別する再配置テーブルを含む、項目13に記載のコンピュータ読み取り可能な記憶媒体。
(項目16)
上記再配置テーブルが、
上記インプレース実行可能なファイルヘッダから該再配置テーブルを示すポインタを取り出すことと、
該再配置テーブルにアクセスするために該ポインタを用いることと
を含む、項目15に記載のコンピュータ読み取り可能な記憶媒体。
(項目17)
それぞれの内部ポインタを調整した後に、上記方法は上記再配置テーブルに占められる上記メモリを再要求することをさらに包含する、項目15に記載のコンピュータ読み取り可能な記憶媒体。
(項目18)
それぞれの内部ポインタを調整した後に、上記方法は、
上記インプレース実行可能なファイルを上記再配置テーブルを有さない記憶媒体に(調整された内部ポインタを用いて)書き戻すことと、
再配置がすでに行われたことを示す該インプレース実行可能なファイルヘッダに再配置ビットを設置することとをさらに包含し、
それによって上記配置可能ファイルのその後の実行が、上記記憶媒体からの(調整されたポインタを有する)該インプレース実行可能なファイルにアクセスでき、それによって該ポインタの調整を回避できる、項目15に記載のコンピュータ読み取り可能な記憶媒体。
(項目19)
上記再配置テーブルがオフセット範囲のリストとして構成され、それぞれのオフセット値が該インプレース実行可能なファイル内の内部ポインタの連続セットの開始アドレスおよび終了アドレスを含む、項目15に記載のコンピュータ読み取り可能な記憶媒体。
(項目20)
上記再配置テーブルがビットマップとして構成され、それぞれのビットが該インプレース実行可能なファイルにおける1つのワードに対応し、1つのセットビットが該ワードが内部ポインタを含むことを示す、項目15に記載のコンピュータ読み取り可能な記憶媒体。
(項目21)
上記ビットマップが圧縮されてメモリ消費をさらに減少する、項目20に記載のコンピュータ読み取り可能な記憶媒体。
(項目22)
上記再配置テーブルがパックリストとして構成され、該パックリストにおけるそれぞれのエントリは、
上記配置可能ファイルにおける内部ポインタの範囲の開始オフセット(先のエントリの開始オフセットに関連する)と、
該開始オフセットで始まる連続して設置された内部ポインタの数と
を含む、項目15に記載のコンピュータ読み取り可能な記憶媒体。
(項目23)
上記仮想マシンがプラットフォームから独立した仮想マシンである、項目13に記載のコンピュータ読み取り可能な記憶媒体。
(項目24)
上記仮想マシンがJava(登録商標)仮想マシンである、項目23に記載のコンピュータ読み取り可能な記憶媒体。
(項目25)
インプレース実行可能なファイルを仮想マシンにロードする装置であって、
該仮想マシンに該インプレース実行可能なファイルをロードするように構成されたロードメカニズムであって、該インプレース実行可能なファイルは、該インプレース実行可能なファイル内のメモリ位置を示す内部ポインタと、該インプレース実行可能なファイルがロードするように構成されるメモリにおいてターゲット位置を特定するターゲットメモリアドレスとを含む、ロードメカニズムと、
該インプレース実行可能なファイルが実際にロードされる実際のメモリアドレスを決定するように構成された決定メカニズムと、
該実際のメモリアドレスと該ターゲットメモリアドレスとが異なる場合に、該実際のメモリアドレスと該ターゲットメモリアドレスとの違いであるオフセット値を生成するように構成されたオフセットメカニズムと、
該実際のメモリアドレスと該ターゲットメモリアドレスとが異なる場合に、該オフセット値によって該インプレース実行可能なファイル内のそれぞれの内部ポインタを調整して該内部ポインタが該インプレース実行可能なファイル内の意図された位置を示すようにするように構成された調整メカニズムと
を備える、装置。
(項目26)
上記ターゲットメモリアドレスが上記インプレース実行可能なファイルのヘッダに設置される、項目25に記載の装置。
(項目27)
上記インプレース実行可能なファイルが、該インプレース実行可能なファイル内で内部ポインタの位置を識別する再配置テーブルを含む、項目25に記載の装置。
(項目28)
上記インプレース実行可能なファイルヘッダから該再配置テーブルを示すポインタを取り出すように構成された取り出す検索メカニズムと、
該再配置テーブルにアクセスするために該ポインタを用いるように構成されたアクセスメカニズムと
をさらに備える、項目27に記載の装置。
(項目29)
それぞれの内部ポインタを調整したあとに、上記再配置テーブルに占められる上記メモリを再要求するように構成されるメモリ再要求メカニズムをさらに備える、項目27に記載の装置。
(項目30)
それぞれの内部ポインタを調整した後に、上記インプレース実行可能なファイルを上記再配置テーブルを有さない記憶媒体に(調整された内部ポインタを用いて)書き戻すように構成された通達メカニズムと、
それぞれの内部ポインタを調整した後に、再配置がすでに行われたことを示す該インプレース実行可能なファイルヘッダに再配置ビットを設置するように構成されたビット設置メカニズムとをさらに備え、
それによって上記配置可能ファイルのその後の実行の間、上記装置が上記記憶媒体からの(調整されたポインタを有する)該インプレース実行可能なファイルにアクセスでき、それによって該ポインタの調整を回避できる、項目27に記載の装置。
(項目31)
上記再配置テーブルがオフセット範囲のリストとして構成され、それぞれおのオフセット値が該インプレース実行可能なファイル内の内部ポインタの連続セットの開始アドレスおよび終了アドレスを含む、項目27に記載の装置。
(項目32)
上記再配置テーブルがビットマップとして構成され、それぞれのビットが該インプレース実行可能なファイルにおける1つのワードに対応し、1つのセットビットが該ワードが内部ポインタを含むことを示す、項目27に記載の装置。
(項目33)
上記ビットマップが圧縮されてメモリ消費をさらに減少する、項目32に記載の装置。
(項目34)
上記再配置テーブルがパックリストとして構成され、該パックリストにおけるそれぞれのエントリは、
上記配置可能ファイルにおける内部ポインタの範囲の開始オフセット(先のエントリの開始オフセットに関連する)と、
該開始オフセットで始まる連続して設置された内部ポインタの数と
を含む、項目27に記載の装置。
(項目35)
上記仮想マシンがプラットフォームから独立した仮想マシンである、項目25に記載の装置。
(項目36)
上記仮想マシンがJava(登録商標)仮想マシンである、項目35に記載の装置。
(要約)
本発明の一実施形態はインプレース実行可能なファイルの仮想マシンへのロードを促進するシステムを提供する。このシステムはインプレース実行可能なファイルを仮想マシンにロードすることにより作動する。仮想マシンにおいて、インプレース実行可能なファイルは、インプレース実行可能なファイル内でメモリ位置を示す内部ポインタおよびインプレース実行可能なファイルがロードされるように構成されるメモリにおいてターゲット位置を特定するターゲットメモリアドレスを含む。それから、本システムはインプレース実行可能なファイルが実際にロードされる実際のメモリアドレスを決定する。実際のメモリアドレスおよびターゲットメモリアドレスが異なる場合、本システムはオフセット値を発生する。オフセット値は実際のメモリアドレスとターゲットメモリアドレスとの差である。最後に、本システムは、オフセット値によってインプレース実行可能なファイル内のそれぞれの内部ポインタを調整し、内部ポインタがインプレース実行可能なファイル内の意図する位置を示すことができるようにする。
以下の記述は、いかなる当業者も本発明を製作し、用いることができるように提供され、また、特定のアプリケーションおよびその必要において提供される。開示された実施形態に対するさまざまな修正は当業者に容易に明らかとなり、ここに定義される一般的な原理は本発明の精神および範囲から逸脱することなく他の実施形態およびアプリケーションに適用され得る。このように、本発明は、示される実施形態に限定される意図はないが、ここに開示される原則および特徴に一貫した最も広い範囲に一致する。
ここの詳細に示されるデータ構造およびコードは、典型的にコンピュータ読み取り可能記憶媒体に格納される。コンピュータ読み取り可能記憶媒体は、コンピュータシステムによって使用されるコードおよび/またはデータを格納できるいかなる装置または媒体であり得る。これは、ディスク装置、磁気テープ、CD(コンパクトディスク)、DVD(digital versatile discまたはdigital video disc)のような磁気および光学格納装置、および伝達媒体(信号が変調される搬送波を備えるかまたは備えない)において具体化されるコンピュータ命令信号を含むが、これらに限定されない。たとえば、伝達媒体はインターネットのような通信ネットワークを含み得る。
メモリ制限(Memory−Constrained)計算装置
図1は本発明の実施形態に従ったメモリ制限計算装置100を示す。メモリ制限計算装置100はいかなるタイプの計算装置をも含むが、それらに限定されない。計算装置は携帯電話、マイクロプロセッサを基にしたコンピュータシステム、デジタル信号プロセッサ、携帯計算装置、個人用システム手帳、装置制御器、装置内の計算エンジンを含む。メモリ制限計算装置100はJava(登録商標)仮想マシン(JVM)102を含む。Java(登録商標)仮想マシン(JVM)102はインプレース実行可能なファイル(IPEF)104の実行をサポートする。(JAVA(登録商標)、JVM、JAVA VIRTUAL MACHINEという用語はカリフォルニア州サンタクレアにあるSUN Microsystems,Inc.の商標である。)JVM102はいかなるタイプのプラットフォームから独立した仮想マシンであり得るが、Java(登録商標)仮想マシンに限定される意図はないことを留意すべきである。
インプレース実行可能なファイル
図2は本発明の実施形態に従ったインプレース実行可能なファイル104を示す。IPEF104は、ヘッダ202、再配置テーブル203、複数の内部ポインタ(IP)204〜212を含む。従来のIPEFにおいて、IPEF内の位置に対するすべての参照はポインタではなくオフセットに基づいている。オフセットを用いることで、IPEFの内容は位置から独立し、IPEFはメモリのいかなる場所にも柔軟にロードされる(そして必要ならば後に別のメモリ位置に再配置される)。
オフセットの使用は、再配置の観点からすると有益であるが、間接化技法(indirection)のさらなるレベルのために、実行(performance)オーバーヘッドを増加させる。オフセットに基づいたデータ構造は、さまざまなデータ構造に効率的にアクセスするために仮想マシンがマシンコードを利用する高性能仮想マシンにおいて特に問題である。典型的なコンピュータアーキテクチャにおいて、マシン命令は、オフセットに基づくデータ構造よりもポインタに基づくデータ構造をより効率的に処理するために設計されている。
増加した実行オーバーヘッドは、オフセットの代わりにポインタを用いることで回避できる。しかし、ポインタが使用される場合、IPEFの内容は特定のメモリ位置に固定され、IPEFはメモリの固定された位置のみにロードされる。ターゲット装置におけるターゲットメモリ位置はすでに使用されているか使用可能でない可能性を考慮すると、前記の内容は問題である。たとえば、メモリ制限計算装置100のような小さな具体化されたターゲット装置上では、IPEF104がもともと作成されたコンピュータ上におけるよりも、メモリ量はおそらく著しく少ないであろう。そのため、要求された位置は可能でないことがあり得る。
この問題を取り除くために、再配置テーブル203がIPEF104に加えられた。再配置テーブル203はオフセットマップで、IPEF104における内部ポインタ204〜212についての情報を含み、メモリへのIPEF104のロードに内部ポインタ204〜212が調整される。
本発明の一実施形態では、再配置テーブル203は「オフセット範囲」を含む。オフセット範囲はIPEF104における内部ポインタ204〜212の位置を記録する。この実施態様において、再配置テーブル203におけるそれぞれの入口は、内部ポインタを含むIPEF104における部分の開始位置および終了位置についての情報を格納する。この実施形態は、IPEF104におけるポインタの数がかなり低いおよび/または内部ポインタがIPEF104におけるいくつかの連続部分に位置する状況に特によく適している。
実施形態における一変形では、再配置テーブル203はビット(またビットマップとして周知)のベクトルとして格納され、各ビットは、IPEF104における単一内部ポインタの位置をテーブルす。この実施形態は、多くの内部ポインタを含む状況によく適し、IPEF104は、IPEF104においてランダムに分配される多くの内部ポインタを含む。ビットマップは随意的に圧縮され、メモリ消費をさらに減らすことに留意すべきである。
本実施態様における別の変形において、パック表示が用いられ、再配置テーブル203におけるそれぞれのエントリは、内部ポインタの範囲が開始する部分の開始オフセット(再配置テーブル203における先のエントリの開始オフセットに関連する)、およびその位置から開始する連続に置かれたポインタの数を含む。再配置テーブル203におけるそれぞれの新しいエントリの開始オフセットは、先のエントリに関連してテーブルされている。これによって、開始オフセットを表すために小さい数(たとえば、16ビットに適するような十分に小さい数)が用いられる。
上記のすべての実施形態において、再配置が行われた後に再配置テーブル203は必要ではない。よって、再配置テーブル203に占められるメモリはオペレーティングシステムに戻される。
さらに、本発明の一実施形態において、一度IPEF104が再配置されると、IPEF104は随意的に再配置された状態における記憶媒体に書き戻される。この実施形態において、IPEF104のヘッダにフラグが設定され、その後の実行において再配置が起こらないようにする。
インプレース実行可能なファイルのロード
図3は、本発明の実施形態に従ったIPEF104をロードするプロセスを示すフローチャートを表す。システムは、IPEF104をJVM102(ステップ302)にロードする命令を受けることから開始する。この命令に応答して、システムはIPEF104をJVM102にロードして、IPEF104がロードされた(ステップ304)実際のメモリ位置を決定する。システムはまた、IPEF104がロードされるために構成されるターゲットメモリ位置を獲得するためにヘッダ202を検査する(ステップ306)。次に、システムは実際のメモリ位置とターゲットメモリ位置を比較する(ステップ308)。ターゲットメモリ位置が実際のメモリ位置と同じ場合、システムはIPEF104を実行する。
しかしながら、ターゲットメモリ位置が実際のメモリ位置と異なる場合、システムはターゲットメモリ位置と実際のメモリ位置の差を決定し、オフセット値(ステップ310)を生成する。それからシステムは、再配置テーブル203(ステップ312)の位置を示すポインタ214を獲得するためにIPEF104のヘッダを検査する。一度システムが再配置テーブル203の位置を決定すると、システムは再配置テーブル203を用いてIPEF104内のそれぞれのポインタの位置を決定する(ステップ314)。最後に、システムはオフセット値によってIPEF104におけるそれぞれのポインタを調整する(ステップ316)。一度ポインタが調整された場合、システムは再配置テーブル203を取り除き、他のシステムプロセスによって使用されるメモリを要求することがあり得ることを留意すべきである。
本発明の実施形態のこれまでの記述は説明および記載目的のみのために提供されてきた。これらは、本発明を開示された形式に当てはめるまたは制限する意図はない。したがって、多くの修正および変形が同業者に明らかになるであろう。さらに、上記の開示は本発明を制限する意図はない。本発明の範囲は添付の請求項によって規定される。
本発明の実施形態に従ったメモリ制限計算装置を示す。 本発明の実施形態に従ったインプレース実行可能なファイルを示す。 本発明の実施形態に従ったインプレース実行可能なファイルのロードプロセスを示すフローチャートを表す。
符号の説明
100 メモリ制限計算装置
102 Java(登録商標)仮想マシン(JVM)
104 インプレース実行可能なファイル
202 ヘッダ
203 再配置テーブル

Claims (36)

  1. インプレース実行可能なファイルを仮想マシンにロードする方法であって、
    該仮想マシンに該インプレース実行可能なファイルをロードすることであって、該インプレース実行可能なファイルは、該インプレース実行可能なファイル内のメモリ位置を示す内部ポインタと、該インプレース実行可能なファイルがロードするように構成されるメモリにおいてターゲット位置を特定するターゲットメモリアドレスとを含む、ことと、
    該インプレース実行可能なファイルが実際にロードされる実際のメモリアドレスを決定することと、
    該実際のメモリアドレスおよび該ターゲットメモリアドレスが異なる場合に、
    該実際のメモリアドレスと該ターゲットメモリアドレスとの違いであるオフセット値を生成することと、該オフセット値によって該インプレース実行可能なファイル内のそれぞれの内部ポインタを調整して、該内部ポインタが該インプレース実行可能なファイル内の意図された位置を示すようにすることと
    を包含する、方法。
  2. 前記ターゲットメモリアドレスが、前記インプレース実行可能なファイルのヘッダに設置される、請求項1に記載の方法。
  3. 前記インプレース実行可能なファイルが、該インプレース実行可能なファイル内で内部ポインタの位置を識別する再配置テーブルを含む、請求項1に記載の方法。
  4. 前記再配置テーブルをロードすることは、
    前記配置可能ファイルのヘッダから該再配置テーブルを示すポインタを取り出すことと、
    該再配置テーブルにアクセスするために該ポインタを用いることと
    を包含する、請求項3に記載の方法。
  5. それぞれの内部ポインタを調整した後に、前記方法は、前記再配置テーブルに占められる前記メモリを再利用することをさらに包含する、請求項3に記載の方法。
  6. それぞれの内部ポインタを調整した後に、前記方法は、
    前記インプレース実行可能なファイルを前記再配置テーブルを有さない記憶媒体に(調整された内部ポインタを用いて)書き戻すことと、
    再配置がすでに行われたことを示す該インプレース実行可能なファイルヘッダに再配置ビットを設置することとをさらに包含し、
    それによって前記配置可能ファイルのその後の実行が、前記記憶媒体からの(調整されたポインタを有する)該インプレース実行可能なファイルにアクセスでき、それによって該ポインタの調整を回避できる、請求項3に記載の方法。
  7. 前記再配置テーブルがオフセット範囲のリストとして構成され、それぞれのオフセット値が該インプレース実行可能なファイル内の内部ポインタの連続セットの開始アドレスおよび終了アドレスを含む、請求項3の方法。
  8. 前記再配置テーブルがビットマップとして構成され、それぞれのビットが該インプレース実行可能なファイルにおける1つのワードに対応し、1つのセットビットが該ワードが内部ポインタを含むことを示す、請求項3に記載の方法。
  9. 前記ビットマップが圧縮されてメモリ消費をさらに減少する、請求項8に記載の方法。
  10. 前記再配置テーブルがパックリストとして構成され、該パックリストにおけるそれぞれのエントリは、
    前記配置可能ファイルにおける内部ポインタの範囲の開始オフセット(先のエントリの開始オフセットに関連する)と、
    該開始オフセットで始まる連続して設置された内部ポインタの数と
    を含む、請求項3に記載の方法。
  11. 前記仮想マシンがプラットフォームから独立した仮想マシンである、請求項1に記載の方法。
  12. 前記仮想マシンがJava(登録商標)仮想マシンである、請求項11に記載の方法。
  13. コンピュータによって実行される場合、インプレース実行可能なファイルを仮想マシンにロードする方法をコンピュータに実行させる命令を格納するコンピュータ読み取り可能記憶媒体であって、該方法は、
    該仮想マシンに該インプレース実行可能なファイルをロードすることとであって、該インプレース実行可能なファイルは、該インプレース実行可能なファイル内のメモリ位置を示す内部ポインタと、該インプレース実行可能なファイルがロードするように構成されるメモリにおいてターゲット位置を特定するターゲットメモリアドレスとを含む、ことと、
    該インプレース実行可能なファイルが実際にロードされる実際のメモリアドレスを決定することと、
    該実際のメモリアドレスと該ターゲットメモリアドレスとが異なる場合に、該実際のメモリアドレスと該ターゲットメモリアドレスとの違いであるオフセット値を生成することと、該オフセット値によって該インプレース実行可能なファイル内のそれぞれの内部ポインタを調整して該内部ポインタが該インプレース実行可能なファイル内の意図された位置を示すようにすることと
    を包含する、コンピュータ読み取り可能記憶媒体。
  14. 前記ターゲットメモリアドレスが前記インプレース実行可能なファイルのヘッダに設置される、請求項13に記載のコンピュータ読み取り可能な記憶媒体。
  15. 前記インプレース実行可能なファイルが、該インプレース実行可能なファイル内で内部ポインタの位置を識別する再配置テーブルを含む、請求項13に記載のコンピュータ読み取り可能な記憶媒体。
  16. 前記再配置テーブルが、
    前記インプレース実行可能なファイルヘッダから該再配置テーブルを示すポインタを取り出すことと、
    該再配置テーブルにアクセスするために該ポインタを用いることと
    を含む、請求項15に記載のコンピュータ読み取り可能な記憶媒体。
  17. それぞれの内部ポインタを調整した後に、前記方法は前記再配置テーブルに占められる前記メモリを再要求することをさらに包含する、請求項15に記載のコンピュータ読み取り可能な記憶媒体。
  18. それぞれの内部ポインタを調整した後に、前記方法は、
    前記インプレース実行可能なファイルを前記再配置テーブルを有さない記憶媒体に(調整された内部ポインタを用いて)書き戻すことと、
    再配置がすでに行われたことを示す該インプレース実行可能なファイルヘッダに再配置ビットを設置することとをさらに包含し、
    それによって前記配置可能ファイルのその後の実行が、前記記憶媒体からの(調整されたポインタを有する)該インプレース実行可能なファイルにアクセスでき、それによって該ポインタの調整を回避できる、請求項15に記載のコンピュータ読み取り可能な記憶媒体。
  19. 前記再配置テーブルがオフセット範囲のリストとして構成され、それぞれのオフセット値が該インプレース実行可能なファイル内の内部ポインタの連続セットの開始アドレスおよび終了アドレスを含む、請求項15に記載のコンピュータ読み取り可能な記憶媒体。
  20. 前記再配置テーブルがビットマップとして構成され、それぞれのビットが該インプレース実行可能なファイルにおける1つのワードに対応し、1つのセットビットが該ワードが内部ポインタを含むことを示す、請求項15に記載のコンピュータ読み取り可能な記憶媒体。
  21. 前記ビットマップが圧縮されてメモリ消費をさらに減少する、請求項20に記載のコンピュータ読み取り可能な記憶媒体。
  22. 前記再配置テーブルがパックリストとして構成され、該パックリストにおけるそれぞれのエントリは、
    前記配置可能ファイルにおける内部ポインタの範囲の開始オフセット(先のエントリの開始オフセットに関連する)と、
    該開始オフセットで始まる連続して設置された内部ポインタの数と
    を含む、請求項15に記載のコンピュータ読み取り可能な記憶媒体。
  23. 前記仮想マシンがプラットフォームから独立した仮想マシンである、請求項13に記載のコンピュータ読み取り可能な記憶媒体。
  24. 前記仮想マシンがJava(登録商標)仮想マシンである、請求項23に記載のコンピュータ読み取り可能な記憶媒体。
  25. インプレース実行可能なファイルを仮想マシンにロードする装置であって、
    該仮想マシンに該インプレース実行可能なファイルをロードするように構成されたロードメカニズムであって、該インプレース実行可能なファイルは、該インプレース実行可能なファイル内のメモリ位置を示す内部ポインタと、該インプレース実行可能なファイルがロードするように構成されるメモリにおいてターゲット位置を特定するターゲットメモリアドレスとを含む、ロードメカニズムと、
    該インプレース実行可能なファイルが実際にロードされる実際のメモリアドレスを決定するように構成された決定メカニズムと、
    該実際のメモリアドレスと該ターゲットメモリアドレスとが異なる場合に、該実際のメモリアドレスと該ターゲットメモリアドレスとの違いであるオフセット値を生成するように構成されたオフセットメカニズムと、
    該実際のメモリアドレスと該ターゲットメモリアドレスとが異なる場合に、該オフセット値によって該インプレース実行可能なファイル内のそれぞれの内部ポインタを調整して該内部ポインタが該インプレース実行可能なファイル内の意図された位置を示すようにするように構成された調整メカニズムと
    を備える、装置。
  26. 前記ターゲットメモリアドレスが前記インプレース実行可能なファイルのヘッダに設置される、請求項25に記載の装置。
  27. 前記インプレース実行可能なファイルが、該インプレース実行可能なファイル内で内部ポインタの位置を識別する再配置テーブルを含む、請求項25に記載の装置。
  28. 前記インプレース実行可能なファイルヘッダから該再配置テーブルを示すポインタを取り出すように構成された取り出す検索メカニズムと、
    該再配置テーブルにアクセスするために該ポインタを用いるように構成されたアクセスメカニズムと
    をさらに備える、請求項27に記載の装置。
  29. それぞれの内部ポインタを調整したあとに、前記再配置テーブルに占められる前記メモリを再要求するように構成されるメモリ再要求メカニズムをさらに備える、請求項27に記載の装置。
  30. それぞれの内部ポインタを調整した後に、前記インプレース実行可能なファイルを前記再配置テーブルを有さない記憶媒体に(調整された内部ポインタを用いて)書き戻すように構成された通達メカニズムと、
    それぞれの内部ポインタを調整した後に、再配置がすでに行われたことを示す該インプレース実行可能なファイルヘッダに再配置ビットを設置するように構成されたビット設置メカニズムとをさらに備え、
    それによって前記配置可能ファイルのその後の実行の間、前記装置が前記記憶媒体からの(調整されたポインタを有する)該インプレース実行可能なファイルにアクセスでき、それによって該ポインタの調整を回避できる、請求項27に記載の装置。
  31. 前記再配置テーブルがオフセット範囲のリストとして構成され、それぞれおのオフセット値が該インプレース実行可能なファイル内の内部ポインタの連続セットの開始アドレスおよび終了アドレスを含む、請求項27に記載の装置。
  32. 前記再配置テーブルがビットマップとして構成され、それぞれのビットが該インプレース実行可能なファイルにおける1つのワードに対応し、1つのセットビットが該ワードが内部ポインタを含むことを示す、請求項27に記載の装置。
  33. 前記ビットマップが圧縮されてメモリ消費をさらに減少する、請求項32に記載の装置。
  34. 前記再配置テーブルがパックリストとして構成され、該パックリストにおけるそれぞれのエントリは、
    前記配置可能ファイルにおける内部ポインタの範囲の開始オフセット(先のエントリの開始オフセットに関連する)と、
    該開始オフセットで始まる連続して設置された内部ポインタの数と
    を含む、請求項27に記載の装置。
  35. 前記仮想マシンがプラットフォームから独立した仮想マシンである、請求項25に記載の装置。
  36. 前記仮想マシンがJava(登録商標)仮想マシンである、請求項35に記載の装置。
JP2005189027A 2004-06-29 2005-06-28 仮想マシンに配置された再配置可能な実行ファイルをロードするための方法および装置 Pending JP2006018834A (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US10/880,786 US7603665B2 (en) 2004-06-29 2004-06-29 Method and apparatus for loading relocatable in-place executable files in a virtual machine

Publications (1)

Publication Number Publication Date
JP2006018834A true JP2006018834A (ja) 2006-01-19

Family

ID=35115823

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005189027A Pending JP2006018834A (ja) 2004-06-29 2005-06-28 仮想マシンに配置された再配置可能な実行ファイルをロードするための方法および装置

Country Status (3)

Country Link
US (1) US7603665B2 (ja)
EP (1) EP1612667A3 (ja)
JP (1) JP2006018834A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102135904A (zh) * 2011-03-11 2011-07-27 华为技术有限公司 一种面向多核目标系统的映射方法及装置

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8695102B2 (en) 2006-05-01 2014-04-08 International Business Machines Corporation Controlling execution of executables between partitions in a multi-partitioned data processing system
US7577831B2 (en) * 2006-07-20 2009-08-18 Dell Products L.P. Relocating of system management interface code within an information handling system
CN107169348B (zh) * 2017-05-15 2020-07-28 东信和平科技股份有限公司 Java Card虚拟机栈的防错误注入方法及系统

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5581768A (en) 1995-02-27 1996-12-03 Intel Corporation Method and apparatus for executing applications in place from write once/seldom memories
US5799207A (en) * 1995-03-28 1998-08-25 Industrial Technology Research Institute Non-blocking peripheral access architecture having a register configure to indicate a path selection for data transfer between a master, memory, and an I/O device
US7143421B2 (en) * 1998-09-09 2006-11-28 Microsoft Corporation Highly componentized system architecture with a demand-loading namespace and programming model
US7028251B2 (en) * 2000-03-02 2006-04-11 Iora, Ltd. System and method for reducing the size of data difference representations
US6810519B1 (en) * 2000-09-29 2004-10-26 International Business Machines Corporation Achieving tight binding for dynamically loaded software modules via intermodule copying
US6442660B1 (en) * 2001-03-21 2002-08-27 Sharp Laboratories Of America, Inc. Dynamic system relocation based on availability of system memory
US7055145B2 (en) 2002-10-30 2006-05-30 Intel Corporation Dynamic management of execute in place applications
US7549042B2 (en) * 2003-12-16 2009-06-16 Microsoft Corporation Applying custom software image updates to non-volatile storage in a failsafe manner
US7574705B2 (en) * 2004-06-29 2009-08-11 Sun Microsystems, Inc. Method and apparatus for efficiently resolving symbolic references in a virtual machine

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102135904A (zh) * 2011-03-11 2011-07-27 华为技术有限公司 一种面向多核目标系统的映射方法及装置

Also Published As

Publication number Publication date
EP1612667A2 (en) 2006-01-04
US7603665B2 (en) 2009-10-13
EP1612667A3 (en) 2007-11-07
US20050289285A1 (en) 2005-12-29

Similar Documents

Publication Publication Date Title
EP1622013B1 (en) Method and apparatus for resolving symbolic references in a virtual machine
US8050663B2 (en) System and method of providing contents for mobile communication terminal
KR100922907B1 (ko) 동적 코드 갱신을 지원하기 위한 페이징 사용
US8943486B2 (en) Multiple instruction execution mode resource-constrained device
KR20040004557A (ko) 임베디드 환경에서 어플리케이션을 로딩 및 실행하는 방법
CN115994122B (zh) 快速缓存信息的方法、系统、设备及储存介质
US7020874B2 (en) Techniques for loading class files into virtual machines
US7082523B2 (en) Bridging memory access across pre-boot and runtime phases
JP2006018834A (ja) 仮想マシンに配置された再配置可能な実行ファイルをロードするための方法および装置
US6799185B2 (en) Frameworks for accessing Java class files
KR100310717B1 (ko) 휴대용 장치에 데이터를 저장하고 그로부터 데이터를검색하는 방법 및 장치
EP2047364A1 (en) A method to use global variables for pre-efi initialization modules in efi-based firmware
WO2002077805A2 (en) Loading attribute for partial loading of class files into virtual machines
JP2019523480A (ja) Nandストレージデバイスのためのプリエンプティブ圧縮解除スケジューリング
US7328436B2 (en) Dynamic allocation of internal memory at runtime
US7681009B2 (en) Dynamically updateable and moveable memory zones
US20060230190A1 (en) Method and apparatus for executing application in system having NAND flash memory
US20040025009A1 (en) Method and apparatus for acceleration of multimedia content
US20050027954A1 (en) Method and apparatus to support the maintenance and reduction of FLASH utilization as it pertains to unused or infrequently referenced FLASH data
CN106991058A (zh) 预取文件处理方法及装置
US7328432B2 (en) Proximity-based addressing for supporting in-place execution in virtual machines
US7831965B1 (en) Method and apparatus for facilitating intermediate linking of binary files in a virtual machine
US7539822B1 (en) Method and apparatus for facilitating faster execution of code on a memory-constrained computing device
US20060288338A1 (en) Offset threaded code
CN114417409A (zh) 一种防止广告追踪的方法

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20070629

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20071001

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20071004

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20071019

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20071024

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20071128

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20071220

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20080519