JP2007505395A - バーチャルマシーンにおける継続−受け渡しの方法及び機器。 - Google Patents

バーチャルマシーンにおける継続−受け渡しの方法及び機器。 Download PDF

Info

Publication number
JP2007505395A
JP2007505395A JP2006526127A JP2006526127A JP2007505395A JP 2007505395 A JP2007505395 A JP 2007505395A JP 2006526127 A JP2006526127 A JP 2006526127A JP 2006526127 A JP2006526127 A JP 2006526127A JP 2007505395 A JP2007505395 A JP 2007505395A
Authority
JP
Japan
Prior art keywords
stack
memory
continuation
virtual machine
logic
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
JP2006526127A
Other languages
English (en)
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.)
Qualcomm Inc
Original Assignee
Qualcomm 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 Qualcomm Inc filed Critical Qualcomm Inc
Publication of JP2007505395A publication Critical patent/JP2007505395A/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/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
    • 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/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4482Procedural
    • G06F9/4484Executing subprograms

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mobile Radio Communication Systems (AREA)
  • Devices For Executing Special Programs (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Transceivers (AREA)

Abstract

【課題】バーチャルマシンにおける継続−受け渡しの方法及び機器。
【解決手段】バーチャルマシン(VM)における継続受け渡しの方法及び機器。無線装置における継続受け渡しを提供するバーチャルマシンを操作する方法が提供される。バーチャルマシンはスタックメモリを備える。本方法は、コンテクスト−生成トリガーに出会うことと、前記トリガーに応じて前記スタックメモリから生じるスタックフラグメントを備える継続ブロックを構築することと、評価インストラクションに出会うことと、前記評価インストラクションに応じて前記スタックメモリ上に前記継続ブロックからの前記スタックフラグメントを保存することと、を備える。
【選択図】 図4

Description

本発明は、概してコンピュータ処理システム関し、特に、効率的なプログラムフロー及びメモリリソース利用を提供するバーチャルマシーン(a virtual machine)における継続受け渡し(continuation passing)を提供するための方法及び機器(methods and apparatus)に関係する。
技術における発達は、結果として、より小型でよりパワーフルな無線装置(wireless devices)をもたらしている。例えば、小さくて、軽く、容易にユーザーによって持ち運ばれる、多種多様な、携帯無線電話(portable wireless telephone)、携帯情報端末(personal digital assistants)(PDAs)、ページングデバイス(paging devices)が現在存在する。典型的には、これらの装置は、限られたメモリリソースを備えた組み込み型コントローラを含む。例えば、利用可能なメモリーの量は装置の小さなサイズによって制限される。
無線装置はより広く行き渡るにつれ、これらの装置がより多くの量のデータを扱い、もっと高機能のプログラムを実行することの要求が増加している。例えば、ユーザーは、ゲームプログラムのような対話型プログラムへの遠隔アクセスを求めており、このようなプログラムは、無線ネットワークを使用し遠隔サービスプロバイダーとの速くて効率のよい通信を提供できる無線装置を必要とする。更に、ユーザーは、もっと大きなホームシステム上又はオフィスシステム上で典型的にアクセス可能な特定のプログラムへの遠隔アクセスを持つことを望んでいる。
これらの要求に応じるためには、装置及びサービスの提供者は、彼ら自身の技術を開発するか又は既存の技術を利用することに努めるかを選択しなければならない。残念ながら、新技術を開発することは時間も費やし且つ高価でもあり、従って、魅力のない選択肢である。既存技術、例えばソフトウェアなど、を利用するためには、互換性問題(compatibility problems)が克服されなければならない。例えば、1つの処理システム用に開発されたソフトウェアは、別の処理システムと互換性がないかもしれない。このように、互換性問題は、無線装置上で走らせるために1以上のシステムからソフトウェアを移植する時には、対処される必要がある。
互換性問題を克服するために使用される1つの技術は、バーチャルマシーン(VM)の使用を伴う。典型的なVMは、ホストシステム上で実行し、いくつかの他のシステム(即ち、遠隔システム)用に書かれた非−ネイティブ(non-native)プログラムインストラクションをホストシステムが実行することを可能とするソフトウェアを備える。例えば、遠隔システム上で実行するように書かれた非−ネイティブプログラムインストラクションは、ホストシステムで走るVMソフトウェアによって解釈される(interpreted)。このようにして、無線装置上で走るVMは、装置に、種々様々の異なるシステム用に書かれたソフトウェアを走らすことを可能にし、その結果、装置開発者及びサービスプロバイダが、無線装置ユーザーに付加された機能を提供するために既存ソフトウェアを利用することを可能にする。
残念なことに、リソースの限られた無線装置にVMを実装することは他の問題を引き起こす。例えば、多くのVM実装は、定数、変数、呼び出しプロシージャーへの引数、又はプログラム実行のために必要とされる他の情報を保存するためのスクラッチパッドとして使用され得る一時記憶装置用スタックを使用する。バイトコード実行期間中に、スタックポインター、現在のプログラムカウンター、コードポインター、等を含むもしれない、活性化レコード又はコンテクスト(an activation record or context)を生成する動態関数に出会う可能性がある。クロージャー又はブロック(a closure or block)は、現在のコンテクスト(ここからブロックが生成された)中のスタック上のエレメント(elements)を指すバイトコードフラグメント(a bytecode fragment)である。ブロックはコンテクストからアプリケーションコード中のどこかで使用されるためにリターンされることが出来る。一例はソート関数(a sorting function)に渡されたソートブロック(a sort block passed)である。後の段階でブロックを実行するためには、生成コンテクスト(the creating context)はリリースされることが出来ない、即ち、生成関数(the creating function)はリターンできない。ブロックは、生成関数からの関数呼び出しに渡されることが出来るのみである。然しながら、リターンできるためには、パラメータ化されたブロック(即ち、生成コンテクスト中のデータを指すブロック)が極めて有用であろう。
いくつかのシステムではこの問題を各活性化レコード用に完全に新しいスタックを生成することによって解決する。各活性化レコードに対する最大のスタックサイズはコンパイル時(at compile-time)に計算されることが出来、スタックサイズは束縛される。この技術は問題を解決するように思えるが、それは、スタック生成及びパラメータコピーを伴う全ての関数(function)を不利にし、低い処理パワーと限られたメモリを有するシステム、例えば無線装置など、に関し費用がかかる。他の技術は、ブロックが生成活性化レコードにおいてどんな実際のデータも指さない(即ち、ブロックがクリーンである)場合のみに、生成活性化レコードのリターンを可能にする。この技術は、問題の部分を解決するが、ブロックが、生成コンテクストにおいて利用可能なデータでパラメータ化されることを可能としない。
従って、必要とされるものは、生成コンテクスト中のデータを指すパラメータ化されたブロックのリターンを可能とする継続受け渡しを提供する、リソース限定の無線装置において使用のVMであり、それによって、利用可能なメモリリソースを効率的に利用しながら、速いプログラム実行を提供する。
[要約]
1以上の実施例において、VMがリソースの限られた無線装置において継続受け渡しを実行すること、を可能にする方法及び機器が提供される。例えば、前記無線装置は、組み込み型プロセッサ(an embedded processor)と限られたメモリリソースとを有し、それらが、VMの一実施例を提供するためにプログラムインストラクションを実行する、無線電話であるかもしれない。前記VMは、前記無線装置が異なるシステム用に書かれた非−ネイティブプログラムインストラクションを実行することを、可能にする。その結果、前記無線装置は、装置ユーザーに前記非−ネイティブプログラムの機能を提供することが可能である。
一実施例においては、コンテクスト−生成トリガー(a context-creating trigger)、例えば動態関数呼び出し、に出会うこと(encountering)に応じてブロックが生成されるように、前記VMは継続受け渡しを実行する。前記VMは、現在のコンテクストの現在のスタックフラグメント(stack fragment)のコピーを含む拡張コンテクスト(an extended context)を振舞う。更に、前記ブロック中に含まれるパラメータのフラグメントにオフセットされる(offset into)パラメータが保存される。ブロック評価と同時に、保存されたスタックフラグメントのエレメントは、スタック上にプッシュして戻され(pushed back)、前記ブロックが生成された前記ブロックのコンテクストを有効的に再構築する。前記ブロックに渡されたパラメータ(The parameters passed to the block)は、保存されたパラメータインデックスを使ってフラグメントに保存される。前記ブロックはそのあと生成コンテクスト(the creating context)のフルの状態(full state)で実行できる。
前記スタックフラグメントを前記スタックにプッシュして戻すことにより、前記ブロックの前記生成コンテクストは効果的に元の状態に戻される(re-instated)。これは、パラメータ化されたブロックがコンテクストによって戻されることを可能にする。ブロックが生成される時のみに前記スタックフラグメントをコピーすることにより、処理及びメモリオーバーヘッドは最小化される。
一実施例においては、無線装置における継続受け渡しを提供するバーチャルマシーンを操作する方法が提供される。前記バーチャルマシーンはスタックメモリを備える。本方法は、コンテクスト−生成トリガーに出会ことと、前記スタックメモリから生じる(derived)スタックフラグメントを備える継続ブロック(continuation block)を前記トリガーに応じて構築することと、評価インストラクションに出会うことと、前記評価インストラクションに応じて前記スタックメモリ上に前記継続ブロックからの前記スタックフラグメントを保存することと、を備える。
別の実施例では、バーチャルマシーンは、組み込み型プロセッサを有する無線装置において使用のために提供される。前記バーチャルマシーンは、情報を保存し検索するロジックを備えるスタックメモリを備える。前記バーチャルマシーンは又、コンテクスト−生成トリガーに出会うロジックと、前記トリガーに応じて継続ブロックを構築するロジックとを備え、ここでは、前記継続ブロックは前記スタックメモリから生じるスタックフラグメントを備える。前記バーチャルマシーンは又、評価インストラクションに出会うロジックと、前記継続ブロックからの前記スタックフラグメントを前記評価インストラクションに応じて前記スタックメモリ上に保存するロジックとを備える。
別の実施例においては、バーチャルマシーンは、組み込み型プロセッサを有する無線装置において使用のために提供される。前記バーチャルマシーンは、スタックメモリを提供するための手段と、コンテクスト−生成トリガーに出会うための手段とを備える。前記バーチャルマシーンは又、前記トリガーに応じて継続ブロックを構築するための手段も備えており、ここでは、前記継続ブロックは、前記スタックメモリから生じるスタックフラグメントを備える。前記バーチャルマシーンは又、評価インストラクションに出会うための手段と、前記評価インストラクションに応じて前記スタックメモリ上に前記継続ブロックからの前記スタックフラグメントを保存するための手段とを備える。
別の実施例においては、処理ロジックにより実行される時に継続受け渡しを実行するバーチャルマシーンを提供する、プログラムインストラクションを備えるコンピュータ可読媒体が提供される。前記バーチャルマシーンはスタックメモリを備えており、前記可読媒体は、コンテクスト−生成トリガーに出会うためのプログラムインストラクションを備えている。前記可読媒体は又、前記トリガーに応じて継続ブロックを構築するためのプログラムインストラクションも備えており、ここでは、前記継続ブロックは、前記スタックメモリから生じるスタックフラグメントを備える。前記可読媒体は又、評価インストラクションに出会うためのプログラムインストラクションと、前記評価インストラクションに応じて前記スタックメモリ上に前記継続ブロックからの前記スタックフラグメントを保存するためのプログラムインストラクションと、を備える。
別の実施例においては、組み込み型プロセッサを有する無線装置が提供される。前記無線装置は、情報を保存し検索するロジックを備えるスタッククメモリを備える。前記無線装置は又、継続受け渡しを実行するように動作するバーチャルマシーンも備える。前記バーチャルマシーンは、コンテクスト−生成トリガーに出会うロジックと、前記トリガーに応じて継続ブロックを構築するロジックと、を備えており、ここでは、前記継続ブロックは、前記スタックメモリから生じるスタックフラグメントを備える。前記バーチャルマシーンは又、評価インストラクションに出会うロジックと、前記評価インストラクションに応じて前記スタックメモリ上に前記継続ブロックからの前記スタックフラグメントを保存するロジックと、を備える。
本発明の他の面、利点、及び特徴は、ここで記載されている、図面の簡単な説明、本発明の詳細な説明、及び特許請求の範囲を調査することにより明らかになるであろう。
[詳細な説明]
ここに説明される実施例の上記の面及び付随する利点は、添付図面と併せて以下の詳細な記載を参照することより、より容易に明らかとなるであろう。
以下の詳細な記載は、無線装置において継続受け渡しを実行するVMを提供する方法及び機器の1以上の実施例を説明する。1以上の実施例においては、無線装置は限られたリソース(即ち、限られたメモリ容量)を有しており、VMによって提供される継続受け渡しは次のステップを実行することによって達成される。
1.コンテクスト−生成トリガー(即ち、プッシュ継続インストラクションのような継続生成インストラクション)に出会こと(encountering)。
2.スタックフラグメント プラス 活性化レコード中に含まれる他の情報(即ち、コードポインター等)を含む継続ブロックを構築すること(constructing)。
3.前記継続ブロックをスタックメモリ上にプッシュすること(pushing)。
4.継続評価インストラクション(a continuation evaluation instruction)に出会うこと(encountering)。
5.前記継続ブロックを検索すること(retrieving)。
6.前記スタックフラグメントを前記スタック上にプッシュし戻すこと(pushing…back)。
7.前記継続ブロック中に保存されたコードポインターに関連したプログラムコードにジャンプすることによって前記の継続を評価すること(evaluating)。
図1は、継続受け渡しを実行するVMの一実施例を実施するために適する、限られたメモリリソース付き無線装置102を含むデータネットワーク100を図示する。システム100において、無線装置102は、無線通信チャンネル106を使用する無線ネットワーク108上でネットワークサーバ104と通信する。一実施例においては、装置102は、無線ネットワーク108上で、データ及び/又は音声情報を送信及び/又は受信できる無線電話を備える。然しながら、装置102は、任意の他のタイプの無線装置を備えてもよい。装置102は、アップリケーション110.112及び/又はシステムサービスを含むサーバー104から、種々の情報をリクエストするように動作する。例えば、システムサービスは、継続受け渡しの一実施例を提供するVM114を含む。
一実施例においては、装置102は又、ローカルワークステーション116のようなローカルシステムに、ダイレクトリンク(direct link)120を介し直接に結合する。ダイレクトリンク120は、装置102がローカルワークステーション116とデータ及び/又はプログラムを交換することを可能にする。一実施例においては、ローカルワークステーション116は、ダイレクトリンク120を使ってVM118を装置102にダウンロードする。VM118はVM114と同じでもよく、両方共、継続受け渡しの1以上の実施例を提供するように動作する。
一実施例において、装置102は、組み込み型のプロセッサ、メモリ、及び種々インタフェースを含む組み込み型システムを備えているので、装置102は、アプリケーション110、及び/又は、サーバー104からダウンロードされるVM114、を保存、ロード、及び実行できる。アップリケーション110及びVM114は、例えば、特定装置リソース用に(for device specific resources)一般化された呼び出しを提供することによって、装置の操作を単純化するために使用される、装置102上で実行するランタイム環境(a runtime environment)と相互作用するかもしれない。1つのそのようなランタイム環境は、カリフォルニア州San DiegoのQUALCOMN.Inc.によって開発された、WirelessTM(BREWTM)ソフトウェア プラットフォーム用 the Binary Runtime Environmentである。
VM114は、異なるコンピュータ処理システム用に開発されたソフトゥエアを装置102が実行するのを容易にするために、サーバー104から装置102にダウンロードされてもよい。例えば、アプリケーション112は、装置102とは異なるターゲット装置又はシステム(a target device or system)のために書かれた非−ネイティブプログラムインストラクション、を含んでもよい。ターゲットシステム上で実行するように設計されているターゲットアプリケーション(アップリケーション112のような)も又、装置102上で実行できるように、VM114は、ターゲットシステムの環境をシミュレートするように動作する。例えば、一実施例においては、JAVA(登録商標)アプリケーションが装置102上にダウンロードされ実行されることが出来るように、VM114は、JAVA(登録商標)システム環境を提供するように動作する。1以上の実施例において、VM114は、これらの非−ネイティブインストラクションの実行期間中に継続受け渡しを提供するための方法及び機器を含む。
ローカルワークステーション116から装置102にダウンロードされるVM118は、ひょっとしたら、VM114と同一であるかもしれず、従って、又、継続受け渡しの1以上の実施例を提供するようにも動作するかもしれない。一実施例においては、VM118は、例えばフロッピー(登録商標)ディスクなどのコンピュータ可読媒体上に提供され、装置102への伝送のためにシステム116上にロードされる。別の実施例では、VMが装置102上で実行できるように、VMは、例えばメモリカード(図示されていない)などのコンピュータ可読メモリ装置上に保存され、装置102に直接にプラグ接続される。このように、装置102は、無線伝送、有線伝送で、又は、メモリ装置からそれを直接に検索し取り出すことによって、VMを受け取ることが出来る。
装置102は、ポータブルであり、限られたメモリリソースを有しているので、それは、特に、継続受け渡しの1以上の実施例でVMを実行するのに適している。例えば、装置102は限られたメモリ容量を持っているので、継続受け渡しを有するVMは、利用可能なメモリを効率よく利用するように、又、非−ネイティブプログラムインストラクションの速くて効率的なプログラム解釈及び実行を提供するように、動作する。
図2は、継続受け渡しを実行するように動作するVMを含む装置102の一実施例を図示する機能ブロック図を示す。装置102は、内部データバス204に結合されているインストラクション処理ロジック(instruction processing logic)202を備える。又、内部データバス204に結合されているのは、ネイティブインストラクションメモリ(native instruction memory)206、解釈インストラクションメモリ(interpreted instruction memory)208、ヒープメモリ(heap memory)210、ユーザーインタフェース212、及び入力/出力(I/O)インタフェース214である。
装置102の動作期間中に、処理ロジック202は、ネイティブインストラクションメモリ206の中に保存されたプログラムインストラクションを実行する。1以上の実施例において、処理ロジック202は、CPU、ゲートアレイ、ハードウェア ロジック、ソフトウェア、又はハードウェア及びソフトウェアの任意の組み合わせ、を備える。このようにして、処理ロジック202は、一般に、ネイティブインストラクションメモリ206中に保存された機械可読インストラクション(machine-readable instructions)を実行するロジックを備える。
ネイティブインストラクションメモリ206は、RAM、ROM、FLASH、EEROM、又は任意の他の適したタイプのメモリ、又はそれらの任意の組み合わせ、を備える。一実施例においては、ネイティブインストラクションメモリ206は、装置102の内部に位置しており、又、別の実施例においては、ネイティブインストラクションメモリ206は、装置102に選択的に取り付けられることが出来てそれによって内部メモリ204に結合されることが出来るポータブルメモリカード又はメモリ装置、を備えている。このように、ネイティブインストラクションメモリ206は、処理ロジック202によって実行されることが出来るインストラクションを保存できる任意のタイプのメモリを事実上備える。
ユーザーインタフェース212は、例えば、キーボード、位置決め装置、タッチパッド、又は他の入力機構、例えば音声コマンドを受け取り処理する音声回路など、からユーザー入力を受け取る。ユーザーインタフェース212は又、種々の出力機構、例えば、ディスプレイ、LEDs、オーディオスピーカー又は他のタイプの視覚又は聴覚インディケータなど、に出力を供給できる。このように、ユーザーインタフェース212は、装置212がユーザ入力を受け取りユーザーに視覚情報又は聴覚インディケータを出力することを可能にするように任意の組み合わせでハードウェア及び/又はソフトゥエアを備える。
I/Oインタフェース214は、装置102と外部装置、システム、及び/又はネットワークとの間で情報を伝送し受け取るように動作する。例えば、一実施例においては、I/Oインタフェース214は、例えば通信リンク106を使用する、無線データネットワーク上で情報を伝送し受け取るように動作する無線トランシーバ回路(示されていない)を備えている。例えば、トランシーバーは、処理ロジックから受け取られた情報を変調し、変調された情報を無線伝送用に適する高い周波数信号に変換する。同様に、トランシーバも又、受信された高い周波数通信信号を、復調及びその後の処理ロジック202による処理に適する信号に変換する回路を備える。
別の実施例においては、I/Oインタフェース214は、インターネットのような公衆データ網上の遠隔システムと通信するために、電話線のような配線による通信リンク上で情報を伝送し受け取るように動作するトランシーバを備える。
更に別の実施例では、I/Oインタフェース214は、リンク120を使用するローカルワークステーション116のようなローカル装置と通信するように動作する回路を備える。I/Oインタフェース214は又、プリンタ又は他のローカルコンピュータ又は装置、例えばフロッピー(登録商標)ディスク又はメモリカードなど、と通信する回路も含むかもしれない。このように、I/Oインタフェース214は、装置102が他のローカルな又は遠隔に位置する装置又はシステムと通信することを可能にする任意のタイプのハードウェア、ソフトウェア、又はこれらの組み合わせを備えることが出来る。
装置102の動作期間中に、ネイティブインストラクションメモリ206に保存されたネイティブプログラムインストラクションは処理ロジックによって実行される。一実施例においては、処理ロジック202によるネイティブプログラムインストラクションの実行は、VM218が発生させられる原因となる。VM218は、解釈インストラクションメモリ208中に保存される非−ネイティブプログラムインストラクションを解釈するように動作する。例えば、アプリケーション112のような、非−ネイティブプログラムインストラクションを有するアプリケーションは、無線ネットワーク経由で装置102にダウンロードされ、解釈インストラクションメモリ208の中に保存されることが出来る。
インストラクション実行を支援するために、VM218は、一時的にプログラムデータ又はインストラクションを保存するためにスタックメモリ216を利用する。例えば、VM218は、定数、変数、プログラムアドレス、ポインタ、インストラクション又は他の情報項目をスタックメモリ216上に保存することが出来る。別の実施例においては、VM218は、一時的に情報をヒープメモリ210中に保存するかもしれない。ヒープメモリは、処理ロジック202による保存及び検索に適する任意のタイプのメモリを事実上備える。スタックメモリ216は、VM218による使用専用であってもよいし、或いは又、インストラクション実行期間中、処理ロジック202と共有されてもよい。
一実施例においては、処理ロジック202は、ネイティブインストラクションメモリ206から内部バス204経由でネイティブインストラクションを検索し取り出す。ネイティブプログラムインストラクションの実行は、VM218が発生させられる原因となる。VM218はそのあと、解釈インストラクションメモリ208中に保存されている非−ネイティブインストラクションを検索し実行する。このようにして、装置102は、装置102がユーザに選択された機能を提供するために非−ネイティブプログラムコードを走らすことを可能にするVM218を発生するように動作する。例えば、装置ユーザーは、装置102のハードウェア又はソフトウェアの何れのコンフィグレーション(configuration)とも互換性がないJAVA(登録商標)アプリケーションをダウンロードし実行したいと思うかもしれない。VM218は、JAVA(登録商標)システム環境を提供するように動作し、そうすることによって、JAVA(登録商標)アプリケーションが装置102を走るのを可能にする。更に、VM218は、非−ネイティブインストラクションの速い解釈及び実行と装置102の限られたメモリリソースの効率的利用とを提供するため、継続受け渡しの1以上の実施例を提供するように動作する。
1実施例において、VM218を生成するネーティブプログラムインストラクションが、遠隔サーバーからI/O装置経由で装置102のネイティブインストラクションメモリ206にダウンロードされる。例えば、図1を参照すると、遠隔サーバー104は、ネイティブプログラムインストラクションを装置102に無線ネットワーク108経由でダウンロードする。別の実施例においては、ローカルワークステーション116が、ネイティブプログラムインストラクションを装置102にリンク120経由でダウンロードする。同様な方法で、非−ネイティブプログラムインストラクションも又、装置102にダウンロードされることが出来る。
装置102のコンフィグレーションは、継続受け渡しを提供するVMを発生するのに適する単なる1つのコンフィグレーションであるに過ぎない、ことに注意されるべきである。本発明の範囲内の他の装置コンフィグレーションを使用してVMを生成することも又可能である。更に、説明されたVMは、無線装置102の中で実施されて示されているが、組み込み型プロセッサ及び限られたメモリリソースを有する実質上任意のタイプの装置の中でVMを実施することも又可能である。
図3は、継続受け渡しを提供する継続ブロックを生成するためにVM218によって使用される、無線装置102中のメモリリソースの詳細な説明図を示す。メモリリソースは、継続ブロックが生成される前は302で又継続ブロックが生成された後は304で示されるスタックメモリ216を備える。一実施例においては、継続ブロックは、ヒープメモリ210中に、生成され、及び/又は、保存されることが出来る。現在の継続−生成コンテクスト(a current continuation-creating context)に関係する情報を含むスタックフラグメント306が定義される。
図4は、図3において示される継続ブロックを評価するためにVM218によって使用される、無線装置102中のメモリリソースの詳細な説明図を示す。スタックメモリ216は、継続ブロックが評価される前は402で又継続ブロックが評価された後は404で示される
図5は、無線装置102のようなリソース限定装置(a resource limited device)における使用のために継続受け渡しを提供するVMを操作する方法500の一実施例を示す。明確にする目的のために、方法500の説明は、図3及び4で示されたメモリリソース、及び図1及び2で示された構成を参照する。更に、継続受け渡しを提供するVMを生成するためのネイティブプログラムインストラクションは、ネイティブプログラムメモリ206中に保存されると仮定する。更に、非−ネイティブプログラムインストラクションを備えるアプリケーション、例えばアプリケーション112、は解釈プログラムメモリ208中に保存される、と仮定する。非−ネイティブプログラムインストラクションは、別のシステムと共に使用するために生成されたものであり、装置102と直接的な互換性がない。然しながら、非−ネイティブプログラムインストラクションは、装置102のユーザーに望ましい機能を提供する。従って、装置102のユーザーにとって、所望の機能を達成するために、非−ネイティブプログラムインストラクションを解釈し実行するVMを生成することは利益になる。更に、VMは、装置102の限られたメモリリソースを効率よく利用するために継続受け渡しの1以上の実施例を提供するよう動作する。
ブロック502では、VMを生成するネイティブインストラクションがネイティブメモリに保存される。例えば、VMは、無線ネットワーク108からチャンネル106及びインタフェース214を経由して装置102にダウンロードされることが出来る。別の実施例では、VMは、ローカルワークステーション116からリンク120及びインタフェース214を経由して装置102にダウンロードされることが出来る。別の実施例では、ネイティブインストラクションメモリは、装置102にプラグ接続されるメモリ装置、例えば、メモリカード、を備えることが出来、VMはそのメモリ装置に保存される。更に別の実施例では、VMは、装置102の製造期間中にメモリ206に保存される。
ブロック504では、異なるシステム上で走るように設計されたアプリケーションを表す非−ネイティブインストラクションが解釈インストラクションメモリに保存される。例えば、非−ネイティブインストラクションは、ネットワークサーバー104から無線ネットワーク108を経由して装置102の解釈インストラクションメモリ206にダウンロードされることが出来る。別の実施例では、非−ネイティブインストラクションは、ローカルワークステーション116からダウンロードされ、又は、装置102にプラグ接続されるメモリ装置上に含まれる。
ブロック506では、VMがアクティブにされる。例えば、処理ロジック202は、ネイティブインストラクションをネイティブインストラクションメモリ206から内部バス204経由で検索し取り出し、これらのインストラクションを実行しだす。ネイティブインストラクションを実行することにより、処理ロジックは、VM218を生成するように動作する。
ブロック508では、VMは、解釈インストラクションメモリ中の非−ネイティブインストラクションの解釈を始める。例えば、VM218は、非−ネイティブインストラクションをメモリ208から内部バス204経由で検索し取り出す。VMは、これらのインストラクションを解釈し、実行する。一実施例においては、VMは、一時記憶装置領域としてスタックメモリ216又はヒープメモリ210を使用する。別の実施例では、スタックメモリ216は、VMに専用のスタックメモリであり、それは、処理ロジック202によって使用される任意のスタックメモリとは異なるかもしれない。
ブロック510では、VMは、非−ネイティブインストラクションの解釈期間中にコンテクスト生成トリガーに出会う。例えば、VMが、解釈する1以上の選択された非−ネイティブインストラクションに出会うとき、コンテクスト生成トリガーが発生するかもしれない。別の実施例では、VMが、非−ネイティブインストラクションに関連するプログラムマーカー出会うとき、トリガーが発生するかもしれない。トリガーが出会われる時、スタック216が、302で示されるように現れる。
ブロック512では、コンテクスト生成トリガーに応じ、VMは、図3に示されるように、継続ブロックを生成するように動作する。継続ブロックは、スタックフラグメント306と、活性化レコード中に含まれる情報(即ち、コードポインター、等)を含むブロックヘッダーとを含む。スタックフラグメント306は、スタック216の一部分のコピーを表す。例えば、スタックフラグメント306内の情報は、現在のスタックベース(current stack base)308から現在のスタックトップ(current stack top)310まで伸びるスタック216の一部分である。スタックフラグメント306は、このとき継続ブロックにコピーされる。一実施例においては、継続ブロックは、304で示されるように、このあとスタック216上に保存される。このように、方法500の第一部分は、コンテクスト生成トリガーとの出会に応じ、スタックフラグメント306を含む継続ブロックを生成するように動作する。
方法500の残りの部分は、どのようにしてVMが継続を評価するように(to evaluate the continuation)動作するかを説明する。
ブロック514で、VMは、継続評価インストラクションに出会うが、これは継続ブロックが生成された後のある時に発生し得る。ブロック516では、VMは、例えば、図4に示されるように、スタック216から、継続ブロックを検索する。
ブロック518では、継続ブロック内に保存されたスタックフラグメント306が、スタック上にプッシュされ戻される(pushed back)。例えば、図4を参照すると、スタックフラグメント306は、404でのスタック説明図によって示されるように、スタック216上にプッシュされる。このステップの実行において、新スタックトップ及び新スタックベースが決定される。
ブロック520で、継続ブロック中に保存されたコードポインターに関連するプログラムコードにジャンプすることによって、継続が評価される。例えば、継続ブロックに関連したブロックヘッダーは、継続が評価されるべきときにジャンプされるコードポインターを含む。このように、方法500は、メモリ限定無線装置(a memory limited wireless device)において実施されるVMにおける継続受け渡しを提供する。上記の説明されたプロセスを、本発明の範囲内でネストされた継続受け渡し(nested continuation passing)を提供するように拡張することも又可能である、ということに注意すべきである。
方法500は、ここに説明された種々の実施例の動作の継続受け渡しを、説明するためのものであるように意図されており、制限するものではない。例えば、説明された方法ステップのどこに対してもマイナーな変更、追加、又は削除を行うことは当業者にとっては自明なことであろう。更に、説明された方法ステップは、説明された実施例の範囲から逸脱することなく、組み合わされ、再アレンジされ、或いは再配列されてもよい。
図6は、継続受け渡しを実行するVMの1以上の実施例を実施するのに適する限られたメモリリソースを備えた無線装置を含むデータネットワークを図示する。無線装置は、無線電話602、携帯情報端末(personal digital assistant)(PDA)604、ページャ(pager)/eメール装置606、及びタブレットコンピュータ608を備える。それらの小さなサイズ及び軽い重さのために、装置は、組み込み型プロセッサを利用し、限られたメモリリソースを有する。
装置(602、604、606、及び608)は、無線通信チャンネル610を使い無線ネットワークサーバ612と無線データネットワーク614上で通信する回路を含む。無線通信チャンネル610は、例えば、衛星通信チャンネル、地上波通信チャンネル(terrestrial communication channel)、又は、任意の他のタイプの無線周波数(RF)又は電磁波通信チャンネルを備えることが出来る。無線データネットワーク614は、選択された通信チャンネル610で動作することが可能な任意の適切なネットワークであってもよい。
更に、無線装置(602、604、606、及び608)は、ワークステーション618と有線通信チャンネル616上で通信する回路を含む。ワークステーション618は、有線データネットワーク624を使用し有線通信チャンネル622上でネットワークサーバ620と通信するロジックを含む。更に、ワークステーション618は、無線通信チャンネル626及び無線ネットワーク614を使って無線ネットワークサーバ612と通信するロジックを含む。
ネットワーク600の動作期間中、無線装置(602、604、606、及び608)は、継続受け渡しを実行するように構成されたVMの1以上の実施例を含む。例えば、VMは、それぞれの装置が製造される時に無線装置に内蔵されてもよい。別の実施例では、VMは、無線装置にプラグ接続するメモリカード(示されていない)上に保存されることが出来、そうすることにより、無線装置がメモリカードからインストラクションを検索してVMを操作することを可能にする。このように、VMを備えるプログラムインストラクションがコンピュータ可読媒体上に保存される。ここで説明されたように継続受け渡しを実行するVMの1以上の実施例を無線装置によって実行される時に生成する、プログラムインストラクションを保存するために、実質上、任意のタイプのコンピュータ可読媒体が使用されることが出来る。
本発明中に含まれる1以上の実施例において、方法及び機器は、リソースが限定された装置における使用のための継続受け渡しを実行するVMを提供する。従って、方法及び機器の1以上の実施例がここで例示され説明されているが、それらの精神又は本質的特性から逸脱することなく実施例に種々様々な変更がなされることが出来る、ということが理解されるであろう。従って、ここでの開示及び記載は、添付の特許請求の範囲に記載の発明の範囲を、説明するためであるように意図されており、制限するものではない。
図1は、継続受け渡しを実行するVMの一実施例を実施するために適する、限られたメモリリソース付き無線装置を含むデータネットワークを図示する。 図2は、図1の無線装置の一実施例を図示する機能ブロック図を示す。 図3は、継続受け渡しを提供する継続ブロックを生成するために使用されるメモリリソースの説明図を示す。 図4は、図3の継続ブロックを評価するために使用されるメモリリソースの説明図を示す。 図5は、無線装置での使用のためのVMにおける継続受け渡しを提供する方法の一実施例を示す。 図6は、継続受け渡しを実行するVMの1以上の実施例を実施するのに適する、限られたメモリリソースを備えたポータブル計算装置を含むデータネットワークを図示する。

Claims (15)

  1. スタックメモリを備え、無線装置における継続受け渡しを提供する、バーチャルマシンを操作する方法であって、
    コンテクスト−生成トリガーに出会うことと、
    前記スタックメモリから生じるスタックフラグメントを備える継続ブロックを前記トリガーに応じて構築することと、
    評価インストラクションに出会うことと、
    前記評価インストラクションに応じて前記スタックメモリ上に前記継続ブロックからの前記スタックフラグメントを保存することと、
    を備える方法。
  2. 前記コンテクスト−生成トリガーは選択されたプログラムインストラクションを備える、前記請求項1記載の方法。
  3. 前記コンテクスト−生成トリガーは、プログラムインストラクションに関連したプログラムマーカを備える、前記請求項1記載の方法。
  4. メモリ中に前記継続ブロックを保存することを、更に備える前記請求項1記載の方法。
  5. 前記継続を評価するために選択されたプログラムコードにジャンプすることを、更に備える前記請求項1記載の方法。
  6. 組み込み型プロセッサを有する無線装置において使用のバーチャルマシーンであって、
    情報を保存し検索するロジックを備えるスタックメモリと、
    コンテクスト−生成トリガーに出会うロジックと、
    前記スタックメモリから生じるスタックフラグメントを備える継続ブロックを前記トリガーに応じて構築するロジックと、
    評価インストラクションに出会うロジックと、
    前記評価インストラクションに応じて前記スタックメモリ上に前記継続ブロックからの前記スタックフラグメントを保存するロジックと、
    を備えるバーチャルマシーン。
  7. 前記コンテクスト−生成トリガーはコンテクスト評価インストラクションを備える、前記請求項6記載のバーチャルマシーン。
  8. 前記コンテクスト−生成トリガーは、プログラムインストラクションに関連したプログラムマーカーを備える、前記請求項6記載のバーチャルマシーン。
  9. メモリ中に前記継続ブロックを保存するロジックを、更に備える前記請求項6記載のバーチャルマシーン。
  10. 前記継続を評価するために選択されたプログラムコードにジャンプするロジックを、更に備える前記請求項6記載のバーチャルマシーン。
  11. バーチャルマシーン(VM)がスタックメモリを備えており、処理ロジックにより実行される時に継続受け渡しを実行する前記VMを提供するプログラムインストラクションを備えるコンピュータ可読媒体であって、
    コンテクスト−生成トリガーに出会うためのプログラムインストラクションと、
    前記スタックメモリから生じるスタックフラグメントを備える継続ブロックを前記トリガーに応じて構築するためのプログラムインストラクションと、
    評価インストラクションに出会うためのプログラムインストラクションと、
    前記評価インストラクションに応じて前記スタックメモリ上に前記継続ブロックからの前記スタックフラグメントを保存するためのプログラムインストラクションと、
    を備えるコンピュータ可読媒体。
  12. 組み込み型プロセッサを有する無線装置において使用のバーチャルマシーンであって、
    スタックメモリを提供するための手段と、
    コンテクスト−生成トリガーに出会うための手段と、
    前記スタックメモリから生じるスタックフラグメントを備える継続ブロックを前記トリガーに応じて構築するための手段と、
    評価インストラクションに出会うための手段と、
    前記評価インストラクションに応じて前記スタックメモリ上に前記継続ブロックからの前記スタックフラグメントを保存するための手段と、
    を備えるバーチャルマシーン。
  13. メモリ中に前記継続ブロックを保存するための手段を、更に備える前記請求項12記載のバーチャルマシーン。
  14. 前記継続を評価するために選択されたプログラムコードにジャンプするための手段を、更に備える前記請求項12記載のバーチャルマシーン。
  15. 組み込み型プロセッサを有する無線装置であって、
    情報を保存し検索するロジックを備えるスタックメモリと、継続受け渡しを実行するように動作するバーチャルマシーンと、を備え、
    前記バーチャルマシーンは、コンテクスト−生成トリガーに出会うロジックと、前記スタックメモリから生じるスタックフラグメントを備える継続ブロックを前記トリガーに応じて構築するロジックと、評価インストラクションに出会うロジックと、前記評価インストラクションに応じて前記スタックメモリ上に前記継続ブロックからの前記スタックフラグメントを保存するロジックと、を備える、
    無線装置。
JP2006526127A 2003-09-10 2004-08-25 バーチャルマシーンにおける継続−受け渡しの方法及び機器。 Pending JP2007505395A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/659,829 US7114153B2 (en) 2003-09-10 2003-09-10 Method and apparatus for continuation-passing in a virtual machine
PCT/US2004/027720 WO2005026881A2 (en) 2003-09-10 2004-08-25 Method and apparatus for continuation-passing in a virtual machine

Publications (1)

Publication Number Publication Date
JP2007505395A true JP2007505395A (ja) 2007-03-08

Family

ID=34227011

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006526127A Pending JP2007505395A (ja) 2003-09-10 2004-08-25 バーチャルマシーンにおける継続−受け渡しの方法及び機器。

Country Status (6)

Country Link
US (1) US7114153B2 (ja)
EP (1) EP1665043A4 (ja)
JP (1) JP2007505395A (ja)
KR (1) KR101164465B1 (ja)
CN (1) CN100470481C (ja)
WO (1) WO2005026881A2 (ja)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7743377B2 (en) * 2004-10-25 2010-06-22 Microsoft Corporation Cooperative threading in a managed code execution environment
US7353034B2 (en) 2005-04-04 2008-04-01 X One, Inc. Location sharing and tracking using mobile phones or other wireless devices
US7788665B2 (en) * 2006-02-28 2010-08-31 Microsoft Corporation Migrating a virtual machine that owns a resource such as a hardware device
US9286108B2 (en) * 2008-10-30 2016-03-15 Oracle America, Inc. Method to track application context and application identification
CN101833471A (zh) * 2010-05-07 2010-09-15 沈阳理工大学 一种虚拟机的单栈设计方法
US9501415B1 (en) * 2012-10-09 2016-11-22 Amazon Technologies, Inc. Image caching system to support fast scrolling of images in a graphical user interface
US10331653B2 (en) * 2016-06-27 2019-06-25 Schneider Electric Software, Llc Double-buffered locking in a database architecture
US20180005218A1 (en) 2016-06-30 2018-01-04 Copper LLC Smart data cable for point of sale systems
US11436181B2 (en) 2016-06-30 2022-09-06 Copper Inc. Data processing systems and methods for transmitting and modifying data via a smart data cable
US11321261B1 (en) * 2020-12-10 2022-05-03 Copper Inc. Data processing systems and methods for transmitting and modifying data via a smart data cable
US11321693B1 (en) 2020-12-10 2022-05-03 Copper Inc. Data processing systems and methods for transmitting and modifying data via a smart data cable

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5590332A (en) * 1995-01-13 1996-12-31 Baker; Henry G. Garbage collection, tail recursion and first-class continuations in stack-oriented languages
US6125439A (en) * 1996-01-24 2000-09-26 Sun Microsystems, Inc. Process of executing a method on a stack-based processor
US5928321A (en) * 1997-05-30 1999-07-27 Sony Corporation Task and stack manager for digital video decoding
US6092152A (en) * 1997-06-23 2000-07-18 Sun Microsystems, Inc. Method for stack-caching method frames
JPH11296381A (ja) * 1998-04-08 1999-10-29 Matsushita Electric Ind Co Ltd 仮想マシン及びコンパイラ
GB2378535A (en) * 2001-08-06 2003-02-12 Ibm Method and apparatus for suspending a software virtual machine

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
CSNG200301445014, 佐藤ほか, "Java言語における部分継続実行の実現手法の提案", 情報処理学会研究報告, 20020328, 第2002巻,第32号, P.85−90, JP, 社団法人情報処理学会 *

Also Published As

Publication number Publication date
WO2005026881A3 (en) 2006-02-16
US7114153B2 (en) 2006-09-26
US20050055663A1 (en) 2005-03-10
WO2005026881A2 (en) 2005-03-24
CN100470481C (zh) 2009-03-18
KR20060120638A (ko) 2006-11-27
EP1665043A4 (en) 2008-10-08
KR101164465B1 (ko) 2012-08-06
EP1665043A2 (en) 2006-06-07
CN1864136A (zh) 2006-11-15

Similar Documents

Publication Publication Date Title
US10552520B2 (en) System and method for provisioning a mobile software application to a mobile device
EP1451682B1 (en) Platform-independent selective ahead-of-time compilation
CN107967139B (zh) 游戏的热更新方法及装置
KR100898527B1 (ko) 컴퓨팅 디바이스에서 디바이스를 동적으로 시뮬레이션하기위한 시스템 및 방법
US7246346B2 (en) System and method for persisting dynamically generated code in a directly addressable and executable storage medium
CN103488466B (zh) 用于执行应用程序的方法和装置
KR20030000926A (ko) 정보 단말기의 자바 프로그램 처리 속도 향상을 위한 자바컴파일 온 디멘드 서비스 시스템 및 그 방법
JP2010288301A (ja) ポータブルデバイスにおけるマルチメディアレンダリングのためのシステム
US7114153B2 (en) Method and apparatus for continuation-passing in a virtual machine
CN103443763A (zh) 包含对重写虚拟函数的调用的支持的isa桥接
CN107861742A (zh) 一种程序的运行方法和终端设备
CN116401003A (zh) 基于桌面操作系统的安卓应用运行方法、系统及存储介质
CN116643778A (zh) 一种应用程序优化方法及电子设备
CN114816672A (zh) 虚拟机的创建方法、装置、电子设备和存储介质
CN112235132A (zh) 动态配置服务的方法、装置、介质以及服务器
WO2021097683A1 (zh) 安卓系统启动的方法、装置、设备及存储介质
CN109460280B (zh) 运行程序的方法、终端
WO2022078057A1 (zh) 应用包发布方法、应用方法、装置、介质、服务器及设备
CN105320499A (zh) 一种应用程序的适配方法和相关装置
TWI305324B (ja)
CN113590166B (zh) 应用程序的更新方法、装置以及计算机可读存储介质
CN116107764B (zh) 数据处理方法及系统
CN103136011A (zh) 一种便携式多媒体设备及其操作方法
WO2015196541A1 (zh) 脚本处理方法及装置
CN118349378A (zh) 数据交互的方法、装置、设备和存储介质

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20070821

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20101026

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20110126

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20110202

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20110228

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20110307

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20110328

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20110404

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110426

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20110531