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

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

Info

Publication number
JP2013058270A
JP2013058270A JP2012287480A JP2012287480A JP2013058270A JP 2013058270 A JP2013058270 A JP 2013058270A JP 2012287480 A JP2012287480 A JP 2012287480A JP 2012287480 A JP2012287480 A JP 2012287480A JP 2013058270 A JP2013058270 A JP 2013058270A
Authority
JP
Japan
Prior art keywords
application
task
heap
virtual machine
multitasking virtual
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
JP2012287480A
Other languages
English (en)
Other versions
JP2013058270A5 (ja
JP5646591B2 (ja
Inventor
Xin Zhou
ジョウ,シン
Gansha Wu
ウー,ガンシャ
Peng Guo
グオ,ペン
Jinzhan Peng
ペン,ジンジャン
Zhiwei Ying
イン,ジーウェイ
Biao Chen
チェン,ビアオ
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.)
Intel Corp
Original Assignee
Intel 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 Intel Corp filed Critical Intel Corp
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

Abstract

【課題】マルチタスク仮想マシンのためのヒープ組織。
【解決手段】ヒープ組織は、複数のタスクを並行して実行する実行エンジンと、前記実行エンジンに結合された複数のヒープを有しうる。いくつかの実施形態では、前記複数のヒープはシステム・ヒープおよび該システム・ヒープとは分離されたタスク・ヒープを含みうる。システム・ヒープは、前記複数のタスクによってアクセス可能なシステム・データを記憶しうる。タスク・ヒープは、前記複数のタスクのうちの一つのタスクによってのみアクセス可能なタスク・データを記憶しうる。
【選択図】図2

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 (29)

  1. 複数のタスクを並行して実行する実行エンジンと;
    前記実行エンジンに結合された複数のヒープとを有するマルチタスク仮想マシンであって、前記複数のヒープは:
    前記複数のタスクによってアクセス可能なシステム・データを記憶するシステム・ヒープと;
    前記複数のタスクのうちの一つのタスクに割り当てられ、割り当てられたタスクによってのみアクセス可能なタスク・データを記憶するタスク・ヒープとを有する、
    マルチタスク仮想マシン。
  2. 前記システム・データがグローバルに共有されたライブラリおよびグローバルに共有されたランタイム環境変数のシステム・メタデータを含む、請求項1記載のマルチタスク仮想マシン。
  3. 前記システム・データが、当該マルチタスク仮想マシンの寿命と等しい寿命をもつプログラム・オブジェクトを含む、請求項1記載のマルチタスク仮想マシン。
  4. 前記タスク・データが、割り当てられたタスクの寿命に等しい寿命をもつプログラム・オブジェクトを含む、請求項1記載のマルチタスク仮想マシン。
  5. 前記複数のヒープがさらに:
    アプリケーションに割り当てられ、該アプリケーションのアプリケーション・データを記憶するアプリケーション・ヒープを有しており、前記アプリケーション・データは前記複数のタスクのうち前記アプリケーションに関連付けられた少なくとも一つのタスクによってのみアクセス可能である、
    請求項1記載のマルチタスク仮想マシン。
  6. 前記アプリケーション・データが、アプリケーション・クラス・ファイル、アプリケーション・ライブラリおよびアプリケーション・ランタイム環境変数のアプリケーション・メタデータを含む、請求項5記載のマルチタスク仮想マシン。
  7. 前記アプリケーション・データが、前記アプリケーションの寿命に等しい寿命をもつプログラム・オブジェクトを有する、請求項5記載のマルチタスク仮想マシン。
  8. 割り当てられたタスクが終了される場合に前記タスク・ヒープを再利用するためのヒープ・マネージャをさらに有する、請求項1記載のマルチタスク仮想マシン。
  9. 前記アプリケーションに関連付けられた割り当てられた前記少なくとも一つのタスクが終了される場合に前記アプリケーション・ヒープを再利用するためのヒープ・マネージャをさらに有する、請求項5記載のマルチタスク仮想マシン。
  10. 複数のタスクを並行して実行する実行エンジンと;
    前記実行エンジンに結合された複数のヒープとを有するマルチタスク仮想マシンであって、前記複数のヒープは:
    前記複数のタスクのうちの一つのタスクに割り当てられ、割り当てられたタスクによってのみアクセス可能なタスク・データを記憶するタスク・ヒープと;
    アプリケーションに割り当てられ、前記複数のタスクのうち少なくとも一つのタスクによってのみアクセス可能なアプリケーション・データを記憶するアプリケーション・ヒープとを有しており、前記少なくとも一つのタスクは、前記アプリケーションに関連付けられており、前記割り当てられたタスクを含む、
    マルチタスク仮想マシン。
  11. 前記アプリケーション・データが、グローバルに共有されたライブラリおよびグローバルに共有されたランタイム環境変数のシステム・メタデータならびにアプリケーション・クラス・ファイル、アプリケーション・ライブラリおよびアプリケーション・ランタイム環境変数のアプリケーション・メタデータを含む、請求項10記載のマルチタスク仮想マシン。
  12. 前記アプリケーション・データが、アプリケーション・クラス・ファイル、アプリケーション・ライブラリおよびアプリケーション・ランタイム環境変数のアプリケーション・メタデータを含み、前記タスク・データがグローバルに共有されたライブラリおよびグローバルに共有されたランタイム環境変数のシステム・メタデータを含む、請求項10記載のマルチタスク仮想マシン。
  13. 前記アプリケーション・データが、前記アプリケーションの寿命に等しい寿命をもつプログラム・オブジェクトを含む、請求項10記載のマルチタスク仮想マシン。
  14. 前記タスク・データが、前記タスクの寿命に等しい寿命をもつプログラム・オブジェクトを含む、請求項10記載のマルチタスク仮想マシン。
  15. 前記タスクが終了される場合に前記タスク・ヒープを再利用するためのヒープ・マネージャをさらに有する、請求項10記載のマルチタスク仮想マシン。
  16. 前記アプリケーションに関連付けられた割り当てられた前記少なくとも一つのタスクが終了される場合に前記アプリケーション・ヒープを再利用するためのヒープ・マネージャをさらに有する、請求項10記載のマルチタスク仮想マシン。
  17. マルチタスク仮想マシンの方法であって:
    複数のタスクのうちの一つのタスクに割り当てられたタスク・ヒープを設ける段階を含み、ここで、前記タスク・ヒープは割り当てられたタスクによってのみアクセス可能なタスク・データを記憶するものであり、
    アプリケーションに割り当てられたアプリケーション・ヒープが存在するかどうかを判別する段階とを含み、ここで、前記アプリケーション・ヒープは、前記複数のタスクのうちの少なくとも一つのタスクによってのみアクセス可能なアプリケーション・データを記憶し、前記少なくとも一つのタスクは前記アプリケーションに関連付けられており、割り当てられたタスクを含む、
    方法。
  18. 前記判別する段階がさらに:
    前記割り当てられたタスクに関連付けられた前記アプリケーションを判別する段階と;
    前記アプリケーションが、前記複数のタスクのうち前記マルチタスク仮想マシンによって実行されている少なくとも一つのタスクをもつ各アプリケーションを記録するライブ・アプリケーション・テーブル中に存在するかどうかを判別する段階とをさらに含む、
    請求項17記載の方法。
  19. 前記マルチタスク仮想マシン中に前記アプリケーション・ヒープが存在しない場合、前記アプリケーション・ヒープを設ける段階をさらに有する、請求項17記載の方法。
  20. 前記アプリケーション・ヒープの存在をマークする段階をさらに有する、請求項17記載の方法。
  21. 前記マークする段階がさらに、前記アプリケーションを、前記複数のタスクのうち前記マルチタスク仮想マシンによって実行されている少なくとも一つのタスクをもつ各アプリケーションを記録するライブ・アプリケーション・テーブル中に追加する段階をさらに有する、請求項20記載の方法。
  22. 割り当てられたタスクを前記アプリケーション・ヒープに結び付け、それにより割り当てられたタスクが前記アプリケーション・ヒープに記憶されているアプリケーション・データにアクセスできるようにする段階をさらに有する、請求項17記載の方法。
  23. 前記結び付けることがさらに、前記割り当てられたタスクを前記アプリケーションのためのライブ・タスク・テーブル中に追加することを含み、ここで、前記ライブ・タスク・テーブルは、前記アプリケーションに関連付けられ、前記マルチタスク仮想マシンによって実行される各タスクを記録する、請求項22記載の方法。
  24. 複数の命令を有する機械可読媒体であって、該複数の命令は、実行されると、マルチタスク仮想マシンをして:
    前記マルチタスク仮想マシンから、複数のタスクのうちの一つのタスクに割り当てられたタスク・ヒープを再利用し、ここで、前記タスク・ヒープは割り当てられたタスクによってのみアクセス可能なタスク・データを記憶するものであり;
    前記マルチタスク仮想マシンから、あるアプリケーションに割り当てられたアプリケーション・ヒープを再利用するかどうかを決定することを実行させ、ここで、前記アプリケーション・ヒープは、前記複数のタスクのうち少なくとも一つのタスクによってのみアクセス可能なアプリケーション・データを記憶し、前記少なくとも一つのタスクは前記アプリケーションに関連付けられており、前記の割り当てられたタスクを含む、
    機械可読媒体。
  25. マルチタスク仮想マシンをして前記アプリケーション・ヒープを再利用するかどうかを決定することを実行させる前記複数の命令がさらに、前記マルチタスク仮想マシンをして:
    割り当てられたタスクが、前記アプリケーションに関連付けられており前記マルチタスク仮想マシンによって実行される各タスクを記録するライブ・タスク・リスト中にリストされている最後のタスクかどうかを判別し;
    前記割り当てられたタスクが前記ライブ・タスク・リスト中の最後のタスクである場合に前記アプリケーション・ヒープを再利用することを決定することを実行させる、
    請求項24記載の機械可読媒体。
  26. 前記複数の命令がさらに、前記マルチタスク仮想マシンをして:
    前記アプリケーション・ヒープを再利用しないと決定するのに応答して、割り当てられたタスクを前記アプリケーション・ヒープから結び付き解除することを実行させる、請求項24記載の方法。
  27. 前記マルチタスク仮想マシンをして前記タスクを結び付き解除することを実行させる前記複数の命令がさらに、前記マルチタスク仮想マシンをして:
    割り当てられたタスクを、前記アプリケーションに関連付けられており前記マルチタスク仮想マシンによって実行される各タスクを記録するライブ・タスク・リストから削除することを実行させる、請求項26記載の方法。
  28. 前記複数の命令がさらに、前記マルチタスク仮想マシンをして:
    前記マルチタスク仮想マシンから前記アプリケーション・ヒープを再利用し;
    前記アプリケーション・ヒープの再利用をマークすることを実行させる、
    請求項24記載の方法。
  29. 前記マルチタスク仮想マシンをして再利用をマークすることを実行させる前記複数の命令がさらに、前記マルチタスク仮想マシンをして:
    前記アプリケーションを、前記複数のタスクのうちの前記マルチタスク仮想マシンによって実行されている少なくとも一つのタスクをもつ各アプリケーションを記録するライブ・アプリケーション・テーブルから削除することを実行させる、請求項28記載の方法。
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 true JP2013058270A (ja) 2013-03-28
JP2013058270A5 JP2013058270A5 (ja) 2013-08-15
JP5646591B2 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)

Families Citing this family (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

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000330805A (ja) * 1999-04-30 2000-11-30 Internatl Business Mach Corp <Ibm> バーチャル・データ処理エンティティの提供方法、システムおよび記憶媒体
JP2001503891A (ja) * 1996-11-05 2001-03-21 サンマイクロシステムズ インコーポレーテッド 情報装置のアーキテクチャ
JP2004246753A (ja) * 2003-02-17 2004-09-02 Nippon Telegr & Teleph Corp <Ntt> メモリ管理装置およびプログラム
JP2004287870A (ja) * 2003-03-24 2004-10-14 Hitachi Ltd ごみ集め方法及びコンパイル方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001503891A (ja) * 1996-11-05 2001-03-21 サンマイクロシステムズ インコーポレーテッド 情報装置のアーキテクチャ
JP2000330805A (ja) * 1999-04-30 2000-11-30 Internatl Business Mach Corp <Ibm> バーチャル・データ処理エンティティの提供方法、システムおよび記憶媒体
JP2004246753A (ja) * 2003-02-17 2004-09-02 Nippon Telegr & Teleph Corp <Ntt> メモリ管理装置およびプログラム
JP2004287870A (ja) * 2003-03-24 2004-10-14 Hitachi Ltd ごみ集め方法及びコンパイル方法

Also Published As

Publication number Publication date
JP5646591B2 (ja) 2014-12-24

Similar Documents

Publication Publication Date Title
US9891900B2 (en) Generation of specialized methods based on generic methods and type parameterizations
KR101059633B1 (ko) 멀티태스킹 가상 머신을 위한 힙 구성
US9891939B2 (en) Application compatibility with library operating systems
US9563446B2 (en) Binary file generation
US7434215B2 (en) Mechanism for loading plugin classes at an appropriate location in the class loader hierarchy
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
JP2005509194A (ja) プレインターナライズ済プログラムファイルの作成及び使用のための方法並びに装置
US9063805B2 (en) Method and system for enabling access to functionality provided by resources outside of an operating system environment
US20210109783A1 (en) Reducing the startup latency of functions in a faas infrastructure
US10552135B1 (en) Reducing a size of an application package
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
WO2023154092A1 (en) Dynamically overriding a function based on a capability set during load time
Wills et al. Data types
Sutherland et al. Managing Memory for Game Developers

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