(57)【要約】【課題】  複数のアプリケーションが行われる仮想マシーンにおけるアプリケーションの実行と終了によるスレッドの終了と共有される資源に対する整理を効率的に処理することができるようにする、複数のアプリケーションに対して部分的に分離した実行環境を提供する方法およびこれを用いたデジタル情報機器を提供する。【解決手段】  複数のアプリケーションに対して部分的に分離した実行環境を提供する方法は、仮想マシーンおよび前記仮想マシーンと連動するミドルウェアを含むデジタル情報機器において、（ａ）前記仮想マシーンを駆動してアプリケーションマネージャを初期化して、前記ミドルウェアのメインクラスをロードして初期化するステップと、（ｂ）前記メインクラスのメインメソッドを行いながら、前記アプリケーションマネージャの所定のメソッドを介して各アプリケーションごとに所定の行為を行うステップと、（ｃ）すべてのスレッドを終結させて前記仮想マシーンで実行中であるプロセスを終了するステップとを含む。【選択図】  図６
2007226801.tif 000002
【特許請求の範囲】
【請求項１】
仮想マシーンおよび前記仮想マシーンと連動するミドルウェアを含むデジタル情報機器において、
（ａ）前記仮想マシーンを駆動してアプリケーションマネージャを初期化し、前記ミドルウェアのメインクラスをロードして初期化するステップと、
（ｂ）前記メインクラスのメインメソッドを行いながら、前記アプリケーションマネージャの所定のメソッドを介して各アプリケーションごとに所定の行為を行うステップと、
（ｃ）すべてのスレッドを終結させて前記仮想マシーンで実行中であるプロセスを終了するステップとを含む複数のアプリケーションに対して部分的に分離した実行環境を提供する方法。
【請求項２】
前記（ａ）ステップは、
（ａ１）前記仮想マシーンそのものを１つのシステムアプリケーションとして代表するアプリケーションオブジェクトを生成することによって、前記アプリケーションマネージャを初期化するステップと、
（ａ２）前記システムに対するシステムスレッドグループ、前記システムスレッドグループを構成するメインスレッドグループと終結者スレッド、および前記メインスレッドグループを構成するメインスレッドを生成するステップと、
（ａ３）前記終結者スレッドと前記メインスレッドをアプリケーション別スレッド管理者に登録するステップと、
（ａ４）前記メインクラスをロードして初期化するステップとを含む請求項１に記載の複数のアプリケーションに対して部分的に分離した実行環境を提供する方法。
【請求項３】
前記（ｂ）ステップは、
（ｂ１）前記ミドルウェアが新しいアプリケーションをロードするステップと、
（ｂ２）前記アプリケーションマネージャの開始メソッドを介して前記ロードしたアプリケーションごとにスレッド構造を生成するステップと、
（ｂ３）前記アプリケーションマネージャのホールトメソッドを介して前記アプリケーションごとに前記スレッド構造を終了させるステップとを含み、
前記ステップは繰り返して行われる請求項１に記載の複数のアプリケーションに対して部分的に分離した実行環境を提供する方法。
【請求項４】
前記（ｂ２）ステップは、
（ｂ２１）前記アプリケーションのメインクラスをロードして初期化するステップと、
（ｂ２２）前記メインクラスのメインメソッドを行うステップと、
（ｂ２３）前記メインメソッドの実行が完了した後、前記アプリケーションごとに用いられたリソースの整理を行うステップとを含む請求項３に記載の複数のアプリケーションに対して部分的に分離した実行環境を提供する方法。
【請求項５】
前記（ｂ２１）ステップは、
前記アプリケーションのシステムスレッドグループ、前記システムスレッドグループを構成するメインスレッドグループと終結者スレッド、および前記メインスレッドグループを構成するメインスレッドを生成するステップと、
前記システムスレッドグループ、前記メインスレッドグループ、前記終結者スレッド、および前記メインスレッドをアプリケーション別スレッド管理者に登録するステップと、
前記メインクラスをロードして初期化するステップとを含む請求項４に記載の複数のアプリケーションに対して部分的に分離した実行環境を提供する方法。
【請求項６】
前記（ｂ３）ステップは、
（ｂ３１）前記アプリケーションマネージャのホールトメソッドを介して前記アプリケーションごとに前記スレッド構造を終了するステップと、
（ｂ３２）前記アプリケーションごとに用いられたリソースの整理を行うステップとを含む請求項３に記載の複数のアプリケーションに対して部分的に分離した実行環境を提供する方法。
【請求項７】
前記（ｂ２３）ステップは、
前記アプリケーションの終結者スレッドによって管理している終結対象オブジェクトリストのうち、システムクラスに属するオブジェクトを前記システムの終結者スレッドによって管理している終結対象オブジェクトリストに移動させるステップと、
前記アプリケーションによって用いられたすべてのリソースを整理して、前記終結対象オブジェクトリストを整理するステップとを含む請求項４に記載の複数のアプリケーションに対して部分的に分離した実行環境を提供する方法。
【請求項８】
前記アプリケーションによって用いられたすべてのリソースは、
前記アプリケーションで用いられて終了していないファイルおよびソケットを含む請求項７に記載の複数のアプリケーションに対して部分的に分離した実行環境を提供する方法。
【請求項９】
前記（ｂ３２）ステップは、
前記アプリケーションの終結者スレッドによって管理している終結対象オブジェクトリストのうち、システムクラスに属するオブジェクトを前記システムの終結者スレッドによって管理している終結対象オブジェクトリストに移動させるステップと、
前記アプリケーションによって用いられたすべてのリソースを整理して、前記終結対象オブジェクトリストを整理するステップとを含む請求項６に記載の複数のアプリケーションに対して部分的に分離した実行環境を提供する方法。
【請求項１０】
前記アプリケーションによって用いられたすべてのリソースは、
前記アプリケーションで用いられて終了していないファイルおよびソケットを含む請求項９に記載の複数のアプリケーションに対して部分的に分離した実行環境を提供する方法。
【請求項１１】
仮想マシーン命令語コードを解釈して命令を行うインタープリタ、オブジェクトのメモリ空間を管理して用いられていないオブジェクトを収集するガーベッジコレクタ、およびクラスをロードするクラスローダを含む仮想マシーンが搭載されたデジタル情報機器であって、
少なくとも１つ以上のアプリケーションに対する実行と終了を処理するためのアプリケーションマネージャと、
前記アプリケーションごとにスレッドを区分して管理するアプリケーション別スレッド管理者と、
前記実行と終了を処理するために用いられたリソースを前記アプリケーションごとに区分して管理するアプリケーション別リソース管理者とを含む仮想マシーンを搭載したデジタル情報機器。
【請求項１２】
前記アプリケーション別スレッド管理者は、
前記アプリケーションの各々に対してシステムスレッドグループ、前記システムスレッドグループを構成するメインスレッドグループと終結者スレッド、前記メインスレッドグループを構成するメインスレッド、および前記スレッドグループと前記スレッドから派生したスレッドとスレッドグループを管理する請求項１１に記載の仮想マシーンを搭載したデジタル情報機器。
【請求項１３】
前記アプリケーション別リソース管理者は、
前記アプリケーションで用いられるファイルの入出力を制御するファイル管理者と、
前記アプリケーションで用いられるソケットの入出力を制御するソケット管理者とを含む請求項１１に記載の仮想マシーンを搭載したデジタル情報機器。
【請求項１４】
前記アプリケーション別リソース管理者は、
前記アプリケーションの終結者スレッドによって管理している終結対象オブジェクトリストのうち、システムクラスに属するオブジェクトを前記システムの終結者スレッドによって管理している終結対象オブジェクトリストに移動させる請求項１１に記載の仮想マシーンを搭載したデジタル情報機器。
【請求項１５】
前記仮想マシーンは、ジャバ仮想マシーンである請求項１１に記載の仮想マシーンを搭載したデジタル情報機器。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、仮想マシーンに関し、より詳しくは、単一ＯＳプロセスで行われる仮想マシーンにおける複数のアプリケーションが安定して行われるようにするための、複数のアプリケーションに対して部分的に分離した実行環境を提供する方法およびこれを用いたデジタル情報機器に関するものである。
【背景技術】
【０００２】
伝統的に単一ＯＳプロセス（例えば、ミドルウェア）で行われる仮想マシーンは１つのアプリケーションが行われる環境を仮定しているため、これを基盤に複数のアプリケーションが行われるようにする場合、ジャバオブジェクトだけでなく、ＯＳの資源がすべてのアプリケーション間で共有される構造を提供しなければならない。したがって、共有されるジャバオブジェクトが１つのアプリケーションによって修正されれば、他のアプリケーションは修正された内容によって影響を受けることができる。伝統的な仮想マシーンで互いに異なるクラスローダ（Ｃｌａｓｓ  Ｌｏａｄｅｒ）にロードしたクラスに含まれたスタティックフィールド（Ｓｔａｔｉｃ  Ｆｉｅｌｄ）は共有されず、別途に管理される基本的な分離（ｉｓｏｌａｔｉｏｎ）機能を提供しているが、スレッドのグループに対する分離実行環境を提供してはいない。
【０００３】
アプリケーションの分離した実行環境を提供するための方法には、大きく２種類がある。第１は、各アプリケーションごとに１つのＯＳプロセスで行う方法であり、第２は、１つのＯＳプロセス内で複数のアプリケーションが分離した環境で行われるようにする方法がある。本発明は、第２の方法であって、オブジェクトの共有を部分的に許す部分的分離（ｐａｒｔｉａｌ  ｉｓｏｌａｔｉｏｎ）を提供する技術に関するものである。
【０００４】
仮想マシーンは、どのようなデジタル情報機器でおいても行うことができるアプリケーションの移動性を保障する標準アプリケーション実行環境を提供する。図１は、従来技術に係わる仮想マシーンを含むデジタル情報機器の構成を示す図面である。
【０００５】
前記図１を参照すれば、デジタル情報機器１００は、ＣＰＵ１０、仮想マシーン２０、ミドルウェア３０、ダウンロードされたアプリケーション４０が常駐しているメモリ、ディスプレイプロセッサ５０、外部機器通信部（ｐｅｒｉｐｈｅｒａｌｓ）６０、およびバス７０で構成される。外部機器通信部６０は、ＵＳＢ連結装置、直列連結装置、赤外線（ＩＲ）連結装置、フラッシュメモリ、イーサネット（登録商標）通信装置、ハードディスクなどを含むことができる。イーサネット（登録商標）通信は、ＬＡＮ、ＡＤＳＬ／ケーブルモデムを介したＷｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ（ＷＡＮ）などの有線パケット通信網や、無線ＬＡＮ、ＣＤＭＡ／ＧＳＭ／ＧＰＲＳなどの無線／移動通信網、デジタルＴＶ公衆波／ケーブル／衛星などの有／無線放送網など、多様な形態で実現することができる。デジタル情報機器１００に応じて、衛星放送や公衆波放送の場合に、ＩＥＥＥ１３９４やイーサネット（登録商標）インターフェースを介してＬＡＮやＡＤＳＬなどに接続することができ、ケーブル放送の場合、両方向通信支援がケーブルモデムを介して行われるため、別途のイーサネット（登録商標）インターフェースが必要なしに両方向通信を支援することができる。また、ＰＶＲ（Ｐｅｒｓｏｎａｌ  Ｖｉｄｅｏ  Ｒｅｃｏｒｄｉｎｇ）機能のために、ＥＩＤＥ（Ｅｎｈａｎｃｅｄ  Ｉｎｔｅｇｒａｔｅｄ  Ｄｅｖｉｃｅ  Ｅｌｅｃｔｒｏｎｉｃｓ）などのインターフェースを用いたハードディスクが含まれることもできる。
【０００６】
ネットワークに連結されたデジタル情報機器１００に搭載された仮想マシーン２０の場合、仮想マシーンアプリケーションを外部からダウンロードして行う形態が普遍的である。メモリにはダウンロードされたアプリケーション４０が常駐し、これらの開始と終了などのライフサイクルを管理するためのミドルウェア３０が常駐する。このようなミドルウェア３０とダウンロードされたアプリケーション４０とは仮想マシーン２０上で行われる。例えば、データ放送受信機能を備えたデジタルＴＶやデジタルセットトップボックスのような情報機器の場合、ジャバ仮想マシーンを搭載し、その上にＤＴＶ機器制御とダウンロードされたジャバアプリケーションの管理のためのＤＴＶミドルウェア（ＯＣＡＰ／ＡＣＡＰ／ＭＨＰなどの標準スペックを基盤にする）が存在する。このような情報機器で行われるジャバアプリケーションは、Ｘｌｅｔというジャバスペックに準じて作成され、放送やネットワークを介してダウンロードされる。
【０００７】
一方、仮想マシーンアプリケーションはクラス単位で構成される。１つのアプリケーションはいくつかのクラスを含むことができ、各クラス内には実行コードを含むメソッドが含まれる。各メソッドは、バイトコードで表現された実行命令で構成されるが、このような仮想マシーンには様々な種類がある。その中でジャバとマイクロソフト社の『Ｃｏｍｍｏｎ  Ｌａｎｇｕａｇｅ  Ｒｕｎｔｉｍｅ（ＣＬＲ）』や『Ｓｍａｌｌｔａｌｋ』などの仮想マシーンが代表的である。本発明では説明の便宜のために、ジャバ仮想マシーンを例にあげて説明する。しかし、本発明の権利範囲は特定の仮想マシーンに限定されない。
【０００８】
図２は、従来技術に係わるジャバ仮想マシーンの構成を示す図面である。前記図２を参照すれば、ジャバ仮想マシーン２０はクラスライブラリ（Ｃｌａｓｓ  Ｌｉｂｒａｒｉｅｓ）２１とランタイムシステムで構成される。
【０００９】
クラスライブラリ２１は、ランタイムシステム上で行われることができる共通クラスの集合であって、アプリケーションで用いることができるようにあらかじめ構成しておいたクラスの集合を意味する。
【００１０】
ランタイムシステムは、仮想マシーンコードを行うことができる実行環境全般を提供する役割をするが、内部的には、インタープリタ２３、ＪＩＴコンパイラ２２、クラスローダ２４、ガーベッジコレクタ２６、およびスレッドマネージャ２５を含む。
【００１１】
ＪＩＴコンパイラ２２は、クラスの実行中に仮想マシーン命令語をＣＰＵの機械語に変換する役割をするものであり、一般に、Ｊｕｓｔ−Ｉｎ−Ｔｉｍｅ（ＪＩＴ）コンパイラが用いられる。インタープリタ２３は、クラスの実行コードを実行するためのものであって、仮想マシーン命令語を認識して命令を行う役割をする。クラスローダ２４は、クラスをロードする役割をする。スレッドマネージャ２５は、実行単位になるスレッドを管理するが、互いに異なるコードを処理するために同時に行うことができるいくつかのスレッドをすべて管理する役割をする。ガーベッジコレクタ２６は、オブジェクトのメモリ空間を管理して、用いていないオブジェクトを収集することによってメモリ空間をリサイクルする。
【００１２】
図３は、前記図２のジャバ仮想マシーンでのスレッドグループとスレッドとの相関関係を示す図面である。ジャバ仮想マシーン２０の場合に相互関連のあるスレッドをグループ化するためのスレッドグループが存在するが、各スレッドは１つのスレッドグループに属するようになり、前記スレッドグループも他のスレッドグループに属することができる。ジャバ仮想マシーン２０の実行時に基本的にシステムスレッドグループの下にメインスレッドグループと終結者スレッド（Ｆｉｎａｌｉｚｅｒ  ｔｈｒｅａｄ）とが存在し、メインスレッドグループにはメインスレッドが存在する。メインスレッドは仮想マシーン駆動時にパラメータに渡したクラスの“メイン”メソッドを行い、終結者スレッドはオブジェクトが収集される前に必要な整理作業を行う。
【００１３】
図４は、従来技術に係わるジャバ仮想マシーンの実行過程の流れを示す図面である。基本的に１つのジャバ仮想マシーンは、１つのＯＳプロセスで駆動されることが一般的であるため、これに基づいて前記図４を説明する。
【００１４】
ジャバ仮想マシーン２０の駆動時に基本的なグローバルデータ構造を初期化した後、クラスローダ２４を初期化する（Ｓ１０）。次に、システムスレッドグループを作ってここに含まれる終結者スレッドを生成し、メインスレッドグループを生成してここに含まれるメインスレッドを生成するようになる（Ｓ２０）。この時、生成された終結者スレッドとメインスレッドとは、スレッドマネージャ（Ｔｈｒｅａｄ  Ｍａｎａｇｅｒ）に登録して管理するようにする（Ｓ３０）。そして、メインクラスをロードして初期化させる（Ｓ４０）。ここで、メインクラスをロードするための方法は仮想マシーン駆動時にパラメータとして指定される。前記メインクラスがロードされればメインメソッドを行うようになるが、前記図１に示されたデジタル情報機器１００を例にあげれば、メモリに常駐するミドルウェア３０の開始コードのあるクラスが前記メインクラスに該当し、ここに定義されたメインメソッドからミドルウェア３０の駆動が始まる（Ｓ５０）。前記メインメソッドが終了すれば以後には仮想マシーンの終了ステップを行うようになるが、前記終了ステップでは現在まで実行中である（スレッドマネージャ２５により管理している）すべてのスレッドを終了させて仮想マシーンが実行中であるプロセスを終了する（Ｓ６０）。
【００１５】
図５を参照して、前記ミドルウェア３０の実行過程をさらに詳細に説明する。前記図５は、従来技術に係わるミドルウェアの実行過程の流れを示す図面である。ミドルウェア３０の開始時に基本的なデータ構造を初期化した後（Ｓ５１）、アプリケーションを行うためにどのような行為を行うことができるかを判断する（Ｓ５２）。新しいアプリケーションのロードや生成が必要な場合には、該当アプリケーションのクラスをロードし、前記アプリケーションクラスのオブジェクトを生成する（Ｓ５３）。アプリケーションの開始が必要な場合には、新しいスレッドを生成した後、オブジェクトの開始メソッドを呼出してアプリケーションコードを駆動させる（Ｓ５４）。また、アプリケーションの実行中に中断が必要な場合には、アプリケーションを中断するための中断メソッドを呼出してアプリケーションが終了するまで待つ（Ｓ５５）。その他の行為が必要な場合には、その他の行為を行うようになる（Ｓ５６）。上記のような様々な行為は繰り返して行われるが、また他の行為を行うか否かを判断して（Ｓ５７）、また他の行為を行う場合にはＳ５２ステップに戻って、繰り返して行うようになる。上記のような過程によって、複数の互いに異なるアプリケーションが同時に行われる環境を提供するようになる。
【００１６】
しかし、前記のような従来の仮想マシーンは、複数のアプリケーションが行われる中に共有される資源に対する制御が不可能であって、仮想マシーンの安全性に問題が生じる恐れがある。基本的に仮想マシーンは、１つのＯＳプロセスで行われるため、複数のアプリケーションが同一プロセス内で複数のスレッドで行われる。アプリケーションを終了させる方法も終了メソッドの呼出によって、アプリケーションを行うスレッドが自身が実行中に生成したすべてのスレッドと用いたすべての資源とを整理するという前提をおいているが、実際にアプリケーションがこのような過程を行わない場合にはアプリケーションが生成したスレッドと資源が整理されないままの状態で残っている。このような資源が整理されないままの状態で持続する場合、結果的に資源の不足現象により仮想マシーンがこれ以上作動できない状態まで至る恐れがある。
【００１７】
このような問題を解決するために、基本的に１つのアプリケーションが１つのＯＳプロセスで行われるように、互いに異なるアプリケーションどうしを完全に分離させる方法が提案されているが、この場合には互いに異なるアプリケーション間ではどのようなオブジェクトもすることが共有できなくなるという問題がある。このため、仮想マシーン上でアプリケーションを管理するミドルウェアのすべてのコードがオブジェクトの共有ができない状況を考慮して再コーディングしなければならず、オブジェクト共有が必要な場合にはＲＭＩ（Ｒｅｍｏｔｅ  ｍｅｔｈｏｄ  ｉｎｖｏｃａｔｉｏｎ）などの非効率的な方法を使わなければならないため、基本的に従来の仮想マシーンに依存したミドルウェアの場合、新しい方法に合わせてオブジェクト管理方法を変えなければならないという問題がある。
【００１８】
また、一部のオブジェクトの共有を許しながら、アプリケーションをＯＳプロセスのように管理する方法が開示されているが、この場合にはオブジェクトを共有しようとすれば、特殊な関数を使用しなければならないため、標準ジャバスペックと異なる仮想マシーンの実現が必要になり、アプリケーションおよびミドルウェアも標準と異なる仮想マシーンに合わせて実現しなければならない問題がある。
【発明の開示】
【発明が解決しようとする課題】
【００１９】
本発明は、上記のような問題点を解決するために考案されたものであり、本発明が成すようとする技術的課題は、複数のアプリケーションが行われる仮想マシーンにおけるアプリケーションの実行と終了によるスレッドの終了と共有される資源に対する整理とを効率的に処理することができるようにする、複数のアプリケーションに対して部分的に分離した実行環境を提供する方法およびこれを用いたデジタル情報機器を提供することにある。
【００２０】
本発明の目的は、以上で言及した目的に制限されず、言及していないまた他の目的は下記記載によって当業者が明確に理解できるものである。
【課題を解決するための手段】
【００２１】
上述した目的を達成するための本発明の一態様に係わる、複数のアプリケーションに対して部分的に分離した実行環境を提供する方法は、仮想マシーンおよび前記仮想マシーンと連動するミドルウェアを含むデジタル情報機器において、（ａ）前記仮想マシーンを駆動してアプリケーションマネージャを初期化し、前記ミドルウェアのメインクラスをロードして初期化するステップと、（ｂ）前記メインクラスのメインメソッドを行いながら、前記アプリケーションマネージャの所定のメソッドを介して各アプリケーションごとに所定の行為を行うステップと、（ｃ）すべてのスレッドを終結させて前記仮想マシーンで実行中であるプロセスを終了するステップとを含む。
【００２２】
より望ましくは、前記（ａ）ステップは、（ａ１）前記仮想マシーンそのものを１つのシステムアプリケーションとして代表するアプリケーションオブジェクトを生成することによって前記アプリケーションマネージャを初期化するステップと、（ａ２）前記システムに対するシステムスレッドグループ、前記システムスレッドグループを構成するメインスレッドグループと終結者スレッド、および前記メインスレッドグループを構成するメインスレッドを生成するステップと、（ａ３）前記終結者スレッドと前記メインスレッドをアプリケーション別スレッド管理者に登録するステップと、（ａ４）前記メインクラスをロードして初期化するステップとを含む。
【００２３】
より望ましくは、前記（ｂ）ステップは、（ｂ１）前記ミドルウェアが新しいアプリケーションをロードするステップと、（ｂ２）前記アプリケーションマネージャの開始メソッドを介して前記ロードしたアプリケーションごとにスレッド構造を生成するステップと、（ｂ３）前記アプリケーションマネージャのホールトメソッドを介して前記アプリケーションごとに前記スレッド構造を終了させるステップとを含み、前記ステップは繰り返して行われる。
【００２４】
上述した目的を達成するための本発明の他の態様に係わる仮想マシーンを搭載したデジタル情報機器は、仮想マシーン命令語コードを解釈して命令を行うインタープリタ、オブジェクトのメモリ空間を管理して用いていないオブジェクトを収集するガーベッジコレクタ、およびクラスをロードするクラスローダを含む仮想マシーンが搭載されたデジタル情報機器において、少なくとも１つ以上のアプリケーションに対する実行と終了を処理するためのアプリケーションマネージャと、前記アプリケーションごとにスレッドを区分して管理するアプリケーション別スレッド管理者と、および前記実行と終了を処理するために用いられたリソースを前記アプリケーションごとに区分して管理するアプリケーション別リソース管理者とを含む。
【発明の効果】
【００２５】
本発明は次のような効果がある。
【００２６】
アプリケーションごとにスレッドとリソースを別途に管理することによって、アプリケーションの終了時にスレッドとリソースとを一括的に整理することができるようになって、１つのＯＳプロセスで行われる仮想マシーンにおける複数のアプリケーションが同一プロセス内で行われてもリソースの共有が効率的になされることができ、アプリケーション終了後にも不要に残ったスレッドやリソースがないようにする。特に、従来のアプリケーション分離（ａｐｐｌｉｃａｔｉｏｎ  ｉｓｏｌａｔｉｏｎ）方法と異なり、基本的に１つのガーベッジコレクタを用いることによってオブジェクトの共有を許しながら、アプリケーションの終了時に整理される必要があるオブジェクトはアプリケーション別リソース管理者によって整理されるようにして不要に残ったオブジェクトがないようにすることによって、アプリケーション別リソース管理者によって自動的に共有オブジェクトが管理されるようにした。
【００２７】
また、従来のミドルウェアの修正が最小限になることができるように簡単なクラスを提供して、ミドルウェアのオブジェクト管理方式を全体的に変更しなくても従来の仮想マシーンが提供するオブジェクト共有機能をそのまま活用することができるため、本発明の実現が容易で、特に、従来のアプリケーションの修正が全くなく、複数のアプリケーションを安全に行うことができる。
【００２８】
本発明の効果は以上で言及した効果に制限されず、言及しないまた他の効果は請求範囲の記載から当業者が明確に理解できるものである。
【発明を実施するための最良の形態】
【００２９】
その他の実施形態の具体的な事項は詳細な説明および図面に含まれている。
【００３０】
本発明の利点および特徴、そしてそれらを達成する方法は、添付する図面と共に詳細に後述する実施例を参照すれば明確になる。しかし、本発明は以下にて開示する実施例に限定されず、互いに異なる多様な形態によって実施され、単に本実施例は本発明の開示が完全なものとなるようにし、本発明が属する技術分野で通常の知識を有する者に発明の範疇を完全に知らせるために提供されるものであって、本発明は請求項の範疇によってのみ定義されるものである。明細書の全体に亘り、同一参照符号は同一構成要素を示す。
【００３１】
以下、本発明の好ましい実施形態によってあらかじめ定義された、複数のアプリケーションに対して部分的に分離した実行環境を提供する方法およびこれを用いたデジタル情報機器を説明するためのブロック図またはフローチャートを参照して詳細に説明する。
【００３２】
図６は、本発明の一実施形態に係わるジャバ仮想マシーンの構成を示す図面である。前記図６を参照すれば、ジャバ仮想マシーン２００は、クラスライブラリ２１０とランタイムシステムとで構成され、前記ランタイムシステムは、ＪＩＴコンパイラ２２０、インタープリタ２３０、クラスローダ２４０、アプリケーションマネージャ２５０、アプリケーション別スレッド管理者（Ｐｅｒ−ａｐｐｌｉｃａｔｉｏｎ  Ｔｈｒｅａｄ  Ｍａｎａｇｅｒ）２６０、アプリケーション別リソース管理者（Ｐｅｒ−ａｐｐｌｉｃａｔｉｏｎ  Ｒｅｓｏｕｒｃｅ  Ｍａｎａｇｅｒ）２７０、およびガーベッジコレクタ２８０を含んでいる。
【００３３】
本発明で用いられるデジタル情報機器というのは、一般的なＰＣだけでなく、ＰＤＡ、携帯電話、デジタルＴＶ、デジタルセットトップボックスなど、中央処理装置（ＣＰＵ）によるソフトウェア駆動能力のあるすべての機器を含み、また、仮想マシーンに対しても説明の便宜のためにジャバ仮想マシーンを例にあげて説明するが、本発明の権利範囲は特定の仮想マシーンに限定されない。
【００３４】
前記図６のジャバ仮想マシーン２００を前記図２と比較して、スレッドマネージャ２５がアプリケーション別スレッド管理者２６０に変更され、アプリケーションマネージャ２５０とアプリケーション別リソース管理者２７０が追加された。その他の残り構成要素は従来の方式の図２の構成と同一である。
【００３５】
アプリケーションマネージャ２５０は、少なくとも１つ以上のアプリケーションに対する実行と終了を処理する役割をする。
【００３６】
アプリケーション別スレッド管理者２６０は従来の方式と異なり、スレッドをアプリケーションごとに区分して管理する方法を提供する。従来の方法の場合、１つの仮想マシーンで行われるすべてのスレッドは、自身が属するスレッドグループによってのみ区分されるだけで、すべて１つのＯＳプロセスに属するスレッドと見なされた。一方、本発明の実施形態では、１つのＯＳプロセス内に属するスレッドといっても、どのようなアプリケーションの実行中に生成されたかによって区分する方式を用いる。スレッドをアプリケーションごとに区分する方法は、様々な実施形態があり得るが、本発明の一実施形態では各アプリケーションの実行環境を代表する代表クラス（例えば、ＡｐｐＥｘｅｃＥｎｖというクラス）を仮想マシーン２００のクラスライブラリ２１０にさらに提供することができる。前記代表クラスのオブジェクトの１つは、１つのアプリケーションのための実行環境を示すようにして、あるスレッドを生成する場合、該当アプリケーションに対応する代表クラスオブジェクトを関連させることができる。このように、アプリケーションごとに生成されたスレッドを区分して管理する方法は様々な方法があり得るが、本発明の実施形態では特定の実現方法に限定せず、各アプリケーションごとに生成されたスレッドを別途に管理する方法を包括する。
【００３７】
図７は、前記図６のジャバ仮想マシーンでのスレッドグループとスレッドの相関関係および各アプリケーションごとに生成されるスレッドグループとスレッドとの相関関係を示す図面である。前記図７から分かるように、基本的なジャバ仮想マシーンの駆動時に生成されるスレッドは従来の方法と同一の構造を有するようになる。しかし、各アプリケーションの駆動時に生成されるスレッドは従来の方法と異なり、各アプリケーションごとに仮想マシーンのスレッド構造を別途に有する形態で生成される。前記図７を参照すれば、アプリケーション１と２とは、各々システムスレッドグループ、メインスレッドグループが存在し、終結者スレッドとメインスレッドとが各アプリケーションごとに存在する構造であることが分かる。すなわち、アプリケーション別スレッド管理者２６０は、前記アプリケーション各々に対してシステムスレッドグループ、前記システムスレッドグループを構成するメインスレッドグループと終結者スレッド、および前記メインスレッドグループを構成するメインスレッドを管理するようになる。
【００３８】
再び前記図６を参照すれば、アプリケーション別リソース管理者２７０は少なくとも１つ以上のアプリケーションに対する実行と終了を処理するために用いられたリソースを前記アプリケーションごとに区分して管理する役割をする。アプリケーション別リソース管理者２７０は、前記アプリケーションで用いられるファイルの入出力を制御するファイル管理者（図示せず）とソケットの入出力を制御するソケット管理者（図示せず）とを含むことが好ましい。
【００３９】
そして、個別アプリケーションは、自身のメインクラスのメインメソッドが終了したり、ミドルウェアによって強制的に終了したりする過程のうち、該当アプリケーションが用いたリソースを整理する作業が必要になるが、アプリケーション別リソース管理者２７０がこのような役割を担当するようになる。
【００４０】
また、アプリケーション別リソース管理者２７０は、アプリケーションの終結者スレッドによって管理している終結対象オブジェクトリストが空いていない場合には、次のように処理するようになる。すなわち、前記アプリケーションの終結者スレッドによって管理している終結対象オブジェクトリストのうち、システムクラス（アプリケーション別クラスローダによってロードしないすべての共有されるクラスであって、仮想マシーンの基本クラスとミドルウェアのクラスとがここに属する）に属するオブジェクトを前記システムの終結者スレッドによって管理している終結対象オブジェクトリストに移動させ、前記アプリケーションごとに用いられたすべてのリソースを整理して前記終結対象オブジェクトリストを整理するようになる。その理由は、システムクラスのリソースが整理されることができない場合を防止するためであって、詳しい事項は図１０の説明の部分で後述する。
【００４１】
一方、上記のような本発明の実施形態で用いられる「〜部」という用語、すなわち「〜モジュール」または「〜テーブル」などは、ソフトウェアまたはＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）、または注文型半導体（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ、ＡＳＩＣ）のようなハードウェア構成要素を意味し、モジュールはある役割を行う。ところがモジュールは、ソフトウェアまたはハードウェアに限定される意味ではない。モジュールは、アドレッシングできる格納媒体にあるように構成することもでき、１つまたはそれ以上のプロセッサを再生させるように構成することもできる。したがって、一例としてモジュールはソフトウェア構成要素、オブジェクト指向ソフトウェア構成要素、クラス構成要素およびタスク構成要素のような構成要素と、プロセス、関数、属性、プロシージャ、サブルーチン、プログラムコードのセグメント、ドライバ、ファームウェア、マイクロコード、回路、データ、データベース、データ構造、テーブル、アレイ、および変数を含む。構成要素とモジュールの中で提供されている機能は、さらに小さい数の構成要素およびモジュールに結合したり、追加的な構成要素とモジュールにさらに分離したりすることができる。それだけでなく、構成要素およびモジュールは、デバイスまたは保安マルチメディアカード内の１つまたはそれ以上のＣＰＵを再生させるように実現することもできる。
【００４２】
図８は、本発明の実施形態に係わるジャバ仮想マシーンの実行過程の流れを示す図面である。基本的には前述した図４での過程と同一の順序に従うが、前記図４と比較すると、新しく追加されたアプリケーション別スレッド管理者２６０を用いてスレッドを登録するという点が異なる。特に、ジャバ仮想マシーン２００の駆動時に生成されるスレッド構造はどのようなアプリケーションにも属しないシステムに属するスレッドとして登録され、他のアプリケーションと別途に管理される。一実施形態ではシステム実行環境を示す代表クラス（例えば、ＡｐｐＥｘｅｃＥｎｖクラス）のオブジェクトを生成して各スレッドをこのオブジェクトと関連させる。
【００４３】
前記図８を簡単に説明すれば、先ず、ジャバ仮想マシーン２００の駆動時に基本的なグローバルデータ構造を初期化した後、クラスローダ２４０とアプリケーションマネージャ２５０を初期化する（Ｓ１００）。すなわち、前記Ｓ１００ステップは、仮想マシーンそのものを１つのシステムアプリケーションとして代表するアプリケーションオブジェクトを生成するステップと見ることができる。次に、システムスレッドグループを作ってここに含まれる終結者スレッドを生成し、メインスレッドグループを生成してここに含まれるメインスレッドを生成するようになる（Ｓ２００）。この時、生成された終結者スレッドとメインスレッドは、アプリケーション別スレッド管理者２６０に登録して管理するようにする（Ｓ３００）。そして、ミドルウェアのメインクラスをロードして初期化させる（Ｓ４００）。ここで、メインクラスをロードするための方法は仮想マシーン駆動時にパラメータとして指定される。
【００４４】
前記メインクラスがロードされればメインメソッドを行うようになるが、メモリに常駐するミドルウェアの開始コードのあるクラスが前記メインクラスに該当し、ここに定義されたメインメソッドからミドルウェアの駆動が始まって、メインメソッドをアプリケーションごとに行うようになるが（Ｓ５００）、この過程は図９で後述する。一方、前記メインメソッドが終了すれば以後には仮想マシーンの終了ステップを行うようになるが、前記終了ステップでは現在まで実行中であるすべてのスレッドを終了させて仮想マシーンで実行中であるプロセスを終了する（Ｓ６００）。
【００４５】
図９は、本発明の実施形態に係わるミドルウェアの実行過程の流れを示す図面である。前記図９を参照すれば、ミドルウェアの開始時に基本的なデータ構造を初期化した後（Ｓ５１０）、どのような行為を行うかを判断する（Ｓ５２０）。新しいアプリケーションのロードが必要な場合には該当アプリケーションのクラスをパラメータとしてアプリケーションのオブジェクトを生成する（Ｓ５３２）。アプリケーションの開始が必要な場合には直接アプリケーションのコードを行わず、アプリケーションマネージャ２５０の開始メソッドを呼出して、アプリケーションのための別途の実行環境でアプリケーションが駆動されるようにする（Ｓ５３４）。これはアプリケーションの開始のためのすべての初期化過程はアプリケーションマネージャ２５０が担当するためである。前記Ｓ５３４ステップに対しては図１０で詳細に後述する。また、アプリケーション実行中に中断が必要な場合には、従来方式のようにアプリケーションを中断させるためのメソッドを呼出し、アプリケーションが終了状態になるまで待つ過程（Ｓ５３５）は従来の図５の方式と同一であるが、別途のスレッドを生成してアプリケーションマネージャ２５０のホールト（ｈａｌｔ）メソッドを呼出してアプリケーションに属するすべてのスレッドを強制的に終了させる過程（Ｓ５３６）が新しく追加された。この過程では既存のスレッド終了方法も共に活用することができる。スレッドを終了させた後にはリソースを整理する過程が追加され、一括的にリソースを解除する過程を行うようになる。これで、アプリケーションが中断メソッドの実行に反応しなかったり、リソースの整理を終わらせることができなかったりする場合を備えるようになる。一方、その他の行為が必要な場合にはその他の行為を行うようになる（Ｓ５３８）。
【００４６】
上記のような様々な行為は繰り返して行われるが、また他の行為を行うか否かを判断して（Ｓ５４０）、また他の行為を行う場合にはＳ５２０ステップに戻って繰り返して行われ、複数の互いに異なるアプリケーションが同時に安定して行われる環境を提供する。
【００４７】
Ｓ５３４の過程を図１０を参照して詳細に説明したところ、前記図１０は、本発明の実施形態に係わるアプリケーション開始メソッドの呼出過程を示す図面である。前記図１０での過程は、１つの仮想マシーンが駆動されることと類似する方式で行われるため、前記図８と類似する段階を経るが、次のような点で差がある。第１は、スレッドがシステムに属するスレッドではなく、アプリケーションに属するスレッドで管理されるという点である。第２は、アプリケーションのメインクラスに該当するクラスは前記図９のアプリケーションロードステップ（Ｓ５３２）でパラメータとして指定したアプリケーションクラスを駆動させるためのクラスになるという点である。第３は、アプリケーションメインクラスのメインメソッドが終了する過程において、該当アプリケーションが用いたリソースを整理する過程が追加されたという点である。すなわち、アプリケーションの実行中に獲得したリソースをアプリケーション別リソース管理者２７０が管理していて、この段階で一括的に整理するという点である。
【００４８】
前記図１０を簡単に説明すれば、先ず、ジャバ仮想マシーン２００の駆動時に基本的なグローバルデータ構造を初期化した後、アプリケーションのクラスローダを初期化する（Ｓ５３４１）。次に、システムスレッドグループを作ってここに含まれる終結者スレッドとメインスレッドグループとを生成し、ここに含まれるメインスレッドを生成するようになる（Ｓ５３４２）。この時、生成された終結者スレッドとメインスレッドとはアプリケーション別スレッド管理者２６０に登録して管理するようにする（Ｓ５３４３）。そして、アプリケーションのメインクラスをロードして初期化させる（Ｓ５３４４）。前記メインクラスがロードされればメインメソッドを行うようになるが、ここに定義されたメインメソッドからアプリケーションの駆動が始まって、メインメソッドをアプリケーションごとに行うようになる（Ｓ５３４５）。前記メインメソッドが終了すれば以後にはアプリケーションの終了ステップを行うようになるが、前記終了ステップでは、現在までアプリケーションごとに管理しているすべてのスレッドを中断してアプリケーションごとに用いられたリソースを整理する過程が新しく追加された（Ｓ５３４６）。
【００４９】
リソースを一括的に解除する過程に対して詳細に説明する。この過程では、先ず、アプリケーションの終結者スレッドが管理していた終結対象オブジェクトのリストのうち、システムクラスに属するオブジェクトをシステムの終結者スレッドが管理していた終結対象オブジェクトリストに移す作業がなされる。その理由は、アプリケーションごとに生成された終結者スレッドもアプリケーションに属するスレッドであるため、スレッドの終了過程で終了するため、終了しないオブジェクトが残っているようになり、この内で仮想マシーンで基本的に提供するクラスや仮想マシーン駆動時に与えられたクラスのようなシステムによってロードしたクラスのオブジェクトの場合はまだ整理されていなかったため、システムの終結者スレッドが管理していた終結対象オブジェクトリストに移す。以後の過程は、アプリケーションごとに用いたリソースを一括的に整理した後、ガーベッジコレクタ２８０を用いて用いられていないオブジェクトを整理するようになる。前記過程をすべて経れば、１つのアプリケーションから生成したすべてのスレッドと、これが用いたすべてのリソースが一括的に整理され、仮想マシーンでリソースをリサイクルすることができるようになる。ここで、前記終結対象オブジェクトリストは、前記アプリケーションで用いられた後、終了しないファイルおよびソケットを含む。
【００５０】
一方、本発明の実施形態に係わる複数のアプリケーションに対して部分的に分離した実行環境を提供する方法およびこれを用いたデジタル情報機器の権利範囲は前記のような方法をコンピュータで実行するためのプログラムコードを記録したコンピュータで読み込むことができる記録媒体にも及ぼすことは当業者に自明である。
【００５１】
以上、添付した図面を参照して本発明の実施例を説明したが、本発明が属する技術分野で通常の知識を有する者であれば、本発明がその技術的思想や必須の特徴を外れない範囲内で様々な置換、変形、および変更が可能であるため、他の具体的な形態によって実施することができるということを理解できる。したがって、以上で記述した実施形態はすべての面で例示的なものであり、限定的なものではないことを理解しなければならない。本発明の範囲は前記詳細な説明よりは後述する特許請求の範囲によって明らかになり、特許請求の範囲の意味および範囲、そしてその均等概念から導き出されるすべての変更または変形された形態が本発明の範囲に含まれると解釈しなければならない。
【図面の簡単な説明】
【００５２】
【図１】従来技術に係わる仮想マシーンを含むデジタル情報機器の構成を示す図である。
【図２】従来技術に係わるジャバ仮想マシーンの構成を示す図である。
【図３】前記図２のジャバ仮想マシーンでのスレッドグループとスレッドの相関関係を示す図である。
【図４】従来技術に係わるジャバ仮想マシーンの実行過程の流れを示す図である。
【図５】従来技術に係わるミドルウェアの実行過程の流れを示す図である。
【図６】本発明の一実施形態に係わるジャバ仮想マシーンの構成を示す図である。
【図７】前記図６のジャバ仮想マシーンでのスレッドグループとスレッドとの相関関係および各アプリケーションごとに生成されるスレッドグループとスレッドの相関関係を示す図である。
【図８】本発明の実施形態に係わるジャバ仮想マシーンの実行過程の流れを示す図である。
【図９】本発明の実施形態に係わるミドルウェアの実行過程の流れを示す図である。
【図１０】本発明の実施形態に係わるアプリケーション開始メソッドの呼出過程を示す図である。
【符号の説明】
【００５３】
２００      ジャバ仮想マシーン
２１０      クラスライブラリ
２２０      ＪＩＴコンパイラ
２３０      インタープリタ
２４０      クラスローダ
２５０      アプリケーションマネージャ
２６０      アプリケーション別スレッド管理者
２７０      アプリケーション別リソース管理者
２８０      ガーベッジコレクタ
【図１】
2007226801.tif 000003
【図２】
2007226801.tif 000004
【図３】
2007226801.tif 000005
【図４】
2007226801.tif 000006
【図５】
2007226801.tif 000007
【図６】
2007226801.tif 000008
【図７】
2007226801.tif 000009
【図８】
2007226801.tif 000010
【図９】
2007226801.tif 000011
【図１０】
2007226801.tif 000012