最初に本実施の形態の概要を述べる。本実施の形態は、複数の実行空間のそれぞれにおいて一以上のプロセスが処理される形態の情報処理装置において実現される。実行空間は例えばゲーム、ウェブブラウザ、音楽編集、などといったソフトウェアごとに生成され、プロセスは、例えばゲームの実行空間であれば画像処理、音声処理などといった、ソフトウェアを実行するための所定の処理単位で生成される。複数のプロセスを並列処理するために、情報処理装置が備えるメモリ量、CPU時間などのリソースが各プロセスに割り当てられる。本実施の形態におけるリソース割り当ては、まず実行空間に対して行われる。そして、実行空間に割り当てられたリソースの中から、その実行空間に属するプロセスに対してリソース割り当てが行われる。
さらに本実施の形態では、あるプロセスがリソース割り当てを要求した際、まず当該プロセスが属する実行空間内でリソース割り当て可否に関する1次判定を行う。次に、必要に応じて実行空間の外でリソース割り当て可否に関する2次判定を行う。2次判定は実行空間単位で行われる。具体的には、実行空間に対して一意に定められた認証用のIDに基づき、各実行空間ごとにあらかじめ設定されたリソースの割り当て制限情報を参照することによって、実行空間に対するリソース割り当て可否が判定される。認証用のIDやリソースの割り当て制限情報は、ソフトウェアの一部としてプログラムとともに記憶されているものを、当該ソフトウェアに対応する実行空間を生成する際に読み込んでおく。
2次判定の結果、リソースの割り当てが可能とされたら、実行空間に対してリソースの割り当てを行う。実行空間に1度に割り当てるリソースの量は、あらかじめ実行空間ごとに設定されたリソース量の単位で行う。一度実行空間に割り当てられたリソースは、余剰分が生じても実行空間内で確保しておく。これにより、その後に同実行空間に属するプロセスがリソース割り当てを要求した際、実行空間内で確保しておいたリソースによって当該要求が充足すれば、リソース割り当て処理を実行空間内の通信のみで解決することができる。
リソース割り当ての可否判定を階層的に行うことにより、ある実行空間において不正なプロセスがリソースの割り当て要求を行っても、まず当該実行空間内での割り当て処理が行われるため、他の実行空間に対するリソース割り当てに与える影響を防止できる。例え不正なプロセスが、実行空間を制御するプロセスになり代わり、リソース割り当てを不正に要求しても、実行空間ごとに設定された割り当て制限により、過剰な割り当てを防止できる。これにより不正なプロセスによって装置のリソースが占拠され、他の実行空間のプロセスの進捗に影響を与える事態を防止できる。なお、不正なプロセスが他のプロセスになり代わり要求などを行うことを、以後、「成りすまし」とも呼ぶ。
また上述の如く、実行空間内で確保したリソースによって、プロセスのリソース割り当て要求を解決できる場合があるため、実行空間外部との通信や、割り当て要求に対する処理の待ち行列などに起因するオーバーヘッドを抑制することができる。
以降、本実施の形態を具体的に説明する。図1は本実施の形態に係る情報処理装置100の全体構成を示す。情報処理装置100はアプリケーションやOSのプログラムを処理するプロセッサ10、ユーザからの指示入力や演算結果の出力を行う入出力装置60、マシンコードやデータを一時記憶するメモリ70、およびソフトウェアのプログラムやデータを記憶する外部記憶装置80を備え、バス90を介して相互にデータの授受を行っている。入出力装置60にはデバイス62a、62bとして、キーボード、マウス、ゲームコントローラ、マイクなどの入力装置、プリンタ、表示装置などの出力装置のいずれか、または組み合わせが含まれる。なおデバイス62の数は2つに限定されない。外部記憶装置80にはハードディスク82や、図示しないフラッシュメモリなど、情報処理装置100のオン/オフに関わらずデータを保持する記憶装置のいずれかが含まれる。
プロセッサ10には第1実行空間20aから第n実行空間20cまでのn個の実行空間20、および情報処理装置100全体を統括的に制御するシステム制御部50が含まれる。第1実行空間20aには、第1実行空間20aに属するプロセスを1つ以上処理する第1プロセス処理部30a、第1実行空間20a内のリソース割り当てやプロセス実行のための各種制御、および第1実行空間20a外の機能ブロックとの通信などを制御する第1実行空間制御部40aが含まれる。以降、第2実行空間20bから第n実行空間20cまでのそれぞれの実行空間にも同様に、第2プロセス処理部30b〜第nプロセス処理部30c、第2実行空間制御部40b〜第n実行空間制御部40cが含まれる。以後、第1から第nの複数の実行空間、プロセス処理部、および実行空間制御部のうち、いずれかの実行空間、プロセス処理部、および実行空間制御部の符号として、単に20、30、および40を用いる場合もある。
図1では実行空間20を機能としての側面からプロセッサ10の中に含めたが、各実行空間20およびシステム制御部50はハードウェア的には入出力装置60、メモリ70あるいは外部記憶装置80をそれぞれ含めた概念としてよく、さらに図示しないその他のLSIをも構成要素としてよい。また、各実行空間20およびシステム制御部50の機能は、ソフトウェア的にはメモリ70にロードされたアプリケーションやOSのプログラムなどによって実現される。したがって、これらの機能ブロックがハードウェアのみ、ソフトウェアのみ、またはそれらの組合せによっていろいろな形で実現できることは当業者には理解されるところであり、いずれかに限定されるものではない。また図1ではプロセッサ10をわかり易さのために1つの矩形で示しているが、プロセッサ10の個数を1つに限定するものではなく、例えば複数のサブプロセッサ10を有するマルチプロセッサ構成としたり、メインプロセッサとグラフィックプロセッサを有する構成としてもよい。さらにバス90は接続されるそれぞれのハードウェアに対して専用のバスを有する構成でもよい。
実行空間20はユーザによるアプリケーションの起動などによって発生する。例えばシステム制御部50は、ユーザによる入出力装置60からの起動指示などの要求信号を検出すると、外部記憶装置80からメモリ70にOSコード、プログラム、パラメータなどを読み込む。そして、実行に必要なCPU時間、メモリ70の使用量などのリソース割り当てを行うことにより、実行空間20を形成する。実行空間制御部40はシステム制御部50より割り当てられたリソースを、アプリケーション実行のために発生させたプロセスに割り当てる。これによりプロセス処理部30は割り当てられたCPU時間に各プロセスの処理を行い、メモリ70などへのアクセスを必要に応じて行う。
実行中のプロセスに、その進捗に応じてリソースの追加割り当ての必要性が生じた場合、プロセス処理部30は実行空間制御部40に対し新たなリソース割り当て要求を行う。実行空間制御部40はまず、当該実行空間20に確保しているリソースを確認し、要求を充足できればそれをプロセスに割り当てる。確保しているリソースに不足があればシステム制御部50に対しリソース追加の要求を行う。そして所定の確認作業が行われた後、システム制御部50は実行空間20に対しリソースの追加割り当てを行う。リソースの割り当て手法については後述する。
図2はシステム制御部50と第1実行空間20aのより詳細な構成を示す。第2実行空間20bから第n実行空間20cまでの実行空間20も、第1実行空間20aと同様の構成を有するが図示を省略している。第1プロセス処理部30aが処理する第Aプロセス32A、第Bプロセス32Bから第Nプロセス32Nは、例えば1つのゲームを構成する画像処理のプロセスと音声処理のプロセスなどである。以降、第1から第Nの複数のプロセスのうちいずれかのプロセスの符号として単に32と記載する場合もある。第1実行空間制御部40aは、第1実行空間20aが生成された際の、第1実行空間20a内のリソース確保および起動するプログラムについての初期化処理を行うローカル初期化部42、プロセス32のいずれかがリソースの割り当てを要求した際、要求元のプロセス32の名前を解決するローカル名前管理部44、プロセス32へのリソースの割り当ての実行可否の判定およびその後の処理、第1実行空間20a全体のリソース管理を行うローカルリソース管理部46を含む。
システム制御部50は、実行空間20の生成および初期化処理を行うグローバル初期化部52、実行空間20がリソースの割り当てを要求した際、要求元の実行空間20の名前を解決するグローバル名前管理部54、実行空間20へのリソース割り当ての実行可否の判定およびその後の処理、情報処理装置100全体のリソース管理を行うグローバルリソース管理部56を含む。各機能ブロックは後述する手順に従い、必要に応じてメモリ70およびハードディスク82に対しデータの読み出しおよび書き込みを行う。
次に上述の構成による動作について説明する。なお、各種パラメータやテーブルについては、後に具体例を示して詳述する。図3は情報処理装置100の起動時の動作の流れを示すフローチャートである。ユーザが起動入力などを行うと、まずシステム制御部50は外部記憶装置80から起動に必要なプログラム、パラメータなどをメモリ70に読み込み、所定のOSプログラムを実行する(S10)。ここでは必要に応じて読み込んだプログラムやパラメータの正当性を、電子署名の認証などにより検証する。OSプログラムの実行の一部として、システム制御部50のグローバル初期化部52は、S10で読み込んだパラメータのうち、生成すべき実行空間20の情報を含むシステム初期化パラメータに基づき、所定個数の実行空間20を生成する(S12)。このとき各実行空間20には、実行空間暫定IDが、生成された順に付与される。さらにグローバル初期化部52は、各実行空間20において、ローカル初期化部42、ローカル名前管理部44、およびローカルリソース管理部46を含む実行空間制御部40を起動する(S14)。この際、グローバル初期化部52はローカル初期化部42に、当該実行空間20の初期確保リソース量や追加で確保できるリソース量の単位を含む実行空間初期化パラメータと、当該実行空間20内で起動すべきプログラムの情報を示す起動プログラムリストを与える。実行空間初期化パラメータと起動プログラムリストは、S10で読み込んだシステム初期化パラメータに含まれる情報である。
次にグローバル初期化部52は、同じシステム制御部50のグローバル名前管理部54に、起動した実行空間20の実行空間暫定IDと、S10で読み込んだシステム初期化パラメータに示される実行空間認証IDとを与える。ここで実行空間認証IDはあらかじめ定められた、実行空間20に対応するソフトウェアの固定的IDである。グローバル名前管理部54は各実行空間20の実行空間暫定IDと実行空間認証IDとを対応づけた実行空間名前テーブルを作成し、メモリ70に保存する(S16)。またグローバル初期化部52は、グローバルリソース管理部56に、S10で読み込んだシステム初期化パラメータに含まれるリソース割り当ての制限情報を与える。グローバルリソース管理部56はその情報をもとに、後に各実行空間20に割り当てるリソースを管理するためのグローバルリソース管理テーブルを作成し、メモリ70に保存する(S18)。
S14で起動した実行空間制御部40のローカル初期化部42は、グローバル初期化部52より取得した実行空間初期化パラメータに基づき、初期に確保すべきリソース量をローカルリソース管理部46に与え、ローカルリソース管理部46はそのリソースを確保する手続きを行う(S20)。手続きの詳細については後述する。リソース確保後、ローカルリソース管理部46は、ローカル初期化部42から与えられた、実行空間初期化パラメータに含まれる、追加で確保できるリソース量の単位と、S20で確保したりソース量とを示すローカルリソース管理テーブルを作成し、メモリ70に保存する(S22)。
ローカル初期化部42はさらに、S14でグローバル初期化部52より取得した起動プログラムリストに基づき、起動すべきプログラムを起動することにより各プロセス32を生成する(S24)。このとき各プロセス32には、起動した順にプロセスIDが付与される。次にローカル初期化部42は、ローカル名前管理部44に、起動したプロセス32のプロセスIDと、起動プログラムリストから取得できるプログラム認証IDとを与える。ここでプログラム認証IDは、実行空間認証IDと同様、あらかじめ定められたプログラム固有のIDである。ローカル名前管理部44は各プロセス32のプロセスIDとプログラム認証IDとを対応づけたプロセス名前テーブルを作成し、メモリ70に保存する(S26)。またローカル初期化部42は、ローカルリソース管理部46に、起動プログラムリストから取得できるリソース割り当ての制限に係る情報を与える。ローカルリソース管理部46はその情報をもとに後に各プロセス32に割り当てるリソースを管理するためのプロセスリソース管理テーブルを作成し、メモリ70に保存する(S28)。以上で情報処理装置100の起動時の処理を終了する。
図4は上述の処理によって取得されるパラメータと作成されるテーブルとの相互関係を示す図である。図3のフローチャートに示したステップの符号のうち、図4中のパラメータの取得やテーブルの作成に対応するステップの符号を括弧内に示している。また図2に示した機能ブロックのうち、生成された各テーブルを参照する機能ブロックを図の右端に示している。まず、図3のS10においてシステム制御部50が読み込むシステム初期化パラメータ102には、生成すべき実行空間20の実行空間認証ID104のリストと、それぞれの実行空間20に割り当て可能なリソースの量または種類を示す割り当て可能リソース情報106と、実行空間20が初期に確保すべきリソース量および追加で確保できるリソース量の単位(以後、「追加リソース単位」と呼ぶ)を含む実行空間初期化パラメータ200と、実行空間20内で起動すべきプログラムのプログラム認証IDのリストと、それぞれのプログラムが利用可能なリソースの量または種類と、各プログラムのバイナリコードを含む、起動プログラムリスト220が含まれる。システム初期化パラメータ102に含まれる各パラメータの値は、各実行空間20の発生元であるソフトウェアに付加された情報であり、例えばCD−ROM(Compact Disc Read Only Memory)にプログラムとともに記憶されているものを、メモリ70にテーブルとして読み込んでおく。
実行空間認証ID104は図3のS14で各実行空間20に生成順に付与される実行空間暫定ID132と対応づけられ、S16で実行空間名前テーブル130を構成する。実行空間名前テーブル130はグローバル名前管理部54が参照し、リソース割り当て要求の発行元である実行空間20の名前を解決する。実行空間認証ID104はさらに、システム初期化パラメータ102に含まれる割り当て可能リソース情報106と、後述する手続きにより実行空間20に実際に割り当てられたリソースの情報である対実行空間割り当て済みリソース142とに対応づけられ、図3のS18でグローバルリソース管理テーブル140を構成する。グローバルリソース管理テーブル140はシステム制御部50のグローバルリソース管理部56が参照し、実行空間20が要求するリソース割り当て可否の判定に用いられる。対実行空間割り当て済みリソース142は初期値は図3のS20、すなわち実行空間20へのリソースの初期割り当ての段階で取得できるが、実行空間20に対するリソース割り当ての変更があるたびに更新される。
システム初期化パラメータ102に含まれる実行空間初期化パラメータ200は、上述の対実行空間割り当て済みリソース142と対応づけられ、図3のS22で実行空間制御部40が参照するローカルリソース管理テーブル150を構成する。ローカルリソース管理テーブル150はローカルリソース管理部46が参照し、システム制御部50へリソース要求を行うかどうかの判定と、要求する場合のリソース要求量の指定に用いられる。
システム初期化パラメータ102の起動プログラムリスト220に含まれるプログラム認証IDは、同じく起動プログラムリスト220に含まれる、各プログラムを実行するプロセス32の利用可能リソース情報と、後述する手続きにより各プロセス32に実際に割り当てられたリソースの情報である対プロセス割り当て済みリソース162と、に対応づけられ、図3のS28でプロセスリソース管理テーブル160を構成する。プロセスリソース管理テーブル160もローカルリソース管理部46が参照し、プロセス32が要求するリソース割り当ての可否判定に用いられる。対プロセス割り当て済みリソース162はプロセス32に対するリソース割り当ての変更があるたびに更新される。さらにプログラム認証IDは、図3のS24で対応するプロセス32を起動したときに起動順に付与されるプロセスID172と対応づけられ、図3のS26でプロセス名前テーブル170を構成する。プロセス名前テーブル170はローカル名前管理部44が参照し、リソース割り当て要求の発行元であるプロセス32の名前を解決する。
次に、各テーブルの具体的な構造例を示す。図5はシステム初期化パラメータ102を記述するテーブルの構造例を示す。システム初期化パラメータテーブル102Aは、実行空間認証ID欄104A、メモリ量上限欄108A、CPU時間上限欄110A欄、利用可能デバイスID欄112A、ハードディスク容量上限欄114A、実行空間初期化パラメータ欄200A、起動プログラムリスト欄220Aを含む。
実行空間認証ID欄104Aには、図4で示した、各実行空間20の実行空間認証ID104が記述される。実行空間認証ID104は上述のとおり実行空間20の発生元であるソフトウェアに付加され、ソフトウェアなどに対し一意的に決定される固定的なIDである。メモリ量上限欄108A、CPU時間上限欄110A、利用可能デバイスID欄112A、およびハードディスク容量上限欄114Aには、それぞれの実行空間20に対して割り当てられるメモリ量の上限、割り当てられるCPU時間の上限、実行空間20が利用できるデバイス62のID、および実行空間20に対して割り当てられるハードディスク容量の上限がそれぞれ記述される。これらのパラメータは、図4で示した割り当て可能リソース情報106に含まれる。
メモリ量上限、CPU時間上限、ハードディスク容量上限の値は、ソフトウェアの作成段階での検証実験などによって最適な値を取得する。デバイスIDは、デバイス62に対し一意的に定められる固定的なIDである。利用可能なデバイス62は、例えば自動車レースゲームを実行する実行空間20であれば、方向指示ボタン式のコントローラとハンドル式のコントローラ、といった具合に、ソフトウェアの内容などによってこれも作成段階で決定する。なお図5の例では外部記憶装置80をハードディスク82で代表させたが、図示しないフラッシュメモリなど実行空間20がアクセス可能な外部記憶装置80であればハードディスク82に限定されない。以降の説明ではハードディスク82を例に説明する。
実行空間初期化パラメータ欄200Aには、図4で示した実行空間初期化パラメータ200、すなわち初期確保リソース量および追加リソース単位が格納されたファイルの名前が記述される。または、初期確保リソース量および追加リソース単位を直接記述してもよい。図6は実行空間初期化パラメータ欄200Aに記述されたファイル、例えば「Param_A」ファイルに格納されたテーブルの構造例を示す。実行空間初期化パラメータテーブル200Bは、初期確保メモリ量欄202、追加確保メモリ量単位欄204、初期確保CPU時間欄206、追加確保CPU時間単位欄208を含む。初期確保メモリ量欄202および初期確保CPU時間欄206にそれぞれ記述される初期確保メモリ量および初期確保CPU時間は、実行空間20の生成時に、当該実行空間20が最初に確保すべきメモリ量およびCPU時間である。初期確保の処理は、図3に示す情報処理装置100の起動時の手順ではS20のステップに相当する。追加確保メモリ量単位欄204および追加確保CPU時間単位欄208にそれぞれ記述される追加確保メモリ量単位および追加確保CPU時間単位は、メモリ量またはCPU時間の追加割り当てを行う手続きにおいて参照される。詳細は後に述べるが、実行空間20に対するメモリ量およびCPU時間の追加割り当ては、追加確保メモリ量単位または追加確保CPU時間単位の自然数倍の量にて行われる。なお、実行空間初期化パラメータテーブル200Bに記述される値も、ソフトウェア作成段階における検証実験などによって最適値が取得される。
図5に戻り、システム初期化パラメータテーブル102Aの起動プログラムリスト欄220Aには、図4で示した起動プログラムリスト220を格納するファイルの名前が記述される。または、起動プログラムリスト220を直接記述してもよい。図7は起動プログラムリスト欄220Aに記述されたファイル、例えば「Prg_List_A」ファイルに格納されたリストの構造例を示す。起動プログラムリスト220には、実行空間20の発生元であるソフトウェアを構成するプログラムの情報を格納したプログラムファイルのファイル名が記述されるプログラムファイル名欄222が含まれる。
図8は起動プログラムファイル名欄222に記述されたプログラムファイル、例えば「prg1」ファイルに格納されたデータの構造例を示すテーブルである。プログラム情報テーブル222Aは、プログラム認証ID欄224、メモリ量上限欄226、利用可能デバイスID欄228、ハードディスク使用可否欄230、およびコード欄232を含む。プログラム認証ID欄224には、プログラムに対し一意的に定められる固定的IDであるプログラム認証IDが記述される。メモリ量上限欄226および利用可能デバイスID欄228には、当該プログラムに対応するプロセス32に対し割り当てられるメモリ量の上限と、利用可能なデバイス62のIDが記述される。これらのパラメータは、システム初期化パラメータテーブル102Aにおいて実行空間20ごとに設定されたメモリ量上限および利用可能デバイスを、処理されるプログラムごと切り分けたものであり、ソフトウェアの作成段階で決定される。ハードディスク使用可否欄230には、当該プログラムに対応するプロセス32がハードディスク82を使用できるか否かを識別する文字列等が記述される。ハードディスク82の使用可否はプログラムの内容等によってソフトウェアの作成段階で決定される。コード欄232にはプログラム本体として、バイナリ化されたコードが記述される。
なおプロセス32に割り当て可能なCPU時間の上限は、OSが一般的に提供する、CPU時間の割り当て制御の機能を利用することにより設定可能なため、図8のプログラム情報テーブル222AにおいてはCPU時間の上限欄は設けていない。但しCPU時間上限欄をさらに設けて、本実施の形態におけるグローバルリソース管理部56の管理対象とすることもできる。
図9は図3のS16で生成される実行空間名前テーブル130の構造例を示す。実行空間名前テーブル130は、実行空間暫定ID欄132Aおよび実行空間認証ID欄104Aを含む。実行空間暫定ID欄132Aに記述される実行空間暫定ID132は、図3のS12で実行空間20を生成した際に順次付与されるIDである。実行空間認証ID欄104Aに記述される実行空間認証ID104は、図4で示したシステム初期化パラメータテーブル102Aの実行空間認証ID欄104Aに記述された値に対応する。グローバル名前管理部54はそれらのIDを対応づけて実行空間名前テーブル130を生成する。
図10は図3のS18で生成されるグローバルリソース管理テーブル140の構造例を示す。グローバルリソース管理テーブル140は、実行空間認証ID欄104A、メモリ量上限欄108A、現割り当てメモリ量欄144、CPU時間上限欄110A、現割り当てCPU時間欄146、利用可能デバイスID欄112A、およびハードディスク容量上限欄114Aを含む。実行空間認証ID欄104Aに記述される実行空間認証ID104は、図4で示したシステム初期化パラメータテーブル102Aの実行空間認証ID欄104Aに記述された実行空間認証ID104である。メモリ量上限欄108A、CPU時間上限欄110A、利用可能デバイスID欄112A、およびハードディスク容量上限欄114Aに記述された値は、同じくシステム初期化パラメータテーブル102Aのメモリ量上限欄108A、CPU時間上限欄110A、利用可能デバイスID欄112A、およびハードディスク容量上限欄114Aに記述された値である。現割り当てメモリ量欄144および現割り当てCPU時間欄146には、図3のS20でそれぞれの実行空間20に割り当てたメモリ量およびCPU時間の初期値、あるいは、後述するようにそれらの追加割り当てを行った場合は追加後の値が記述される。
図11は図3のS22で生成されるローカルリソース管理テーブル150の構造例を示す。ローカルリソース管理テーブル150は、現確保メモリ量欄154、追加確保メモリ量単位欄204、現確保CPU時間欄156、および追加確保CPU時間単位欄208を含む。追加確保メモリ量単位欄204と追加確保CPU時間単位欄208に記述される値はそれぞれ、図6で示した実行空間初期化パラメータテーブル200Bの追加確保メモリ量単位欄204、および追加確保CPU時間単位欄208にて設定された値である。現確保メモリ量欄154、および現確保CPU時間欄156の値は、図3のS20でそれぞれの実行空間20が確保したメモリ量およびCPU時間の初期値、あるいは、後述するようにそれらの追加確保を行った場合は追加後の値が記述される。これらの値は、グローバルリソース管理テーブル140の現割り当てメモリ量欄144および現割り当てCPU時間欄146に記述された値に対応する。
図12は図3のS28で生成されるプロセスリソース管理テーブル160の構造例を示す。プロセスリソース管理テーブル160は、プログラム認証ID欄224、現割り当てメモリ量欄164、メモリ量上限欄226、現割り当てCPU時間欄166、利用可能デバイスID欄228、およびハードディスク使用可否欄230を含む。プログラム認証ID欄224に記述されるプログラム認証IDは、図8で示したプログラム情報テーブル222Aのプログラム認証ID欄224に記述されたプログラム認証IDに対応する。メモリ量上限欄226、利用可能デバイスID欄228、およびハードディスク使用可否欄230には同じくプログラム情報テーブル222Aの、メモリ量上限欄226、利用可能デバイスID欄228、およびハードディスク使用可否欄230にて設定された値が記述される。なお利用可能デバイスID欄228における「−」は利用可能デバイスがないことを表し、ハードディスク使用可否欄230における「−」はハードディスク82の使用不可を表している。現割り当てメモリ量欄164と現割り当てCPU時間欄166の値は、後述する手続きにより、実行空間20内の各プロセス32へメモリ量およびCPU時間の割り当てを行った際の割り当て後の値である。
なおプロセスリソース管理テーブル160には、各プロセス32に割り当てられたメモリ70の物理アドレスなど、上述のパラメータ以外の、リソース管理に必要なパラメータを含めてよいが、ここでは説明を省略する。
図13は図3のS26で生成されるプロセス名前テーブル170の構造例を示す。プロセス名前テーブル170は、プロセスID欄172Aおよびプログラム認証ID欄224を含む。プロセスID欄172Aに記述されるプロセスID172は、図3のS24で各プロセス32を生成した際に順次付与される値である。プログラム認証ID欄224に記述されるプログラム認証IDは、図8で示したプログラム情報テーブル222Aのプログラム認証ID欄224に記述されたプログラム認証IDである。ローカル名前管理部44はそれらの値を対応づけてプロセス名前テーブル170を生成する。
次に図3のS20において実行空間20に対しリソースの初期割り当てを行う手続きについて説明する。図14は実行空間20にメモリ量またはCPU時間を割り当てる手順について示すフローチャートである。この手順は、情報処理装置100の起動時の初期割り当て時のみならず、実行空間20に属するプロセス処理に追加のリソースが必要となった際にも同様に行われる。まずローカルリソース管理部46は、グローバルリソース管理部56に対し、メモリ量またはCPU時間の割り当て要求を行う(S30)。要求には実行空間初期化パラメータ200に設定された、実行空間20の初期確保リソース量のうち、メモリ量またはCPU時間の値が含まれる。図6に示した実行空間初期化パラメータテーブル200Bに、さらに初期確保デバイスID欄や初期確保ハードディスク容量欄を設けることにより、ローカルリソース管理部46は情報処理装置100の起動時に、デバイスやハードディスク容量の割り当て要求をさらに行うようにしてもよい。以後の説明ではメモリ量またはCPU時間の要求について説明する。
ここでシステム制御部50は情報処理装置100に対してOSの役割を果たす。複数の実行空間20a〜20cの実行の切り替えもシステム制御部50が提供する機能である。そしてローカルリソース管理部46がグローバルリソース管理部56に割り当て要求の通信を行う際、ローカルリソース管理部46はシステム制御部50が提供する通信機能を呼び出すため、システム制御部50は通信機能を呼び出した実行空間20を特定することができる。結果としてグローバルリソース管理部56はS30において割り当て要求を行った実行空間20の実行空間暫定ID132を識別することができる。グローバルリソース管理部56はグローバル名前管理部54に対し、実行空間暫定ID132に基づき問い合わせを行い、要求元の実行空間20の実行空間認証ID104を取得する(S32)。
続いてグローバルリソース管理部56は、実行空間認証ID104に基づきグローバルリソース管理テーブル140を参照し、要求される割り当てによって要求元の実行空間20のメモリ量またはCPU時間の割り当て上限を超えないか確認を行う(S34)。割り当て上限を超えていなければ(S34のY)、グローバルリソース管理テーブル140の現割り当てメモリ量または現割り当てCPU時間を、割り当てを行った後の値に更新し(S36)、スケジュールの更新やアドレスの確保などの割り当て処理を行い、ローカルリソース管理部46に許可を発行する(S38)。要求が割り当て上限を超える場合は(S34のN)、割り当て拒否としてローカルリソース管理部46にエラーを返し(S40)終了する。なお割り当て可否判定を行うS34のステップは、図3のS20においてリソースの初期割り当てを行う際には常に「Y」となるが、追加割り当ての際には「Y」と「N」に分岐する。
ローカルリソース管理部46は、S30の割り当て要求に対し、メモリ量またはCPU時間の割り当てが行われたか、エラーが返されたかを確認する(S42)。割り当てが行われていれば(S42のY)、ローカルリソース管理テーブル150の現確保メモリ量または現確保CPU時間を割り当て後の値に更新して(S44)終了し、エラーであれば(S42のN)、そのまま終了する。
実行空間20に属するプロセス処理に追加のリソースが必要となった際は、図14の手順の前段階として、プロセス32からローカルリソース管理部46に対し、メモリ量またはCPU時間の割り当て要求がなされる。そして当該実行空間20で確保済みのメモリ量またはCPU時間によってその要求が充足される場合は、図14の手続きを行う必要がなくなる。
図15は上述のようにプロセス32に対してメモリ量またはCPU時間を割り当てる際の手順を示すフローチャートである。まずプロセス32は、プロセス32自体が生成された際、または所要メモリ量や所要CPU時間が不足した場合に、同じ実行空間20に属するローカルリソース管理部46に対し、メモリ量またはCPU時間の割り当て要求を行う(S50)。要求には所要のメモリ量またはCPU時間の値が含まれる。ローカルリソース管理部46は所属する実行空間20内で処理されているプロセス32の割り当て要求を受け付ける。ここでローカルリソース管理部46を含む実行空間制御部40は実行空間20に対してOSの役割を果たす。複数のプロセス32A〜32Nの実行の切り替えも実行空間制御部40が提供する機能である。そしてプロセス32がローカルリソース管理部46に割り当て要求の通信を行う際、プロセス32は実行空間制御部40が提供する通信機能を呼び出すため、実行空間制御部40は通信機能を呼び出したプロセス32を特定することができる。結果としてローカルリソース管理部46はS50において割り当て要求を行ったプロセス32のプロセスID172を識別することができる。ローカルリソース管理部46はローカル名前管理部44に対しプロセスID172に基づき問い合わせを行い、要求元のプロセス32のプログラム認証IDを取得する(S52)。
続いてローカルリソース管理部46は、プログラム認証IDに基づきプロセスリソース管理テーブル160を参照し、割り当てによって要求元のプロセス32のメモリ量またはCPU時間の割り当て上限を超えないか確認を行う(S54)。割り当て上限を超えている場合(S54のN)、ローカルリソース管理部46は割り当て拒否としてプロセス32にエラーを返す(S60)。割り当て上限を超えない場合(S54のY)、ローカルリソース管理部46は続いてローカルリソース管理テーブル150を参照し、要求されている割り当てが実行空間20における現確保メモリ量または現確保CPU時間で充足するか確認を行う(S56)。
現確保メモリ量または現確保CPU時間では要求に対し不足する場合(S56のN)、ローカルリソース管理部46はグローバルリソース管理部56に対し、メモリ量またはCPU時間の割り当て要求を行う(S30)。これは図14のS30のステップと同様である。但しこの場合の要求に含まれるメモリ量またはCPU時間の要求値は、プロセス32が要求したメモリ量またはCPU時間以上であり、かつ、ローカルリソース管理テーブル150に記述された追加確保メモリ量単位または追加確保CPU時間単位の自然数倍の値となる。以降、グローバルリソース管理部56における処理手順は、図14のS32からS40と同様である。
そしてローカルリソース管理部46は、グローバルリソース管理部56から新たなメモリ量またはCPU時間が割り当てられたかを確認する(S42)。割り当てられていれば(S42のY)、ローカルリソース管理テーブル150の現確保メモリ量欄154または現確保CPU時間欄156の値を更新する(S44)。新たな割り当てがなされなければ(S42のN)、割り当て拒否としてプロセス32に対しエラーを返す(S62)。
実行空間20の現確保メモリ量または現確保CPU時間が要求に対し十分である場合(S56のY)、および、グローバルリソース管理部56へ割り当て要求を行い実行空間20に新たにメモリ量またはCPU時間を確保した場合(S42のY)、ローカルリソース管理部46は、S50においてプロセス32が要求した分だけのメモリ量またはCPU時間をプロセス32に割り当てる。具体的には、プロセスリソース管理テーブル160のうち、要求元のプロセス32に対応する現割り当てメモリ量欄164または現割り当てCPU時間欄166の欄を更新し(S58)、プロセス32に対し割り当て許可通知を送信するなどの割り当て処理を行う(S64)。プロセス32が要求に対する許可、不許可の結果を検知して(S66)、本割り当て処理は終了する。プロセス32への許可通知に係るS64およびS66のステップにおいては、実際にはメモリアドレスの通知やスケジュールの更新などの処理を適宜行ってよい。
図14および図15で説明したように、本実施の形態では、実行空間20に対するメモリ量およびCPU時間の割り当ては、あらかじめ設定された初期確保量、または追加リソース単位で行われる。そのため、実行空間20に割り当てられたメモリ量またはCPU時間は、要求元のプロセス32の要求値以上となり、発生した余剰分は実行空間20内でそのまま確保する。そして、次に当該実行空間20内のプロセス32においてメモリ量またはCPU時間が不足したときに、まず実行空間20内で確保したメモリ量またはCPU時間によって割り当てが可能であるか否かを確認する。可能であれば実行空間20内部の処理のみで割り当てを完了させることができる。そのため、実行空間20外部との通信回数が減り、かつ、割り当て要求に対応する処理の負荷を分散させることができる。結果として割り当て処理に係るオーバーヘッドを軽減することができる。
次に情報処理装置100のリソースのうち、デバイス62の割り当てを行う手続きについて説明する。デバイス62は、図6で示した実行空間初期化パラメータテーブル200Bには記述されていない。この場合は、情報処理装置100の起動時には実行空間20にメモリ量およびCPU時間のみを割り当ててプロセス32を生成し、後に各プロセス32からの要求によって実行空間20にデバイス62の割り当てを行うことになる。一方、起動時に実行空間20が確保すべきデバイス62のデバイスIDを実行空間初期化パラメータテーブル200Bに含めることにより、プロセス32の生成前に実行空間20にデバイス62をも割り当てるようにしてもよい。この場合は、以下に述べるデバイス62の割り当て手続きのうち、図18に示す、ローカルリソース管理部46からグローバルリソース管理部56への割り当て要求を先に行うことになる。以下では、プロセス32からローカルリソース管理部46への割り当て要求、ローカルリソース管理部46からグローバルリソース管理部56への割り当て要求、という順序で説明する。
図16はプロセス32に対してデバイス62を割り当てる際の手順を示すフローチャートである。この手順はプロセス32生成時にデバイス62を割り当てる場合、または処理の途中でデバイス62へのアクセスが必要となった場合に行われる。まずプロセス32は同じ実行空間20に属するローカルリソース管理部46に対し、デバイス62の割り当て要求を行う(S70)。要求には所要のデバイス62のデバイスIDが含まれる。ローカルリソース管理部46は所属する実行空間20内で処理されているプロセス32の割り当て要求を受け付ける。ここでは要求の授受を行う通信によって、要求元のプロセス32のプロセスID172が識別される。ローカルリソース管理部46はローカル名前管理部44に対しプロセスID172に基づき問い合わせを行い、要求元のプロセス32のプログラム認証IDを取得する(S72)。続いてローカルリソース管理部46は、プログラム認証IDに基づきプロセスリソース管理テーブル160を参照し、要求されたデバイス62のデバイスIDが要求元のプロセス32の利用可能デバイスID欄228に含まれているか確認を行う(S74)。含まれていなければ(S74のN)割り当て拒否としてプロセス32にエラーを返す(S78)。
要求されたデバイスIDが利用可能デバイスID欄228に含まれていた場合(S74のY)、ローカルリソース管理部46は続いてデバイス管理テーブルを参照し、要求されたデバイス62のアクセッサが存在するか確認する(S76)。デバイス管理テーブルは、以前に実行空間20に割り当てられたデバイス62のデバイスIDと、割り当て時に取得したアクセッサとを対応づけたテーブルである。ここでアクセッサとはデバイス62にアクセスするのに必要なパラメータおよびデータのセットのことであり、例えばデバイス操作を行うための専用の通信ハンドラーなどである。本実施の形態では実行空間20が一旦取得したデバイス62のアクセッサをそのまま確保しておくことにより、次に同じ実行空間20内のプロセス32が同一のデバイス62を必要とした際は、再度そのアクセッサを用いる。デバイス管理テーブルの構造例については後述する。
デバイス管理テーブルに、要求されたデバイス62のデバイスIDが存在しない場合は(S76のN)、過去に当該デバイス62へのアクセスが確立されなかったとして、ローカルリソース管理部46はグローバルリソース管理部56に対し、デバイス62の割り当て要求を行う(S80)。グローバルリソース管理部56はこの要求を受け付け、要求元の実行空間20への割り当てが可能であればローカルリソース管理部46に対しアクセッサを返し、不可能であればエラーを返す。グローバルリソース管理部56に対するデバイス割り当ての要求手続きについては図18で詳述する。ローカルリソース管理部46はグローバルリソース管理部56からアクセッサを取得したら(S82のY)、デバイスIDと取得したアクセッサとを対応づけてデバイス管理テーブルを更新する(S86)。アクセッサが取得できなければ(S82のN)、デバイス62の割り当て拒否としてプロセス32に対しエラーを返す(S84)。
プロセス32が要求したデバイス62のアクセッサが元々取得されていた場合(S76のY)、および、グローバルリソース管理部56へ要求して実行空間20に新たなアクセッサを取得した場合(S82のY)、ローカルリソース管理部46はプロセス32に対しアクセッサを通知する(S88)。そしてプロセス32がデバイス割り当て要求の許可または不許可の結果を検知して(S90)、一連の処理が終了する。割り当てが許可されたプロセス32は取得したアクセッサに基づき随時デバイス62にアクセスを行う。
図17は図16のS76において参照され、S86において更新される、デバイス管理テーブルの構造例を示す。デバイス管理テーブル250はデバイスID欄252およびアクセッサ欄254を含む。実行空間20にデバイス62の割り当てがなされると、当該デバイス62のデバイスIDがデバイスID欄252に、取得したアクセッサがアクセッサ欄254に記述される。したがってプロセス32が要求したデバイス62のデバイスIDがデバイスID欄252に存在すれば、そのデバイス62は当該実行空間20に割り当て済みであることがわかる。デバイス管理テーブル250はローカルリソース管理部46がローカルリソース管理テーブル150などとともに管理し、メモリ70などに格納される。
次に図16のS80からS86に示した、ローカルリソース管理部46によるデバイス割り当て確保の手続きについて詳述する。図18は実行空間20にデバイス62の割り当てを行う手順について示すフローチャートである。まずローカルリソース管理部46は、グローバルリソース管理部56に対し、デバイス62の割り当て要求を行う(S80)。このステップは図16のS80に対応する。要求には、要求するデバイス62のデバイスIDが含まれる。要求の授受を行う通信によって、要求元の実行空間20の実行空間暫定ID132が識別される。グローバルリソース管理部56はグローバル名前管理部54に対し実行空間暫定ID132に基づき問い合わせを行い、要求元の実行空間20の実行空間認証ID104を取得する(S92)。続いてグローバルリソース管理部56は、実行空間認証ID104に基づきグローバルリソース管理テーブル140を参照し、要求されたデバイス62のデバイスIDが要求元の実行空間20の利用可能デバイスID欄112Aに含まれているか確認を行う(S94)。含まれていれば(S94のY)、当該デバイス62にアクセスするためのアクセッサを生成し、ローカルリソース管理部46に与える(S96)。含まれていなければ、割り当て拒否としてローカルリソース管理部46にエラーを返す(S98)。
ローカルリソース管理部46は、グローバルリソース管理部56よりアクセッサを取得できればデバイス管理テーブル250を更新して(S86)終了する。アクセッサを取得できなかった場合(S82のN)はそのまま終了する。こうして実行空間20に対するデバイス割り当て処理を完了する。図18のS82およびS86は図16のS82およびS86と対応するステップである。なお、図18はローカルリソース管理部46からグローバルリソース管理部56へのデバイス割り当て要求の手続きを示しているため、S82のNおよびS86の次のステップを「終了」としているが、この手続きの前段階として、プロセス32からのデバイス割り当て要求がある場合は、図16に示したとおりプロセス32への結果通知を行う処理を続行する。
図16および図18に示したとおり本実施の形態では、一度アクセスを確立したデバイス62へのアクセッサを、実行空間20内でそのまま確保する。そして同実行空間20内のプロセス32が次にデバイス62へのアクセスを要求した際、まず実行空間20内で、当該デバイス62とのアクセスが以前に確立しているかを確認する。確立していれば、実行空間20内部の処理のみで割り当てを完了させることができる。そのため、メモリ量やCPU時間の場合と同様、実行空間20外部との通信回数が減り、かつ、割り当て要求に対応する処理の負荷を分散させることができる。結果として割り当て処理に係るオーバーヘッドを軽減することができる。
次に情報処理装置100のリソースのうち、ハードディスク82の容量を割り当てを行う手続きについて説明する。ハードディスク82もデバイス62と同様、図6で示した実行空間初期化パラメータテーブル200Bには記述されていない。したがって以下の説明では、プロセス32からの要求によってハードディスク82の容量割り当てを行う場合を述べる。一方、デバイス62同様、起動時に実行空間20が確保すべきハードディスク容量を実行空間初期化パラメータテーブル200Bに含め、プロセス32の生成前に実行空間20にハードディスク容量を割り当てるようにしてもよい。この場合は、以下に述べるハードディスク容量の割り当て手続きのうち、図21および図23に示す、ローカルリソース管理部46からグローバルリソース管理部56への割り当て要求を先に行うことになる。
図19はプロセス32に対してハードディスク容量を割り当てる際の手順を示すフローチャートである。この手順はプロセス32生成時にハードディスク容量を割り当てる場合、処理の途中でハードディスク82へのアクセスが必要となった場合、またはハードディスク容量が不足した場合に行われる。まずプロセス32は同じ実行空間20に属するローカルリソース管理部46に対し、ハードディスク容量の割り当て要求を行う(S100)。ローカルリソース管理部46は所属する実行空間20内で処理されているプロセス32の割り当て要求を受け付ける。ここでは要求の授受を行う通信によって、要求元のプロセス32のプロセスID172が識別される。ローカルリソース管理部46はローカル名前管理部44に対しプロセスID172に基づき問い合わせを行い、要求元のプロセス32のプログラム認証IDを取得する(S102)。続いてローカルリソース管理部46は、プログラム認証IDに基づきプロセスリソース管理テーブル160を参照し、要求元のプロセス32がハードディスク82の使用を許可されているかをハードディスク使用可否欄230にて確認する(S104)。ハードディスク82の使用が不可であった場合は(S104のN)、ローカルリソース管理部46はハードディスク82の割り当て拒否としてプロセス32にエラーを返す(S108)。
ハードディスク82の利用が可能であったら(S104のY)、ローカルリソース管理部46は続いてハードディスク管理テーブルを参照し、ハードディスク82のアクセッサが存在するか確認する(S106)。ハードディスク管理テーブルは、以前に実行空間20にハードディスク容量の割り当てがなされた際に取得したアクセッサを記憶したテーブルである。本実施の形態では実行空間20に一旦割り当てられたハードディスク領域へのアクセッサをそのまま確保しておくことにより、次に同じ実行空間20内のプロセス32がハードディスク82へのアクセスを必要とした際は、再度そのアクセッサを用いる。ハードディスク管理テーブルの構造例については後述する。
ハードディスク管理テーブルにハードディスク82へのアクセッサが存在しない場合、あるいはハードディスク管理テーブルそのものが存在しない場合(S106のN)、ローカルリソース管理部46はグローバルリソース管理部56に対し、ハードディスク82のマウント要求、および必要であればハードディスク容量の割り当て要求を行う(S110)。グローバルリソース管理部56はこの要求を受け付け、要求元の実行空間20に対し、必要ならハードディスク容量の割り当てを行い、ハードディスク82のマウントが完了すればローカルリソース管理部46に対し生成したアクセッサを返し、不可能であればエラーを返す。グローバルリソース管理部56に対するマウントおよび割り当て要求の手続きについては図21および図23で詳述する。ローカルリソース管理部46はグローバルリソース管理部56からアクセッサを取得したら(S112のY)、ハードディスク管理テーブルにアクセッサを書き込む(S114)。アクセッサが取得できなければ(S112のN)、ハードディスク容量の割り当て拒否としてプロセス32に対しエラーを返す(S116)。
プロセス32に割り当てるハードディスク領域へのアクセッサが元々取得されていた場合(S106のY)、および、グローバルリソース管理部56へ要求して新たなアクセッサを取得した場合(S112のY)、ローカルリソース管理部46はプロセス32に対しアクセッサを通知する(S118)。そしてプロセス32がハードディスク容量割り当て要求の許可または不許可の結果を検知して(S120)、一連の処理が終了する。割り当てが許可されたプロセス32は取得したアクセッサに基づき随時ハードディスク82にアクセスを行う。
図20は図19のS106において参照され、S114において更新される、ハードディスク管理テーブルの構造例を示す。ハードディスク管理テーブル260はハードディスクアクセッサ欄262を含む。実行空間20にハードディスク領域の割り当てがなされると、取得したアクセッサがハードディスクアクセッサ欄262に記述される。したがってハードディスクアクセッサ欄262にアクセッサが存在すれば、当該実行空間20にハードディスク82の領域が割り当て済みであることがわかる。ハードディスク管理テーブル260はローカルリソース管理部46がローカルリソース管理テーブル150やデバイス管理テーブル250などとともに管理し、メモリ70などに格納される。
次に図19のS110からS114に示した、ローカルリソース管理部46によるハードディスク82のマウントまたはハードディスク容量の割り当て要求の手続きについて詳述する。図21は実行空間20にハードディスク82のマウントを行う手順について示すフローチャートである。図19のS106において実行空間20がハードディスク82とのアクセスを確立していなかった場合(S106のN)、ローカルリソース管理部46はまず、グローバルリソース管理部56に対しハードディスク82のマウント要求を行う。これは、それまでの情報処理装置100による処理において、当該実行空間20にハードディスク容量の割り当てが行われていた場合に、ハードディスク82内の同一レコードにアクセスする必要があるためである。例えば進捗状況の情報をセーブして処理を終了したゲームを再開するために、セーブされた情報を読み出す場合がこれに相当する。このため、まず最初にマウント要求を行ってハードディスク82内に該当レコードがあるか確認し、あればその領域をマウントすることになる。
まずローカルリソース管理部46は、グローバルリソース管理部56に対し、ハードディスク82のマウント要求を行う(S130)。このステップは図19のS110のマウント要求に対応する。ここでは要求の授受を行う通信によって、要求元の実行空間20の実行空間暫定ID132が識別される。グローバルリソース管理部56はグローバル名前管理部54に対し実行空間暫定ID132に基づき問い合わせを行い、要求元の実行空間20の実行空間認証ID104を取得する(S132)。続いてグローバルリソース管理部56は、実行空間認証ID104に基づきハードディスク82内部に格納されているハードディスク内部管理テーブルを参照し、要求元の実行空間20に対応するレコードが存在するか確認を行う(S134)。ハードディスク内部管理テーブルは、実行空間20に割り当てられたハードディスク領域の容量と、その先頭アドレスとを、実行空間認証ID104に対応づけたテーブルである。前述のとおり、実行空間20内の各プロセス32は情報処理装置100の電源のオン/オフに関わらず、同一レコードにアクセスする必要があるため、ハードディスク内部管理テーブルは情報処理装置100の電源をオフしても失われることのないように、ハードディスク82自体に格納される。ハードディスク内部管理テーブルの構造例については後述する。
ハードディスク内部管理テーブルに、対応するレコードが存在する場合は(S134のY)、当該領域にアクセスするためのアクセッサを生成し、ローカルリソース管理部46に与える(S136)。存在しなければ(S134のN)、ローカルリソース管理部46に対し、実行空間20へのハードディスク容量の割り当てが行われていない旨の通知を行う(S138)。
ハードディスク容量の未割り当て通知を受け取らなかったら(S140のN)、ローカルリソース管理部46はグローバルリソース管理部56が生成したアクセッサを取得し(S142)、ハードディスク管理テーブル260にアクセッサを書き込む(S114)。このステップは図19のS114に対応する。一方、ローカルリソース管理部46が、ハードディスク82の未割り当て通知を受け取った場合は(S140のY)、ハードディスク容量の割り当てのための処理を行う(S144)。このステップは実際にはローカルリソース管理部46とグローバルリソース管理部56との協働で行われるが、具体的な手順については図23に示し、図21ではわかり易さのためにひとつのステップで示している。
S144のハードディスク容量割り当て処理の結果、実行空間20にハードディスク容量が割り当てられたら(S146のY)、ローカルリソース管理部46は再度ハードディスク82のマウント要求を行う(S130)。その後は上述と同様の手順を経て、最終的にローカルリソース管理部46は、ハードディスク82へアクセスするためのアクセッサをグローバルリソース管理部56から取得する。ハードディスク容量の割り当てがなされなかった場合は(S146のN)、一連の手続きを終了する。ここでS114およびS146のNの後の「終了」としたステップは、ハードディスク82のマウントに係る手続きを終了したことを意味しており、この手続きの前段階として、プロセス32からのハードディスク容量割り当て要求がある場合は、図19に示したとおりプロセス32への結果通知を行う処理を続行する。具体的には、S114のステップの後は図19のS114のステップの後と同様、アクセッサの通知処理を行う(S118)。一方S146のNの後は、アクセッサが取得できなかったとして、図19のS116に示すとおり割り当て拒否のエラーをプロセス32に返す。
図22は図21のS134において参照されるハードディスク内部管理テーブルの構造例を示す。ハードディスク内部管理テーブル270は、実行空間認証ID欄104A、割り当て済み容量欄272、および先頭アドレス欄274を含む。実行空間認証ID欄104Aには、ハードディスク容量を割り当て済みの実行空間20の実行空間認証ID104が、割り当て済み容量欄272には、各実行空間20に割り当てたハードディスク領域の容量が、先頭アドレス欄274には各実行空間20に割り当てたハードディスク領域の先頭アドレスが記述される。実行空間20にハードディスク容量の新規割り当てを行った場合は、ハードディスク内部管理テーブル270の行が追加され、ハードディスク容量を追加で割り当てた場合は割り当て済み容量欄272などが適宜更新される。ハードディスク内部管理テーブル270は前述のとおり、ハードディスク82内に格納される。なおハードディスク内部管理テーブル270には、ハードディスク82の領域管理を行うための、先頭アドレス以外のパラメータを含めてよい。
図23は実行空間20へのハードディスク容量の割り当て処理の手順について示すフローチャートである。この処理は、図21に示したように、先にマウント処理の試行を行ってからS144のステップとして行ってもよいし、単独で実行し、後から図21のマウント処理を行ってもよい。後者は、新規ソフトウェア起動時の初期処理のように、あらかじめハードディスク容量の割り当てが行われていないことがわかっている場合に行われる。また、すでに割り当てられたハードディスク容量があるが、追加で割り当てが必要となった場合も、本図のハードディスク容量割り当て処理をまず行う。
まずローカルリソース管理部46は、グローバルリソース管理部56に対し、ハードディスク82の割り当て要求を行う(S150)。このステップは図19のS110の割り当て要求に対応する。要求の授受を行う通信によって、要求元の実行空間20の実行空間暫定ID132が識別される。グローバルリソース管理部56はグローバル名前管理部54に対し実行空間暫定ID132に基づき問い合わせを行い、要求元の実行空間20の実行空間認証ID104を取得する(S152)。続いてグローバルリソース管理部56は、実行空間認証ID104に基づきハードディスク82内部に格納されているハードディスク内部管理テーブル270を参照し、要求元の実行空間20に対応するレコードが存在するか確認を行う(S154)。本図のハードディスク容量割り当て処理を、図21に示したマウント処理の一部として行う場合、図23のS152およびS154は図21のS132およびS134と同じ処理のため、適宜省略してよい。
該当レコードが存在する場合、すなわちローカルリソース管理部46からの要求が、ハードディスク容量の追加割り当て要求であった場合は(S154のY)、同じハードディスク内部管理テーブル270を参照し、要求元の実行空間20に割り当て済みの容量を、割り当て済み容量欄272より取得する(S156)。次にグローバルリソース管理部56はグローバルリソース管理テーブル140のハードディスク容量上限欄114Aから、要求元の実行空間20の、ハードディスク容量の割り当て上限を取得し、割り当て済みの容量が割り当て上限未満であるか確認する(S158)。割り当て済みの容量が割り当て上限以上であった場合(S158のN)、それ以上の割り当てはできないため、割り当て拒否としてローカルリソース管理部46に対しエラーを返す(S160)。
要求元の実行空間20に割り当て済みのハードディスク容量が割り当て上限未満であった場合(S158のY)、または、ローカルリソース管理部46からの割り当て要求が新規であった場合(S154のN)、グローバルリソース管理部56はハードディスク82内に格納されている空き容量管理テーブルを参照し、割り当てられる空き容量がハードディスク82に残っているかを確認する(S162)。空き容量管理テーブルは、ハードディスク82の空き領域の容量と空き領域の先頭アドレスを記述したテーブルであり、ハードディスク内部管理テーブル270とともにハードディスク82内に格納される。空き容量管理テーブルの構造例については後述する。割り当てられる容量がハードディスク82に残っていなかったら(S162のN)、グローバルリソース管理部56は割り当て拒否としてローカルリソース管理部46に対しエラーを返す。割り当てられる容量が存在したら(S162のY)、割り当てる領域を決定し、ローカルリソース管理部46にその情報を通知するなどの割り当て処理を行う(S166)。割り当てる容量は、ローカルリソース管理部46が割り当て要求に含めてもよいし、グローバルリソース管理部56において適宜決定してもよい。続いてグローバルリソース管理部56は、ハードディスク82にアクセスを行い、ハードディスク内部管理テーブル270および空き容量管理テーブルに含まれるパラメータのうち変更したパラメータを更新する(S168)。
ローカルリソース管理部46は、グローバルリソース管理部56から送信される、割り当てられたハードディスク容量に関する情報またはエラーを検知し(S170)、一連の処理を終了する。ここで「終了」とはハードディスク容量の割り当て処理の終了を意味している。したがって、図21のS144、すなわちマウント処理の一部として本図の処理を行った場合は、「終了」に変わり図21のS146の割り当て完了の判定を行い、割り当てが行われている場合は(S146のY)、S130のマウント要求を引き続き行う。単独で本図のハードディスク容量割り当て処理を行った場合も、割り当てが成功した場合は図21のマウント処理を行う。そしてグローバルリソース管理部56において生成されたアクセッサをローカルリソース管理部46が取得することによって、実行空間20のハードディスク82へのアクセスが確立する。
図24は図23のS162で参照され、S168で更新される、空き容量管理テーブルの構造例を示している。空き容量管理テーブル280は、空き容量欄282および先頭アドレス欄284を含む。空き容量欄282にはハードディスク82の空き領域の容量が、先頭アドレス欄284には空き領域の先頭アドレスが記述される。空き容量管理テーブル280は、実行空間20に対しハードディスク容量の割り当てが行われた際、適宜更新される。なお空き容量管理テーブル280には、ハードディスク82の領域管理を行うための、先頭アドレス以外のパラメータを含めてよい。
図19、図21、および図23に示したとおり本実施の形態では、一度アクセスを確立したハードディスク82へのアクセッサを、実行空間20内でそのまま確保する。そして同実行空間20内のプロセス32が次にハードディスク82へのアクセスを要求した際、まず実行空間20内で、以前にアクセスが確立しているかを確認する。確立していれば、実行空間20内部の処理のみで割り当てを完了させることができる。そのため、メモリ量やCPU時間、デバイスの場合と同様、実行空間20外部との通信回数が減り、かつ、割り当て要求に対応する処理の負荷を分散させることができる。結果として割り当て処理に係るオーバーヘッドを軽減することができる。
以上の処理により各実行空間20および各プロセス32へ割り当てられたリソースは、実行空間20またはプロセス32が消滅した際に、グローバルリソース管理部56またはローカルリソース管理部46に返却される。ここで「消滅」とは、例えばあるゲームプレイが終了し、それを実行していた実行空間20が不要となったり、ゲーム内であるステージが終了した際、そのステージを処理していたプログラムが終了となる等の場合に相当する。リソースの「返却」処理は、まずグローバルリソース管理部56またはローカルリソース管理部46が、実行空間20またはプロセス32が消滅したことを検知する。そしてそれぞれ、グローバルリソース管理テーブル140またはプロセスリソース管理テーブル160から、消滅した実行空間20またはプロセス32に対応する行を削除する。さらにハードディスク内部管理テーブル270や空き容量管理テーブル280を適宜更新するなどして、返却されたリソースを他の実行空間20や他のプロセス32に割り当て可能な状態とする。
また、実行空間20に割り当てられたリソースのうち、上述のようにプロセス32が消滅するなどして余剰となり、所定の期間使用されなかったリソースは、実行空間20からグローバルリソース管理部56へ返却するようにしてもよい。図25はこのような場合に実行空間20に割り当てられたリソースを返却する処理の手順を示すフローチャートである。ローカルリソース管理部46は、対応する実行空間20に割り当てられ、プロセス32に割り当てられていない状態のリソース、すなわち余剰リソースの時間変化を監視する(S180)。余剰リソースは、ローカルリソース管理テーブル150、デバイス管理テーブル250、およびハードディスク管理テーブル260と、プロセスリソース管理テーブル160との差分から取得できる。そしてあるリソースが所定の期間余剰リソースの状態であり続けた場合、それを不使用リソースと判定し(S182のY)、当該不使用リソースの返却を行う旨の通知をグローバルリソース管理部56に対して行う(S184)。リソースがメモリ容量またはCPU時間の場合、S182の判定は所定量以上のリソースが所定の期間余剰リソースであり続けることを条件とし、条件を満たす場合は当該所定量を返却する。ここで所定の期間や所定量は、ソフトウェアごとにその作成段階で設定してよい。
ローカルリソース管理部46はさらにローカルリソース管理テーブル150、デバイス管理テーブル250、またはハードディスク管理テーブル260のうち返却したリソースに対応する管理テーブルから返却分を削除する(S186)。グローバルリソース管理部56はグローバルリソース管理テーブル140、ハードディスク内部管理テーブル270、または空き容量管理テーブル280のうち返却されたリソースに対応する管理テーブルを適宜更新する(S188)。なお、S180の余剰リソース監視のステップは、実行空間20が存在する間は続けられる(S182のN)。また不使用リソースの返却がなされた後も別のリソースの監視は続行する。以上の手順により、実行空間20に割り当てられたリソースは使用状況によっては返却され、他の実行空間に使用可能となるため、リソース割り当ての無駄が抑えられ、より効率的なリソース使用が実現できる。
これまでの説明で行われるリソース割り当て処理は、システム初期化パラメータ102において設定された、情報処理装置100の起動時に生成すべき実行空間20、およびそれに属するプロセス32に対して行われた。以下では、システム初期化パラメータ102で設定した各種パラメータを、情報処理装置100の起動後に変更する場合について説明する。具体的には実行空間20の追加、実行するプログラムの追加、リソースの追加、およびリソースの割り当て制限の変更を行った場合について説明する。
情報処理装置100の起動後に実行空間20を追加する場合とは、例えばユーザがゲームを行っている最中に、ウェブブラウザを立ち上げた場合などである。このときはグローバル初期化部52に対し、追加起動実行空間パラメータを与える。これは例えば、ユーザの入力によりウェブブラウザの実行要求を検知したグローバル初期化部52が、外部記憶装置80に格納されたウェブブラウザのソフトウェアのファイルから、該当パラメータをメモリ70に読み出すことにより行われる。図26は追加起動実行空間パラメータを記述する、追加起動実行空間パラメータテーブルの構造例を示す。追加起動実行空間パラメータテーブル300は、図5に示したシステム初期化パラメータテーブル102Aと同じ構造を有する。ただしそれぞれの欄には、追加される実行空間20についての値のみが記述される。
グローバル初期化部52は、読み込んだ追加起動実行空間パラメータテーブル300に含まれる各パラメータに基づき、図3のS12からS18の処理、すなわち情報処理装置100の起動時にグローバル初期化部52が行うのと同様の処理を行う。ただし実行空間名前テーブル130およびグローバルリソース管理テーブル140は情報処理装置100の起動時に既に作成されているため、S16およびS18のステップは、それぞれのテーブルに、追加する実行空間20に対応する行を追加する処理となる。そして追加で起動した実行空間20においてローカル初期化部42は、同じく図3のS20からS28の処理、すなわち情報処理装置100の起動時にローカル初期化部42が行うのと同様の処理を行う。ただしローカルリソース管理テーブル150、プロセス名前テーブル170、およびプロセスリソース管理テーブル160は情報処理装置100の起動時に既に作成されているため、S22、S26、およびS28のステップは、それぞれのテーブルに、追加する実行空間20に含まれるプロセス32に対応する行を追加する処理となる。その後は、情報処理装置100の起動時に生成された実行空間20と同様に、そのリソース管理がなされる。
情報処理装置100の起動後に、生成済みの実行空間20にプロセス32を追加する場合とは、例えばユーザがゲームを行っているときに、最初は音声なしの設定にしていたものを、途中から音声有りの設定に変更した場合などである。このときはローカル初期化部42に対し、追加するプロセス32のプログラムファイルを与える。これは例えば、実行空間20を制御するOSによる指示やユーザの入力などにより、新たなプロセス32の実行要求を検知したローカル初期化部42が、外部記憶装置80などに格納されたソフトウェアのファイルから該当するプログラムファイルをメモリ70に読み出すことにより行われる。上記の例では、ユーザの入力により音声処理の実行要求を検知したローカル初期化部42が、ゲームのファイルから音声処理プログラムのプログラムファイルを読み出す。プログラムファイルの構造は、図8に示したプログラム情報テーブル222Aと同じである。
ローカル初期化部42は、読み込んだプログラムファイルに基づき、図3のS24からS28の処理、すなわち情報処理装置100の起動時にローカル初期化部42が行う処理の一部と同様の処理を行う。ただし実行空間20を追加する場合と同様、プロセス名前テーブル170およびプロセスリソース管理テーブル160には、追加するプロセス32に対応する行を追加する。その後は、実行空間20に元々存在したプロセス32と同様に、リソース管理がなされる。
情報処理装置100の起動後にリソース自体を追加する場合とは、例えばユーザがカーレースのゲームを行っているときに、最初はボタン式のコントローラを使用していたものを、途中からハンドル式のコントローラに変更した場合などである。このときはグローバル初期化部52に対し追加リソース情報を与える。これは例えば、ユーザの入力などによりリソースの変更を検知したグローバル初期化部52が、外部記憶装置80などに格納されたソフトウェアのファイルから該当する情報をメモリ70に読み出すことにより行われる。上記の例では、コントローラの変更を検知したグローバル初期化部52が、ゲームのファイルからハンドル式コントローラの追加リソース情報を読み出す。または、リソースを追加した際に当該リソースを制御するOSに対しユーザが設定した情報を、リソース追加を検知したグローバル初期化部52が読み出すことにより行われる。または、リソース追加を検知したグローバル初期化部52が、ユーザに対して設定入力を促すことによって追加リソース情報を直接取得するようにしてもよい。
図27は追加リソースとしてデバイス62を追加した場合の、追加リソース情報の構造例を示している。追加デバイス情報テーブル310は、実行空間認証ID欄104Aおよびデバイス利用可否欄312を含む。この例は、「0x14」なるデバイスIDを有するデバイス62を追加した場合を示している。各実行空間20が当該デバイス62を利用できるか否かを識別する文字列が、デバイス利用可否欄312に記述される。本図の場合、「○」がデバイス利用可、「×」がデバイス利用不可を示している。図28は追加リソースとしてメモリ量を追加した場合の、追加リソース情報の構造例を示している。追加メモリ量情報テーブル320は、実行空間認証ID欄104Aおよび追加メモリ量欄322を含む。メモリ量を追加することによって、各実行空間20に対する割り当てメモリ量上限を増加させることができる。追加メモリ量欄322には、各実行空間20に対するメモリ量の上限の増加分が記述される。
グローバル初期化部52は追加リソース情報テーブルに基づき、グローバルリソース管理テーブル140を更新する。例えばデバイス62の追加であれば、追加デバイス情報テーブル310に基づき、グローバルリソース管理テーブル140の利用可能デバイスID欄112Aに、追加したデバイス62のデバイスIDを追加する。メモリ容量の追加であれば、追加メモリ量情報テーブル320に基づき、グローバルリソース管理テーブル140のメモリ量上限欄108Aに増加分を加算する。同様の追加リソース情報テーブルを、各プログラムに対しても設定し、それをローカル初期化部42が読み出すことにより、プロセスリソース管理テーブル160に反映させてもよい。グローバルリソース管理テーブル140またはプロセスリソース管理テーブル160の更新後は、各実行空間20または各プロセス32にリソースを割り当てる際、更新された各テーブルによって割り当て可否が判定される。
情報処理装置100の起動後に、実行空間20またはプロセス32に対するリソース割り当て制限の変更を行う場合とは、例えばユーザがゲームを行っているときに、最初は標準的な画素数の画像表示設定だったものを、高精細画像設定に切り替えたため、割り当てるメモリ量の上限を増加させる場合などである。このときはグローバルリソース管理部56またはローカルリソース管理部46に対し、利用可能リソース変更情報を与える。これは例えば、ユーザの入力などにより画像品質などの設定の変更を検知したグローバル初期化部52が、外部記憶装置80などに格納されたソフトウェアのファイルから設定後の状況に対応する利用可能リソース変更情報をメモリ70に読み出すことにより行われる。または、画像品質の設定変更などを行った際、ユーザに利用可能リソース変更情報の設定入力を促してもよい。または、別の実行空間20の生成や停止を検知したシステム制御部50が、あらかじめ設定しておいた実行空間20ごとの優先度などに基づき利用可能リソース変更情報を自ら生成するようにしてもよい。
図29はグローバルリソース管理部56が取得する利用可能リソース変更情報の構造例を示す。グローバルリソース変更情報テーブル330は、実行空間認証ID欄104A、メモリ量上限追加量欄332、CPU時間上限追加量欄334、利用可能追加デバイスID欄336、およびハードディスク容量上限追加量欄338を含む。これらの欄は、図10に示したグローバルリソース管理テーブル140の、実行空間認証ID欄104A、メモリ量上限欄108A、CPU時間上限欄110A、利用可能デバイスID欄112A、およびハードディスク容量上限欄114Aにそれぞれ対応する。グローバルリソース変更情報テーブル330には、グローバルリソース管理テーブル140に記述された、各実行空間20に対するメモリ量上限、CPU時間上限、利用可能デバイスID、およびハードディスク容量上限からの変化分が記述される。各値の先頭に「+」または「−」を付加することにより、それぞれのリソースの追加または減縮を識別する。グローバルリソース管理部56は、グローバルリソース変更情報テーブル330に基づき、グローバルリソース管理テーブル140を更新する。その後は、各実行空間20にリソースを割り当てる際、更新されたグローバルリソース管理テーブル140によって、割り当て可否が判定される。
図30はローカルリソース管理部46が取得する利用可能リソース変更情報の構造例を示す。ローカルリソース変更情報テーブル340は、プログラム認証ID欄224、メモリ量上限追加量欄342、利用可能追加デバイスID欄344、およびハードディスク使用可否欄230を含む。これらの欄は、図12に示したプロセスリソース管理テーブル160の、プログラム認証ID欄224、メモリ量上限欄226、利用可能デバイスID欄228、およびハードディスク使用可否欄230にそれぞれ対応する。ローカルリソース変更情報テーブル340には、プロセスリソース管理テーブル160に記述された、各プロセス32に対する割り当てメモリ量上限と利用可能デバイスIDからの変化分、およびハードディスク使用の可否が記述される。メモリ量上限および利用可能デバイスIDの先頭に「+」または「−」を付加することにより、それぞれのリソースの追加または減縮が識別される。ローカルリソース管理部46は、ローカルリソース変更情報テーブル340に基づき、プロセスリソース管理テーブル160を更新する。その後は、各プロセス32にリソースを割り当てる際、更新されたプロセスリソース管理テーブル160によって、割り当て可否が判定される。
次に実行空間認証ID104およびプログラム認証IDの構成例について説明する。実行空間認証ID104およびプログラム認証IDは、どちらも16ビットから64ビット程度の所定のデータ量を有し、それぞれ所定の複数のフィールドによって構成される。実行空間認証ID104は例えば、バージョン情報フィールド、機種情報フィールド、リージョンコードフィールド、実行空間OS情報フィールド、ベンダ情報フィールドなどによって構成される。バージョン情報フィールドはIDの体系のバージョン情報などを表す。製品情報フィールドはソフトウェアを実行する情報処理装置100の機種などを表す。リージョンコードフィールドはソフトウェアのリージョンコードを表す。実行空間OS情報フィールドはソフトウェアの実行制御を行うため実行空間20にて起動されるOS情報などを表す。ベンダフィールドは実行主体となるソフトウェアの製造会社などを表す。機種情報フィールド、実行空間OS情報フィールド、およびベンダ情報フィールドに設定されるコードを標準化して一元管理することにより、実行空間認証ID104は一意的に定められる。
プログラム認証IDは例えば、バージョン情報フィールド、リージョンコードフィールド、ベンダ情報フィールド、プログラム識別コードフィールドなどによって構成される。バージョン情報フィールド、リージョンコードフィールド、およびベンダ情報フィールドは実行空間認証ID104について上述したのと同様のフィールドである。プログラム識別コードフィールドはソフトウェアの製造会社においてプログラムを識別するためのフィールドであり、製造会社において管理される。これにより、プログラム認証IDも一意的に定めることができる。
以上述べた本実施形態において、プロセス32が行うリソースの割り当て要求は、まず同一の実行空間20におけるローカルリソース管理部46に対して行われる。ローカルリソース管理部46は、図15、図16および図19に示したように、まず、要求発行元のプロセス32のプログラム認証IDを取得する(S52、S72、およびS102)。そしてプログラム認証IDに基づいて取得した割り当て制限の範囲内でのみ、リソースの割り当てを許可する(S54、S74のY、およびS104Y)。したがって不正者が生成したプロセス(以下、不正プロセスと呼ぶ。)が過剰にリソース割り当てを要求しても、制限以上の割り当ては拒否されるため、正常に処理されている他のプロセス32および他の実行空間20には影響が及ばない。ここで不正者とはネットワーク経由の侵入、コンピュータウィルス、不正部分を含むプログラムなどの不正要因のことである。
さらに不正プロセスが実行空間20の制御プロセス、例えばローカルリソース管理部46に成りすましたとしても、本実施の形態の構成によれば不正プロセスによるリソースの占有などを防止でき、結果として、不正プロセスが他の実行空間20に及ぼす悪影響を最小限に止めることができる。以下にそのメカニズムについて説明する。
まず、ある実行空間20のローカルリソース管理部46に成りすました不正プロセスが、グローバルリソース管理部56にリソース割り当て要求を行った場合を考える。図14、図18および図23に示したとおり、グローバルリソース管理部56は、要求発行元の実行空間20の実行空間認証ID104を取得する(S32、S92、およびS152)。ここで実行空間認証ID104は、要求受信時に自動的に識別される実行空間暫定ID132に基づき取得される。したがって、不正プロセスが別の実行空間20のローカルリソース管理部46に成りすますことはできない。そして実行空間認証ID104ごとにあらかじめ設定されている割り当て制限の範囲内でのみ、割り当てを許可する(S34のY、S94のY、またはS158のY)。したがって不正プロセスが過剰なリソース割り当て要求を行っても、制限範囲内でのリソース確保しかできず、正常に動作している他の実行空間20などに対する影響が少ない。
さらに不正プロセスの動作として、他の実行空間20のローカルリソース管理部46に対し不正なリソース割り当て要求を行う場合が考えられる。これは、ローカルリソース管理部46の機能、すなわち、同じ実行空間20内のプロセス32からの要求に対し、実行空間20内に確保しておいたリソースを充当する機能を利用した不正が考えられるためである。そのため本実施の形態では、ローカルリソース管理部46が、所属する実行空間20内部の通信による要求のみを受け付けるように設定する。不正プロセスが他の実行空間20のローカルリソース管理部46に発行したりソース割り当て要求は、実行空間20をまたいだ通信によるため、上述の設定によって該要求は無視される。したがって、不正プロセスが他の実行空間20に割り当てられたリソースを横取りするのを防止することができる。
さらに不正プロセスが、デバイス62、ハードディスク82またはOSなどの低レベルの機能に直接リソース割り当ての要求を行う場合が考えられる。そのため本実施の形態では、このような低レベルに属する機能が、グローバルリソース管理部56からの所定の通信による要求のみを受け付けるように設定を行う。例えばカーネル内部の通信による要求のみを受け付けるようにする。そして各実行空間20内で処理されているプロセス32は、この通信を行えないように設定しておく。これにより、低レベル機能に対する不正プロセスのリソース割り当て要求は不可能となり、不正プロセスが過剰にリソースを確保するのを防止することができる。
さらに安全性を高めるため、リソース割り当て可否の判定の根拠となるテーブルの改ざんを防止する方策を付加してもよい。具体的には、システム初期化パラメータテーブル102A、実行空間初期化パラメータテーブル200B、起動プログラムリストテーブル220B、プログラムファイル、追加起動実行空間パラメータテーブル300、グローバルリソース変更情報テーブル330、ローカルリソース変更情報テーブル340などに対して改ざん防止策を講じる。例えばこれらのテーブルに対して電子署名またはMAC(Message Authentication Code)を施す。これにより、リソース割り当てに関する設定そのものを改ざんされることによって、不正な割り当て可否判定が行われるのを防止することができ、不正プロセスによる過剰なリソース確保に対する安全性が増す。
以上述べた本実施の形態によれば、実行空間に固有のIDである実行空間認証IDを設定し、実行空間認証IDごとにリソース割り当ての制限を設ける。これにより、不正プロセスがローカルリソース管理部など実行空間を制御するプロセスに成りすまし、リソース割り当てを要求したとしても、制限以上の割り当てを行うことがないため、他の実行空間に割り当てるべきリソースを占有されることがなくなる。また、本実施の形態では、プロセス単位および実行空間単位の2段階でリソース割り当ての可否判定を行う。実行空間ごとにリソース割り当て可否の判定を行う際、要求元の実行空間認証IDは、要求の授受に使用した通信によって識別される実行空間暫定IDによって自動的に判明する。したがって例えば同じプログラムが2つの実行空間で処理されていて、一方のプログラムを処理するプロセスが不正プロセスになったとしても、他方のプログラムを処理するプロセスに成りすますことはできない。たとえ不正プロセスが所属する実行空間のローカルリソース管理部に成りすましたとしても、他の実行空間のローカルリソース管理部に成りすますことはできない。結果として、不正プロセスがリソースを確保できる範囲は、最大でも所属する実行空間へのリソース割り当て上限までとなり、他の実行空間に対する影響を抑制することができる。
また本実施の形態では、メモリ量やCPU時間を各実行空間に余分に確保しておく。また一度アクセスを確立したデバイスやハードディスクのアクセッサは、プロセスによるアクセスが終了しても実行空間にそのまま確保しておく。これにより、プロセスがリソースの割り当て要求を行った際、実行空間に確保したりソースで充足すれば実行空間内部で割り当て処理が完了するため、全体として実行空間外部との通信回数が減り、かつ、割り当て要求に対応する処理の負荷を分散させることができる。結果として割り当て処理に係るオーバーヘッドを軽減することができる。一方で、所定期間、使用のなかったリソースは実行空間から返却されるため、割り当ての無駄を抑制し、効率のよいリソース利用が実現される。
さらに本実施の形態におけるリソース管理処理は、ソフトウェアファイルなどに含まれる情報を読み込むことによって自動的に実行される。また、情報処理装置の起動後にリソース関連の設定に変更が生じても、変更後の状況を表す基本的なパラメータをソフトウェアファイルなどから追加で読み込むだけで、変更前からの移行が円滑に行われる。したがってユーザは本実施の形態の処理をことさら意識せずとも、安全かつ効率的なリソース管理を臨機応変に行うことができる。
以上、本発明を実施の形態をもとに説明した。上記実施の形態は例示であり、それらの各構成要素や各処理プロセスの組合せにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。
例えば本実施の形態ではグローバル初期化部52、グローバル名前管理部54、グローバルリソース管理部56の機能が、アプリケーションのプログラムを処理する実行空間20より低レベルに属するシステム制御部50に含まれていたが、実行空間20と同じレベルに制御用の実行空間を発生させ、上述の機能を制御用の実行空間において実現するようにしてもよい。この場合も、本実施の形態と同様の効果を得ることができる。
また、あるゲームの専用コントローラなど、特定の実行空間のみがアクセスすることが明らかなデバイスは、不正プロセスに占有されたとしても他の実行空間への影響はない。また、他の実行空間の使用可能デバイスには含まれないため、他の実行空間の不正プロセスがこのデバイスを占有することはできない。したがって本実施の形態で説明した2段階の割り当て可否判定を行う必要がない。このような場合は、ローカルリソース管理部46における割り当ての判定処理を省略してもよい。このときプロセス32から割り当て要求を受け付けたローカルリソース管理部46は、要求元のプロセス32のプログラム認証IDとともにグローバルリソース管理部56に割り当て要求を行う。そしてグローバルリソース管理部56が、ローカルリソース管理部46より送られたプログラム認証IDと、要求元の実行空間20の実行空間認証ID104とに基づき、要求元のプロセス32に対する割り当て可否の判定を直接行うようにしてもよい。このように、リソースの性質に応じて割り当て可否判定の階層を変化させることによって、本実施の形態と同様の安全性を確保しつつ、より効率のよい判定処理を行うことができる。
10 プロセッサ、 20 実行空間、 30 プロセス処理部、 32 プロセス、 40 実行空間制御部、 42 ローカル初期化部、 44 ローカル名前管理部、 46 ローカルリソース管理部、 50 システム制御部、 52 グローバル初期化部、 54 グローバル名前管理部、 56 グローバルリソース管理部、 60 入出力装置、 62 デバイス、 70 メモリ、 80 外部記憶装置、 82 ハードディスク、 100 情報処理装置 102 システム初期化パラメータ、 104 実行空間認証ID、 130 実行空間名前テーブル、 132 実行空間暫定ID、 140 グローバルリソース管理テーブル、 150 ローカルリソース管理テーブル、 160 プロセスリソース管理テーブル、 170 プロセス名前テーブル、 172 プロセスID。