(58)【調査した分野】(Int.Cl.,DB名)
アプリケーションプラットフォーム上にインストールされたそれぞれのアプリケーションから使用リソース宣言量を受信し、アプリケーション毎に前記使用リソース宣言量を保持する保持手段と、
アプリケーションからリソース取得APIが呼び出されたことに応じて、前記アプリケーションが使用しているリソース量が前記使用リソース宣言量を超えているか否かを判定し、前記使用リソース宣言量を超えていると判定された場合は、前記アプリケーションに対してその旨を引き渡し、超えていないと判定された場合は、前記アプリケーションプラットフォームに対してリソース生成を要求し、当該要求に応じて生成されたリソースオブジェクトを引き渡すリソース管理手段と、
前記リソース管理手段と前記それぞれのアプリケーションとの間のインターフェースサービス手段と
を有し、
前記インターフェースサービス手段は、前記リソース管理手段が稼働している場合には前記リソース管理手段に対する参照を登録し、前記リソース管理手段が停止された場合には前記参照の登録を解除し、前記アプリケーションから前記リソース取得APIが呼び出されたことに応じて、前記リソース管理手段に対する参照が登録されていれば、前記アプリケーションからの前記リソース取得APIの呼び出しを前記リソース管理手段へとリダイレクトし、前記リソース管理手段に対する参照の登録が解除されていれば、前記アプリケーションプラットフォームに対してリソース生成を要求し、当該要求に応じて生成されたリソースオブジェクトを引き渡すことを特徴とする画像形成装置。
前記リソース管理手段は、前記リソース取得APIが呼び出されたことに応じて、前記それぞれのアプリケーションが使用しているリソース量の総計が、前記アプリケーションプラットフォームにより提供できるリソース量の上限を超えているか否かを更に判定し、前記それぞれのアプリケーションが使用しているリソース量の総計が、前記アプリケーションプラットフォームにより提供できるリソース量の上限を超えていると判定された場合には、前記アプリケーションに対してその旨を引き渡すことを特徴とする請求項1または2に記載の画像形成装置。
前記リソース管理手段はさらに、前記アプリケーションによるリソースの解放処理に応じて、指定されたリソースを解放し、解放したリソースの量を前記保持手段により保持された前記リソースの使用量から減じることを特徴とする請求項2又は3に記載の画像形成装置。
前記リソース管理手段はさらに、前記アプリケーションによるリソースの使用に応じて、リソースの使用により消費されるリソース量を加えた当該リソースの使用量が、前記使用リソース宣言量を超えていない場合には、前記アプリケーションによるリソースの使用に応じてリソースを使用し、超えている場合にはその旨を前記アプリケーションに引き渡すことを特徴とする請求項1乃至4のいずれか一項に記載の画像形成装置。
前記インターフェースサービス手段はさらに、前記リソース管理手段に対する参照の登録が解除されていれば、前記生成されたリソースオブジェクトで使用されたリソースの使用量の総計をアプリケーションごとに保持する手段を更に有し、
前記リソース管理手段は、稼働を再開した際には、前記保持されたリソースの使用量の総計を加えた現在のリソースの使用量が、前記使用リソース宣言量を超えているか否かを判定し、前記使用リソース宣言量を超えていると判定された場合は、前記アプリケーションに対してその旨を引き渡すことを特徴とする請求項1乃至5のいずれか一項に記載の画像形成装置。
前記インストール手段は、前記リソース管理手段を実現するためのプログラムのインストールに際して、前記インターフェースサービス手段を実現するためのより新しいプログラムをインストールすることを特徴とする請求項7に記載の画像形成装置。
前記リソース管理手段は、ファイルリソース、ソケットリソース、スレッドリソースの少なくともいずれかを含むことを特徴とする請求項1乃至8のいずれか一項に記載の画像形成装置。
アプリケーションプラットフォーム上にインストールされたそれぞれのアプリケーションから使用リソース宣言量を受信し、アプリケーション毎に前記使用リソース宣言量を保持する保持手段と、
アプリケーションからリソース取得APIが呼び出されたことに応じて、前記アプリケーションが使用しているリソース量が前記使用リソース宣言量を超えているか否かを判定し、前記使用リソース宣言量を超えていると判定された場合は、前記アプリケーションに対してその旨を引き渡し、超えていないと判定された場合は、前記アプリケーションプラットフォームに対してリソース生成を要求し、当該要求に応じて生成されたリソースオブジェクトを引き渡すリソース管理手段と、
前記リソース管理手段と前記それぞれのアプリケーションとの間のインターフェースサービス手段としてコンピュータを機能させるためのプログラムであって、
前記インターフェースサービス手段は、前記リソース管理手段が稼働している場合には前記リソース管理手段に対する参照を登録し、前記リソース管理手段が停止された場合には前記参照の登録を解除し、前記アプリケーションから前記リソース取得APIが呼び出されたことに応じて、前記リソース管理手段に対する参照が登録されていれば、前記アプリケーションからの前記リソース取得APIの呼び出しを前記リソース管理手段へとリダイレクトし、前記リソース管理手段に対する参照の登録が解除されていれば、前記アプリケーションプラットフォームに対してリソース生成を要求し、当該要求に応じて生成されたリソースオブジェクトを引き渡すことを特徴とするプログラム。
アプリケーションプラットフォーム上にインストールされたそれぞれのアプリケーションから使用リソース宣言量を受信し、アプリケーション毎に前記使用リソース宣言量を保持する保持工程と、
アプリケーションからリソース取得APIが呼び出されたことに応じて、前記アプリケーションが使用しているリソース量が前記使用リソース宣言量を超えているか否かを判定し、前記使用リソース宣言量を超えていると判定された場合は、前記アプリケーションに対してその旨を引き渡し、超えていないと判定された場合は、前記アプリケーションプラットフォームに対してリソース生成を要求し、当該要求に応じて生成されたリソースオブジェクトを引き渡すリソース管理工程と、
インターフェースサービス工程と
を有し、
前記インターフェースサービス工程では、前記リソース管理工程が稼働している場合には前記リソース管理工程に対する参照を登録し、前記リソース管理工程が停止された場合には前記参照の登録を解除し、前記アプリケーションから前記リソース取得APIが呼び出されたことに応じて、前記リソース管理工程に対する参照が登録されていれば、前記アプリケーションからの前記リソース取得APIの呼び出しを前記リソース管理工程へとリダイレクトし、前記リソース管理工程に対する参照の登録が解除されていれば、前記アプリケーションプラットフォームに対してリソース生成を要求し、当該要求に応じて生成されたリソースオブジェクトを引き渡すことを特徴とするリソース管理方法。
【発明を実施するための形態】
【0011】
[実施例1]
<画像形成装置のハードウェア>
図1は、たとえば多機能周辺装置などである画像形成装置100のハードウェア構成を示すブロック図である。CPU101は、画像形成装置100のソフトウェアプログラムを実行し、装置全体の制御を行なうプロセッサあるいはコンピュータである。ROM102は、リードオンリーメモリであり、装置のブートプログラムや固定パラメータ等が格納されている。RAM103は、ランダムアクセスメモリであり、CPU101が装置を制御する際に、一時的なデータの格納などに使用する。外部記憶装置104は、インストールされたアプリケーションやアプリケーションのデータや印刷データの格納など、様々なデータの格納に使用する。USBH I/F制御部105はUSBホストインターフェースを制御するためのものであり、さまざまなUSBデバイスとの通信を制御する。スキャナI/F制御部106は、スキャナ111を制御する装置である。プリンタI/F制御部107は、プリンタ112を制御する装置である。NVRAM108は、不揮発性のメモリでありアプリケーション管理装置の各種設定値が保存される。パネル制御部109は、操作パネル113を制御し、各種情報の表示、ユーザからの指示入力を行なうためのものである。ネットワークI/F制御部110は、ネットワーク115とのデータの送受信を制御する。バス114には、CPU101、ROM102、RAM103、外部記憶装置104、USBH I/F制御部105、スキャナI/F制御部106、プリンタI/F制御部107、NVRAM108、パネル制御部109、ネットワークI/F制御部110が接続される。またバス114は、CPU101からの制御信号や各装置間のデータ信号が送受信されるシステムバスである。ICカードリーダ116は認証をおこなうためのUSBデバイスである。
【0012】
<画像形成装置のソフトウェア>
画像形成装置100は、例えばOSGiプラットフォームなどのアプリケーションプラットフォームを提供し、そのアプリケーションプラットフォーム上では、例えばJAVA(登録商標)で記述した複数のアプリケーションプログラムをインストールし、並列に実行することが可能である。画像形成装置100は、本明細書ではアプリケーションを管理する装置としての観点からアプリケーション管理装置とも呼ばれ、また、アプリケーションのリソース管理を行う装置としての観点からリソース管理装置と呼ばれる。
【0013】
図2は画像形成装置100のソフトウェア200の構成を示す図である。ハードウェア201はアプリケーション管理装置のソフトウェアを実行する、例えば
図1に示したRAM102やCPU101等である。OS202はプロセスの管理、メモリ管理、入出力管理を実行する。Nativeアプリ203は、コピー等、機器の基本的な機能を実現するプログラムである。ソフトウェア200はJavaVM(Java仮想マシン)204とプリケーションプラットフォーム205とから構成される。JavaVM204はJavaプログラムを実行する仮想マシンである。アプリケーションプラットフォーム205は単一のJavaVM上で少なくとも一つ以上のアプリケーションプログラムの起動、停止、インストール、アンインストールといったアプリのライフサイクルの管理をおこなうプログラムであり、たとえばOSGiプラットフォームなどである。アプリケーションA206、アプリケーションB207はアプリケーションプラットフォーム205上で動作するアプリケーションプログラムである。JavaVM204は、アプリケーションプラットフォーム205およびアプリケーションA206、アプリケーションB207は一つのJavaアプリケーション208として処理する。アプリケーションプラットフォーム205上で実行されるアプリケーションのひとつとして、後述するリソースサービスプログラムがある。PC209はアプリケーションプラットフォーム205とネットワーク115を経由して通信を行い、アプリケーションプラットフォーム205に対してアプリケーションプログラムの起動、停止、インストール、アンインストールの指示をおこなう。
【0014】
図3はアプリケーションプラットフォーム205の構成を示す図である。アプリケーションプラットフォーム205はアプリケーションプログラムの起動、停止、インストール、アンインストールといったアプリのライフサイクルの管理をおこなうアプリケーション管理部301と、サービスAPI管理部302とを持つ。サービスAPI管理部302はアプリケーションプラットフォーム上で動作するアプリケーションが公開する機能(すなわちサービス)を他のアプリケーションから使用できるようにするためのサービスAPI部306の生成を管理する。サービスAPI管理部302は、機能を提供するアプリケーションが公開するAPI303とそのアプリケーションの識別子304とから構成されるテーブル305をもつ。テーブル305には、例えば新たなアプリケーションがインストールされたときに、そのアプリケーションのアプリケーション識別子とサービスを特定するためのAPIとが登録される。
【0015】
そして機能を利用するアプリケーションからの要求に対応するサービスAPI部306を、アプリケーションの識別子304で識別される機能を提供するアプリケーションから取得し、機能を利用するアプリケーションに渡す。サービスAPI部306は機能を使用するアプリケーションの識別子を保存するフィールド307と、一つ以上の機能を提供するアプリケーションが公開しているAPI308から構成される。機能を使用するアプリケーションはサービスAPI部306を取得し、サービスAPI部306に実装されているAPI308を呼び出すことにより機能を提供するアプリケーションの機能を使用する。機能を使用するアプリケーションがサービスAPI部306を呼び出すと、サービスAPI部306は、機能を使用するアプリケーションのアプリケーション識別子307を付加して機能を提供するアプリケーション本体の機能を実現するAPIを呼び出す。このサービスAPIを介したサービスの要求および提供の手順は、
図4A、
図4Bを参照して後述する。
【0016】
図5は、本実施形態に係るリソースサービスが他のアプリケーションに提供するAPIの表である。リソースサービスのサービスAPIがこのAPIを実装し、リソースサービスを使用するアプリケーションはこれらのAPIを呼び出しリソースの取得、使用をおこなう。具体的には、APIとして公開された各クラスのオブジェクトの、要求するサービスに応じたメソッドを呼び出す。
図5のクラス欄はリソースサービスがアプリケーションに提供するクラスである。「ラップしているJava標準クラス」欄は、RSFileクラス、RSFileInputStreamクラス、RSFileOutpuStreamクラス、RSSocketクラス、RSThreadクラスがそれぞれラップしているJava標準クラス名である。メソッド欄はそれぞれのクラスのメソッドのうちリソースサービス特有の機能が実装されているメソッドである。なおJava標準クラスをラップして定義されているクラスは、リソースサービスにより提供されるリソースオブジェクトであり、
図5に示したメソッドは、ラップされたJava標準クラスのメソッドのうち、リソースサービス特有の機能が実装されているメソッドである。説明欄は各クラスやメソッドが提供するリソースサービス特有の機能の説明である。
【0017】
機能提供アプリケーションが公開するAPIは例えばクラスとメソッドの組み合わせなどで特定される。例えばResourceServiceクラスのgetFileメソッドは、"ResourceService.getFile"などと指定され、当該APIが特定されて呼び出される。したがって、サービスAPI305には、
図5に示したクラス名と当該クラスに属するメソッド名との組み合わせが登録されている。
【0018】
図5に示したAPIは説明欄に記載した通りのサービスを提供する。たとえばResourceServiceクラスはアプリケーションがリソースサービス601に対してリソースの取得要求や解放要求等を行うためのクラスであり、Java標準クラスをラップしていない。ResourceServiceクラスのgetFileメソッドは、ファイルリソースのリソースオブジェクトを取得するためのメソッドであり、RSfileクラスのインスタンス、すなわち確保したリソースのリソースオブジェクトを返す。ファイルオブジェクトはファイルリソースに相当する。getSocket、getThreadメソッドはそれぞれソケットオブジェクトおよびスレッドオブジェクトを取得するためのメソッドであり、それぞれたとえば通信リソースおよびコンピューティングリソースに相当する。
【0019】
このほかのクラスはリソースオブジェクトのクラスであり、Java標準クラスをラップして定義されている。それぞれのクラスの説明は、当該クラスがラップしているJava標準クラスのメソッドのうちリソースサービス特有の機能が実装されているメソッドである。ラップしているJava標準クラスのメソッドと同じ処理を行うメソッドについては説明は省略した。たとえばRSfileクラスはJava.io.fileすなわちfileクラスをラップしており、deleteメソッドは、fileクラスのdeleteメソッドに加えて、削除したファイルサイズ分のストレージ使用量を、現在の使用量から減算する処理を実行する。このほかのfileクラスのメソッドについては、fileクラスと同様の処理が行われる。その他のクラス及びメソッドについての説明は省くが、上述した例と同様に
図5を読めばよい。このため、リソースサービスを用いて生成したリソースオブジェクトは、リソースサービスを用いずに生成したリソース(Java標準のリソースオブジェクト)と同様に扱うことができる。
【0020】
<サービスAPI登録処理>
図4Aは機能を公開するアプリケーション401がサービスAPI管理部302にAPIを登録する処理を、
図4Bは機能を使用するアプリケーションがサービスAPI部を取得する処理をそれぞれ示す図である。まず、
図4Aを参照してAPI登録処理について説明する。
【0021】
機能を公開する、すなわちサービスを提供するアプリケーション401がサービスAPI登録処理を開始する(S402)。機能を公開するアプリケーション401はサービスAPI管理部302に対してサービスAPI情報とアプリケーション識別子とを引数としてサービスAPI登録要求C404を出す(S403)。サービスAPI情報はサービスを特定するための識別名等の情報を含む。サービスAPI管理部302から登録通知R406が返ってくるとS409に遷移し、サービスAPI登録処理を終了する(S409)。エラー(R405)が返ってきたらエラー処理を行い(S408)、サービスAPI登録処理を終了する(S409)。
【0022】
サービスAPI管理部302はサービスAPI登録要求C404を受けるとサービスAPIおよびアプリケーションの登録処理を開始する(S416)。まず、S416で受信したAPI登録要求C404からサービスAPI情報とアプリケーション識別子とを取得する(S417)。次にテーブル305を検索し、S417で取得したサービスAPI情報がテーブル305に登録済みかを調べる(S418)。登録済みであれば機能を公開するアプリケーション401に対してエラーR405を返し(S419) 、サービスAPI登録処理を終了する(S422)。未登録であればS417で取得したサービスAPI情報とアプリケーション識別子とをテーブル305に登録する(S420)。さらに機能を公開するアプリケーション401に対して登録通知R406を返し(S421)、サービスAPI登録処理を終了する(S422)。本実施例ではリソースサービスがサービスを提供するアプリケーションとして
図4Aに示すサービスAPIの登録処理を実行し、リソースサービスのサービスAPIとリソースサービスのアプリケーション識別子の登録をおこなう。
【0023】
<サービスAPI取得処理>
次に
図4Bを参照してサービスAPI部取得処理について説明する。機能を使用するアプリケーション440はサービスAPI部取得処理を開始する(S434)。次に使用したい機能を示すサービスAPI情報とアプリケーション440自身のアプリケーション識別子を引数にサービスAPI管理部302に対してサービスAPI部要求C423を出す(S435)。サービスAPI管理部302からサービスAPI部が取得できたかを調べる(S436)。エラーが返ってサービスAPI部を取得できなかった場合はエラー処理をおこない(S439)、サービスAPI部取得処理を終了する(S438)。サービスAPI部を取得できた場合はサービスAPI部を介してアプリ提供機能すなわち他のアプリケーションにより提供されるサービスを使用した処理を行い(S437)、サービスAPI部取得処理を終了する(S438)。リソースサービスを使用するアプリケーション440では、S437はリソースを取得、使用する処理となる。
【0024】
サービスAPI管理部302は機能を使用するアプリケーション440からサービスAPI部要求C423を受けるとサービスAPI部生成処理を開始する(S424)。アプリケーションAPI管理部302はサービスAPI部要求C423から、要求されたアプリケーションAPI情報を取得する(S425)。次にS425で取得したアプリケーションAPI情報をキーにテーブル305を検索し、存在しなければサービスAPI部要求C423を発行したアプリケーション440に対してエラーR433を通知し(S432)、サービスAPI部生成処理を終了する(S431)。存在すればアプリケーションAPI情報に対応するアプリケーション識別子を取得する(S427)。次にS427で取得したアプリケーション識別子で識別される、機能を公開しているアプリケーション401に対して機能を使用するアプリケーション440のアプリケーション識別子を引数にサービスAPI部生成要求C410を出す(S428)。サービスAPI部を含むサービスAPI部応答R415を受信すると、機能を使用するアプリケーション440にサービスAPI部R430を提供し(S429)、サービスAPI部取得処理を終了する(S431)。
【0025】
機能を公開しているアプリケーション401は、サービスAPI管理部302からサービスAPI部生成要求C410を受信したらサービスAPI部の生成処理を開始する(S411)。次にサービスAPI部生成要求C410から機能を使用するアプリケーション440のアプリケーション識別子を取得する(S412)。さらにサービスAPI部を生成し、S412で取得した、機能を使用するアプリケーション501のアプリケーション識別子をアプリケーション識別子保存フィールド307に保存し、サービスAPI部の初期化処理をおこなう(S414)。サービスAPI管理部302に対してサービスAPI部を返し(R414)、サービスAPI部生成処理を終了する(S414)。なお、本実施例ではサービスAPI部はオブジェクトであり、ステップS413におけるサービスAPI部の生成及び初期化は、サービスAPIのインスタンスの生成及び初期化で実現される。したがってステップS437では、機能を使用するアプリケーション440は、生成されたオブジェクトの使用する機能に応じたメソッドを呼び出すことでAPIを通じて供されるサービスを使用する。またステップS413の詳細は
図9を参照して後述する。
【0026】
以上、
図4A,
図4Bで説明した仕組みはたとえばOSGiプラットフォームで提供され、機能提供アプリケーション(サービスバンドル)の登録、及び機能利用アプリケーション(サービス消費バンドル)によるサービスAPI部の取得はOSGiで提供される機能で実現できる。
【0027】
<リソースの取得の例>
図6は、リソース管理に係るサービスを提供するプログラムであるリソースサービス601の構成と、リソースサービス601によるサービスを使用してリソースサービス601からリソースを取得するリソースサービス対応アプリケーション607の構成を示す図である。リソースサービス601からリソースを取得するアプリケーション607は使用するリソース量が宣言されているアプリケーション情報608とアプリの機能を実現するプログラム609とから構成される。プログラムはリソースサービス601から取得したリソースを使用した処理を実行する。
【0028】
リソースサービス601はアプリケーションプラットフォーム205上で動作するアプリケーションである。リソースサービス601は、アプリケーションから使用するリソースの宣言量を取得するアプリ宣言量取得部602、アプリ宣言量取得部602で取得したリソース量とアプリが使用しているリソース量とを、例えばアプリケーション識別子と関連付けるなどしてアプリ毎に記憶するリソース量記憶部603を持つ。さらにアプリ毎にリソースサービスのサービスAPI部604、アプリケーションに対してリソースを提供するかを判断するリソース管理部605、リソースを生成するリソース生成部606を持つ。サービスAPI部604は
図3に示すサービスAPI部306に相当し、アプリケーションとの対応付けは、アプリケーション識別子307により実装される。
【0029】
アプリ宣言量取得部602はリソースサービス対応アプリケーション607からアプリケーション607が使用すると宣言したリソース量の情報を取得する(610)。
リソースサービス対応アプリケーション607はアプリケーションA用のリソースサービスAPI部を呼び出し、リソース取得要求(611)をおこなう。アプリケーションA607に割り当てられるリソースがある場合、リソースサービス601はアプリケーションA607にリソースを返す(612)。無い場合はエラーを返す(613)。
【0030】
<アプリケーション情報>
図7はリソースを取得するアプリケーション607を構成するアプリケーション情報608の詳細を示す図である。アプリケーション情報608にはアプリケーションの設定情報がキーとバリューのリストとして保存されている。使用リソース情報として使用するディスクサイズの最大値を示す最大ディスクサイズ701、使用するソケットの数の最大値を示す最大ソケット数702、使用するスレッドの数の最大値を示す最大スレッド数703、使用する開いたファイルの数の最大値を示す最大オープンファイル数704が、キーと対応する値のリストとして記述されている。もちろんこれらはリソースの一例であって、他のリソースについての最大値の宣言を含んでもよい。またアプリケーションの名称や識別ID(識別子)なども情報も記述されている。アプリケーション情報608は、たとえばJava(登録商標)ではマニフェストに含まれている。
【0031】
<リソース量記憶部>
図8はソース量記憶部603の詳細を示す図である。リソース量記憶部603はアプリケーション毎(すなわちアプリケーション名801毎)に、アプリケーションが宣言する宣言リソース量802と現在アプリケーションが使用しているリソース量803とを記憶している。宣言リソース量は、該当するアプリケーションのアプリケーション情報608から取得したリソース情報に含まれた各リソースの最大値である。たとえばアプリケーションAに対しては、ファイルリソースとして20MB、ファイルデスクリプタ(ファイルの識別子に相当する)が20、ソケットリソースが10、スレッドリソースが10という各リソースの最大値が登録されている。さらにリソース管理部603には、リソースサービス601が提供可能な各リソースの最大値が登録されていてもよい。リソースサービス601が提供可能な各リソースの最大値は、あるいはリソース管理部605などに登録されていてもよい。リソースサービス601が提供可能な各リソースの最大値は、たとえばアプリケーションプラットフォーム205が提供できるリソースの限度に応じて、例えばリソースサービス601のインストール時に登録される。
【0032】
<サービスAPI部初期化処理>
図9はリソースサービス601のサービスAPI部が取得された時に実行されるサービスAPI部初期化処理S413の詳細を示す図であり、
図4BのステップS413の詳細を示す。なおリソースサービスのサービスAPIのうち、リソース要求のために呼び出すAPIを特にリソース取得APIと呼ぶことがある。サービスAPI部初期化処理が開始されると(S901)、リソースサービス601のアプリ宣言量取得部602は、サービスAPI部を取得しようとしているアプリケーション440のアプリケーション情報を取得する(S902)。S441で受信したサービスAPI部要求には、リソースサービス601を利用するアプリケーション440のアプリケーション識別子が含まれており、それによりアプリケーション440を特定できる。取得したアプリケーション情報は
図7の701〜704のようなキーと値のリストとして取得される。
【0033】
S903〜S906では、S902で取得したアプリケーション情報に含まれたリストのすべての項目に対してS904〜S906の処理を行い、すべてのアプリケーション情報を対象としてチェックを行ったらループを抜け(S903)、リソースサービス601サービスAPI部初期化処理S413の処理を終了する。ループの内ではアプリケーション情報の名前を一つ取得する(S904)。次に取得したアプリケーション情報に含まれたキーが所定の使用リソース宣言量であるかを判断し(S905)、使用リソース宣言量であればS906に遷移する。S905で使用リソース宣言量でなければS903に遷移する。S906では取得したリソース量をソース量記憶部603に、アプリケーション801毎、かつリソース802毎に保存し(S906)、S903に遷移する。この手順により、サービスを利用するアプリケーションごとに、使用するリソースごとの上限を保存し、設定できる。使用リソース量803は初期化して0に設定しておく。
【0034】
<リソース取得手順>
図10A、
図10Bはアプリケーションがリソース取得要求をしたときにアプリケーション607、リソースサービスのAPI部604、リソースサービスのリソース管理部605の処理を示したものである。
【0035】
アプリケーションA607がリソースを使用する処理を開始(S1001)する。アプリケーションA607はアプリケーションA用のリソースサービスのAPI部604の提供するAPI308を呼び出して(C1038)、リソース要求をおこなう(S1002)。このときリソースサービスのAPI部604に伝える情報は取得したいリソースの種類と取得したいリソースの量である。
【0036】
アプリケーションA607はリソース要求に応じたリソースが取得できたかを判断し(S1003)、要求したリソースが取得できればS1004に遷移する。取得できなければS1006に遷移する。アプリケーションA607は、要求したリソースを取得出来たら、取得したリソースを使用する処理を行う(S1004)。S1004が完了したらアプリケーションA用のリソースサービスのAPI部604のリソース解放APIを呼び出し(C1041)、不要になったリソースの解放を要求し(S1005)、リソース使用処理を終了する(S1007)。
【0037】
このフローチャートでは取得したリソースの使用が終わったらすぐに解放しているが、取得したリソースを別の処理でも使用するのであれば別の処理で解放処理をしてもよい。
リソースの解放要求のときにリソースサービスのAPI部604に伝える情報は解放するリソースの種類と解放するリソースの量である。一方アプリケーションA607は要求したリソースを取得出来なかったらエラー処理(S1006)を行い、リソース使用処理を終了する(S1007)。
【0038】
アプリケーションA用のリソースサービスのAPI部604は、アプリケーションA607からリソース取得要求(C1038)を受けるとリソース取得処理を開始する(S1008)。リソースサービスのAPI部604はリソース管理部605を呼び出して(C1042)、リソース要求をおこなう(S1009)。このときリソース管理部605に伝える情報はAPIが保持しているアプリケーションの識別子307とアプリケーションから渡された、取得したいリソースの種類と取得したいリソースの量である。
【0039】
要求に対する応答があればリソースサービスのAPI部604はリソースが取できたかを判断(S1010)し、リソースが取得できればS1011に遷移する。取得できなければS1012に遷移する。リソースサービスのAPI部604は要求したリソースを取得出来たらS1010で取得したリソースをアプリケーションAに返し(R1039)、リソース取得処理を終了する(S1013)。リソースを取得できなければS1012でアプリケーションAに対してエラーを返し(R1040)、リソース取得処理を終了する(S1013)。
【0040】
リソースサービスのAPI部604はアプリケーションAからリソース解放要求(C1041)がくるとリソース解放処理を開始(S1014)する。ソースサービスのAPI部604はリソース管理部605に対してリソース解放要求(C1045)を行う(S1015)。このときリソース管理部605に伝える情報はAPIが保持しているアプリケーションの識別子526とアプリケーションから渡された、解放するリソースの種類と解放するリソースの量である。次にソースサービスのAPI部604はリソース解放処理を終了する(S1016)。
【0041】
リソース管理部605はリソースサービスのAPI部604からリソース要求(C1042)がくるとリソース取得処理を開始する(S1017)。まずリソースサービスのAPI部604のリソース要求からリソースを使用するアプリケーション識別子を取得する(S1018)。次に要求リソースの種類を取得する(S1019)。さらに要求されたリソースの量を取得する(S1020)。次にリソース管理部605は、リソース量記憶部603からS1018で取得したアプリケーション識別子で識別されるアプリケーションの、S1019で取得したリソース種類の現在のリソース使用量803を取得する(S1021)。さらにリソース管理部605は、リソース量記憶部603からS1018で取得したアプリケーション識別子で識別されるアプリケーションの、S1019で取得したリソース種類の宣言リソース量802を取得する(S1022)。
【0042】
次にリソース管理部605は、S1021で取得したリソース使用量とS1020で取得した要求リソース量との合計がS1022で取得した宣言リソース量を超えているかを判定する(S1023)。越えていなければS1024に遷移する。越えていればエラー処理(S1030)に遷移しリソースサービスのAPI部にエラーを通知し(R1044)、リソース取得処理を終了する(S1029)。エラーの主旨は要求リソースを確保できない、というものである。
【0043】
S1024ではリソース量記憶部603から、S1019で取得したリソース種類の、全アプリケーションによるリソース使用量の合計を取得する(S1024)。次にリソース管理部605は、S1024で取得した合計量とS1020で取得した要求リソース量との合計がアプリケーションプラットフォーム205の提供するリソース量を超えているかを判定する(S1025)。アプリケーションプラットフォーム205の提供するリソース量は例えば予め与えられ、リソース管理部605が保持ししている。越えていたらエラー処理(S1030)に遷移し、リソースサービスのAPI部にエラーを通知し(R1044)、リソース取得処理を終了する(S1029)。越えていなければS1026に遷移する。
【0044】
S1026でリソース管理部605は、リソース量記憶部603のS1018で取得したアプリケーション識別子で識別されるアプリケーションのS1019で取得したリソース種類のリソースの使用量803に、S1020で取得した要求リソース量を加算する。次にリソース管理部605はリソース生成部606から要求されたリソースを生成するようアプリケーションプラットフォームに要求する(S1027)。リソースが生成されたらリソース管理部605はS1028でリソースサービスのAPI部604に対して要求されたリソースを返して(R1043)、リソース取得処理を終了する(S1029)。リソースを返すとは、たとえば生成したリソースにアクセスするための情報(パス名等)を返すことである。リソースとは、画像形成装置における処理のために利用可能なハードウェアあるいはソフトウェアの要素を指すが、リソースサービスはそのうちの
図5に示したようなリソースを管理対象としている。具体的にはストレージのリソースとしてファイル、通信のリソースとしてソケット、コンピューティングリソースとしてスレッド等である。またリソースオブジェクトとは、アプリケーションプラットフォーム上で実行されるアプリケーション(リソースサーバを含む)からみたリソースの抽象化ということができ、たとえば確保したリソースを示す情報を、リソースに対する処理を示すメソッド等とともにカプセル化したものである。あるいはリソースはリソースオブジェクトによりあらわされるとも言いえる。
【0045】
リソース管理部605は、リソースサービスのAPI部604からリソース解放要求(C1045)がくるとリソース解放処理を開始する(S1031)。リソースサービスのAPI部604のリソース解放要求からリソースを使用していたアプリケーションの識別子を取得する(S1032)。次に解放されるリソースの種類を取得する(S1033)。さらに解放されるリソースの量を取得する(S1034)。次にリソース管理部605はS1033で指定されたリソースを解放する(S1035)。リソース管理部605は、リソースの解放時にはリソースの要求と同様の要領で、アプリケーションプラットフォームに対して取得済みのリソースの解放を要求する。それにより指定されたリソースが解放される。S1036でリソース管理部605はリソース量記憶部603のS1032で取得したアプリケーション識別子で識別されるアプリケーションのS1033で取得したリソース種類のリソースの使用量803からS1035で取得した要求リソース量を減算する。S1037でリソース管理部605はリソース解放処理を終了する。
【0046】
リソースの要求は、たとえばJavaであれば、要求されたリソースオブジェクト(のインスタンス)を生成すればよい。より具体的には、ステップS1002では、必要なリソースのオブジェクトのインスタンスを、リソースサービスのサービスAPI部を用いて生成させる。リソースオブジェクトのコンストラクタが呼び出されることで、リソース管理部605と、アプリケーションプラットフォームあるいはJavaVM等は、
図10Bに示したようにリソースオブジェクトを生成する。生成されるリソースオブジェクトは、
図5に示すように、Java標準クラスをラップするよう定義されたオブジェクトである。したがって、得られたリソースの扱いは、通常のJavaにおけるリソースと同様であってよい。たとえば、アプリケーションプラットフォームはリソース生成を要求されると、リソースを確保して確保したリソースを特定するための情報を要求元に返す。もちろんこれは一例である。リソースを特定するための情報がリソース要求のパラメータとして与えられている場合もある。リソースの解放は、たとえば
図5のJavaのファイルオブジェクトであればdeleteメソッド、ファイルインプットストリームオブジェクト、ファイルアウトプットストリームオブジェクト、ソケットオブジェクトであればcloseメソッドを呼び出す。スレッドオブジェクトは、特に解放を要求しなくともよい。
【0047】
<リソースの利用時におけるリソース管理>
図11はファイル書き込みの時のアプリケーション、リソースサービス601の処理を示したものである。なおファイルへの書き込みは、書き込みの都度リソースを消費する。そのため
図10A、
図10Bに示したようなリソース要求時ではなく、書き込み時にリソースの使用量の総計が所定の上限値を超えていないか判定する必要がある。ファイル書き込み時の使用リソース量の判定および更新を
図11の手順で実行する。
【0048】
アプリケーションがファイル書き込み処理を開始する(S1101)。まずアプリケーションはリソースサービスに対してファイルオープン要求を行う(S1102)。ファイルオープン要求C1108を受けたリソースサービス601は、アプリケーションのファイルディスクプリタ使用量およびファイルディスクプリタ宣言量からファイルがオープン可能であるかを判定する(S1109)。オープン可能であればアプリケーション608にファイルオブジェクトを返す(R1110)。オープン可能でなければアプリケーション608にエラーを返す(R1111)。ファイルリソースの取得手順は
図10A、
図10Bで説明した通りである。
【0049】
アプリケーションはリソースサービスからファイルオブジェクトが取得できたかを判定し(S1103)、取得できたらS1104に遷移する。取得できなければS1108に遷移してエラー処理を行ったのちファイル書き込み処理を終了する(S1107)。ファイルオブジェクトが取得できる場合、アプリケーションはリソースサービス601にファイルへのデータ書き込み要求をおこなう(S1104)。アプリケーション608からデータ書き込み要求C1112を受けたリソースサービス601は、アプリケーションのストレージ使用量とストレージ宣言量からファイル書き込みが可能であるかを判定する(S1113)。ファイル書き込み可能であればファイルへのデータの書き込みをおこないアプリケーションにデータ書き込み成功を返す(R1114)。ファイル書き込み不可能であればアプリケーションにエラーを返し(R1115)。
【0050】
アプリケーションはリソースサービス601でファイル書き込みができたかを判定し(S1105)、書き込みができていればS1106に遷移する。できていなければS1109に遷移してエラー処理を行ったのちファイル書き込み処理を終了(S1107)する。
アプリケーションは書き込むべきデータすべてを書き込んだかを判定する(S1106)。書き込んでいればS1107に遷移しファイル書き込み処理を終了する。書き込んでいなければS1104に遷移して書き込み処理を継続する。
図11の手順で、特にステップS1104、S1113によりファイル書き込み時にもファイルリソースの使用量がリソース量記憶部603に反映される。
【0051】
前述のようにJavaでは、リソースサービスの機能はサービスAPI部を介して提供され、API部は例えば
図5に示すクラス及びメソッドで特定される。たとえばステップS1102でファイルリソースを獲得するためには、ResourceServiceクラスのgetFileメソッドを呼び出して、ファイルのリソースオブジェクトすなわちRSFileクラスのインスタンスをリソースサービスに生成させる。これは
図10A、
図10Bの手順で示されたとおりである。また、ファイルへのデータ書き込み時には、例えば
図5のRSFileOutputStreamクラスのインスタンスをまず生成する。
図11においては、RSFileOutputStreamクラスのインスタンスの生成は、ステップS1103でYesと判定された直後に、ステップS1102で生成したファイルオブジェクトをパラメータとして行われる。これにより生成されるRSFileOutputStreamクラスのオブジェクトは、生成されたファイルオブジェクトの出力ストリームとして関連付けられる。そして、ステップS1104では、生成したRSFileOutputStreamクラスのオブジェクトのwriteメソッドを呼び出して書き込みを行う。このとき書き込まれるストレージサイズにより、リソース量記憶部603を参照して使用量が上限を超えないかをステップS1113で判定している。上限を超えているか否かの判定は、
図10Bと同様に、ファイル書き込みを行うアプリケーション(サービスを利用するアプリケーション)が宣言したストレージ使用量の上限のみならず、全アプリケーションにより使用されているストレージサイズが、画像形成装置100により提供可能なストレージサイズの上限とも比較される。また書き込みを行う際には、リソース量記憶部603のストレージ使用量を更新する。
【0052】
以上のようにして、本実施形態では、リソースの取得時、解放時、またファイルリソースについては書き込み時に、リソース使用量が上限を超えないか、アプリケーションごとにチェックすることができる。さらに、リソースの管理をリソースサービスという、プラットフォーム上で実行される外付けアプリケーションにより行うことができ、リソース管理の容易性および柔軟性を向上させている。さらに、リソースサービスに適合していないアプリケーションであっても、アプリケーションプラットフォームが提供するリソースを従来通り利用することができる。
【0053】
[実施例2]
実施例1のリソースサービス601はアプリケーションプラットフォーム205上で動作する一アプリケーションであるため、ユーザがPC209からアプリケーションプラットフォーム205に対してリソースサービス601の停止を指示することができる。リソースサービス601が停止するとリソースサービスがアプリケーションに対して提供している機能も使用できなくなるため、リソースサービスを使ってリソースの取得・利用を行っているアプリケーションは動作できなくなる。実施例2のリソースサービスはリソースサービスが停止されたときにもアプリケーションの動作は継続できるリソースサービスである。
【0054】
図12は実施例2のリソースサービスのプログラムを保持するJarファイル1201の構造を示している。リソースサービスのJarファイル1201はリソースサービスの設定情報を保持するマニフェスト領域1202、プログラムコードを保持するプログラムファイル領域1203、リソースサービスが使用するデータを保持するデータ領域1204から構成される。さらに、リソースサービスのデータ領域1204にはデータの一つとしてリソースサービスインターフェースサービス(以後RSIサービス)のプログラムを保持するJarファイル1205が保持されている。RSIサービスのJarファイル1205はRSIサービスの設定を保持するマニフェスト領域1206、RSIサービスのプログラムコードを保持するプログラムファイル領域1207から構成される。RSIサービスはリソースサービスからリソース管理機能を除いたアプリケーションである。
【0055】
図14は実施例1のリソースサービスと実施例2のRSIサービスの機能の比較を示したものである。リソースサービスもRSIサービスもアプリケーションがリソース取得をおこなうためのAPIを提供するサービスAPI部をもつ。
リソースサービスはリソース管理機能を持つがRSIサービスは持たない。
リソースサービスもRSIサービスもリソースの生成を行うリソース生成機能を持つ。
RSIサービスは自身にリソースサービスを登録するリソースサービス登録インターフェースをもつがリソースサービスは持たない。
RSIサービスはリソース管理機能を持たないためリソースサービスにくらべ非常に小さいプログラムサイズである。
RSIサービスはリソース管理機能を持たないため使用するメモリ等のリソースもリソースサービスにくらべ非常に小さい。
リソースサービスはアプリケーショプラットフォームによってインストールされる、一方、RSIサービスはリソースサービスによってインストールされる。
リソースサービスはアプリケーションプラットフォーム205によってアンインストールされるが、RSIサービスはアンインストールされることがない。
【0056】
<本実施例のリソースサービス起動手順>
図13はアプリケーションプラットフォーム205によって実施例2のリソースサービスが起動された時および、停止された時のフローチャートである。リソースサービスはプリケーションプラットフォーム205から起動指示を受けると起動処理を開始する(S1301)。
【0057】
リソースサービスはアプリケーションプラットフォーム205にRSIサービスがインストールされているかを調べる(S1302)。インストールされていなければS1303に遷移する。インストールされていればS1306に遷移する。S1303でリソースサービスはリソースサービスのJarファイル1201からRSIサービスのJarファイル1205を取り出す(S1303)。リソースサービスはS1303で取りだしたRSIサービスのJarファイル1205をアプリケーションプラットフォームにインストールする(S1304)。さらにアプリケーションプラットフォームに対してRSIサービスの起動を指示し(S1305)、S1311に遷移する。
【0058】
S1306でリソースサービスはインストールされているRSIサービスのバージョンを取得する(S1306)。次にリソースサービスのJarファイル1201からRSIサービスのJarファイル1205を取り出す(S1307)。S1307で取得したRSIサービスのJarファイルのマニフェスト領域1206からRSIサービスのバージョンを取得する(S1308)。S1308で取得したRSIサービスのバージョンがS1306で取得したRSIサービスのバージョンよりも新しければS1310に遷移し、新しくなければS1311に遷移する。
【0059】
S1311でリソースサービスはS1307で取得したRSIサービスのJarファイルを使ってアプリケーションプラットフォーム205にインストールしRSIサービスのアップデートをおこない(S1310)、S1311に遷移する。S1311でリソースサービスは自身の初期化処理を実行する(S1311)。次にRSIサービスに対してリソースサービスの登録処理をおこない(S1312)、リソースサービスの起動処理を終了する(S1313)。
【0060】
リソースサービスはプリケーションプラットフォーム205から停止指示を受けると停止処理を開始する(S1314)。次にRSIサービスに登録してあるリソースサービスの登録解除処理(S1305)をおこなう。さらにリソースサービス自身の停止処理(S1316)を実行して停止処理を終了する(S1317)。S1314〜S1317のリソースサービス停止処理のなかでRSIサービスの停止処理行わないため、リソースサービスを停止、アンインストールをしてもRSIサービスは停止、アンインストールされない。
【0061】
<リソースサービスの構成>
図15Aは、本実施例のリソースサービス601、RSIサービス1501が起動している時のシステムの構成を示し、
図15Bはリソースサービス601が停止しRSI1501サービスのみが起動しているときのシステムの構成を示したものである。リソースサービス601が起動している場合、RSIサービスはリソースサービスの起動処理のS1313で登録されたリソースサービスの参照1508を持っている。アプリケーション607からRSIサービス1501に対するリソース取得、使用要求1503はリソースサービスの参照1508で識別されるリソースサービス601に対して転送され、リソースサービス601によりリソースの取得、使用が実行される。リソースサービスによるリソースの管理は、実施例1の
図10A、
図10B、
図11とおなじ要領で実行される。
【0062】
一方、リソースサービス601が起動していない場合はRSIサービス1501がリソースの取得、使用をおこなう。これにより、リソースサービス対応アプリケーションは、リソースサービスが稼働中であるか否かにかかわらず同じサービスAPIでリソースの要求および使用を行うことができる。
【0063】
<リソース取得処理のシーケンス>
図16はリソースサービス601が起動している時、していない時のリソース取得処理のシーケンスを示したものである。RSIサービス1501は起動時にアプリケーションプラットフォーム205のサービスAPI管理302に対して自身をリソースサービスとして登録している。
【0064】
アプリケーション607はアプリケーションプラットフォーム205を使用してRSIサービス1501にサービスAPI部取得要求を出す(1601)。RSIサービス1501はリソースサービスのサービスAPI部を生成して、アプリケーション607にリソースサービスのサービスAPI部を返す(1603)。
【0065】
リソースサービスが起動している場合、アプリケーション607はリソースサービスのサービスAPI部1502に対してリソース取得、使用要求をだす(1604)。リソースサービスのサービスAPI部1502はステップS1604で出された要求をRSIサービス1501に転送する(1605)。
【0066】
RSIサービス1501は1605の要求をリソースサービス参照(1508)に登録されているリソースサービス601に転送する(1606)。リソースサービス601はリソース管理処理とリソース生成、使用処理をおこない(1607)、RSIサービス1501に返す(1608)。RSIサービス1501はリソースサービスのサービスAPI部1502に処理を返す(1609)。リソースサービスのサービスAPI部1502はアプリケーション607に処理を返す(1610)。
【0067】
一方リソースサービスが起動していないとリソースサービス参照(1508)にはリソースサービスが登録されていない。その場合にも、アプリケーション607はリソースサービスのサービスAPI部1502に対してリソース取得、使用要求をだす(1611)。リソースサービスのサービスAPI部1502は1611の要求をRSIサービス1501に転送する(1612)。
【0068】
RSIサービス1501はJavaの標準のリソース生成、使用APIを使用してリソース生成、使用処理をおこない(1613)、リソースサービスのサービスAPI部1502に処理を返す(1614)。リソースサービスのサービスAPI部1502はアプリケーション607に処理を返す(1615)。
【0069】
以上の構成及び手順により、RSIサービス1501はいったん実行されると停止することなく稼働し、リソースサービスが稼働中であれば要求をリソースサービスへとリダイレクトする。このため、RSIサービスの対応アプリケーションは、リソースサービスが実行中であるか否かにかかわらずRSIサービスのサービスAPIを介してリソースの取得および使用を行うことができる。
【0070】
[実施例3]
実施例2のリソースサービスではリソースサービスが停止していてもリソースサービス対応アプリケーションが実行可能であった。しかし、後からリソースサービスが起動した場合、リソースサービスはリソースサービスが起動するまでにアプリケーションが取得したリソースの管理をすることができなかった。実施例3のリソースサービスのRSIサービスはRSIサービスが起動していてかつ、リソースサービスが起動していないときに使用リソースの計測のみをおこなうRSIサービスである。
【0071】
図17は実施例3のリソースサービス601のRSIサービスがもつリソース使用量を記憶するテーブル1701である。アプリケーション識別子1702とそのアプリケーションが使用しているリソース量1703を記憶している。
【0072】
図18はリソースサービスのAPI部1502からRSIサービス1501に対してリソース要求があった場合の処理を示す図である。RSIサービス1501はリソースサービスのAPI部1502からリソース要求がくるとリソース取得処理を開始する(S1801)。リソースサービスのAPI部1502のリソース要求からリソースを使用するアプリケーションの識別子を取得する(S1802)。次に要求リソースの種類を取得する(S1803)。さらに要求されたリソースの量を取得する(S1804)。次にRSIサービス1501はリソース使用量を記憶するテーブル1701からS1802で取得したアプリケーション識別子で識別されるアプリケーションのS1803で取得したリソース種類のリソースの使用量173を取得する(S1805)。さらにテーブル1701のS1802で取得したアプリケーション識別子で識別されるアプリケーションのS1803で取得したリソース種類のリソースの使用量1703にS1804で取得した要求リソース量を加算、更新する(S1806)。次にRSIサービス1501はJavaの標準APIを使用してリソースサービスのAPI部1502から要求されたリソースを生成する(S1807)。リソースが生成されたらリにRSIサービス1501はS1028でリソースサービスのAPI部1502に対して要求されたリソースを返して(S1808)リソース取得処理を終了する(S1809)。
【0073】
<リソースサービス起動処理>
図19はRSIサービス1510が起動している状態でリソースサービス601が起動したとき、RSIサービス1501がおこなうリソースサービス登録処理とリソースサービス601のリソース量記憶部603の更新処理のフローチャートである。アプリケーションプラットフォーム206によってリソースサービス601の起動が指示されると、リソースサービス601は起動処理(S1301)を開始する。次に初期化処理(S1902)をおこなう。S1902はS1302〜S1311の処理を含む。次にRSIサービス1501のリソースサービス登録要求(C1902)をおこない(S1312)、リソースサービスの起動処理を終了する(S1313)。
【0074】
RSIサービス1510はリソースサービス登録要求(C1902)を受け取るとリソースサービス登録処理とリソース量記憶部603の更新処理を開始する(S1903)。まず、リソースサービス601の参照を保存する(S1904)。次にRSIサービス1510が持っているリソース使用量のテーブル1701に登録されているすべてのアプリに対してS1906〜S1912の処理を繰り返す(S1905)。
【0075】
RSIサービス1510はまずテーブルから一つのレコードを取得しそのレコードのアプリケーション識別子(1702)を取得する(S1906)。次にS1906で取得した識別子のアプリケーションの使用リソース宣言608を取得する(S1907)。次にリソースサービス601のリソース量記憶部603のS1906で取得した識別子のアプリケーションのレコードの宣言リソース量802をS1907で取得した使用リソース宣言608で更新する(S1908)。テーブル1701からS1906で取得した識別子のアプリケーションのリソース使用量1703を取得する(S1909)。S1907で取得した使用リソース宣言値608とS1909で取得したリソース使用量1703の比較を行う(S1910)。使用量のほうが大きい場合エラー処理(S1912)を行いS1905に戻る。使用量が宣言量以下の場合、リソースサービスのリソース記憶部のS1906で取得した識別子のアプリケーションの使用リソース量803をS1909で取得した使用リソース量1703で更新(S1911)してS1905に戻る。
【0076】
エラー処理S1912では該当するアプリケーションを停止してもよいし、余分に使用しているリソースを強制的に解放してもよい。
【0077】
S1905でテーブル1701に登録されているすべてのアプリケーションに対して処理が終了したらリソースサービス登録処理とリソース量記憶部603の更新処理を終了(S1913)しリソースサービス601に処理を返す(R1914)。
【0078】
上記構成及び手順により本実施例では、リソースサービスが稼働していなくともRSIサービスによりアプリケーションごとのリソースの使用量を管理する。さらにリソースサービスが開始あるいは再開された際に、RSIサービスにより管理されたアプリケーションリソース使用量を、アプリケーションごとに宣言されたリソースの上限値と比較し、上限を超えていないか判定する。さらに、リソース量記憶部603を更新することで、リソースサービスが中断していた間のリソースの消費も含めて管理することができる。