(57)【要約】      （修正有）【課題】仮想マシンのメモリダンプによる起動高速化手法を、任意のアプリケーションに対して実現できるようにし、消費する二次記憶装置のサイズを抑える。【解決手段】情報処理装置１０１において、アプリケーション実行中の入出力を監視する入出力監視部１２５により、再起動時の不適切な動作を避ける。また、入出力を記録する入出力記録１３０によりダンプの効果を見積もり、効果に応じてダンプデータの範囲を制御し、全データのダンプと実行用中間コードのダンプなど、複数のダンプ方式を切り替える。【選択図】図１
2007293730.tif 000002
【特許請求の範囲】
【請求項１】
実行中の中間コード実行プログラムのメモリイメージをダンプし、そのメモリイメージを再ロードすることで起動時間の短縮を図る中間コードプログラムの実行方法であって、
中間コードプログラム実行中のデータ入出力を監視する手段と記録する手段を用いて、ダンプタイミングを決定することを特徴とする中間コードプログラムの実行方法。
【請求項２】
請求項１記載の中間コードプログラムの実行方法において、
入力として受け取るデータが実行の度に変化するデータであるかどうかを判定し、ダンプタイミングを決定することを特徴とする中間コードプログラムの実行方法。
【請求項３】
請求項１記載の中間コードプログラムの実行方法において、
画面に出力するデータが描画内容を上書きするかどうかを判定し、ダンプタイミングを決定することを特徴とする中間コードプログラムの実行方法。
【請求項４】
実行中の中間コード実行プログラムのメモリイメージをダンプし、そのメモリイメージを再ロードすることで起動時間の短縮を図る中間コードプログラムの実行方法であって、
中間コードプログラム実行中のデータ入出力を監視する手段と記録する手段を用いて、ダンプするデータの範囲を決定することを特徴とする中間コードプログラムの実行方法。
【請求項５】
請求項４記載の中間コードプログラムの実行方法において、
入力として受け取るデータを中間コードプログラムのコードとそれ以外に分類し、各々の分量に応じてダンプするデータの範囲を決定することを特徴とする中間コードプログラムの実行方法。
【請求項６】
アプリケーションを実行する仮想マシンを持つ情報端末であって、
アプリケーションの実行と同時にアプリケーションのデータ入出力を監視する手段と、入出力の回数や種別および入出力データ量を記録する手段と、一定の入出力記録からメモリダンプの妥当性とメモリダンプ方法を判定する手段と、アプリケーションを実行中の仮想マシンのメモリイメージを全部もしくは一部をダンプする手段とを備えることを特徴とする情報端末。
【請求項７】
請求項６記載の情報端末において、
記録の対象となる計算機資源には、画像ファイルを含むファイル、ネットワーク通信路、キー入力のユーザからの入力インタフェース、画面や音源の出力インタフェース、時刻検出装置、乱数発生装置を含むことを特徴とする情報端末。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、中間コードにより表現されたプログラムの実行技術に関し、特に、中間コード実行プログラムのメモリダンプを用いて、プログラム起動時間を短縮する方法に適用して有効な技術に関する。
【背景技術】
【０００２】
今日、携帯電話を初めとして、多くの組込み機器にＪａｖａ（登録商標）などの仮想マシン技術が適用されている。仮想マシン技術はハードウェアプラットフォームの多様性問題を解決するなどの利点を持ち、有効に活用されている。組込み機器の中には、携帯電話、ＰＤＡ、カーナビ、テレビなど、ユーザが直接操作する機器が多数存在する。このような機器では、ユーザによる機能選択指示に合わせ、その機能を実現するアプリケーションをすばやく起動する必要がある。しかし、実際にはアプリケーションの起動には１０秒程度かかるものも多く存在している。起動に時間がかかる原因には、組込み機器に搭載されるＣＰＵの計算力不足、見映えを良くするための画像の多用などがある。さらに、仮想マシン技術はプログラムロード時にセキュリティチェック処理や実行前準備のための形式変更処理などを実施しており、これらの処理が起動時間に悪影響を与えている。
【０００３】
解決方法の一つとして、プログラムロード時の処理を省略するアイデアが報告されている。特許文献１は、Ｊａｖａ（登録商標）のプログラム形式であるクラスファイルを、仮想マシンがメモリ内に実行可能データとして準備した後、この実行可能データを二次記憶にダンプ（出力）するものである。次回当該クラスファイルを実行するときは、ダンプしたデータを読み込んでそのまま利用することで、ロード処理を省略する。特許文献２も同様にクラスファイルを二次記憶へ出力するものであるが、出力データにセキュリティ情報を付加する、複数のアプリケーション間で同一のクラス出力データを共有するなどの工夫を加えている。
【０００４】
しかし、上述の方法により短縮可能な処理はプログラムのロード時間のみであり、画像ロード時間や、プログラムがロード後に実行する初期化処理などは短縮できない。これらの処理も合わせて短縮する手法として、メモリダンプによる方法がある。非特許文献１は、Ｅｍａｃｓと呼ばれるエディタの起動高速化手法に言及している。ＥｍａｃｓはＬｉｓｐプログラムを実行する仮想マシンであり、エディタ機能を実現するＬｉｓｐプログラム群を読み込んで実行する構成となっている。起動実行する時間を省略するため、一度Ｌｉｓｐプログラム群を読み込んで実行し、エディタの実行を開始できる状態になった時点で、Ｌｉｓｐ処理系全体のメモリイメージをダンプする。次回からは、ダンプデータのメモリロード処理のみで、エディタの実行を開始することができる。
【特許文献１】特開２００４−２４０９６５号公報
【特許文献２】特開２００５−２５０８３５号公報
【非特許文献１】永野  圭一郎、林  芳樹  東京大学，Ｌｉｎｕｘ  Ｃｏｎｆｅｒｅｎｃｅ  ２００２，”ｐｏｒｔａｂｌｅ  ｄｕｍｐｅｒ：アーキテクチャに依存しないＥｍａｃｓの起動時間”
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかし、上記の技術を持ってしても、仮想マシンの起動時間には課題が残されている。
【０００６】
まず、特許文献１および特許文献２の示す起動時間短縮方法は、すでに述べたようにプログラムロード時間のみの短縮に留まっており、起動処理中の画像ロード時間や演算時間に対しては効果が無い。
【０００７】
また、非特許文献１の示す高速化手法は、ダンプするまでに実行すべきプログラムを明示的に指定するものであり、任意のプログラムに対して適用することができない。例えば、携帯電話向けのＪａｖａ（登録商標）アプリケーションは、起動処理と起動以外の実行処理は、アプリケーションの開発者によって明確に分離されていないため、ダンプすべきタイミングを適切に判断することができない。
【０００８】
また、どちらの方法もダンプ対象となるデータ構造はクラスデータ、もしくは処理系全体のどちらか一つに定まっており、ダンプデータ量の多寡と効果に応じてダンプ対象データの範囲を柔軟に選択することができない。
【０００９】
そこで、本発明の目的は、仮想マシンのメモリダンプによる起動高速化手法を、任意のアプリケーションに対して実現し、効果に応じてダンプデータの範囲を制御することができる中間コードプログラムの実行技術を提供することにある。
【００１０】
本発明の前記ならびにその他の目的と新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
【課題を解決するための手段】
【００１１】
本願において開示される発明のうち、代表的なものの概要を簡単に説明すれば、次のとおりである。
【００１２】
本発明は、アプリケーション実行中の入出力を監視する手段により、再起動時の不適切な動作を避ける。また、入出力を記録する手段によりダンプの効果を見積もり、全データのダンプと実行用中間コードのダンプなど、複数のダンプ方式を切り替えることにより、消費する二次記憶装置のサイズを抑えながら高速起動の効果を享受する。
【００１３】
具体的には、任意のアプリケーションを実行する仮想マシンを持つ携帯電話などの情報端末に適用して、アプリケーションの実行と同時にアプリケーションのデータ入出力を監視する手段と、入出力の回数や種別および入出力データ量を記録する手段と、一定の入出力記録からメモリダンプの妥当性とメモリダンプ方法を判定する手段と、アプリケーションを実行中の仮想マシンのメモリイメージを全部もしくは一部をダンプする手段とを備える仮想マシンを実行可能な情報端末に用いる。
【００１４】
前記記録の対象となる計算機資源には、画像ファイルを含むファイル、ネットワーク通信路、キー入力などのユーザからの入力インタフェース、画面や音源などの出力インタフェース、時刻検出装置、乱数発生装置などを含む。
【発明の効果】
【００１５】
本願において開示される発明のうち、代表的なものによって得られる効果を簡単に説明すれば以下のとおりである。
【００１６】
本発明によれば、上記手段を用いてデータ入出力を記録することで、アプリケーションの起動処理範囲を適切に判定することができる。例えば、アプリケーションが画面出力を開始した場合や、ユーザからのキー入力を受け付けた場合、起動処理は終了したと考えることができる。また、可変ファイルの入力を受け取ると、それ以降のプログラムの状態は起動のたびに異なる状態となる。よって、可変ファイル入力の直前までを起動処理範囲と判定することで、省略可能な起動範囲を正確に判定できる。このような起動処理範囲の特定により、アプリケーションの機能を損なうことなく、任意のアプリケーションの起動をメモリダンプにより短縮できる。
【００１７】
また、データ入力の内容がクラスファイルに限定されていればクラスファイルをダンプし、入力データ量が多い場合は処理系全体をダンプするなど、入出力の記録を元にダンプデータを選択することで、二次記憶装置の消費サイズを抑えながら起動時間短縮の効果を享受できる。
【発明を実施するための最良の形態】
【００１８】
以下、本発明の実施の形態を図面に基づいて詳細に説明する。なお、実施の形態を説明するための全図において、同一の部材には原則として同一の符号を付し、その繰り返しの説明は省略する。
【００１９】
以下、本発明を実現する一実施の形態を、仮想マシンを持つ携帯電話などの情報端末の一例として情報処理装置を例に、図１から図７を用いて説明する。
【００２０】
図１に、本発明の一実施の形態における情報処理装置の全体構成例を示す。
【００２１】
情報処理装置１０１は、ネットワーク１０２を通じてアプリ管理サーバ１０３や、その他サーバ１０４などと接続されており、アプリ管理サーバ１０３から中間コード１４１や画像ファイル１４２を取得したり、その他サーバ１０４との情報交換を通じて情報処理装置１０１の使用者にサービスを提供したりする。
【００２２】
情報処理装置１０１は、中央演算装置１１１、一次記憶装置１１２、二次記憶装置１１３、キー入力装置１１４、通信装置１１５、画面出力装置１１６などから構成される。中央演算装置１１１は、情報処理装置１０１に電源が投入されるとオペレーティング・システム１２２や中間コード実行プログラム１２１などのプログラムを一次記憶装置１１２にロードし、プログラムの実行を開始する。二次記憶装置１１３は電源切断時にもデータを保持する機能を備えており、一次記憶装置１１２にロードされるプログラムや、プログラム実行時に必要になるデータを保持している。キー入力装置１１４は、情報処理装置１０１の使用者からの入力を受け付ける。通信装置１１５は、ネットワーク１０２を介して通信する機能を持つ。画面出力装置１１６は、情報処理装置１０１の使用者に、画面表示を通じて情報を提示する機能を持つ。
【００２３】
一次記憶装置１１２には、中間コード実行プログラム１２１やオペレーティング・システム１２２などのプログラムがロードされて実行される。中間コード実行プログラム１２１は、ハードウェア非依存の中間コードとして表現されたプログラムを実行する。オペレーティング・システム１２２は、二次記憶装置１１３などのデータ領域の入出力機能や、キー入力装置１１４、通信装置１１５、画面出力装置１１６などを通じた装置外とのデータ入出力機能を管理する。本実施の形態では、中間コード実行プログラムによるデータ入出力も、オペレーティング・システム１２２を介して実施されるものとする。
【００２４】
中間コード実行プログラム１２１は、中間コードロード部１２３、中間コード実行部１２４、入出力監視部１２５、メモリダンプ部１２６などの機能部と、作業用メモリ１２７、実行用中間コード１２８、画像データ１２９、入出力記録１３０などのデータ部から構成される。中間コードロード部１２３は、二次記憶装置１１３から中間コード１４１を読み込み、実行に適した形態への変換処理や安全性チェック処理などを実行し、実行用中間コード１２８を生成する。中間コード実行部１２４は、実行用中間コード１２８を解釈して実行する。解釈実行の過程において、中間コードがデータの入出力や、二次記憶装置などの資源を要求した場合、入出力監視部１２５がオペレーティング・システムへの入出力要求を仲介し、その要求内容を入出力記録１３０に記録する。また、入出力監視部１２５は、これらの入出力要求と入出力記録１３０の内容に応じ、実行中の中間コードプログラムがダンプ可能かどうかをチェックし、ダンプ不可となる資源要求を受け取る場合には、オペレーティング・システムへ入出力要求を仲介する前にメモリダンプ部１２６にダンプ処理を要求する。メモリダンプ部１２６は、中間コード実行プログラム１２１の実行イメージの全体または部分を、そのままの形式で二次記憶装置１１３に出力し、中間コード実行状態ダンプ１４５を生成する。プログラムの実行終了後、再度同じプログラムの実行を開始する時には、中間コード実行状態ダンプ１４５を一次記憶装置１１２にロードすることで、メモリダンプ時と同じ状態から処理を再開できる。
【００２５】
二次記憶装置１１３は、中間コード１４１、画像ファイル１４２、可変データ１４３、中間コード実行プログラムファイル１４４、中間コード実行状態ダンプ１４５などを保持している。中間コード１４１はアプリ管理サーバ１０３から受け取るなどして得られるプログラムコードであり、中間コード実行プログラム１２１によって実行される。このプログラムが画像の表示を伴うプログラムであれば、画像ファイル１４２を読み込み、表示可能な画像データ１２９に変換して一次記憶装置１１２内に保持する。また、アプリケーションが電源遮断後もデータを保持したい場合は、可変データ１４３にデータを書き込んでおき、再度起動時に可変データ１４３を読み込む。中間コード実行プログラムファイル１４４は、一次記憶装置１１２上に読み込まれるプログラムバイナリであり、中央演算装置１１１により実行される。中間コードロード部１２３、中間コード実行部１２４、入出力監視部１２５、メモリダンプ部１２６などの機能部は中間コード実行プログラムファイル１４４に含まれているが、実行開始後に確保、作成される作業用メモリ１２７、実行用中間コード１２８、画像データ１２９、入出力記録１３０などは中間コード実行プログラムファイル１４４に含まれない。中間コード実行状態ダンプ１４５は、前述のとおり一次記憶装置１１２上の中間コード実行プログラムをダンプしたメモリイメージである。
【００２６】
図２に、入出力記録１３０のデータ構成例を示す。中間コードの実行開始時は、入出力記録１３０の内容は空である。中間コード実行中に入出力が発生すると、入出力ごとに一件のレコードが追加される。各レコードは、入出力、資源、時刻、種別、対象、バイト数などのデータを持つ。例えば、この図の示す先頭のレコードは、プログラムの実行開始後０．５秒経過した時点で、中間コード１４１を格納しているファイルからデータ入力を受け取ったことを示している。同様に、画像ファイル１４２の入力、画面出力装置１１６への出力、可変データ１４３からの入力なども記録されている。
【００２７】
図３に、中間コード実行状態ダンプ１４５の、第一のデータ構成例を示す。本図では、中間コード実行状態ダンプ１４５が、一次記憶装置１１２内の中間コード実行プログラム１２１と、同じデータ構成を持つ例を示した。よって番号１２３から１３０に至る要素を全て持つ構造となる。これを再度一次記憶装置１１２上に復元することで、ダンプ時の状態に復帰することができる。
【００２８】
図４に、中間コード実行状態ダンプ１４５の、第二のデータ構成例を示す。本図では、中間コード実行状態ダンプ１４５は、実行用中間コード１２８のみをダンプする例を示した。このケースでは、復元可能なデータは実行用中間コード１２８のみであり、その他のデータは再度構成する必要がある。高速起動の効果は比較的小さいが、図３に示した例と比較して、ダンプされるデータ量が少ないという利点がある。
【００２９】
図５〜図８を用いて、本実施の形態における処理フローの一例を示す。情報処理装置１０１を用いて、アプリ管理サーバ１０３から取得した中間コード１４１を実行するにあたり、図５の処理フローの全体を示した手順を踏む。
【００３０】
処理５０１：取得した中間コードプログラムを初めて起動するときに実行される処理である。中間コードをロードし、入出力を監視しながら実行を開始する。
【００３１】
処理５０２：入出力の監視結果に応じ、適切なタイミングで中間コード実行プログラム１２１をダンプする。
【００３２】
処理５０３：再度中間コードプログラムを実行する場合は、中間コード実行状態ダンプ１４５を一次記憶装置１１２にロードし、実行を開始する。ダンプデータを活用するため、高速に起動される。
【００３３】
図６に、初回プログラム起動処理５０１のフローを詳細に示す。
【００３４】
処理６０１：中間コードロード部１２３により、中間コード１４１をロードする。セキュリティチェック処理、中間コードを実行に適した形式に変換する処理などを実施し、実行用中間コード１２８を生成する。
【００３５】
処理６０２：中間コード実行部１２４により、実行用中間コード１２８を実行する。インタプリタによる実装であれば、中間コード命令を一つ取得し、その命令を実行するルーチンへ遷移して実行する処理を繰り返す。入出力を伴う命令を実行する場合、処理６０３へ進む。
【００３６】
処理６０３：入出力監視部１２５により、これから実行しようとする入出力を記録する。
【００３７】
処理６０４：指示された入出力を実施した場合、メモリダンプによる高速化を適用できなくなるかどうかを判定する。判定基準は様々なものが考えられるが、例えば、以下のような判定指針がある。
【００３８】
（１）可変データの入力を受け取った後は、メモリダンプによる高速化を適用できない。可変データの入力前であれば、プログラムの状態は起動の度に毎回同じ状態であるが、可変データの入力後は、プログラムの状態は可変データに依存するためである。
【００３９】
（２）可変データと同様に、キー入力を受け取る場合や、時刻を入力として取る場合も、状態に不整合が生じるため、以降、メモリダンプによる高速化を適用できない。
【００４０】
（３）画面出力を２回以上実施する場合、１回目の描画による画面内容は２回目の描画によって消されてしまうため、再起動時に描画されない。再起動時に使用者に提示すべき１回目の画面内容を提示できないことになるため、画面出力を２回目以降実施するとメモリダンプによる高速化の適用は不適切となる。
【００４１】
上記のうち（３）は、図２に示した入出力記録１３０を用いて判定できる。
【００４２】
上記のような条件を満たす場合、当該の入出力前にメモリダンプを実施すべきである。その場合は処理５０１を終了して処理５０２に進む。そうでない場合は処理６０５に進む。
【００４３】
処理６０５：オペレーティング・システム１２２に依頼し、入出力処理を実施する。処理６０２に戻り、中間コードの実行を継続する。
【００４４】
図７に、メモリダンプ処理５０２のフローを詳細に示す。
【００４５】
処理７０１：入出力記録１３０を参照し、これまでにファイルからの入力として受け取ったデータが、画像ファイルを含んでおらず、中間コードのみかどうかを調べる。もし、中間コードのみであれば、処理７０３に進む。画像ファイルを含む場合には、処理７０２に進む。
【００４６】
処理７０２：一次記憶装置１１２内にある中間コード実行プログラム１２１のメモリイメージ全体をダンプし、中間コード実行状態ダンプ１４５を生成する（図３）。
【００４７】
処理７０３：一次記憶装置１１２内にある中間コード実行プログラム１２１のメモリイメージのうち、実行用中間コード１２８のみをダンプする（図４）。
【００４８】
上記処理７０１に示したような判定により、画像データを含む大きな効果が期待できる場合にのみメモリイメージ全体をダンプし、画像データを含まない場合は実行用中間コード１２８にダンプ範囲を限定する。これにより、より小さい二次記憶装置を用いて効率的な起動時間短縮を実現できる。上記に示した判定方法に加え、二次記憶装置の空き領域や、実行用中間コード１２８のデータサイズを判定条件に加える実施方法も考えられる。
【００４９】
図８に、高速プログラム起動処理５０３のフローを詳細に示す。
【００５０】
処理８０１：メモリダンプ処理５０２において、ダンプしたデータが実行用中間コード１２８のみであった場合、処理８０３に進む。メモリイメージ全体をダンプした場合は処理８０２に進む。
【００５１】
処理８０２：中間コード実行状態ダンプ１４５を一次記憶装置１１２にロードする。
【００５２】
処理８０３：中間コード実行プログラム１２１を一次記憶装置１１２にロードし、中間コードプログラムの実行を開始する。
【００５３】
処理８０４：中間コードロード部１２３により、中間コードプログラムを読み込む。ただし、中間コード１４１を読み込む代わりに、処理７０３においてダンプした実行用中間コード１２８を読み込む。これにより、中間コード１４１に施す処理が不要となり、起動時間が短縮される。
【００５４】
処理８０５：中間コードの実行を再開する。
【００５５】
上記の構成と手順により、任意の中間コードアプリケーションに対して、個別の中間コード実行状態ダンプ１４５を作成することで、起動時間を短縮することが可能である。特に、中間コード実行プログラム１２１のメモリイメージ全体をダンプする場合には、中間コードのロードのみならず、画像ファイルの読み込み時間も省略できるため、大きな効果がある。また、データの入出力を監視してダンプのタイミングを決定するため、任意のアプリケーションについて、起動の度に同じ状態となることを保証でき、使用者が描画結果を閲覧できない状況も回避できる。
【００５６】
メモリイメージ全体をダンプする方式は、ダンプデータ量が大きいため、二次記憶装置を圧迫する。上述の実施の形態では、実行用中間コードのみをダンプする方式と併用し、状況に応じて使い分けることで、二次記憶装置を効率的に使いながら起動時間短縮の効果を享受することが可能になる。
【００５７】
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は前記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。
【産業上の利用可能性】
【００５８】
本発明は、携帯電話など、計算機資源の制約が厳しいけれども、画像を多用する中間コードアプリケーションの高速起動が求められる組込み機器において有用である。また、テレビやハードディスクレコーダなどのＡＶ機器への中間コード技術適用が進むと、本発明が適用される可能性が高い。
【図面の簡単な説明】
【００５９】
【図１】本発明の一実施の形態における情報処理装置の全体構成例を示す図である。
【図２】本発明の一実施の形態において、入出力記録のデータ構成例を示す図である。
【図３】本発明の一実施の形態において、中間コード実行状態ダンプの、第一のデータ構成例を示す図である。
【図４】本発明の一実施の形態において、中間コード実行状態ダンプの、第二のデータ構成例を示す図である。
【図５】本発明の一実施の形態における処理フローの全体を示す図である。
【図６】本発明の一実施の形態において、初回プログラム起動処理のフローを詳細に示す図である。
【図７】本発明の一実施の形態において、メモリダンプ処理のフローを詳細に示す図である。
【図８】本発明の一実施の形態において、高速プログラム起動処理のフローを詳細に示す図である。
【符号の説明】
【００６０】
１０１…情報処理装置、１０２…ネットワーク、１０３…アプリ管理サーバ、１０４…その他サーバ、１１１…中央演算装置、１１２…一次記憶装置、１１３…二次記憶装置、１１４…キー入力装置、１１５…通信装置、１１６…画面出力装置、１２１…中間コード実行プログラム、１２２…オペレーティング・システム、１２３…中間コードロード部、１２４…中間コード実行部、１２５…入出力監視部、１２６…メモリダンプ部、１２７…作業用メモリ、１２８…実行用中間コード、１２９…画像データ、１３０…入出力記録、１４１…中間コード、１４２…画像ファイル、１４３…可変データ、１４４…中間コード実行プログラムファイル、１４５…中間コード実行状態ダンプ。
【図１】
2007293730.tif 000003
【図２】
2007293730.tif 000004
【図３】
2007293730.tif 000005
【図４】
2007293730.tif 000006
【図５】
2007293730.tif 000007
【図６】
2007293730.tif 000008
【図７】
2007293730.tif 000009
【図８】
2007293730.tif 000010