JP5646591B2 - マルチタスク仮想マシンのためのヒープ組織 - Google Patents

マルチタスク仮想マシンのためのヒープ組織 Download PDF

Info

Publication number
JP5646591B2
JP5646591B2 JP2012287480A JP2012287480A JP5646591B2 JP 5646591 B2 JP5646591 B2 JP 5646591B2 JP 2012287480 A JP2012287480 A JP 2012287480A JP 2012287480 A JP2012287480 A JP 2012287480A JP 5646591 B2 JP5646591 B2 JP 5646591B2
Authority
JP
Japan
Prior art keywords
application
task
heap
virtual machine
data
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
JP2012287480A
Other languages
English (en)
Other versions
JP2013058270A (ja
JP2013058270A5 (ja
Inventor
ジョウ,シン
ウー,ガンシャ
グオ,ペン
ペン,ジンジャン
イン,ジーウェイ
チェン,ビアオ
Original Assignee
インテル コーポレイション
インテル コーポレイション
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 インテル コーポレイション, インテル コーポレイション filed Critical インテル コーポレイション
Priority to JP2012287480A priority Critical patent/JP5646591B2/ja
Publication of JP2013058270A publication Critical patent/JP2013058270A/ja
Publication of JP2013058270A5 publication Critical patent/JP2013058270A5/ja
Application granted granted Critical
Publication of JP5646591B2 publication Critical patent/JP5646591B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Description

本願は仮想マシンのヒープに関する。
ヒープ組織(heap organization)は、マルチタスク仮想マシンによって並行して実行される複数のタスクのためのデータを記憶するために使われうるメモリ領域である。データはタスクすべてのためのプログラム・オブジェクトおよびメタデータを含みうる。
通常、ヒープ組織には共有ヒープ(shared heap)と分離ヒープ(separated heap)の二つのクラスがある。共有ヒープ・クラスについては、マルチタスク仮想マシンはタスクすべてによってアクセス可能なデータを記憶するために単一のヒープを使用しうる。分離ヒープ・クラスについては、マルチタスク仮想マシンは論理的に分離されたいくつかのヒープを使用しうる。分離された各ヒープは単一のタスクによってのみアクセス可能なデータを記憶するために割り当てられうる。
本願は従来技術の欠点を克服しようとするものである。
本願は請求項記載の発明によって従来技術の欠点を克服する。
本稿で記載される発明は限定ではなく例として付属の図面で例示される。例示の簡明のため、図面に例示される要素は必ずしも縮尺通りに描かれてはいない。たとえば、いくつかの要素の大きさは明快のため他の要素に対して誇張されていることがありうる。さらに、適切と思われる場合には、対応するまたは類似する要素を示すために複数の図面の間で参照符号が繰り返し用いられる。
マルチタスク仮想マシンを含むコンピューティング・プラットフォームのある実施形態を示す図である。 マルチタスク仮想マシンのある実施形態を示す図である。 図2のマルチタスク仮想マシンにおけるヒープ組織のある実施形態を示す図である。 図3のヒープ組織にタスク・ヒープを追加する方法のある実施形態を示す図である。 図3のヒープ組織からタスク・ヒープを再利用する(reclaim)方法のある実施形態を示す図である。 図2のマルチタスク仮想マシンにおけるヒープ組織のもう一つの実施形態を示す図である。 図2のマルチタスク仮想マシンにおけるヒープ組織のさらにもう一つの実施形態を示す図である。
以下の記述はマルチタスク仮想マシンのためのヒープ組織のための技法を記載する。以下の記述では、本発明のより十全な理解を与えるために、論理的な実装、擬似コード、オペランド指定方法、資源分配/共有/重複実装、システム構成要素の型および相互関係ならびに論理的な分配/統合の選択といった数多の個別的な詳細が述べられるが、本発明はそのような個別的詳細なしでも実施されうる。その一方、本発明を埋没させないため、制御構造、ゲート・レベルの回路および完全なソフトウェア命令シーケンスは詳細には示していない。含まれている記述で、当業者は過度な試行をすることなく適切な機能性を実装できるであろう。
明細書における「一つの実施形態」「ある実施形態」「例示的な実施形態」への言及は、記述される実施形態が特定の機能、構造または特性を含みうることを示すが、必ずしもすべての実施形態がその特定の特徴、構造または特性を含むとは限らない。さらに、そのような表現は必ずしも同じ実施形態を指すのではない。さらに、特定の機能、特徴または特性がある実施形態との関連で記載されるとき、明示的に記載されているか否かによらず、他の実施形態との関連でそのような特徴、構造または特性を実施することは当業者の知識の範囲内であることを述べておく。
本発明の実施形態はハードウェア、ファームウェア、ソフトウェアまたはそれらの任意の組み合わせにおいて実装されうる。本発明の実施形態はまた、一つまたは複数のプロセッサによって読まれ、実行されうる機械可読媒体上に記憶されている命令として実装されてもよい。機械可読媒体は、機械(たとえばコンピューティング装置)によって読み取り可能な形で情報を記憶または伝達するいかなる機構をも含みうる。たとえば、機械可読媒体は読み出し専用メモリ(ROM);ランダム・アクセス・メモリ(RAM);磁気ディスク記憶媒体;光記憶媒体;フラッシュ・メモリ・デバイス;電気的、光学的、音響的または他の形の伝搬信号(たとえば搬送波、赤外線信号、デジタル信号など)およびその他を含みうる。
図1は、マルチタスク仮想マシンを有するコンピューティング・プラットフォーム10のある実施形態を示している。コンピューティング・プラットフォーム10についての例は、パーソナル・コンピュータ、ワークステーション、サーバー・コンピュータ、携帯情報端末(PDA)、携帯電話およびゲーム・コンソールを含みうる。
コンピューティング・プラットフォーム10は、一つまたは複数のプロセッサ101、メモリ102、チップセット103、I/O装置104、ファームウェア105および可能性としては他の構成要素を有しうる。前記一つまたは複数のプロセッサ101はさまざまな構成要素(たとえばチップセット103)と、プロセッサ・バスのような一つまたは複数のバスを介して通信上結合されていてもよい。プロセッサ101は、たとえば、米国カリフォルニア州サンタクララのインテル・コーポーレーションから入手可能なインテル(登録商標)ジーオン(登録商標)、インテル(登録商標)ペンティアム(登録商標)、インテル(登録商標)アイテニアム(登録商標)・アーキテクチャを含む好適なアーキテクチャのもとでコードを実行しうる、一つまたは複数の処理コアをもつ集積回路(IC)として実装されてもよい。
メモリ102は、複数のソフトウェア・アプリケーション1021、マルチタスク仮想マシン1022およびオペレーション・システム1023の形の命令およびデータを記憶しうる。メモリ102の例は、同期的動的ランダム・アクセス・メモリ(SDRAM: synchronous dynamic random access memory)、RAMBUS動的ランダム・アクセス・メモリ(RDRAM: RAMBUS dynamic random access memory)、倍速データレート(DDR: double data rate)・メモリ・デバイス、静的ランダム・アクセス・メモリ(SRAM: static random access memory)およびフラッシュ・メモリ・デバイスといった半導体デバイスの一つまたは任意の組み合わせを含みうる。
複数のソフトウェア・アプリケーション1021は、I/O装置106のようないかなる好適な装置から入力されてもよい。他の実施形態では、ソフトウェア・アプリケーションはコンピューティング・プラットフォーム10内の他の構成要素によって生成されてもよい。ソフトウェア・アプリケーション1021の例はジャバ・アプリケーション(たとえばJAVA(登録商標).クラス・ファイル)、.NETアプリケーション(たとえば.NETコード)または可能性としては他のプログラミング言語のアプリケーションを含みうる。
マルチタスク仮想マシン1022は、複数のソフトウェア・アプリケーション1021を並行して実行するようオペレーティング・システム1023の上で走りうる。各ソフトウェア・アプリケーション1021は一つまたは複数のタスクを含みうる。各タスクは単一のソフトウェア・アプリケーション1021のインスタンス化(instantiation)を表しうる。ジャバ仮想マシンでは、二つの「タスク」が同じクラス・パス(class path)(すなわち、クラス・ファイルの同じ順序付けされたテーブル)を共有する場合、二つの「タスク」は一つのアプリケーションに属しうる。
マルチタスク仮想マシン1022についての例は、米国カリフォルニア州サンタクララのサン・マイクロシステムズ社から入手可能なマルチタスク・ジャバ仮想マシンおよび米国ワシントン州レドモンドのマイクロソフト(登録商標)コーポレーションから入手可能なマルチタスク.NET仮想マシンを含みうる。オペレーション・システム1023は、これに限られないが、リナックス(登録商標)、マイクロソフト(登録商標)ウィンドウズ(登録商標)の種々のバージョンおよびVxWorks(登録商標)のようなリアルタイム・オペレーティング・システムなどを含みうる。
ある実施形態では、チップセット103は、一つまたは複数のプロセッサ101、メモリ102ならびにI/O装置104およびファームウェア105のような他の構成要素の間で一つまたは複数の通信経路を提供しうる。チップセット103はメモリ・コントローラ・ハブ1031、入出力コントローラ・ハブ1032およびファームウェア・ハブ1033を含みうる。
ある実施形態では、メモリ・コントローラ・ハブ1031は、プロセッサ101と接続しうるプロセッサ・バスへの、およびメモリ102のような好適な装置への通信リンクを提供しうる。メモリ・コントローラ・ハブ102はI/Oコントローラ・ハブ1032と結合して、コンピューティング・プラットフォームのためのI/O装置104へのインターフェースを提供しうる。I/O装置104の例はキーボード、マウス、ネットワーク・インターフェース、記憶装置、カメラ、ブルートゥース装置およびアンテナを含みうる。
ある実施形態では、メモリ・コントローラ・ハブ1031は、入出力コントローラ・ハブ1032を介してファームウェア・ハブ1033と通信上結合しうる。ファームウェア・ハブ1033は、プロセッサ101、チップセット103およびコンピューティング・プラットフォームの他の構成要素を初期化するためにシステム・スタートアップの間にコンピューティング・プラットフォームが実行するBIOSルーチンおよび/またはファームウェア105をコンピュータ・プラットフォームのオペレーティング・システムとインターフェースさせるためのEFIルーチンを記憶しうるファームウェア105と結合し、オペレーティング・システムをブートするための標準的な環境を提供しうる。
コンピューティング・プラットフォーム10の構造について、他の実施形態は他の技術を実装してもよい。たとえば、マルチタスク仮想マシン1022は一つのソフトウェア・アプリケーション1021を仮想マシンの一つのインスタンス化において実行してもよい。換言すれば、マルチタスク仮想マシン1022は一つのアプリケーションに属する複数のタスクを、仮想マシンの一つのインスタンス化において並行して実行してもよく、前記複数のタスクはそれぞれ前記アプリケーションのインスタンス化である。
図2は、図1のマルチタスク仮想マシン1022のある実施形態を示している。この実施形態によれば、マルチタスク仮想マシン1022はローダ201、実行エンジン202、ヒープ組織203、ヒープ・マネージャ204および可能性としては他の構成要素を有しうる。
ローダ201は、さまざまな資源からファイル(クラス、インターフェース、ネイティブ・メソッドを含む)をロードしうる。たとえば、ローダ201は、マルチタスク仮想マシン・ベンダー、プログラマおよび任意のサードパーティーからの複数のソフトウェア・アプリケーション1021、ライブラリ、ランタイム環境変数および可能性としては他のファイルをロードしうる。ライブラリは、ブートストラップ・クラス・ライブラリおよび非ブートストラップ・クラス・ライブラリといった、ユーザー・プログラムに基本的な機能を提供するためのさまざまな関数またはルーチンを含みうる。ランタイム環境変数は、マルチタスク仮想マシンがアプリケーション資源を発見するのを助けるための構成設定(configurations)を含みうる。ローダの例は、クラス・ローダ、ネイティブ・メソッド・インターフェースおよび可能性としては他のロード手段を含みうる。
実行エンジン202は、ソフトウェア・アプリケーション1021に関連する複数のタスクを並行して実行しうる。より特定的には、実行エンジン202は、並行して、前記ソフトウェア・アプリケーションを変換し(translate)、変換されたコードを実行しうる。
ヒープ組織203は、メタデータおよびプログラム・オブジェクトといったマルチタスク仮想マシン1022についてのデータを記憶しうる。メタデータは、ローダ201または他のコンポーネントからロードされたファイル(たとえばソフトウェア・アプリケーション、ライブラリ、ランタイム環境変数など)についての情報、実行エンジン202からの前記ファイルの変換されたコードおよび可能性としては他のデータを含みうる。メタデータの例は、ジャバ・クラス、メソッド、フィールド、バイトコード、JITされた(Just-in-time[ジャスト・イン・タイム])コードなどの仮想マシン内部表現を含みうる。プログラム・オブジェクトは、ロードされたファイルを実行するときに生成されるオブジェクトを含みうる。プログラム・オブジェクトの例は、ユーザー定義されたクラス・ローダおよびクラス・ファイルのインスタンスを含みうる。
ヒープ・マネージャ204は、たとえばローダ201からの助けで、ヒープ組織203を管理しうる。
図3は、図2のヒープ組織203のある実施形態を示している。
ヒープ組織203は複数の論理的に別個のヒープを有しうる。ここで、各ヒープは複数の論理的に連続しているメモリ・ブロックを含みうる。二つのヒープの間でいかなるブロックも重複してはならない。
図3の実施形態では、ヒープ組織203はシステム・ヒープ301、複数のアプリケーション・ヒープ3021-Nおよび複数のタスク・ヒープ3031-Nを有しうる。
システム・ヒープは、マルチタスク仮想マシン1022によって実行されるタスクのすべてについて共有可能なシステム・データを記憶しうる。システム・ヒープに記憶されたデータの寿命は、マルチタスク仮想マシン1022の一つのインスタンス化に等しくてもよい。システム・データの例は、グローバルに共有されるライブラリ(たとえばブートストラップ・クラス・ライブラリ、グローバルに共有されるランタイム環境、プラットフォーム定義情報)のメタデータ、マルチタスク仮想マシンのインスタンス化に等しい寿命をもつプログラム・オブジェクト(たとえばブートストラップ・クラス・プログラムを実行するときに生成されるオブジェクト)および可能性としてはシステムのための他のデータを含みうる。図3の実施形態では、システム・ヒープ301は単一物(singleton)であり、再利用(reclamation)またはさらには圧縮(compaction)にかけられなくてもよい。
アプリケーション・ヒープ3021-Nのそれぞれは、複数のソフトウェア・アプリケーション1021の各「ライブな(live)」アプリケーションに割り当てられうる。ここで、「ライブな」アプリケーションはマルチタスク仮想マシン1022によって実行される少なくとも一つのタスクを有しうる。タスクはそのアプリケーションのインスタンス化でありうる。アプリケーション・ヒープ3021-Nのそれぞれは、そのアプリケーションに属するタスクすべてによってアクセス可能であり、そのアプリケーションと同じだけ長く持続するアプリケーション・データを記憶しうる。ジャバ仮想マシン仕様については、二つの「タスク」が一つのアプリケーションに属する場合、その二つの「タスク」は同じクラス・パスを共有しうる。すなわち、それらのタスクはクラス・ファイルの同じ順序付けされたテーブルを共有しうる。この観点で、アプリケーションはそのタスクのための実行可能バイナリーデータ(動的にロードされるバイナリーデータを含む)およびランタイム環境を表しうる。
アプリケーション・ヒープ3021-Nのそれぞれに記憶されるアプリケーション・データは、そのアプリケーションについてのメタデータおよびそのアプリケーションと同じ寿命をもちうるプログラム・オブジェクトを含みうる。アプリケーションについてのメタデータの例は、アプリケーション・クラス・ファイルについての情報、アプリケーション・クラス・ファイルの変換済みコード、アプリケーション・クラス・ファイルを変換および実行するためのアプリケーション・ライブラリおよびランタイム環境変数ならびに可能性としてはアプリケーションのための他のデータを含みうる。プログラム・オブジェクトの例は、アプリケーション・クラス・ファイルを初期化するときに生成されるオブジェクトを含みうる。図3の実施形態では、アプリケーション・ヒープは、アプリケーションの最後のタスクが終了されれば再利用されうる。
タスク・ヒープ3031-Nのそれぞれは、マルチタスク仮想マシン1022によって実行される各「ライブな」タスクに割り当てられうる。タスク・ヒープ3031-Nのそれぞれは、関連するタスクによってのみアクセス可能なタスク・データを記憶しうる。これは、そのタスク・データへの他のタスクによるアクセスは禁止されうるということである。タスク・データは関連するタスクと同じ寿命をもちうる。タスク・データの例は、タスクを実行するときに生成されるプログラム・オブジェクトおよびタスクを実行するためのランタイム環境変数を含みうる。図3の実施形態では、タスク・ヒープは、関連するタスクが終了されれば再利用されうる。
図3に示されるように、タスクは、そのタスク・ヒープに記憶されているタスク・データおよびシステム・ヒープに記憶されているシステム・データにアクセスしうる。タスクはさらに、そのタスクが属しうるアプリケーションのためのアプリケーション・ヒープに記憶されているアプリケーション・データにもアクセスしうる。一つのアプリケーションがマルチタスク仮想マシン1022によって実行されている二つ以上のタスクをもちうるので、一つのアプリケーション・ヒープに、二つ以上のタスクが結び付けられていてもよい。たとえば、アプリケーション・ヒープ3021には二つのタスク・ヒープ3031〜3032が結び付けられていてもよい。しかしながら、タスクは、そのタスクが属さないかもしれない他のアプリケーションのための他のアプリケーション・ヒープに記憶されている他のアプリケーション・データにはアクセスできない。
図3のヒープ組織203の構造について、他の実施形態は他の技術を実装してもよい。たとえば、マルチタスク仮想マシン1022が一つのインスタンスの間に一つのアプリケーション1023を実行する場合、ヒープ組織203は、システム・データおよびアプリケーション・データを記憶するためのシステム・ヒープと、タスク・データを記憶するための複数のタスク・ヒープとを有していてもよい。
図4は、図3に示されたヒープ組織203にタスク・ヒープを追加する方法の実施形態を示している。
ブロック401において、ヒープ・マネージャ204または他の好適な装置は、マルチタスク仮想マシン1022によって実行されうるあるタスクのためのタスク・ヒープを生成することを決定しうる。ブロック402では、ヒープ・マネージャ204または他の好適な装置は、そのタスクが属するアプリケーションを決定しうる。上述したように、アプリケーションはそのタスクについての実行可能なバイナリーデータ(動的にロードされるバイナリーデータを含む)およびランタイム環境を表していてもよく、したがって、ヒープ・マネージャ204または他の好適な装置は、そのタスクの実行可能なバイナリーデータおよびランタイム環境を調べることによって前記アプリケーションを決定しうる。
ブロック403において、ヒープ・マネージャ204または他の好適な装置は、そのアプリケーションにアプリケーション・ヒープが割り当てられているかどうかを判別しうる。ブロック403のある実施形態では、ヒープ・マネージャ204または他の好適な装置は、「ライブな」アプリケーションのすべてを記録する「ライブ」アプリケーション・テーブルを維持していてもよい。各「ライブ」アプリケーションは、マルチタスク仮想マシン1022によって実行されうる少なくとも一つのタスクをもちえ、したがって、アプリケーション・ヒープを割り当てられうる。このようにして、ヒープ・マネージャ204または他の好適な装置は、そのアプリケーションが「ライブ」アプリケーション・テーブルにリストされていれば、アプリケーション・ヒープがそのアプリケーションに割り当てられていると判別し、リストされていなければ、アプリケーション・ヒープがそのアプリケーションに割り当てられていないと判別しうる。
そのアプリケーションがアプリケーション・ヒープを割り当てられていない場合、ヒープ・マネージャ204または他の好適な装置は、ブロック404で、そのアプリケーションのためのアプリケーション・ヒープを生成しうる。ブロック405では、ヒープ・マネージャ203または他の好適な装置は、アプリケーション・データをアプリケーション・ヒープにロードしうる。アプリケーション・データは、そのアプリケーションのためのメタデータおよびそのアプリケーションに等しい寿命をもつプログラム・オブジェクトを有しうる。
ブロック406では、ヒープ・マネージャ203または他の好適な装置は、生成されたアプリケーション・ヒープの存在をマークしうる。ブロック408のある実施形態では、ヒープ・マネージャ203または他の好適な装置は、アプリケーション・ヒープに対応するアプリケーションを、「ライブ」アプリケーション・テーブルに加えてもよい。
ブロック407では、ヒープ・マネージャ203または他の好適な装置は、そのタスクをブロック404で生成されたアプリケーション・ヒープに結び付け(bind)、それによりタスクがアプリケーション・ヒープ中のアプリケーション・データにアクセスできるようにする。ブロック407のある実施形態では、ヒープ・マネージャ203または他の好適な装置は、そのタスクを、そのアプリケーションについて維持されている「ライブ」タスク・テーブルに追加してもよい。前記「ライブ」タスク・テーブルは、そのアプリケーションに属し、マルチタスク仮想マシン1022によって実行される各タスクを記録するものである。
次いで、ブロック408において、ヒープ・マネージャ203または他の好適な装置は、マルチタスク仮想マシン1022によって実行されうるタスクのためのタスク・ヒープを生成しうる。タスク・ヒープの生成は、タスク・ヒープ・アドレス、アプリケーション・ヒープ・アドレスおよびシステム・ヒープ・アドレスを、そのタスクの諸スタックに追加し、それによりタスクがそれらのヒープ中のデータにアクセスしうるようにすることによって行われうる。最後に、ブロック409において、マルチタスク仮想マシン1022の実行エンジン202は、前記タスクをそのタスク・ヒープ上で走らせうる。
ブロック403に戻って参照すると、そのタスクに対応するアプリケーションにアプリケーション・ヒープが割り当てられている場合、ヒープ・マネージャ203または他の好適な装置は、ブロック407で、そのタスクをそのアプリケーション・ヒープに結び付け、ブロック408でそのタスクのためのタスク・ヒープを生成し、それによりブロック409で実行エンジン202が前記タスクをそのタスク・ヒープ上で走らせうるようにする。
図5は、ヒープ組織203からタスク・ヒープを再利用する方法のある実施形態を示している。
ブロック501において、たとえば実行エンジン202がタスクの実行を完了するとき、タスクは終了され(terminated)うる。ブロック502において、ヒープ・マネージャ203または他の好適な装置は、そのタスクに割り当てられていたタスク・ヒープを解放しうる。ブロック502のある実施形態では、ヒープ・マネージャ203は、前記タスク・ヒープのメモリ領域をオペレーティング・システムにそっくり返しうる。次いで、ブロック503において、ヒープ・マネージャ203または他の好適な装置は、そのタスクが、そのタスクが属するアプリケーションの最後のタスクであるかどうかを判別しうる。ヒープ・マネージャ203または他の好適な装置は、ブロック203をさまざまな方法で、たとえばそのアプリケーションについて維持されている上記の「ライブ」タスク・テーブルを検査してそのタスクが「ライブ」タスク・テーブルの最後のものかどうかを判別することによって、実装しうる。
そのタスクがそのアプリケーションの最後のタスクでない場合、ヒープ・マネージャ203または他の好適な装置は、ブロック506で、そのタスクを、前記アプリケーションに割り当てられたアプリケーション・ヒープとの結び付きを解除する(unbind)。結び付き解除は、そのアプリケーションについて維持されている「ライブ」タスク・テーブルからそのタスクを削除することによって実装されてもよい。しかしながら、そのタスクがそのアプリケーションの最後のタスクである場合には、ヒープ・マネージャ203または他の好適な装置は、ブロック504で、そのアプリケーションのためのアプリケーション・ヒープを再利用しうる。ヒープ・マネージャ203または他の好適な装置は、ブロック504をさまざまな仕方で、たとえばそのアプリケーション・ヒープのメモリ領域をそっくりオペレーション・システムに返すことによって、実装しうる。次いでブロック505で、ヒープ・マネージャ203または他の好適な装置は、アプリケーション・ヒープの再利用〔再生〕をマークしうる。これはたとえば、上記の「ライブ」アプリケーション・テーブルから対応するアプリケーションを削除することによる。
図6は、図2のヒープ組織203のもう一つの実施形態を示している。
ヒープ組織203は、複数のアプリケーション・ヒープ6011-Nおよび複数のタスク・ヒープ6021-Nを含みうる。アプリケーション・ヒープ6011-Nのそれぞれは、アプリケーション1021の一つに割り当てられうる。各アプリケーション・ヒープは、システム・データと、そのアプリケーションに属するタスク(単数または複数)によってのみアクセス可能であり、そのアプリケーションと同じだけ長く持続するアプリケーション・データとを含みうる。システム・データは、グローバルに共有されたライブラリおよびグローバルに共有されたランタイム環境のメタデータおよびプログラム・オブジェクトを含みうる。アプリケーション・データは、アプリケーション・クラス、アプリケーション・ライブラリおよびアプリケーション・ランタイム環境のメタデータおよびプログラム・オブジェクトを含みうる。
タスク・ヒープ6021-Nのそれぞれは、マルチタスク仮想マシンによって実行される各タスクに割り当てられうる。各タスク・ヒープは、関連するタスクによってのみアクセス可能であり、関連するタスクと同じだけ長く持続するタスク・データを記憶しうる。タスク・データは、そのタスクについてのプログラム・オブジェクトおよびランタイム環境を含みうる。タスク・ヒープ6021-Nのそれぞれは、アプリケーション・ヒープ6011-Nの一つに結び付けられうる。それにより、タスクは、タスク・ヒープならびにアプリケーション・タスク内のデータにアクセスできる。
図6のヒープ組織の構造について、他の実施形態は他の技術を実装してもよい。たとえば、システム・データは、各タスク・ヒープ6021-Nにはコピーされるが各アプリケーション・ヒープ6021-Nにはコピーされないのでもよい。
図7は、図2のヒープ組織203のさらにもう一つの実施形態を示している。
図のように、ヒープ組織203は、システム・ヒープ701および複数のタスク・ヒープ7021-Nを含みうる。システム・ヒープ701は、マルチタスク仮想マシン1022によって実行されるタスクすべてによってアクセス可能であり、マルチタスク仮想マシン1022のインスタンス化と同じだけ長く持続するシステム・データを記憶しうる。システム・データは、グローバルに共有されたライブラリおよびグローバルに共有されたランタイム環境変数についてのメタデータおよびマルチタスク仮想マシンのインスタンス化と同じだけ長く持続しうるプログラム・オブジェクトならびに可能性としては他のシステム・データを含みうる。
タスク・ヒープ7021-Nのそれぞれは、マルチタスク仮想マシン1022によって実行される各タスクに割り当てられうる。各タスク・ヒープは、関連するタスクによってのみアクセス可能なアプリケーション・データおよびタスク・データを記憶しうる。アプリケーション・データは、そのアプリケーション・クラス、アプリケーション・ライブラリおよびランタイム環境についてのメタデータおよびプログラム・オブジェクトならびに可能性としてはそのアプリケーションのための他のデータを含みうる。タスク・データは、そのタスクについてのプログラム・オブジェクトおよびランタイム環境を含みうる。
本発明はある種の実施形態との関連で記載されてきたが、当業者はすぐ理解するように、本発明の精神および範囲から外れることなく修正および変形が用いられてもよいことは理解されるものとする。そのような修正および変形は、本発明および付属の請求項の範囲内であると考えられる。

Claims (10)

  1. 複数のタスクを並行して実行するハードウェア実行エンジンと;
    複数のヒープとを有するマルチタスク仮想マシンであって、前記複数のヒープは:
    前記複数のタスクのうちの一つのタスクに割り当てられ、割り当てられたタスクによってのみアクセス可能なタスク・データを記憶するタスク・ヒープであって、前記タスク・ヒープに記憶される前記タスク・データの寿命は割り当てられるタスクの寿命に等しい、タスク・ヒープと;
    アプリケーションに割り当てられ、該アプリケーションのアプリケーション・データを記憶するアプリケーション・ヒープであって、前記アプリケーション・データは前記複数のタスクのうち前記アプリケーションに関連付けられた少なくとも一つのタスクによってのみアクセス可能であり、前記複数のタスクのうち二つ以上のタスクが前記アプリケーションに関連付けられていてもよく、前記アプリケーション・ヒープに記憶される前記アプリケーション・データの寿命は前記アプリケーションの寿命に等しい、アプリケーション・ヒープとを有しており、
    システム・データが前記タスク・ヒープまたは前記アプリケーション・ヒープに記憶される、
    マルチタスク仮想マシン。
  2. 前記システム・データがグローバルに共有されたライブラリおよびグローバルに共有されたランタイム環境変数のシステム・メタデータを含む、請求項1記載のマルチタスク仮想マシン。
  3. 前記アプリケーション・データが、アプリケーション・クラス・ファイル、アプリケーション・ライブラリおよびアプリケーション・ランタイム環境変数のアプリケーション・メタデータを含む、請求項1記載のマルチタスク仮想マシン。
  4. 割り当てられたタスクが終了される場合に前記タスク・ヒープを再利用するためのヒープ・マネージャをさらに有する、請求項1記載のマルチタスク仮想マシン。
  5. 前記アプリケーションに関連付けられた割り当てられた前記少なくとも一つのタスクが終了される場合に前記アプリケーション・ヒープを再利用するためのヒープ・マネージャをさらに有する、請求項1記載のマルチタスク仮想マシン。
  6. 前記アプリケーション・ヒープが、グローバルに共有されたライブラリおよびグローバルに共有されたランタイム環境変数のシステム・メタデータを含む前記システム・データならびにアプリケーション・クラス・ファイル、アプリケーション・ライブラリおよびアプリケーション・ランタイム環境変数のアプリケーション・メタデータを含む前記アプリケーション・データを記憶する、請求項1記載のマルチタスク仮想マシン。
  7. 前記タスク・ヒープが、前記タスク・データならびにグローバルに共有されたライブラリおよびグローバルに共有されたランタイム環境変数のシステム・メタデータを含む前記システム・データを記憶する、請求項1記載のマルチタスク仮想マシン。
  8. 同じクラス・パスを共有する二つ以上のタスクが一つのアプリケーションに属する、請求項1記載のマルチタスク仮想マシン。
  9. 前記クラス・パスが、クラス・ファイルの順序付けされたテーブルを有する、請求項記載のマルチタスク仮想マシン。
  10. 命令が記憶されている機械可読媒体であって、該命令は、実行されると、機械請求項1ないしのうちいずれか一項記載のマルチタスク仮想マシンとして動作させる、機械可読媒体。
JP2012287480A 2012-12-28 2012-12-28 マルチタスク仮想マシンのためのヒープ組織 Expired - Fee Related JP5646591B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2012287480A JP5646591B2 (ja) 2012-12-28 2012-12-28 マルチタスク仮想マシンのためのヒープ組織

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2012287480A JP5646591B2 (ja) 2012-12-28 2012-12-28 マルチタスク仮想マシンのためのヒープ組織

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2009518699A Division JP2009543236A (ja) 2006-07-14 2006-07-14 マルチタスク仮想マシンのためのヒープ組織

Publications (3)

Publication Number Publication Date
JP2013058270A JP2013058270A (ja) 2013-03-28
JP2013058270A5 JP2013058270A5 (ja) 2013-08-15
JP5646591B2 true JP5646591B2 (ja) 2014-12-24

Family

ID=48134013

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012287480A Expired - Fee Related JP5646591B2 (ja) 2012-12-28 2012-12-28 マルチタスク仮想マシンのためのヒープ組織

Country Status (1)

Country Link
JP (1) JP5646591B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10635491B2 (en) 2014-01-21 2020-04-28 Oracle International Corporation System and method for use of a multi-tenant application server with a multitasking virtual machine

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5889990A (en) * 1996-11-05 1999-03-30 Sun Microsystems, Inc. Information appliance software architecture with replaceable service module providing abstraction function between system library and platform specific OS
US6694346B1 (en) * 1999-04-30 2004-02-17 International Business Machines Corporation Long running, reusable, extendible, virtual machine
JP2004246753A (ja) * 2003-02-17 2004-09-02 Nippon Telegr & Teleph Corp <Ntt> メモリ管理装置およびプログラム
JP2004287870A (ja) * 2003-03-24 2004-10-14 Hitachi Ltd ごみ集め方法及びコンパイル方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10635491B2 (en) 2014-01-21 2020-04-28 Oracle International Corporation System and method for use of a multi-tenant application server with a multitasking virtual machine

Also Published As

Publication number Publication date
JP2013058270A (ja) 2013-03-28

Similar Documents

Publication Publication Date Title
US9891900B2 (en) Generation of specialized methods based on generic methods and type parameterizations
US11175896B2 (en) Handling value types
KR101059633B1 (ko) 멀티태스킹 가상 머신을 위한 힙 구성
US9891939B2 (en) Application compatibility with library operating systems
US7434215B2 (en) Mechanism for loading plugin classes at an appropriate location in the class loader hierarchy
US9563446B2 (en) Binary file generation
US9639329B2 (en) System and method for automatic invocation of constructor code for superclasses
US20090307292A1 (en) Dynamically changing a garbage collector in a managed runtime system
US8650537B2 (en) Optimizing an object-oriented program by transforming invocations of synthetic accessor methods
US9063805B2 (en) Method and system for enabling access to functionality provided by resources outside of an operating system environment
KR101284099B1 (ko) 태스크들에 걸쳐 오퍼레이팅 시스템 서브-프로세스들 공유
US7743377B2 (en) Cooperative threading in a managed code execution environment
JP5646591B2 (ja) マルチタスク仮想マシンのためのヒープ組織
KR20070088160A (ko) 메소드 호출 방법 및 이를 이용한 자바 가상 머신
KR101140522B1 (ko) 객체 관리 시스템 및 방법
KR20100110710A (ko) 동적 라이브러리를 갖는 인터페이스를 간단히 하는 방법, 시스템 및 컴퓨터 프로그램 제품
US7861250B2 (en) Runtime polymorphism
US6752836B1 (en) Method and apparatus for high-concurrency client locking with java in a data processing system
US10606629B2 (en) Enhancing virtual machine performance using autonomics
CA2875046A1 (en) Efficient compilation system and method for virtual function table creation
CN116010100A (zh) 区块链系统中的合约调用方法、装置、设备及存储介质
Vitek VIRTUAL EXECUTION ENVIRONMENTS

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20130124

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130626

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20140224

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140304

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140602

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140617

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140916

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: 20141007

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20141105

R150 Certificate of patent or registration of utility model

Ref document number: 5646591

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees