(57)【要約】【課題】本発明は、動的ライブラリロード方法及び装置を提供する。【解決手段】本発明の第１の態様によると、プログラム、前記プログラムにより使用される１又は複数の動的ライブラリ、及び前記動的ライブラリと制御情報を対応付けるテーブルを有する装置が前記動的ライブラリをロードする方法が提供される。当該方法は、前記動的ライブラリに対応付けられた前記制御情報を読み出す段階、読み出された前記制御情報が、前記動的ライブラリは前記プログラムが実行されるプロセスと同一の第１のプロセスで使用され得ると示す場合、前記第１のプロセスと前記動的ライブラリを動的に結合する段階、及び読み出された前記制御情報が、前記動的ライブラリは前記プログラムが実行されるプロセスと同一の第１のプロセスで使用され得ると示さない場合、前記第１のプロセスと異なる第２のプロセスを生成し前記第２のプロセスと前記動的ライブラリを動的に結合する段階、を有する。【選択図】図３
2010009149.tif 000002
【特許請求の範囲】
【請求項１】
プログラム、前記プログラムにより使用される１又は複数の動的ライブラリ、及び前記動的ライブラリと制御情報を対応付けるテーブルを有する装置が前記動的ライブラリをロードする方法であって、
前記動的ライブラリに対応付けられた前記制御情報を読み出す段階、
読み出された前記制御情報が、前記動的ライブラリは前記プログラムが実行されるプロセスと同一の第１のプロセスで使用され得ると示す場合、前記第１のプロセスと前記動的ライブラリを動的に結合する段階、及び
読み出された前記制御情報が、前記動的ライブラリは前記プログラムが実行されるプロセスと同一の第１のプロセスで使用され得ると示さない場合、前記第１のプロセスと異なる第２のプロセスを生成し前記第２のプロセスと前記動的ライブラリを動的に結合する段階、を有する動的ライブラリロード方法。
【請求項２】
前記装置は表示部を更に有し、前記プログラムが前記第１のプロセスで実行されているか前記第２のプロセスで使用されているかに応じて前記表示部の表示方法が変更される、請求項１記載の動的ライブラリロード方法。
【請求項３】
装置であって、
プログラム、
前記プログラムにより使用される１又は複数の動的ライブラリ、及び
前記動的ライブラリと前記制御情報を対応付けるテーブル、を有し、
前記動的ライブラリに対応付けられた前記制御情報を読み出す手段、
読み出された前記制御情報が、前記動的ライブラリは前記プログラムが実行されるプロセスと同一の第１のプロセスで使用され得ると示す場合、前記第１のプロセスと前記動的ライブラリを動的に結合する手段、及び
読み出された前記制御情報が、前記動的ライブラリは前記プログラムが実行されるプロセスと同一の第１のプロセスで使用され得ると示さない場合、前記第１のプロセスと異なる第２のプロセスを生成し前記第２のプロセスと前記動的ライブラリを動的に結合する手段、を有する動的ライブラリをロードする装置。
【請求項４】
表示部を更に有し、
前記プログラムが前記第１のプロセスで実行されているか前記第２のプロセスで使用されているかに応じて前記表示部の表示方法が変更される、請求項３記載の動的ライブラリをロードする装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、動的ライブラリロード方法及び装置に関する。
【背景技術】
【０００２】
一般的に携帯電話端末は、仮想機械（Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ：ＶＭ）を介してＪａｖａ（登録商標）などで記述されたプログラムを実行するか、又は当該携帯電話端末のＣＰＵで直接動作可能な任意のプログラムをインストールし実行することができる。ここでＶＭは現実のコンピューター内に仮想的に作成されたコンピューターであり、ＣＰＵ、メモリ、ネットワーク設定などの資源を仮想的に有する。従ってソフトウェアはＶＭを現実のコンピューターと同様に扱うことができる。ＶＭプロセスはＶＭを実行するために生成されたプロセスである。プロセスは、プログラムの動作中のインスタンスであり、プログラムの実行に必要な全ての変数及び状態を有している。プロセスは処理を実行するために生成され、ＯＳから記憶領域を割り当てられる。複数のプロセスはＯＳにより提供されるプロセス間通信機能により互いに情報を通信し、円滑な処理を実現する。あるプログラムを実行するために生成されたプロセスを主プロセスとし、主プロセスから派生する１又は複数の処理をそれぞれ１又は複数の副プロセスにより実行することにより、副プロセスのうちの１又は複数にエラーが生じた場合に主プロセス、つまりプログラムへの影響を最小限にとどめることができる。
【０００３】
しかしながら、Ｊａｖａ（登録商標） ＶＭを介してプログラムを動作させる場合、ＪＮＩ（Ｊａｖａ（登録商標） Ｎａｔｉｖｅ  Ｉｎｔｅｒｆａｃｅ）を使用することによりＣＰＵで直接動作可能な任意のライブラリをインストール、ロードする。この場合、ＣＰＵで直接動作可能なライブラリはＶＭプロセスによりロードされ、ＶＭプロセスの中で動作する。ライブラリの実行によりプロセスに致命的なエラーが発生した場合、ＶＭ自体の動作にも影響を与えてしまう恐れがある。また、プロセスごとにセキュリティーレベルを設定するＯＳでは、ライブラリはＶＭと同じセキュリティーレベルで動作するため、ライブラリごとにセキュリティーレベルを設定することができない。
【０００４】
従って、インストールされたライブラリの品質によってはＶＭごと異常終了してしまう可能性がある。特にＶＭが複数の処理を行っている場合には、動作中の全ての処理に影響が及んでしまうという問題があった。また、ＶＭプロセスのセキュリティーを変えることができない場合には、ライブラリごとに独自のセキュリティーレベルを設定することができないという問題があった。
【０００５】
特許文献１は１つのＣＰＵが複数の実行モードを提供し、１つのプログラムを再コンパイルせずに複数の実行モードで動作させる方法を開示している。しかしながら、特許文献１の方法は、プログラム毎にＣＰＵの実行モードを変更するが、当該プログラムの呼び出し元プロセスと同一の又は異なるプロセスでライブラリを実行することはできない。従って、依然として上述の問題が残る。
【特許文献１】特許第３９６８３７７号
【発明の開示】
【発明が解決しようとする課題】
【０００６】
本発明は、ライブラリ毎に実行するプロセスを選択することにより、当該ライブラリを使用するプログラム及び当該プログラムを実行する装置の信頼度を向上する方法及び装置を提供することである。
【課題を解決するための手段】
【０００７】
本発明の第１の態様によると、プログラム、前記プログラムにより使用される１又は複数の動的ライブラリ、及び前記動的ライブラリと制御情報を対応付けるテーブルを有する装置が前記動的ライブラリをロードする方法が提供される。当該方法は、前記動的ライブラリに対応付けられた前記制御情報を読み出す段階、読み出された前記制御情報が、前記動的ライブラリは前記プログラムが実行されるプロセスと同一の第１のプロセスで使用され得ると示す場合、前記第１のプロセスと前記動的ライブラリを動的に結合する段階、及び読み出された前記制御情報が、前記動的ライブラリは前記プログラムが実行されるプロセスと同一の第１のプロセスで使用され得ると示さない場合、前記第１のプロセスと異なる第２のプロセスを生成し前記第２のプロセスと前記動的ライブラリを動的に結合する段階、を有する。
【０００８】
本発明の第２の態様によると、装置が提供される。当該装置は、プログラム、前記プログラムにより使用される１又は複数の動的ライブラリ、及び前記動的ライブラリと前記制御情報を対応付けるテーブル、を有し、前記動的ライブラリに対応付けられた前記制御情報を読み出す手段、読み出された前記制御情報が、前記動的ライブラリは前記プログラムが実行されるプロセスと同一の第１のプロセスで使用され得ると示す場合、前記第１のプロセスと前記動的ライブラリを動的に結合する手段、及び読み出された前記制御情報が、前記動的ライブラリは前記プログラムが実行されるプロセスと同一の第１のプロセスで使用され得ると示さない場合、前記第１のプロセスと異なる第２のプロセスを生成し前記第２のプロセスと前記動的ライブラリを動的に結合する手段、を有する。
【発明の効果】
【０００９】
本発明によると、ライブラリの品質に応じて当該ライブラリを動的に結合するプロセスを選択できるので、ＶＭの動作の安全性を向上することができる。
【発明を実施するための最良の形態】
【００１０】
図１は本発明を実施する装置の構成図である。装置１００は、ＣＰＵ１、メインメモリ２、不揮発性メモリ３、ＬＥＤ４を有する。装置１００は、例えば携帯電話端末、ＰＤＡ、ＰＣのような、Ｓｙｍｂｉａｎ、ＩＴＲＯＮ、Ｗｉｎｄｏｗｓ（登録商標）、ＵＮＩＸ（登録商標）、ＭａｃＯＳ、ＬＩＮＵＸそれらに基づくその他のＯＳ、又はプロセス間通信に対応しライブラリを実行し得る如何なる他のＯＳを有する装置であっても良い。図１はＳｙｍｂｉａｎＯＳを搭載した場合の例である。ＤＲＡＭのようなメインメモリ２にはＪａｖａ（登録商標）アプリケーションのようなプログラム２−３を動作させるためのファームウェアが格納され、ＮＡＮＤ型フラッシュＲＯＭのような不揮発性メモリ３には実行プログラムや制御情報が格納される。ＬＥＤ４は任意であり１又は複数の色を発光する。
【００１１】
Ｊａｖａ（登録商標）ＶＭのようなプログラム実行プロセス２−１は、インストールされた任意のプログラム２−３を動作するために生成されたプロセスである。プログラム実行部２−１−１は、インストールされた任意のプログラムを実行する。ライブラリロード部２−１−２は、プログラム実行部２−１−１からライブラリ２−４のロード要求を受けると、制御情報３−１に従い、自身がライブラリ２−４をロードするか、又はライブラリ実行プロセス２−２を生成する。ライブラリ実行制御部２−１−３は、プログラム実行プロセス２―１からの要求によりライブラリ関数を呼び出し実行するか、又はライブラリ実行要求実行部２−２−１にライブラリ関数の呼び出し及び実行を依頼する。
【００１２】
図２は制御情報３−１の例を示す。制御情報３−１はテーブル形式で不揮発性メモリ３に格納される。制御情報３−１はライブラリ名又は番号のようなライブラを識別するライブラリ識別子、及びライブラリが直接実行されるべきか間接実行されるべきかを定める実行条件を有する。図２では、例としてライブラリ識別子としてライブラリ名ＬＩＢ−Ａ、ＬＩＢ−Ｂのライブラリに対しそれぞれ実行条件として直接実行と間接実行が関連付けられている。例えばＶＭと同様の品質のプログラムや実行速度が求められるようなライブラリはＶＭプロセスと同じプロセスで実行することにより、高速に実行することができる。一方、動作を十分に保証されていないなどＶＭより品質の劣るライブラリや、ＶＭと異なるセキュリティーレベルを設定すべきプログラムやライブラリはＶＭプロセスと別のプロセスで実行させることにより、ＶＭ自体の実行に影響を与えないようにできる。制御情報３−１はテキスト形式であっても良い。制御情報３−１はライブラリ２−４が装置１００にインストールされる際にライブラリ２−４に付属する情報から得られて良く、装置１００の製造時に設定されても良い。制御情報３−１は、ライブラリ２−４の作成者若しくは販売者、装置１００の製造者、装置１００に通信サービスを提供する通信事業者、又は他の如何なる団体により、ネットワークを介して又は記憶媒体を介して提供されても良く、或いはユーザーにより必要に応じて設定されても良い。
【００１３】
図３は本発明によりライブラリをロードする方法を説明するフローチャートである。ライブラリロード部２−１−２はライブラリ２―４をロードするよう指示されると、不揮発性メモリ３に格納された制御情報３―１にアクセスし（段階３１０）、要求されたライブラリに関連付けられた実行条件を読み出し直接実行か間接実行かを判断する（段階３２０）。ライブラリ２−４に対応する実行条件が直接実行を示す場合、ライブラリロード部２−１−２はライブラリ２−４と動的に結合する（段階３３０）。つまりプログラム実行プロセス２―１がライブラリ２−４と動的に結合される。図３に示された動作は、１つのライブラリをロードする毎に１回行われる。
【００１４】
図４は本発明によるライブラリ関数を実行する方法を説明するフローチャートである。ライブラリ実行制御部２−１−３は、ライブラリ２―４の実行を指示されると、ライブラリ２−４と関連付けられた制御情報３―１にアクセスし（段階４１０）、要求されたライブラリに関連付けられた実行条件を読み出し直接実行か間接実行かを判断する（段階４２０）。段階４１０及び４２０は、前述の段階３１０及び３２０で得た実行条件をライブラリロード部２−１−２から受信することにより省略されても良い。ライブラリ２−４に対応する実行条件が直接実行を示す場合、ライブラリ実行制御部２−１−３は、実行するよう要求されたライブラリ関数のアドレスを検索し（段階４３０）、検索されたアドレスでライブラリ関数を読み出す（段階４４０）。ライブラリ２−４に対応する実行条件が直接実行を示す場合、ライブラリ実行制御部２−１−３は、プロセス間通信に従いＲＳｅｓｓｉｏｎＢａｓｅ．ＳｅｎｄＲｅｃｅｉｖｅを用い、プログラム実行プロセス２―１と異なるプロセスであるライブラリ実行プロセス２−２のライブラリ実行要求実行部２−２−１にライブラリ関数の実行を依頼する（段階４５０）。ライブラリ実行プロセス２−２は要求を受けると（段階４６０）、要求されたライブラリ関数のアドレスを検索し（段階４７０）、検索されたアドレスでライブラリ関数を呼び出す（段階４８０）。図４に示された動作は、ライブラリ関数を呼び出す毎に１回行われる。
【００１５】
図５は本発明による直接実行の場合のプロセス間のシーケンスを示す。プログラム２−３はライブラリ２−４を使用する必要がある場合、プログラム実行部２−１−１に対しＳｙｓｔｅｍ＃ｌａｏｄＬｉｂｒａｒｙを発行し、ライブラリ２−４のライブラリ名を渡してライブラリ２−４をロードするよう要求する（段階５１０）。次にプログラム実行部２−１−１はライブラリロード部２−１−２に対しライブラリ２−４のライブラリ名を渡してライブラリ２―４をロードするよう指示する（段階５２０）。ライブラリロード部２−１−２は制御情報３―１にアクセスしライブラリ２−４が直接実行と関連付けられていた場合（段階５３０）、自身とライブラリ２―４を動的に結合する（段階５４０）。
【００１６】
図５の下半分は直接実行のライブラリのライブラリ関数を実行する場合のプロセス間のシーケンスを示す。プログラム２−３はライブラリ２−４のライブラリ関数を実行する場合、プログラム実行部２−１−１に対しライブラリ関数名及び必要な引数、例えば文字描画関数の場合は文字列及び書き出し座標など共にライブラリ関数実行要求を送出する（段階５５０）。プログラム実行部２−１−１はライブラリ関数実行要求を受けると、ライブラリ実行制御部２−１−３に対し当該ライブラリ関数名と引数とを渡してライブラリ関数を実行するよう指示する（段階５６０）。ライブラリ関数実行指示を受けたライブラリ実行制御部２−１−３は、制御情報３―１にアクセスしライブラリ２−４が直接実行と関連付けられていた場合（段階５７０）、ライブラリ関数を実行する（段階５８０）。段階５７０は、段階５３０で読み出した実行条件をライブラリロード部２−１−２から得ることにより置き換えられても良い。
【００１７】
図６は本発明による間接実行の場合のプロセス間のシーケンスを示す。段階６１０及び段階６２０は図５の段階５１０及び段階５２０と同様である。次にライブラリロード部２−１−２は制御情報３―１にアクセスしライブラリ２−４が間接実行と関連付けられていた場合（段階６３０）、ライブラリ実行プロセス２−２を生成する（段階６４０）。ライブラリ実行プロセス２−２は生成されると自身とライブラリ２―４を動的に結合し（段階６５０）、更にライブラリ関数実行要求実行部２−２−１を生成する（段階６６０）。
【００１８】
図６の下半分は間接実行のライブラリのライブラリ関数を実行する場合のプロセス間のシーケンスを示す。段階６７０及び段階６８０は図５の段階５５０及び段階５６０と同様である。次にライブラリ関数実行指示を受けたライブラリ実行制御部２−１−３は、制御情報３―１にアクセスしライブラリ２−４が間接実行と関連付けられていた場合（段階６９０）、ライブラリ実行要求実行部２−２−１に対し、ライブラリ関数名及び必要な引数を渡してライブラリ関数の実行を要求する（段階７００）。ライブラリ実行要求実行部２−２−１は実行を要求されたライブラリ関数を実行する（段階７１０）。
【００１９】
ＬＥＤ４の制御について説明する。ＬＥＤ４は赤、青、緑の３色のＬＥＤであって良い。プログラム実行部２−１−１がプログラム２−３の制御を開始する際にＬＥＤ４は青色を点灯する。その後、ライブラリ実行制御部２−１−３は直接実行の場合にライブラリ関数を呼び出す際に赤を点灯、ライブラリ関数終了後に青を点灯する。同じく間接実行の場合にライブラリ実行プロセスに要求を出す際に緑を点灯、要求終了後に青を点灯する。このようにＬＥＤ４がプログラム実行プロセス２―１又はライブラリ実行プロセス２−２の動作状態に応じて異なる方法で点灯されることにより、装置１００が実行しているプロセスの安定性のレベルをユーザーに示され、ユーザーは現在どのような処理が行われているかを認識できる。ＬＥＤ４は連続点灯、点滅、又はそれらを組み合わせて点灯されても良い。別の実施例では、装置１００は画面を有し、間接実行か直接実行かに依存して当該画面にメッセージ、グラフィック、静止画又は動画、又はそれらの組合せを表示しても良い。更に別の実施例では、画面表示とＬＥＤの点灯が組み合わされても良い。
【００２０】
以上に説明された本発明によると、例えば、携帯電話端末であるライブラリを使用するゲーム・アプリケーションを実行するために主プロセスであるＶＭプロセスが生成される。ユーザーはゲームを行っている間にゲーム内のキャラクターを画面内で移動させるために何からかのキーを押したとする。キャラクターを画面内で移動させる処理は、ＶＭプロセスから派生した処理である。ＶＭプロセスは当該ライブラリの実行条件に応じて自身を当該ライブラリと動的に結合して実行するか、新たなプロセスを生成し当該新たなプロセスと当該ライブラリを動的に結合し、プロセス間通信を介して必要な情報、例えばキャラクターの種類、移動方向、移動量などを当該新たなプロセスへ渡し、当該処理を実行させる。ここで当該新たなプロセスにエラーが生じた場合、当該新たなプロセスはＶＭプロセスに応答を返さずに、又はエラーを返して終了してしまうかも知れない。しかしながらＶＭプロセスは終了せずに、ユーザーに再入力を要求し当該処理をやり直すという程度の影響を受けるに過ぎない。従って本発明によると、ライブラリの品質に応じて当該ライブラリを動的に結合するプロセスを選択できるので、ＶＭの動作の安全性を向上することができる。
【図面の簡単な説明】
【００２１】
【図１】本発明を実施する装置の構成図である。
【図２】本発明の制御情報の例を示す。
【図３】本発明によるライブラリをロードする方法を説明するフローチャートである。
【図４】本発明によるライブラリ関数を実行する方法を説明するフローチャートである。
【図５】本発明による直接実行の場合のプロセス間のシーケンスを示す。
【図６】本発明による間接実行の場合のプロセス間のシーケンスを示す。
【符号の説明】
【００２２】
１  ＣＰＵ
２  メインメモリ
２−１  プログラム実行プロセス
２−１−１  プログラム実行部
２−１−２  ライブラリロード部
２−１−３  ライブラリ実行制御部
２−２  ライブラリ実行プロセス
２−２−１  ライブラリ実行要求実行部
２−３  プログラム
２−４  ライブラリ
３  不揮発性メモリ
３−１  制御情報
４  ＬＥＤ
【図１】
2010009149.tif 000003
【図２】
2010009149.tif 000004
【図３】
2010009149.tif 000005
【図４】
2010009149.tif 000006
【図５】
2010009149.tif 000007
【図６】
2010009149.tif 000008