(57)【特許請求の範囲】
【請求項１】
シングルプロセス、マルチスレッドのアプリケーション実行システムにおいて、
各アプリケーションプログラムをそれぞれに割り当てられたスレッドグループに属するスレッド上で起動する起動手段と、
各アプリケーションに割り当てられたスレッドグループを記憶するスレッドグループ記憶手段と、
第１のスレッドから第２のスレッドに対してアクセスが要求された場合に、それぞれのスレッドの属するスレッドグループが同一か否かを判別する第１の判別手段と、
前記第１の判別手段により、前記第１及び第２のスレッドの属するスレッドグループが異なると判別された場合に、それぞれのスレッドグループが前記スレッドグループ記憶手段に記憶されているか否かを判別する第２の判別手段と、
前記第２の判別手段により、前記第１及び第２のスレッドの属するスレッドグループがいずれも前記スレッドグループ記憶手段に記憶されていると判別された場合に、要求された前記アクセスを拒否する拒否手段とを備えたことを特徴とするアプリケーション実行システム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、アプリケーションの実行システムに関するものである。
【０００２】
【従来の技術】
図９に示すように、マルチプロセスな実行環境において、各プロセスのメモリ空間は実行環境によって保護されているので別のプロセスに変数などを勝手にアクセスされることはない。しかし図１０に示すように、Ｊａｖａ（Ｒ）の実行環境のようにシングルプロセスかつマルチスレッドな実行環境においては、スレッドはプロセスと異なりメモリ空間の保護は提供されていない。
【０００３】
また、Ｊａｖａ（Ｒ）の一つのバーチャルマシン上では通常一つのアプリケーションしか動かさない。そのためある機器上で複数のアプリケーションを実行したい場合には複数のバーチャルマシンを実行する必要があった。しかし組込み機器などでは機器の資源の問題で複数のバーチャルマシンを実行することが困難である。
【０００４】
そのためアプリケーションを各アプリケーションごとにスレッドに割り当てることにより一つのバーチャルマシン上で実行することは従来から行われてきた。
【０００５】
【発明が解決しようとする課題】
しかしながら、その場合、各アプリケーションは同一のプロセスで動作するため、アプリケーション内のデータやシステムのリソースの保護が十分におこなわれなかった。
【０００６】
また、Ｊａｖａ（Ｒ）のセキュリティマネージャではあるスレッドから別のスレッドにアクセスが行われた場合にそのアクセスを許可するかどうかの制御の枠組みのみを提供しているだけで、一つのバーチャルマシン上で複数のアプリケーションを動作させた場合にどのようにどのような条件でアプリケーション間のデータやシステムのリソースの保護やアクセスの許可などをおこなうかは提供していない。
【０００７】
本発明は上述の問題点に着目してなされたものであって、単一のバーチャルマシンで複数のアプリケーションを動かした場合のアプリケーションのデータやシステムのリソースの保護を可能とする複数アプリケーション実行システム及び記憶媒体を提供することを目的としている。
【０００８】
【課題を解決するための手段】
本発明によれば、シングルプロセス、マルチスレッドのアプリケーション実行システムに、各アプリケーションプログラムをそれぞれに割り当てられたスレッドグループに属するスレッド上で起動する起動手段と、各アプリケーションに割り当てられたスレッドグループを記憶するスレッドグループ記憶手段と、第１のスレッドから第２のスレッドに対してアクセスが要求された場合に、それぞれのスレッドの属するスレッドグループが同一か否かを判別する第１の判別手段と、前記第１の判別手段により、前記第１及び第２のスレッドの属するスレッドグループが異なると判別された場合に、それぞれのスレッドグループが前記スレッドグループ記憶手段に記憶されているか否かを判別する第２の判別手段と、前記第２の判別手段により、前記第１及び第２のスレッドの属するスレッドグループがいずれも前記スレッドグループ記憶手段に記憶されていると判別された場合に、要求された前記アクセスを拒否する拒否手段とを備える。
【００１５】
【発明の実施の形態】
以下に本発明の実施の形態を、実施例に基づいて図面を参照しながら説明する。
【００１６】
（第１の実施例）
図１はシステム概略図であり、図２はアプリケーション用スレッドグループの登録を示す図である。ユーザからアプリケーションの起動指示（３１１）（４０１）があると、アプリケーション起動部３０１は、そのアプリケーション用のスレッドグループを１つ生成する（４０２）。さらに前記スレッドグループに属するアプリケーション用スレッドを生成し（４０３）、そのスレッドの中で起動を指示されたアプリケーションプログラムの起動（４０４）を行なう（３１２）。
【００１７】
スレッドグループは、図５のようにスレッドやスレッドグループの集合体のことである。
【００１８】
アプリケーションが正常に起動したかをチェックし（４０５）、正常に起動したら（４０６）、アプリケーション用スレッドグループ記憶部３０２に、前記スレッドグループを登録し（３１３）（４０７）、アプリケーションの起動プロセスを終了し、新たな起動指示待ち状態となる（４１０）。アプリケーションが正常に起動しなかった場合（４０８）は、生成したスレッドグループとスレッドを破棄して（４０９）、アプリケーションの起動指示待ち状態（４１０）となる。
【００１９】
アプリケーション用スレッドグループ記憶部３０２は図４のようにスレッドグループ名をキーに、アプリケーション名を値としたテーブルとして実装されている。
【００２０】
図３は変数アクセスの可否の決定を示す図である。あるスレッドが別のスレッドの変数にアクセスをしようとしたとき、アクセス管理部３０３はそれをトラップし（３２１）、まず変数にアクセスしようとしたスレッドの属するスレッドグループを取得する（５０１）。さらに変数をアクセスされようとしたスレッドのスレッドグループを取得する（５０２）。
【００２１】
ステップ５０１、ステップ５０２で得たスレッドグループが同一のものであるかをチェックする（５０３）。同一であるときは、アプリケーションとは関係ないスレッドまたは、同一のアプリケーションの内部のスレッド間の変数アクセスであるとし、アクセス管理部３０３は処理をそこで中止して、次にあるスレッドが別のスレッドの変数にアクセスしようとするのを待つ（５０７）。
【００２２】
異なる場合はスレッドグループ検索部３０４にアプリケーション用スレッドグループ記憶部３０２の検索を依頼する。
【００２３】
スレッドグループ検索部３０４はステップ５０１、ステップ５０２で得たスレッドグループがアプリケーション用スレッドグループ記憶部３０２に存在するかリストの先頭か調べていく（５０４）。ステップ５０１，５０２で得たスレッドグループの両方がアプリケーション用スレッドグループ記憶部３０２に記憶されているかのチェックをおこない（５０５）、両方のスレッドがともにアプリケーション用スレッドグループ記憶部３０２に記憶されていない、または片方のみが記憶されている場合にはアクセス管理部３０３は処理をそこで中止して、次にあるスレッドが別のスレッドの変数にアクセスしようとするのを待つ（５０７）。両方のスレッドがアプリケーション用スレッドグループ記憶部３０２に記憶されていた場合には、異なるアプリケーション間での変数アクセスであるとしてアクセス拒否の例外を発生させ、変数アクセスをおこなわせない（５０６）。
【００２４】
（第２の実施例）
図７は本実施例におけるシステムの概略図であり、図８はシステム資源の利用の可否の決定を示す図である。
【００２５】
アプリケーションの起動と、アプリケーションの動作するスレッドの属するスレッドの登録までは第１の実施例と同一である。
【００２６】
アプリケーションの利用できるシステム資源記憶部９０８は図６のようにアプリケーション名をキーに、そのアプリケーションが利用できるシステムの資源を値としたテーブルとして実装されている。
【００２７】
あるスレッドがシステムの資源を利用しようとしたとき、アクセス管理部９０３はそれをトラップし（９２１）、まずシステムの資源を利用しようとしたスレッドの属するスレッドグループを取得し（１００１）、スレッドグループ検索部９０４にアプリケーション用スレッドグループ記憶部９０２の検索を依頼する（９２２）。
【００２８】
スレッドグループ検索部９０４はステップ１００１で得たスレッドグループがアプリケーション用スレッドグループ記憶部９０２に存在するかをアプリケーション用スレッドグループ記憶部９０２のリストの先頭から調べていき（９２４）（１００２）、ステップ１００１で得たスレッドグループがアプリケーション用スレッドグループ記憶部９０２に記憶されているかのチェックをおこなう（９２５）、スレッドがアプリケーション用スレッドグループ記憶部９０２に記憶されていない場合にはアクセス管理部９０３は処理をそこで中止して次にあるスレッドがシステムの資源を利用しようとするのを待つ（１００９）。
【００２９】
スレッドがアプリケーション用スレッドグループ記憶部９０２に記憶されている場合には、利用可能システム資源検索部９０９はステップ１００２で得たアプリケーション名を利用可能システム資源記憶部９０８の先頭から探していき、ステップ１００６において利用可能システム資源記憶部９０８のテーブルのキーの部分にステップ１００２で得たアプリケーション名が存在しなければそのアプリケーションにはシステムの資源を利用する権限がないとして利用拒否の例外を発生する（１００８）。ステップ１００６において利用可能システム資源記憶部９０８のテーブルのキーの部分にステップ１００２で得たアプリケーション名が存在していれば、ステップ１００２で得たアプリケーション名をキーとして利用可能システム資源記憶部９０８を検索した値に利用しようとしているシステムの資源が含まれているかを調べ（１００７）、含まれていればアクセス管理部９０３は処理をそこで中止して、次にあるスレッドがシステムの資源を利用しようとするのを待つ（１００９）。
【００３０】
含まれていなければそのアプリケーションにはシステムの資源を利用する権限がないとして利用拒否の例外を発生する（１００８）（９３０）。
【００３１】
【発明の効果】
本発明により、シングルプロセス、マルチスレッドのプログラム実行環境において、複数のアプリケーションプログラムを安全に動作させることが可能である。
【図面の簡単な説明】
【図１】  システム概略図
【図２】アプリケーション用スレッドグループの登録を示す図
【図３】  変数アクセスの可否の決定を示す図
【図４】  アプリケーション用スレッドグループ記憶部の構成図
【図５】  スレッドグループの構成図
【図６】  アプリケーションの利用できるシステムの資源の記憶部の構成図
【図７】  実施例２のシステムの概略図
【図８】  システム資源の利用の可否の決定を示す図
【図９】  マルチプロセス実行環境を示す図
【図１０】  シングルプロセス、マルチスレッド実行環境を示す図
【符号の説明】
３０１  アプリケーション起動部
３０２  アプリケーション用スレッドグループ記憶部
３０３  アクセス管理部
３０４  スレッドグループ検索部
３０５  アプリケーション用スレッドグループ
３０６  アプリケーション用スレッド
３０７  アプリケーションプログラム
９０１  アプリケーション起動部
９０２  アプリケーション用スレッドグループ記憶部
９０３  アクセス管理部
９０４  アプリケーション用スレッドグループ検索部（スレッドグループ検索部）
９０５  アプリケーション用スレッドグループ
９０６  アプリケーション用スレッド
９０７  アプリケーションプログラム
９０８  利用可能システム資源記憶部
９０９  利用可能システム資源検索部
【図１】
0004054572.tif 000002
【図２】
0004054572.tif 000003
【図３】
0004054572.tif 000004
【図４】
0004054572.tif 000005
【図５】
0004054572.tif 000006
【図６】
0004054572.tif 000007
【図７】
0004054572.tif 000008
【図８】
0004054572.tif 000009
【図９】
0004054572.tif 000010
【図１０】
0004054572.tif 000011