JP2016051395A - 画像形成装置およびリソース管理方法 - Google Patents

画像形成装置およびリソース管理方法 Download PDF

Info

Publication number
JP2016051395A
JP2016051395A JP2014177432A JP2014177432A JP2016051395A JP 2016051395 A JP2016051395 A JP 2016051395A JP 2014177432 A JP2014177432 A JP 2014177432A JP 2014177432 A JP2014177432 A JP 2014177432A JP 2016051395 A JP2016051395 A JP 2016051395A
Authority
JP
Japan
Prior art keywords
application
resource
group
management
amount
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2014177432A
Other languages
English (en)
Inventor
学海 畑農
Gakukai Hatano
学海 畑農
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Canon Inc
Original Assignee
Canon Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Canon Inc filed Critical Canon Inc
Priority to JP2014177432A priority Critical patent/JP2016051395A/ja
Priority to KR1020150118574A priority patent/KR101860611B1/ko
Priority to DE102015114244.9A priority patent/DE102015114244B4/de
Priority to US14/837,754 priority patent/US9727381B2/en
Publication of JP2016051395A publication Critical patent/JP2016051395A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Facsimiles In General (AREA)

Abstract

【課題】組込アプリケーションを複数インストールし実行するための実行環境におけるアプリケーションが使用するリソースの使用量を動的に管理する画像形成装置、およびリソース管理方法を提供する。
【解決手段】リソースサービス304はアプリケーション110〜112が必要とするリソースについて、その効率的管理を実現する。フラグメントバンドル305はリソースサービス304に対して補完用モジュールとして動作する。リソースサービスに対してフラグメントバンドルで導入されるグループに対してリソース量の上限値を設け、グループ導入時には、当該グループに属するアプリケーションの使用するリソースの量をグループ単位での管理に移管する。
【選択図】図3

Description

本発明は、組込アプリケーションを複数インストールし実行するための実行環境における、それらアプリケーションが使用するリソースの使用量を動的に管理する画像形成装置、およびリソース管理方法に関わる。
従来、組込アプリケーション実行環境においては、アプリケーションが使用する一般的な計算機資源であるところのリソースの総量に制限があることが一般的である。このために以下のようなことが一般的に行われている。すなわちアプリケーションが使用するリソースの量について上限値を定める。またそれとともに、検査段階において当該アプリケーションの使用量がその上限値を超えないことを確認することによって、アプリケーションが安定稼働することを保証する。
またそのようなアプリケーションを複数稼働させることを想定した組込アプリケーション実行環境では、アプリケーション管理フレームワークが当該実行環境にインストールされたアプリケーションの使用するリソースの使用量を監視している。すなわちアプリケーションを実行環境にインストールする際に、その上限値がインストールされたアプリケーションの全体で実行環境が提供するリソースの総量を超えないよう制御する。この際、その制限内におさまらないアプリケーションについてはインストールを許可しない、という方法である。このようなリソース管理装置、およびリソース管理方法が一般的に提供される。
一方で、リソースの使用について複数のアプリケーションが競合する状態を検出してそれらを制御することにより複数のアプリケーション間でのリソースの使用量を抑制する技術も提供されている。例えば特許文献1に掲げる技術によれば、リソース管理装置は予め複数のアプリケーションについて当該リソースを使用する際の優先順位を与えるデータベースを備える。ここでは一つのアプリケーションが当該リソースを使用する際により優先順位の高い別のアプリケーションが使用中であればエラーにするという仕組を設けることによりリソースの使用を制御している。
また特許文献2においては、リソース管理装置は予め複数のアプリケーションについて当該リソースを使用する際の優先順位を与えるのに加え、排他制御の必要性を示す管理テーブルを備える。ここで優先度の低いアプリケーションが、排他制御が必要なリソースを使用する場合には優先度の高いアプリケーションのリソースの使用が完了するまでアプリケーションを停止することで競合を制御している。
また特許文献3に掲げる技術ではアプリケーションが特定の別のアプリケーションとリソースの使用について競合する場合に、当該別のアプリケーションの中に以下のような仕組を設けている。すなわち、当該別のアプリケーションが現在どのくらい当該リソースを使用しているかを管理者が知ることができるような画面が設けられている。そして、当該アプリケーションが、別のアプリケーションによるリソースの消費量を知ることができるようなインターフェースを設けられている。これらにより、当該アプリケーションが当該別のアプリケーションのリソースの使用量を確認してから自身のリソースの使用を開始することで競合を回避している。
特開2004−362425号公報 特開平8−328884号公報 特開2010−39689号公報
しかしながら、これらの技術では、以下のような課題があった。すなわち、複数のアプリケーションについてそれぞれに与えられる上限値同士を加算するとシステム全体の提供可能なリソースの使用量を超えてしまう場合には、それら複数のアプリケーションを同時にインストールすることができない。しかしながら実際には、動作中にそれらのアプリケーションのリソースの使用量が同時に上限に達することはほとんどない。この結果として、実際には必要なリソースの使用量を提供可能であるにも関わらずそれらのアプリケーションを同時にシステム内に配置することはできないという課題がある。
また、特許文献1および特許文献2により示される技術では、優先順位を設けることによりリソースの競合時には優先順位の低いアプリケーションがリソースを使用できないようにしている。これにより使用量が上限に到達することを阻止することでそれらのアプリケーションを同時に配置することは可能となる。しかしながら、優先順位の低いアプリケーションは結局のところリソースが利用可能になるまでその処理を停止されてしまうため、リソースを共有し、そのリソースに対する優先順位が異なる複数のアプリケーションを同時に利用することが困難となるという課題がある。
また、特許文献3により示される技術にも課題がある。アプリケーションは自身がリソースを使用する前に他のアプリケーションの使用量を確認し、自身の動作を制御するため、例えば別の処理を先に行うなどの対応により処理が進まなくなることはないという利点は備えている。しかしながら、この目的のためにはアプリケーションはあらかじめそのようなインターフェースを実装している必要があり、それを実装していないアプリケーションには適用できない。またアプリケーションはリソースが不足した場合にはどのアプリケーションに問い合わせるかをあらかじめ定めておく必要があるため、想定外の組合せに対してはそのような解決手段を行使することができないという課題がある。
以上のように、アプリケーションによるリソース消費量が実行環境により提供可能なリソース量を超えないように管理するリソース管理を、アプリケーションのインストール時に静的に行っても、またインストールされたアプリケーションの実行時に動的に行っても、適切なリソース管理を行うことが困難であるという問題があった。
本発明は上記従来例に鑑みて成されたもので、アプリケーション間のリソースの競合を適切に調整し、リソースの効率的な利用を可能とする画像形成装置及びリソース管理方法を提供することを目的とする。
上記の課題を解決するために本発明では以下のような構成を有する。すなわち、アプリケーション群に属するアプリケーションの識別子と、前記アプリケーション群に対する使用リソース宣言量とが定義された情報を取得する取得手段と、
アプリケーションからリソース取得APIが呼び出されたことに応じて、前記アプリケーションの識別子を基に前記アプリケーションが属するアプリケーション群を特定し、特定されたアプリケーション群に対する使用リソース宣言量を、前記情報から特定する特定手段と、
前記アプリケーションが要求するリソース量を現在前記アプリケーション群が使用しているリソース量の総計に加算した結果、その値が前記特定手段により特定された使用リソース宣言量を超えてしまう場合は、前記アプリケーションにリソースオブジェクトを渡さず、そうでない場合には前記アプリケーションに前記リソースオブジェクトを渡すリソース管理手段とを有する。
本発明を用いれば、リソースサービスがそれぞれのアプリケーションについて単独管理状態とグループ管理状態の双方で適切にリソースの上限値管理が可能となり、管理者がアプリケーションを適切に管理運用するための手間が大幅に軽減されるという効果を持つ。
本発明の第一、第二の実施例の装置の全体の構成を示す図である。 本発明の第一、第二の実施例の画像形成装置100のハードウェア構成を示す図である。 本発明の第一、第二の実施例のアプリケーション実行環境の構成を示す図である。 本発明の第一、第二の実施例のアプリケーションおよびフラグメントバンドルを構成するファイルの内容を示す図である。 本発明の第一の実施例のアプリケーション管理フレームワークの画面の一例を示す図である。 本発明の第一、第二の実施例のグループデータテーブル、第一の実施例のアプリケーションデータテーブルの内容を示す図である。 本発明の第一の実施例のリソースサービスによる起動時の処理のフローチャートである。 本発明の第一の実施例のリソースサービスによる起動時の処理のフローチャートである。 本発明の第一の実施例のリソースサービスによる起動時の処理のフローチャートである。 本発明の第一の実施例のリソースサービスによる起動時の処理のフローチャートである。 本発明の第一の実施例のリソース操作の概念図である。 本発明の第一の実施例のアプリケーションのインストール処理のフローチャートである。 本発明の第一の実施例のアプリケーションのアンインストール処理のフローチャートである。 本発明の第二の実施例のアプリケーション管理フレームワークの画面の一例を示す図である。 本発明の第二の実施例のフラグメントバンドルの起動時処理のフローチャートである。 本発明の第二の実施例のフラグメントバンドルの起動時処理のフローチャートである。 本発明の第二の実施例のアプリケーションのインストール処理のフローチャートである。 本発明の第二の実施例のアプリケーションのアンインストール処理のフローチャートである。
以下、本発明を実施するための形態について図面を用いて説明する。
[第一の実施例]
<画像形成装置の構成>
図1に掲げるのは本発明の第一の実施例の装置の全体の構成を示す図である。画像形成装置100は本実施例に係る発明を実装した画像形成装置である。ネットワーク130は画像形成装置100と情報処理装置101を接続するネットワークである。情報処理装置101は画像形成装置100をネットワーク130経由で利用するために用いられる。
アプリケーション110は画像形成装置100上で動作するアプリケーションの一つの例であるアプリケーションAである。アプリケーション111は同様に画像形成装置100上で動作するアプリケーションのもう一つの例であるアプリケーションBである。さらにアプリケーション112は同様に画像形成装置100上で動作するアプリケーションのさらなる一つの例であるアプリケーションCである。画像形成装置100上では一つ、あるいは複数のアプリケーションを動作させることが可能である。ここではアプリケーションを三つ例示している。以後、「アプリケーション11n」という表現は、アプリケーションA110、アプリケーションB111、アプリケーションC112にて代表されるような一つまたは複数のアプリケーションを指す。一般利用者および管理者は画像形成装置100の基本機能、アプリケーション11n、および、画像形成装置100やアプリケーション11nを管理するためのリソース管理装置を利用することが可能である。利用に当たっては、画像形成装置100を直接操作、もしくはネットワーク130経由で情報処理装置101から操作することが可能である。
図2は画像形成装置100のハードウェア構成を図式化したものである。コア部200はプロセッサやメモリ等を有し、オペレーティングシステムやアプリケーション等のプログラムを実行し、本実施形態に係るリソース管理を実現する。ユーザーインターフェース部201は、タッチパネルやディスプレイ、キーボード等を有し、ユーザーに対する情報を出力(表示)し、またユーザーから操作等の入力を受け付ける。記憶装置202は、例えばハードディスクなどで構成され、プログラムやデータをファイルとして格納する。ネットワークインターフェース部203は、例えばLAN等のネットワーク130に接続するためのネットワークインターフェースである。スキャナー部204は、原稿画像をたとえば光学的に読み取って画像データを出力する。プリンター部205は、画像データに対応した画像を媒体上に形成する。フィニッシャー部206は、プリンター部で画像形成したシート媒体に、ソーティングやステープル、穿孔等の仕上げ処理を施す。
<画像形成装置のアプリケーション及びその実行環境>
図3は本実施例における画像形成装置100の上でアプリケーション11nを実行するためのアプリケーション実行環境である。アプリケーション実行基盤301は、アプリケーションを実行するためにプログラムであり、例えばJava(登録商標)仮想マシン(JavaVM)等である。アプリケーション管理フレームワーク302はアプリケーション11nのインストールおよびアンインストール、実行と停止を管理するフレームワークであり、たとえばJava(登録商標)ベースのOSGi(OPEN Services Gateway initiative)フレームワークなどである。サポートライブラリ303はアプリケーション11nが画像形成装置100のさまざまな機能を利用するためのサポートライブラリである。リソースサービス304は本実施例においてアプリケーション11nが必要とするリソースについて、その効率的管理を実現するために利用するためのプログラムである。リソースサービス304はアプリケーションのひとつであるが、アプリケーション11nには含まれない。フラグメントバンドル305はリソースサービス304に対して補完用モジュールとして動作するプログラムである。なお、本実施形態におけるアプリケーションとは、アプリケーション管理フレームワーク302がOSGiフレームワークである場合にはバンドルに相当する。バンドルとは、OSGiフレームワークの上で、Java(登録商標)の実行基盤であるJavaVMとは独立してインストールやアンインストール、起動或いは停止可能なプログラム部品(いわゆるプラグイン)である。フラグメントバンドルとは、OSGiフレームワークにおいては、その内容を他のバンドル(ホストバンドルと呼ぶ)により共有できるようなバンドルであり、アプリケーションと同様に、マニフェストヘッダーを持つJava(登録商標)アーカイブファイルとして提供される。これについては図4等を参照して詳述する。なお本例でいうフラグメントバンドルは、上記のような一般的な物を指しているのではなく、後述する実施例で説明するような、リソースサービスの一部となり、リソースのグループ管理のために機能するフラグメントバンドルのことを指す。このようなフラグメントバンドルを他のアプリケーションのフラグメントバンドルと区別するために、特にリソースサービスフラグメントバンドルとも呼ぶ。フラグメントバンドルはアプリケーションの環境がOSGiフレームワークではない場合であっても、OSGiフレームワークのフラグメントバンドルに相当するソフトウェア部品を含む。
リソースサービス304は基本的な動作として、アプリケーション11nからのリソースのリクエストを受け付ける。アプリケーション11nはリソースを取得する際、および使い終わって解放する際にリソースサービス304に対してリソース取得リクエスト、リソース解放リクエストを送る。リソースサービス304はリクエストを送ってきたアプリケーション11nがリソースを使用する権利を持った状態で動作しているかを確認して持っていない状態であればエラーを返すという動作をする。また権利がある場合には、リソースサービス304は当該アプリケーション11nに設定されているリソースの使用量の上限値を参照する。そのうえでリソース上限に達していなければリソースを確保してアプリケーション11nへ返す。上限を超えてしまう場合にはエラーを返す。リソースサービス304はリソースを確保した場合には現在そのアプリケーション11nがいくらリソースを使用しているかを数値で把握するべく、新たに確保したリソースの量を加算する、という動作を行う。また解放時には解放したリソースの量を減算する、という動作を行う。リソースの解放に失敗することはほとんどないが、解放に失敗した場合にはエラーを返すとともに管理者に対して警告を出力する。なお、このような警告は、他にも出力されることがある。この種の警告は具体的には、例えばリソースサービス304の管理者向けインターフェース上へ表示する、あるいは、システムログへ追記する、などの手段を用いて管理者に伝達されるように出力される。
図4(a)は本実施例におけるアプリケーション11nを構成する代表的なファイルの内容について解説した図である。アプリケーション11nは内容としていくつかの種類のファイルを抱えている。アプリケーション実行コードファイル400はアプリケーションの実行コード等を含む。アプリケーション固定データファイル401はアプリケーションが持っている固定データを収めたファイルである。アプリケーションリソース上限宣言ファイル402はアプリケーションの使用するリソースの上限値、すなわち使用リソース宣言量を宣言するためのファイルである。さらにアプリケーションリソース上限宣言ファイル402はその内容として以下の記述を含んでいる。アプリケーションID410はアプリケーション11nのアプリケーションIDすなわち識別子の値の記載である。グループID411はアプリケーション11nが属するグループを指定するグループIDの記載である。リソース上限値412はアプリケーション11nが使用するリソースの上限値の宣言であるところの、リソース上限値である。アプリケーションリソース上限宣言ファイル402は、OSGiフレームワークの下ではマニフェストに相当する。
アプリケーション実行環境内へアプリケーション11nをインストールして実行するには、アプリケーション管理フレームワーク302を利用する。基本動作として、アプリケーション管理フレームワーク302は、管理者がアプリケーション11nをインストールするリクエストを行うと、インストール動作を行う。その際にアプリケーション管理フレームワーク302はそのアプリケーションリソース上限宣言ファイル402を参照して、そこに宣言されているリソース上限値が現在のアプリケーション実行環境内のリソースの空き容量の中に納まるかどうかを判定する。そして、もしも納まらなければインストールを失敗させる。
リソースサービス304も基本的にはアプリケーションの一つであり図4(a)に掲げたアプリケーション11nと同様の構成になっている。リソースサービスをアプリケーション11nと区別する特徴は、他の不特定のアプリケーション11nに対してサービスを提供する共通のアプリケーションプログラミングインターフェース(以下「API」と略す)を提供するところである。このAPIをリソース取得APIと呼ぶ。リソース取得APIを介して他のアプリケーションはリソースサービスによるサービスを受けることができる。ただし、リソースサービスのAPIの呼び出しはアプリケーションにコーディングされて初めて当該アプリケーションにより利用されるので、アプリケーションによりリソースサービスを利用するものとしないものとがあり得るが、本例ではすべてのアプリケーションがリソースサービスを利用してリソースを取得することを前提とする。
図4(b)はフラグメントバンドル305を構成する代表的なファイルの内容について解説した図である。フラグメントバンドル305も、基本的には図4(a)に掲げたアプリケーション11nと同様の構成になっている。フラグメントバンドル実行コードファイル420はフラグメントバンドルの実行コードを含むファイルである。フラグメントバンドル固定データファイル421はフラグメントバンドルが持っている固定データを収めたファイルである。フラグメントバンドルリソース上限宣言ファイル422はフラグメントバンドルの使用するリソースの上限値を宣言するためのファイルである。フラグメントバンドルID430はフラグメントバンドルのIDを示している。またグループID431はこのフラグメントバンド305が宣言するグループのグループIDを示している。リソース上限値432は、フラグメントバンドル305をリソースサービス304に対して追加した時に、増加するリソース使用量をリソースごとに宣言するリソース上限値を示している。この値は、単にフラグメントバンドル305により消費されるリソースの上限を示しているのではなく、フラグメントバンドル305により定義されたグループ単位で管理されたアプリケーションが消費するリソース上限値(すなわちグループのリソース上限値)を示している。ただしグループに属するアプリケーションがインストールされた際に本体ファイルが占めるストレージサイズはこの上限値には含まれない。換言すれば、グループ管理されたアプリケーション各々は、リソース上限値432で宣言された値を上限として各リソースを使用でき、ストレージに関してはさらに各アプリケーションの本体ファイルが占める領域を使用できる。所属アプリケーションID433はこのフラグメントバンドル305が宣言するグループに属する一つまたは複数のアプリケーション11n(これをアプリケーション群とも呼ぶ。)のアプリケーションIDを示す。
<フラグメントバンドルのインストールおよびアンインストール>
アプリケーション管理フレームワーク302はフラグメントバンドル305をインストール指示された場合には、アプリケーションと同様にフラグメントバンドル305のアプリケーションリソース上限宣言ファイル422を参照する。そして、そこに宣言されている各リソースのリソース上限値432をリソースサービス304の各リソースの現在のリソース上限値に対して加算しても全体として現在のアプリケーション実行環境内のリソースの空き容量の中に納まるかどうかを判定する。換言すればリソース上限値に記述されたリソースを確保する。現在のアプリケーション実行環境内で提供可能なリソース容量は予め与えられている。また現在のリソース上限値は、リソースサービス304がもともと宣言しているリソース上限値に、インストール済みのフラグメントバンドルが宣言しているリソース上限値を加算した値となっている。納まる場合にはフラグメントバンドル305のインストールを完了する。これは他のアプリケーションの意ストール時も同様である。インストールが完了すると、インストールされたフラグメントバンドル305の宣言したリソース上限値432は、追加先であるリソースサービス304の現在のリソース上限値に対して加算される。この加算演算により、グループ管理されたアプリケーションのリソース上限値は、リソースサービス304のリソース上限値として管理される。これにより、たとえばグループ管理されたアプリケーションのリソース(たとえばストレージ)は、リソースサービス302により代替的に確保されることになる。そこで、リソース上限値432としては、当該グループに属するアプリケーション個々のリソースの上限値のうち、最大の値以上の値が設定されることが望ましい。
逆にフラグメントバンドル305がアンインストールされると、フラグメントバンドル305が宣言しているリソース上限値432がリソースサービス304の現在のリソース上限値から減算される。もちろん減算はリソース種別ごとに行われる。なおこの減算は、アンインストールされるフラグメントバンドルを通してリソースサービスにより管理された共有リソースを解放してから行うべきなので、後述する図7Dの処理を完了してから行うことが望ましい。
このようにフラグメントバンドルはホストバンドルであるリソースサービスに対して後付け的に機能を付加したり、あるいは交換したりするために用いることができる。
図5はアプリケーション管理フレームワーク302の画面(アプリケーション管理画面と呼ぶ)の一例を示したものである。図5(a)に示したものがフラグメントバンドル305のインストールされる前の画面である。図5(b)に示したものがフラグメントバンドル305がインストールされた後の画面である。
図5(a)において、アプリケーション名501はアプリケーション名の表示欄である。ここにはアプリケーション11n、リソースサービス304の名称が表示される。図5(a)では示されていないが、図5(b)で示されるようにフラグメントバンドル305がインストールされた場合にもここに一覧される一つとして表示される。図5(b)で示される通り、フラグメントバンドル305に対しても、アプリケーション名の表示欄501にフラグメントバンドル305の名称(この例では「アプリABCグループ設定 0.1」)が表示される。
更新日時502はアプリケーション11n、リソースサービス304、フラグメントバンドル305の更新された日時を示す更新日時の表示欄である。また状態503はそれらのアプリケーションなどの稼働状況を表す状態欄である。この例では稼働時は「開始」、非稼働時は「停止」などと表示される。管理行為実行ボタン504は管理行為実行ボタン表示欄である。この例では「開始」状態にあるアプリケーションについては「停止」ボタン510および「アンイストール」ボタン511が表示される。開始/停止ボタン510は、それら各行に示されるアプリケーション11n、リソースサービス304、フラグメントバンドル305を開始、または停止を指示するためのボタンであり、稼働状態に応じて「開始」か「停止」かのいずれかが表示される。アンインストールボタン511は、それらをアンインストールを指示するためのアンインストールボタンである。このように本実施例においては管理行為実行ボタン表示欄504には開始/停止ボタン510およびアンインストールボタン511が表示される。ライセンス505は、これら各行に示されるアプリケーション11n、リソースサービス304、フラグメントバンドル305についてライセンスが必要であるか否かを表示するためのライセンス表示欄である。
図5(a)に示した画面例ではフラグメントバンドル305がまだインストールされていない。この図では「アプリケーションALPHA」「アプリケーションBETA」「アプリケーションGAMMA」と表示されている3つのアプリケーションが一つのグループに属している。それらアプリケーションの更新日時520が示す通り、フラグメントバンドル305がまだインストールされていない状態ではこれらのアプリケーション11nの更新日時はそれぞれのインストールされた時刻である。図5(b)に示した画面例はフラグメントバンドル305をインストールした後の状態である。フラグメントバンドル305を管理者がインストールするには、リソースサービス304を開始/停止ボタン510で停止する。その後に通常の手順に従ってフラグメントバンドル305をインストールする。そしてリソースサービス304を再び開始/停止ボタン510により開始する。すると、フラグメントバンドルの表示行530に示されるように、フラグメントバンドル305がインストールされていることが画面上でも示される。またこの状態ではフラグメントバンドル305が示すグループ情報のグループに属するアプリケーション11nはフラグメントバンドル305がインストールされた直後に上書きインストールされる。このインストールでは新たなアプリケーションリソース上限宣言ファイル402が適用されている。このため、グループに属するアプリケーションの更新日時540が示す通り更新日時が書き換えられる。
この画面例ではフラグメントバンドル305は、それが管理対象とするグループに属するアプリケーション11nがインストールされた後からインストールされることになっている。しかしながら、本実施例においても、アプリケーション11nを後からインストールすることは可能である。
図5に示したアプリケーション管理画面は、フラグメントバンドルを含むアプリケーションの属性や状態等に基づいて表示され、それら属性や状態は、たとえばアプリケーション管理テーブルなどといったインストールされているアプリケーションの属性や状態を格納するテーブルにより保存される。属性としてはたとえばライセンスの要・不要の別やアプリケーション名、更新日時等が含まれ、状態として稼働状態が含まれる。いったんインストールされた後でアンイストールされた場合にも当該アプリケーションの項目をテーブルに残し、インストール/アンインストールの別を示す状態を保持してもよい。そのテーブルはアプリケーションのインストールやアンインストール、状態の変化をトリガとして更新される。ただし、図6に示すグループデータテーブルやアプリケーションデータテーブルが保持する項目についてはアプリケーション管理テーブルで管理する必要はない。ただしテーブルのリンクのための情報、たとえはアプリケーションIDおよびフラグメントバンドルIDは重複して保持する必要がある。なお図5のアプリケーション管理画面は、アプリケーション管理フレームワーク302がOSGiフレームワークであれば、OSGiフレームワークにより管理され、表示され、その表示のために必要なアプリケーション管理テーブルもまたOSGiフレームワークにより管理される。
<リソースサービス>
ここでリソースサービス305について改めて説明する。リソースサービス305はアプリケーション管理フレームワーク302上で動作するアプリケーションのひとつである。アプリケーション管理フレームワーク302がOSGiフレームワークであれば、OSGiフレームワークは複数のJava(登録商標)アプリケーションを並列に実行し、そのうち機能提供アプリケーション(サービスバンドルとも呼び、本例ではリソースサービスに相当する。)が、アプリケーションプログラムインターフェース(API)を介して機能利用アプリケーション(サービス消費バンドルとも呼ぶ)にサービスを提供する仕組みを持つ。アプリケーションは、APIを介してリソースサービスに対するリソース要求あるいはリソース解放によりリソースの取得や解放を行う。リソースの取得や解放はJava標準クラスとして提供されたオブジェクト(API)で行われ、リソースサービスは、それら標準クラスをラップしたラッパークラスを提供することでリソース管理のための追加的なサービスを実現している。追加的なサービスは、たとえばリソース要求元のアプリケーションに割り当てるリソースが、宣言されたリソース上限値を超えるかチェックし、超えるなら要求を拒絶し、超えないなら割り当てを行う、といったサービスである。リソースの生成及びアプリケーションへの提供は、ラップされた標準クラスで提供する機能により行われる。
リソースサービスが提供する機能は前述のとおりAPIを介して行われ、APIはサービス利用アプリケーションごとに生成されるオブジェクトにより実現される。OSGiでは、APIはそれを利用するサービス利用アプリケーションの要求に応じて生成され、提供される。サービス利用アプリケーションは、生成したAPIを用いてサービス提供アプリケーションであるリソースサービスに対してリソース取得や解放などのサービスを要求する。
一方リソースサービスは、リソースサービスを用いるアプリケーション、たとえばリソースサービスのAPIを生成済みのアプリケーションごとに、割り当て済みのリソースの量と、割り当てられる上限であるリソース上限値とを、アプリケーションIDと関連付けて記憶している。リソース上限値は当該アプリケーションのアプリケーションリソース上限宣言ファイル402のリソース上限値412から取得した値である。さらに、フラグメントバンドルごとのリソース上限値、すなわちグループごとのリソース上限値も、たとえばそのインストール時にフラグメントバンドルリソース上限宣言ファイル422から読み取って記憶しておき、それとともにそのグループに対して割り当て済みのリソース量も、グループIDと関連付けて記憶しておく。リソースサービス305によるアプリケーションリソース上限宣言ファイルからのリソース上限値の特定と読み取りは、たとえばOSGiであればリソースサービスを利用するアプリケーションがインストールされ、実行が開始されてリソースサービスに対してAPIの生成を要求する際に、そのアプリケーションのためのAPIの初期化処理の一部として行えばよい。あるいはPSGi以外のフレームワークの場合、APIオブジェクトを生成しないならば、リソース取得要求毎にリソース上限値412を参照してもよい。
そしてリソースサービスがたとえばリソース取得要求をアプリケーションから受け取ると、要求元のアプリケーションが単独管理されるアプリケーションであれば、その要求元アプリケーションに割り当て済みリソース量を参照し、その値と要求されたリソース量との和を、当該アプリケーションのリソース上限値と比較する。前者が後者を超えていればリソース要求を拒否し、その旨要求元アプリケーションに応答する。超えていなければリソースオブジェクトを要求元アプリケーションに対して返すとともに、要求元アプリケーションに割り当て済みリソース量に、要求されたリソース量を加算する。リソースオブジェクトは、リソースをアプリケーションプログラムで扱うためにオブジェクト化したものであり、リソースオブジェクトをアプリケーションに渡すことは、要求されたリソースをアプリケーションに割り当てることに相当する。
一方、リソース取得要求元のアプリケーションがグループ管理されるアプリケーションであれば、その要求元アプリケーションの属するグループに割り当て済みリソース量を参照し、その値と要求されたリソース量との和を、当該グループのリソース上限値と比較する。前者が後者を超えていればリソース要求を拒否し、その旨要求元アプリケーションに応答する。超えていなければリソースオブジェクトを要求元アプリケーションに対して返すとともに、当該グループに割り当て済みリソース量に、要求されたリソース量を加算する。換言すれば、リソースをグループ管理されたアプリケーション群により共有する。そしてそのアプリケーション群に属するアプリケーションからのリソース要求があれば、そのアプリケーション群が使用しているリソース量の総計に要求されたリソース量を加算し、その結果が当該グループのリソース上限値すなわち使用リソース宣言量を超えていないか判定する。超えていなければリソースは要求元に割り当てられる。なおグループ管理されるアプリケーションであることは、後述する図6のアプリケーションデータテーブル620を参照し、アプリケーションIDがアプリケーションデータテーブル620に登録されており、かつグループ管理状態が有効であることを確認することで行える。
<グループデータテーブルおよびアプリケーションデータテーブル>
図6(a)は本実施例のリソースサービス304がアプリケーション11nのグループ管理を実施するために必要とするデータを保持するためのデータテーブルのうち、グループデータテーブル600を模式的に表したものである。グループデータテーブル600はたとえば記憶装置202に格納される。フラグメントバンドルID欄601はフラグメントバンドルID430の保持欄である。グループID欄602はグループID431の保持欄である。検出時刻欄603はリソースサービス304がフラグメントバンドル305を最初に検出した時刻の保持欄である。リソースサービス304がフラグメントバンドル305を最初に検出するのは、管理者がリソースサービス304を開始/停止ボタン510にて停止後、フラグメントバンドル305のインストールを行ったのち、再び開始した時刻である。同様に削除検出時刻欄604はリソースサービス304がいったんインストールされて検出したフラグメントバンドル305が削除されて消えていたことを検出した時刻の保持欄である。削除の検出も同様に、管理者がフラグメントバンドル305のアンインストール操作を行ったのち、再び開始した時刻である。管理対象アプリケーションID欄605はそのフラグメントバンドル305がグループとして管理する対象とするアプリケーションのアプリケーションID410の保持欄である。有効化状態欄606は当該フラグメントバンドルが有効であるか否かを記録する有効化状態の保持欄である。この有効化状態欄606には「有効」「無効」「アンインストール済」の三通りの状態が保持され得る。エントリー610は、ある一つのフラグメントバンドル305に関するグループデータテーブル600のエントリーである。
図6(b)は本実施例のリソースサービス304がアプリケーション11nのグループ管理を実施するために必要とするデータを保持するためのデータテーブルのうちアプリケーションデータテーブル620を模式的に表したものである。アプリケーションデータテーブル620も例えば記憶装置202等に保持される。アプリケーションID欄621はアプリケーションID410の保持欄である。グループID欄622はグループID431の保持欄である。バージョン欄623は各行のアプリケーション11nのバージョンの保持欄である。そして単独管理時リソース上限値欄624は、これらのアプリケーション11nのグループ管理の管理下にない状態におけるアプリケーションリソース上限宣言ファイル402に宣言されたリソース上限値412を保持する単独管理時リソース上限値の保持欄である。本体ファイルサイズ欄625はこれらのアプリケーション11nのプログラム本体のファイルの大きさの値である。リソース上限値412に宣言されたストレージの値からプログラム本体のファイルの大きさの値625を引いた値がそのアプリケーション11nがグループ管理の管理下にない状態において利用する可能性のあるデータ用ストレージ領域の大きさである。グループ管理状態欄626はそのアプリケーション11nがグループ管理の管理下にあるかどうかを示すグループ管理状態の保持欄である。
<リソースサービス起動手順>
図7Aは本実施例におけるリソースサービス304が起動された時のリソースサービスによる処理の流れを模式的に表したフローチャートである。ここまでに述べた通りリソースサービス304に対してグループ情報を保持するフラグメントバンドル305を追加でインストールすることでグループ情報を追加認識させることが可能である。同様にフラグメントバンドル305をアンインストールすることでグループ情報をリソースサービスの制御下より取り除くことが可能である。この際に、リソースサービス304はフラグメントバンドル305に対してホストバンドルとして動作しているため、フラグメントバンドル305のインストールおよびアンインストールの前にリソースサービスをいったん停止させる必要がある。フラグメントバンドル305のインストールおよびアンインストールそのものはアプリケーション管理フレームワーク302により実施される。ここで説明する処理は、フラグメントバンドル305がインストールあるいはアンインストールされた後に、改めてリソースサービス304が停止状態から起動される際に実行されるものである。
処理はステップS7001から開始する。ステップS7002でリソースサービス304はまずフラグメントバンドル305のインストール状態を確認する。つまり、前回終了時までに存在しなかったフラグメントバンドル305が新たにインストールされていないか、または、前回終了時まで存在していたフラグメントバンドル305がアンインストールされていないか、などチェックする。このチェックは、アプリケーション管理フレームワーク302により管理されたアプリケーションに関する情報例えば図5に関連して説明したアプリケーション管理テーブルを参照することで実現できる。参照は例えばアプリケーション管理フレームワークが提供する機能を介して行える。ステップS7003では新たにインストールされたフラグメントバンドル305が存在するかを判定し、そのようなフラグメントバンドル305が存在していればステップS7004へ進む。存在していなければステップS7005へ進む。ステップS7004ではリソースサービス304はフラグメントバンドル305インストール時の処理を行う。フラグメントバンドル305インストール時の処理が完了したら処理はステップS7005へ進む。
ステップS7005では、リソースサービス304はアンインストールされたフラグメントバンドル305が存在するかを判定し、そのようなフラグメントバンドル305が存在すればステップS7006へ進む。存在しなければステップS7007へ進む。ステップS7006ではリソースサービス304はフラグメントバンドル305アンインストール時の処理を行う。フラグメントバンドル305アンインストール時の処理が完了したら処理はステップS7007へ進む。ステップS7007へ到達したらリソースサービス304の起動処理は完了する。
図7B、図7Cはさらにフラグメントバンドル305インストール時の処理であるステップS7004の内容について説明したフローチャートである。ステップS7101は一連の処理の開始である。ステップS7102にてまずリソースサービス304は新たにインストールされたフラグメントバンドル305から、そのグループ情報、具体的にはグループID431を取得する。続いてステップS7103で、取得したグループ情報はグループデータテーブル600に登録済みであるかどうかを判定する。登録済みでなければ処理はステップS7104へ進む。ステップS7104ではグループデータテーブル600に取得したグループ情報を登録し、処理はステップS7106へ進む。登録済みであれば処理はステップS7105へ進む。ステップS7105では取得したグループ情報を用いてグループデータテーブル600のデータを更新し、ステップS7106へ進む。ステップS7104、S7105では、図6(a)に示した各項目を登録又は更新する。フラグメントバンドルID欄601、グループID欄602、管理対象アプリケーションID欄605の内容は、たとえばフラグメントバンドル上限宣言ファイル422のフラグメントバンドルID430、グループID432、所属アプリケーションID433からそれぞれ取得する。検出時刻は、検出した時刻を実時間クロックやインターネットの時刻サイト等から読み取り、それを記録する。ステップS7106では、インストール済みであるアプリケーション11nの中に、インストールされたフラグメントバンドル305の保持しているグループ情報の示すグループに属するものが存在するかをチェックする。もしもそのようなアプリケーション11nが存在しなければ処理はステップS7117へ進む。存在している場合には、それらアプリケーションを対象として処理はステップS7107へ進む。
ステップS7107からステップS7113ではそのようなアプリケーション11nについて繰返し処理を実行する。ステップS7108ではリソースサービス304はアプリケーション管理フレームワーク302を通じて処理対象のアプリケーション11nが開始済みの状態であるかどうかを確認する。開始済みであれば処理はステップS7109へ進む。停止状態であれば処理はステップS7110へ進む。ステップS7109では処理対象のアプリケーション11nを、アプリケーション管理フレームワーク302を通じて停止する。その後処理はステップS7110へ進む。ステップS7110では処理対象のアプリケーション11nのマニフェストに記載され宣言されているストレージの上限値を取得する。続くステップS7111で処理対象のアプリケーションの現在のストレージ使用量を取得する。この値は、たとえばアプリケーション管理フレームワーク302を通じてアプリケーション実行基盤301から取得する。さらにステップS7112にてリソースサービス304はアプリケーション管理フレームワーク302を通じて処理対象のアプリケーション11nのプログラム本体ファイルのサイズを取得する。ここでプログラム本体ファイルのサイズとは、プログラムコードの収容されたファイルおよびインストール時に展開されプログラム実行に必要なファイルが画像形成装置100上で展開された時にストレージを占有するサイズの合計を指す。続くステップS7113で処理対象のアプリケーション11nについての繰返し処理が完了したかを判定し完了していなければ処理はステップS7107から続行される。完了していれば処理はステップS7114へ進む。
ステップS7114ではステップS7107からの繰返し処理により算出された処理対象のアプリケーション11nそれぞれについてのストレージ使用量のうちデータ部分の使用量の合計を算出する。データ部分の使用量とは、ステップS7111で取得したストレージ使用量からステップS7112で取得したプログラム本体ファイルのサイズを差し引いた値を指す。すなわちアプリケーション11nがインストール時に展開されたプログラム本体ファイル以外に、稼働時に後から追加で使用したストレージの使用量に等しい。ステップS7114ではこのデータ部分の使用量についてインストールされているグループに属するアプリ全てに関して合計を算出する。続くステップS7115にてこの合計した値が、処理対象のフラグメントバンドル305が宣言しているグループのストレージの上限値432を超えているかどうかをチェックする。超えている場合には処理はステップS7116へ進む。超えていない場合には処理はステップS7119へ進む。
ステップS7119からステップS7130では再びインストールされていてグループに属しているアプリケーション11nを処理対象として繰返し処理を行う。まずステップS7120にて処理対象のアプリケーション11nのアプリケーションリソース上限宣言ファイル402のリソースの上限値412部分を書き換えた新たなアプリケーションリソース上限宣言ファイル402を生成する。この新たなアプリケーションリソース上限宣言ファイル402は、ストレージについてはステップS7112で取得した処理対象のアプリケーション11nのプログラム本体ファイルのサイズを上限値として宣言するものとなっている。その他のリソースについては上限値はゼロである。続くステップS7121にてステップS7120で生成したアプリケーションリソース上限宣言ファイル402とその他のプログラム本体ファイルをまとめてインストール用ファイルを作成する。そして続くステップS7122にてリソースサービス304はステップS7121にて作成したインストール用ファイルを用いてアプリケーション管理フレームワーク302を通じて上書きインストール操作を行う。続くステップS7123にて上書きインストールに成功したかどうかをチェックする。成功していれば処理はステップS7124へ進む。失敗していれば処理はステップS7128へ進む。ステップS7124では処理対象のアプリケーションのグループ管理状態626をアプリケーションデータテーブル620上で有効に変更する。続くステップS7125にて処理対象のアプリケーション11nがここまでに使用しているデータ部分のストレージリソースおよびその他のリソースをグループ管理下へ移管する。すなわちアプリケーション11n単位の管理を行っていたものをインストールされたフラグメントバンドル305が示すグループ単位での管理に変更する。そしてステップS7126にてインストールされたフラグメントバンドル305のグループ管理はグループデータテーブル600上で無効であるかどうかを判定し、無効でなければ、すなわち有効であれば処理はステップS7128へ進む。無効である場合には処理はステップS7127へ進み、グループデータテーブル600上で有効化状態606を有効に変更する。そして処理はステップS7128へ進む。ステップS7128では処理対象のアプリケーション11nは停止状態であるかどうかを判定する。開始済みである場合には処理はステップS7130へ進む。停止状態である場合には処理はステップS7129へ進み、リソースサービス304はアプリケーション管理フレームワーク302を通じて処理対象のアプリケーション11nを開始させる。そして処理はステップS7130へ進む。ステップS7130では処理対象のアプリケーション11nについての繰返し処理が完了したかどうかを確認し、完了していなければステップS7119へ戻って続行する。完了していれば処理はステップS7133へ進む。
ステップS7106にてインストールされたフラグメントバンドル305のグループに属するアプリケーション11nが一つもインストールされていなかった場合には処理はステップS7117へ進む。ステップS7117ではリソースサービス304は「インストールされたフラグメントバンドル305のグループに属するアプリケーション11nがインストールされていない」という警告を出す。そして処理は
ステップS7131へ進む。
ステップS7115にてインストールされたフラグメントバンドル305のグループに属するアプリケーション11nのストレージのデータ部分の使用量の合計がグループの上限を超えている場合には処理はステップS7116へ進む。ステップS7116ではリソースサービス304は「インストールされたフラグメントバンドル305のグループに属するアプリケーション11nのストレージの使用量総計がグループ上限を超えている」という警告を出す。そして処理はステップS7131へ進む。
ステップS7131ではインストールされたフラグメントバンドル305のグループの有効化状態606が無効になっているかどうかをチェックする。無効であれば処理はステップS7133へ進む。無効になっていない場合には処理はステップS7132へ進み、インストールされたフラグメントバンドル305のグループの有効化状態606を無効に設定する。そして処理はステップS7133へ進む。ステップS7133では他にインストールされたフラグメントバンドル305があるかどうかを判定し、あるのであればそのフラグメントバンドル305についての処理をステップS7102より続行する。他にインストールされたフラグメントバンドル305が存在しないのであれば処理はステップS7134へ進む。ステップS7134にて一連の処理を完了する。
図7Dはさらにフラグメントバンドル305アンインストール時の処理であるステップS7006の内容について説明したフローチャートである。ステップS7201は一連の処理の開始である。ステップS7202にてまずリソースサービス304はアンインストールされたフラグメントバンドル305のグループ情報を、グループデータテーブル600から取得する。続くステップS7203にてグループデータテーブル600上の有効化状態606をアンインストール済状態に変更する。続くステップS7204にてインストール済みであるアプリケーション11nの中にアンインストールされたフラグメントバンドル305の保持していたグループ情報の示すグループに属していたものが存在するかをチェックする。もしもそのようなアプリケーション11nが存在しなければ処理はステップS7220へ進む。そんざいしている場合には処理はステップS7205へ進む。
ステップS7205からステップS7219ではそのようなアプリケーション11nについて繰返し処理を実行する。ステップS7206では処理対象のアプリケーション11nのアプリケーションリソース上限宣言ファイル402のリソース上限412の部分を書き換えたものを生成する。この際書き換えられるリソース上限412の値は、処理対象のアプリケーション11nがグループ管理へ移管される際にリソースサービス304によって書き換えられる前の値を用いる。すなわち処理対象のアプリケーション11nが単独管理で動作している時に宣言されている上限値が用いられる。この値はアプリケーションデータテーブル630に保存されている。続くステップS7207で処理対象のアプリケーションのプログラム本体ファイルおよびステップS7206にて生成したアプリケーションリソース上限宣言ファイル402からインストール用ファイルを生成する。そしてリソースサービス304は続くステップS7208にてステップS7207にて生成したファイルを用いてアプリケーション管理フレームワーク302を通じて上書きインストールを実行する。ステップS7209では上書きインストールが成功したかどうかをチェックする。成功した場合には処理はステップS7210へ進む。成功していなかった場合には処理はステップS7217へ進む。
ステップS7210では処理対象のアプリケーション11nが開始済であるかをチェックする。停止状態であれば処理はステップS7212へ進む。開始済であれば処理はステップS7211へ進む。ステップS7211では処理対象のアプリケーション11nを開始する。そして処理はステップS7212へ進む。ステップS7212では処理対象のアプリケーション11nについてグループ管理の下で確保されていたリソースをそのアプリケーション11nの単独管理の下で確保している領域へ振り替えるとともに使用量を単独の使用量として集計し直す処理を行う。続くステップS7213においてアプリケーションデータテーブル620のグループ管理状態626を無効に変更する。そして続くステップS7214で処理対象のアプリケーション11nが使用しているデータ用のストレージの使用量をプログラム本体のファイルの使用量と足し合わせた値をチェックする。つまり、その値が処理対象のアプリケーション11nの単独管理におけるストレージの上限の宣言値を上回っていないかを確認する。上回っている場合には処理はステップS7218へ進む。上限値内に納まっている場合には処理はステップS7215へ進む。ステップS7215では処理対象のアプリケーションが停止中であるかどうかを確認し、停止中であれば処理はステップS7216へ進む。ステップS7216ではリソースサービス304は処理対象のアプリケーション11nを、アプリケーション管理フレームワーク302を通じて開始させる。そして処理はステップS7219へ進む。
ステップS7209にて上書きインストールが失敗したと判定した場合には処理はステップS7217へ進む。ステップS7217では「グループ管理下にあったアプリケーション11nを単独管理に戻す処理においてエラーが発生した」ことを示す警告を出す。そして処理はステップS7219へ進む。
ステップS7214にてその足し合わせた値が処理対象のアプリケーション11nの単独管理におけるストレージの上限値を上回っていた場合には処理はステップS7218へ進む。ステップS7218ではリソースサービス304は「グループ管理下にあったアプリケーション11nを単独管理へ戻したがストレージの使用量が上限を超過するため、アプリケーション11nの実行を一時的に停止する」ことを示す警告を出す。そして処理はステップS7219へ進む。
ステップS7219では処理対象となるアプリケーション11nについての繰返し処理が全て完了したかを判定し、まだ処理していない処理対象となるアプリケーション11nが存在する場合にはステップS7205から続行する。全ての処理対象となるアプリケーション11nについての処理が完了していたら処理はステップS7220へ進む。ステップS7220ではアンインストールされたフラグメントバンドル305が他にもあるかどうかをチェックする。あれば処理は次のフラグメントバンドル305についてステップS7202から続行される。ない場合には処理はステップS7221へ進む。ステップS7221にて一連の処理は完了する。
<リソース管理の具体的説明>
図8は本実施例においてリソースサービス304がストレージのグループ管理を行う方法をさらに模式的に図示したものである。
状態800は、リソースサービス304はフラグメントバンドル305がインストールされていない状態を示している。この時アプリケーションALPHAが宣言している上限値は上限値809で示される大きさである。このうちアプリケーションALPHAのプログラム本体のファイルが占有する使用量は使用量801で示される大きさである。そしてアプリケーションALPHAが動作時にデータ目的でファイルを作成して使用しているストレージの量は使用量802で示される大きさである。そして空き容量が容量803である。アプリケーションBETAについても同様であり、上限値は上限値819で示される。プログラム本体のファイルが占有している量は使用量811で示される大きさであり、データ目的でファイルを作成して使用している量は使用量812で示される。空き容量は容量813で示される。アプリケーションGAMMAについても同様に上限値が上限値829で示される。プログラム本体のファイルの占有量が使用量821であり、データ目的の使用量が使用量822であり、空き容量が容量823である。なおこれらのうちそれぞれのアプリケーション11nがインストールされている状態でプログラム本体のファイルの容量を占有している容量はそれぞれ容量801、容量811、容量821である。アプリケーション管理フレームワーク302の原則により、これらの容量をアプリケーションと切り離して管理することはできない。
状態890は、フラグメントバンドル305がインストールされた状態を示している。フラグメントバンドル305がインストールされた状態におけるグループ全体で使用可能なデータ目的のストレージの量は容量899で示される。すでに述べた原則により、例えばアプリケーションALPHAに対しては、プログラム本体のファイルの占有する容量801だけはアプリケーションリソース上限宣言ファイル402によって確保しなくてはならない。アプリケーションBETAについても同様に容量811で示される容量だけは確保する必要がある。アプリケーションGAMMAについても容量821を確保する必要があるのは同様である。このため本実施例ではフラグメントバンドル305がインストールされた状態でもそれらの容量についてはこれらアプリケーションのアプリケーションリソース上限宣言ファイル402で宣言して確保する必要がある。このためにフラグメントバンドル305のインストールの過程で、それらアプリケーションリソース上限宣言ファイル402を書き換える処理を行っている。この結果、矢印831が示すようにプログラム本体ファイルの使用量801、811、821は各アプリケーションのリソースの使用量として残る。一方で単独管理時には、各アプリケーションの宣言している領域内で確保されていたデータ目的の領域の使用量802、812、822は移管される。これらは矢印832が示すようにフラグメントバンドル305が新たに確保したグループのためのリソース領域内で管理されるようになる。これによりリソースサービス304はこれらのストレージの使用量の合計がフラグメントバンドル305に割り当てられた領域899の大きさを超えないように管理を続行することができる。フラグメントバンドル305をアンインストールする際には逆の操作を行う。
<アプリケーションのインストール手順>
図9は本実施例におけるアプリケーション11nのインストールの処理のシーケンスを模式的に表したフローチャートである。アプリケーション管理フレームワーク302よりアプリケーション11nのインストールが行われたという通知を受け取ったリソースサービス304がこのシーケンスを実行する。ステップS9001から処理を開始する。ステップS9002にてリソースサービス304はアプリケーション管理フレームワーク302よりインストールされたアプリケーション11nのデータを受け取る。続くステップS9003にてリソースサービス304はアプリケーションデータテーブル620にインストールされたアプリケーション11nのデータを登録する。次にステップS9004にてインストールされたアプリケーションはいずれかのグループに属しているかを判定する。属していなければ処理はステップS9017へ進む。属している場合には処理はステップS9005へ進む。ステップS9005ではインストールされたアプリが属しているグループの情報がグループデータテーブル600に登録されているかどうかを判定する。登録されていなければ処理はステップS9017へ進む。登録されていれば処理はステップS9006へ進む。ステップS9006ではインストールされたアプリケーション11nの属するグループのグループ情報はグループデータテーブル600の有効化状態606において有効状態であるかどうかをチェックする。有効ではない場合処理はステップS9017へ進む。有効である場合には処理はステップS9008へ進む。ステップS9004からステップS9007の判定は、グループデータテーブル600およびアプリケーションデータテーブル620を参照して行うことができる。続くステップS9008ではインストールされたアプリケーション11nが開始済みの状態であるかどうかを判定する。
停止状態であれば処理はステップS9010へ進む。開始済みであれば処理はステップS9009へ進む。ステップS9009ではリソースサービス304はアプリケーション管理フレームワーク302を通じてインストールされたアプリケーション11nを停止する。その後処理はステップS9010へ進む。ステップS9010ではリソースサービス302はインストールされたアプリケーション11nのプログラム本体のファイルのサイズを取得する。そして続くステップS9011にてインストールされたアプリケーション11nのアプリケーションリソース上限宣言ファイル402のリソースの上限値412部分を書き換えた新たなアプリケーションリソース上限宣言ファイル402を生成する。この新たなアプリケーションリソース上限宣言ファイル402はストレージについては前段で取得した、インストール対象のアプリケーション11nのプログラム本体ファイルのサイズを上限値として宣言するものとなっている。その他のリソースについては上限値はゼロである。すなわち、グループ管理が可能な状態であれば、単独管理用のリソース上限値を、グループ管理用のリソース上限値で置き換える。続くステップS9012にてステップS9011で生成したアプリケーションリソース上限宣言ファイル402とその他のプログラム本体ファイルをまとめてインストール用ファイルを作成する。そして続くステップS9013にてリソースサービス304はステップS9012にて作成したインストール用ファイルを用いてアプリケーション管理フレームワーク302を通じて上書きインストール操作を行う。続くステップS9014にて上書きインストールに成功したかどうかをチェックする。成功していれば処理はステップS9015へ進む。失敗していれば処理はステップS9109へ進む。ステップS9015ではインストールされたアプリケーション11nのアプリケーションデータテーブル620におけるグループ管理状態626を有効に変更する。その後処理はステップS9019へ進む。
ステップS9017へ処理が進むとリソースサービス304はアプリケーション管理フレームワーク302を通じてインストールされたアプリケーションが停止状態であるかをチェックする。停止状態であれば処理はステップS9018へ進む。開始済みであれば処理はステップS9019へ進む。ステップS9018ではリソースサービス304はアプリケーション管理フレームワーク302を通じてインストールされたアプリケーション11nを開始させる。その後処理はステップS9019へ進む。ステップS9019にて一連の処理が完了する。
この手順により、グループ管理対象のアプリケーションがインストールされても、グループ管理できる状態でなければ、アプリケーション単独でリソースが管理され、実行される。
<アプリケーションのアンイストール手順>
図10は本実施例におけるアプリケーション11nのアンインストールの処理のシーケンスを模式的に表したフローチャートである。アプリケーション管理フレームワーク302よりアプリケーション11nのアンインストールが行われたという通知を受け取ったリソースサービス304がこのシーケンスを実行する。ステップS10001から処理を開始する。ステップS10002にてリソースサービス302はアンインストールされたアプリケーション11nのデータを受け取る。次にステップS10003にてアンインストールされたアプリケーション11nの取得していたリソースの中で解放されていないものがあるかどうかをチェックする。そういうものがない場合には処理はステップS10010へ進む。存在する場合にはステップS10004へ進む。
ステップS10004ではアンインストールされたアプリケーション11nの取得していたリソースのうち解放されていないものについて繰り返し処理を実行する。ステップS10005でリソースの解放が可能かどうかをチェックする。可能であれば処理はステップS10006へ進む。できない場合には処理はステップS10008へ進む。ステップS10006ではリソースを解放する。そして続くステップS10007にて解放されたリソースの量を管理単位の使用量から減算する。たとえば単独管理であれば全体の使用量から減算し、グループ管理であればグループの使用量から減算する。そして処理はステップS10009へ進む。ステップS10008へ処理が進んだ場合にはリソースサービス304は「リソースの解放に失敗した」という警告を出す。その後処理はステップS10009へ進む。ステップS10009では繰り返し処理の対象となるリソースを全て処理し終わったかを判定しまだであればステップS10004へ戻って続行する。全て終わったのであれば処理はステップS10010へ進む。
ステップS10010ではアンインストールされたアプリケーション11nはグループに属していたかを判定する。属していなければ処理はステップS10013へ進む。属していた場合には処理はステップS10011へ進む。ステップS10011ではアンインストールされたアプリケーション11nが属していたグループにはまだインストールされた状態にある他のアプリケーション11nが存在しているかを判定する。この判定では、例えばアプリケーションデータテーブル630からアンインストールされたアプリケーションと同じグループに属する他のアプリケーションを検索し、該当するものがあればそれに対応するグループ管理状態626を参照する。「有効」なものがあれば、存在していると判定できる。そのような他のアプリケーション11nが存在していれば処理はステップS10013へ進む。存在していなければ処理はステップS10012へ進む。ステップS10012ではアンインストールされたアプリケーション11nが属していたグループの有効化状態606を無効に変更する。このステップでは、たとえばグループデータテーブル600の該当するグループの有効化状態606を「無効」に書き換える。その後処理はステップS10013へ進む。ステップS10013ではアンインストールされたアプリケーション11nの情報をアプリケーションデータテーブル620から消去する。その後処理はステップS10014へ進む。ステップS10014にて一連の処理を完了する。
ここまで見てきたように本発明の第一の実施例においては、リソースサービス304を用いることでアプリケーション11nは、アプリケーションごとにリソースを排他的に管理する単独管理の下で動作することが可能である。そしてリソースサービス304はそのようなアプリケーション11nが単独管理の下でもそのアプリケーションリソース上限宣言ファイル402によって宣言したリソース上限412を超えないよう制御することができる。加えて本実施例においてリソースサービス304はグループ情報を保持したフラグメントバンドル305をインストールすることによりアプリケーション11nを、グループに属するアプリケーション間でリソースを共有するグループ管理の下で動作させることが可能である。この時リソースサービス304はアプリケーション11nがグループ管理の下で動作する時にはグループに対して設定されたリソースの上限値を超えないように制御することができる。そして本実施例では、リソースサービス304はアプリケーション11nが動作している状態でフラグメントバンドル305がインストールされた場合であっても矛盾なくリソース管理を継続することができる。この場合アプリケーション11nは単独管理からグループ管理へ継続的に移行することが可能である。同様にフラグメントバンドル305がアンインストールされる時にアプリケーション11nをグループ管理の下から単独管理の下へ移行して継続的に使用することが可能である。このように、本実施例ではアプリケーション11nのリソース管理に関する単独管理とグループ管理の二つの様相を、自在に切り替え適用することを可能にする。
結果として、本実施例に依れば複数のアプリケーション11nを組み合わせて導入する際にグループ情報を保持するフラグメントバンドル305を利用することができる。そのことにより、グループのリソースの上限を、それぞれのアプリケーション11n単独で宣言している上限の単純な合計値よりも少なく抑えることが可能になる。従って本実施例のリソース管理装置を設けない場合にはリソース上限値の合計がアプリケーション実行環境の制限を超えるために導入できなかった組合せのアプリケーション11nを導入することが可能になるという効果が得られる。加えて本実施例に依ればグループ情報を有するフラグメントバンドル305は、グループ管理が必要になった時に初めて導入することで事足りる。これによりアプリケーション11nの導入のハードルを低めることができ、画像形成装置100を管理する管理者の負担が大幅に軽減するという効果が得られる。
また、グループ管理対象のアプリケーションであっても、当該グループのフラグメントバンドルがインストールされていない場合、あるいはインストールされていても無効状態の場合には、当該アプリケーションは、単独管理対象のアプリケーションとしてリソースが管理される。
[第二の実施例]
次に本発明の第二の実施例について図を用いて解説を加える。第一の実施例ではアプリケーション11nを単独管理状態でも稼働させるために、アプリケーションリソース上限宣言ファイル402のリソース上限値412には単独管理の下での稼働時の値が記載されている必要があった。しかしながら、グループ管理状態での稼働が前提であれば、そのような値の宣言は不要である。本実施例では、グループ管理状態に正しく置かれていないアプリケーション11nは停止状態に移行させることにより、グループ管理によるアプリケーション11nのリソース管理を容易に行うリソース管理装置を示す。
本発明の第二の実施例の装置の構成を示す図は図1に掲げるものと同様である。また本実施例における画像形成装置100のハードウェア構成は図2に示したものと同様である。本実施例におけるアプリケーション11nを実行するためのアプリケーション実行環境の構成は図3に示したものと同様である。本実施例におけるアプリケーション11nを構成するファイルの内容、およびフラグメントバンドル305を構成するファイルの内容は図4に示したものと同様である。
図11は本実施例におけるアプリケーション管理フレームワーク302の画面(ユーザーインターフェース)の一例を示したものである。図5との差分についてのみ説明を加える。本実施例においてはグループに属するアプリケーション11nは、そのグループ情報を有するフラグメントバンドル305がインストールされていない状態では停止状態に置かれる。それが図11(a)の状態欄1100に示した部分である。グループに属するアプリケーションALPHA、アプリケーションBETA、アプリケーションGAMMAは停止状態に置かれていることが示されている。これに対して、行530で示すようにフラグメントバンドル305がインストールされると、図11(b)の状態欄1101に示される通りこれらのアプリケーション11nが開始状態に移行する。
本実施例におけるグループデータテーブル600の内容を示した図は図6(a)と同様である。本実施例におけるリソースサービス304が起動された時の処理の流れは図7Aに示したものと同様である。
<第二実施例におけるフラグメントバンドルのインストール処理>
さらに図12Aにフラグメントバンドル305インストール時の処理であるステップS7004の内容をフローチャートに表し説明を加える。なお本実施例では、アプリケーションリソース上限宣言ファイル402のリソース上限値412としては、ストレージとしてプログラム本体のファイルサイズが与えられ、他の種類のリソースとして0が与えられている。すなわち、第一の実施例におけるグループ管理下における各アプリケーションのリソース上限値がアプリケーションリソース上限宣言ファイル402に定義されている。
ステップS12101は一連の処理の開始である。ステップS12102においてまずリソースサービス304はインストールされたフラグメントバンドル305から、そのグループ情報を取得する。続いてステップS12103で、取得したグループ情報はグループデータテーブル600に登録済みであるかどうかを判定する。登録済みでなければ処理はステップS12104へ進む。ステップS12104ではグループデータテーブル600に取得したグループ情報を登録し、処理はステップS12106へ進む。登録済みであれば処理はステップS12105へ進む。ステップS12105では取得したグループ情報を用いてグループデータテーブル600のデータを更新し、ステップS12106へ進む。ステップS12106では、インストール済みであるアプリケーション11nの中に、インストールされたフラグメントバンドル305の保持しているグループに属するものが存在するかをチェックする。もしもそのようなアプリケーション11nが存在しなければ処理はステップS12113へ進む。存在する場合には処理はステップS12107へ進む。
ステップS12107からS12110ではそのようなグループに属しているアプリケーション11nに対して繰返し処理を行う。ステップS12108で処理対象であるアプリケーション11nは停止状態であるかどうかを判定する。停止状態ではない場合には処理はステップS12109へ進む。停止状態であれば処理はステップS12110へ進む。ステップS12109ではリソースサービス304がアプリケーション管理フレームワーク302を通じて処理対象であるアプリケーション11nを開始し、ステップS12110へ進む。ステップS12110ではさらに処理対象となるアプリケーション11nが存在するかどうかを判定し、存在する場合にはステップS12107からの繰返し処理を続行する。存在しない場合にはステップS12112へ進む。ステップS12109ではインストールされたフラグメントバンドル305の保持しているグループに関してグループ管理を有効化して処理はステップS12114へ進む。また処理がステップS12106からステップS12113へ進んだ場合には、リソースサービス304は「グループに属するアプリケーションがインストールされていない」警告を出力する。ステップS12113の処理が完了したら処理はやはりステップS12114へ進む。ステップS12114では他にもインストールされたフラグメントバンドル305があるかどうかをリソースサービスがチェックする。もしも存在する場合にはステップS12102へ戻り、そのフラグメントバンドル305について同様の処理を実行する。もうそのようなフラグメントバンドル305は存在しない場合には処理はステップS12115へ進み、一連の処理を終了する。
<第二実施例におけるフラグメントバンドルのアンインストール手順>
またフラグメントバンドル305アンインストール時の処理であるステップS7006の内容について図12Bを用いて説明を加える。ステップS12201は一連の処理の開始である。ステップS12202においてまずリソースサービス304はグループデータテーブル600を参照しアンインストールされたフラグメントバンドル305のグループ情報を取得する。そして続くステップS12203にてグループデータテーブル600の当該グループに関して削除検出時刻604を更新し、有効化状態606をアンインストール済に更新する。ステップS12204では、インストール済みのアプリケーション11nの中にアンインストールされたフラグメントバンドル305の保持していたグループ情報のグループに属していたアプリケーション11nがあるかどうかをチェックする。ない場合には処理はステップS12216へ進む。ある場合には処理はステップS12205へ進む。ステップS12205からS12215では該当するアプリケーション11nについて繰返し処理を行う。ステップS12206ではまず処理対象であるアプリケーション11nは開始中であるかどうかを判定する。開始中ではなく停止状態である場合には処理はステップS12208へ進む。開始中である場合には処理はステップS12207へ進む。ステップS12207ではリソースサービス304がアプリケーション管理フレームワーク302を通じて処理対象であるアプリケーション11nを停止しステップS12208へ進む。ステップS12208ではリソースサービス304は処理対象であるアプリケーション11nの取得していたリソースで解放されていないものがあるかどうかを判定する。ある場合には処理はステップS12209へ進む。ない場合には処理はステップS12215へ進む。
ステップS12209からS12214ではそのような解放されていないリソースについて繰返し処理を行う。ステップS12210にて処理対象である解放されていないリソースについて解放可能であるかどうかをチェックする。そして可能である場合には処理はステップS12211へ進む。ステップS12211ではリソースを実際に開放する処理を行い、ステップS12213へ進む。ステップS12213では解放したリソースの使用量を全体の管理しているリソースの使用量から減算する。そしてステップS12214へ進む。可能でない場合にはステップS12213へ進む。ステップS12213では「リソースの解放に失敗した」警告を出力してステップS12214へ進む。ステップS12214では処理対象のリソースがまだ存在するかを判定し、存在する場合にはステップS12209へ戻って繰返し処理を続行する。存在しない場合にはステップS12215へ進む。ステップS12215では処理対象のアプリケーション11nがまだ存在するかを判定し、存在する場合には処理はステップS12205へ戻って繰返し処理を続行する。存在しない場合には処理はステップS12216へ進む。
ステップS12216では他にもアンインストールされたフラグメントバンドル305が存在するかどうかをチェックする。そのようなフラグメントバンドル305が存在する場合には処理は、そのフラグメントバンドル305を処理対象としてステップS12202から続行される。そのようなフラグメントバンドル305が存在しない場合には処理はステップS12217へ進み、一連の処理を終了する。
<アプリケーションインストール時のリソースサービスの動作>
図13は本実施例におけるアプリケーション11nのインストールが行われた時のリソースサービス304の動作を模式的に表したフローチャートである。ステップS13001から処理を開始する。ステップS13002ではまずリソースサービス304はアプリケーション管理フレームワーク302からアプリケーション11nがインストールされたと言う通知を受け取る。そして続くステップS13003でリソースサービス304はアンインストールされたアプリケーション11nがグループ管理の対象であったかどうかをチェックする。グループ管理に属しないアプリケーション11nであった場合には処理はステップS13012へ進む。属しているアプリケーション11nであった場合には処理はステップS13004へ進む。ステップS13004ではアンインストールされたアプリケーション11nが属するグループのグループ情報がグループデータテーブル600に存在しているかどうかをチェックする。存在していなければ処理はステップS13009へ進む。存在している場合には処理はステップS13005へ進む。ステップS13005ではさらに当該グループのグループ管理が削除されていないインストールされた状態であるかどうかをチェックする。この判定では、グループデータテーブル600に該当するグループのエントリーがあれば、インストールされた状態であると判定できる。インストールされた状態であれば処理はステップS13006へ進む。アンインストール済状態であった場合には処理はステップS13009へ進む。ステップS13006では当該グループのグループ管理が有効な状態であるかをチェックする。グループデータテーブル600上有効であれば処理はステップS13007へ進む。無効であれば処理はステップS13006へ進む。ステップS13006にて、当該グループのグループ管理を有効化する。有効化が完了したら処理はステップS13007へ進む。ステップS13007ではインストールされたアプリケーション11n停止中であるかどうかを確認する。もしも停止中であれば処理はステップS13008へ進む。開始済みであれば処理はステップS13012へ進む。ステップS13008ではリソースサービス304はインストールされたアプリケーション11nを開始して、ステップS13012へ進む。
ステップS13004あるいはステップS13005からステップS13009へ進んだ処理はここで「グループ情報がインストールされていない」警告を出す。すなわち、インストールされたアプリケーション11nに対応するグループ情報がインストールされていないというケースである。この場合は警告を出した後続くステップS13010でインストールされたアプリケーションが開始済みであるかどうかをチェックする。開始済みであれば処理はステップS13011へ進む。開始しておらず停止状態であれば処理はステップS13012へ進む。ステップS13011ではリソースサービス304はインストールされたアプリケーション11nをアプリケーション管理フレームワーク302を通じて停止する。ステップS13012にて一連の処理を完了する。
<アプリケーションアンインストール時のリソースサービスの動作>
図14は本実施例においてアプリケーション11nがアンインストールされた時のリソースサービス304の動作を模式的に表したフローチャートである。ステップS14001から処理を開始する。ステップS14002でリソースサービス304はアプリケーション管理フレームワーク302からアプリケーション11nがアンインストールされたと言う通知を受け取る。そして続くステップS14003にてそのアンインストールされたアプリケーション11nはグループ管理の対象であったかどうかをチェックする。そうでない場合には処理はステップS14016へ進む。グループ管理の対象であった場合には処理はステップS14004へ進む。ステップS14004ではアンインストールされたアプリケーション11nが属しているグループの情報がグループデータテーブル600に存在していたかどうかをチェックする。存在していた場合には処理はステップS14005へ進む。していなかった場合には処理はステップS14015へ進む。
ステップS14005ではアンインストールされたアプリケーション11nが属しているグループのグループ管理がインストールされた状態であるかどうかをチェックする。アンインストール状態であれば処理はステップS14016へ進む。そうでなければ処理はステップS14006へ進む。ステップS14006ではアンインストールされたアプリケーション11nが属するグループのグループ管理が有効であるかどうかをチェックする。有効でなければ処理はステップS14016へ進む。有効であれば処理はステップS14007へ進む。ステップS14007ではアンインストールされたアプリケーション11nが取得していたリソースで解放されていないものがあるかどうかをチェックする。あれば処理はステップS14008へ進む。なければ処理はステップS14014へ進む。ステップS14008ではアンインストールされたアプリケーション11nが取得していて解放されていないリソースについて繰返し処理を行う。ステップS14009では処理対象のリソースが解放可能であるかをチェックし、解放可能であれば処理はステップS14010へ進む。ステップS14010では処理対象のリソースを解放する。そののち処理はステップS14011へ進み、解放したリソースの量を全体の使用量から減算する。そののち処理はステップS14013へ進む。ステップS14012ではリソースサービス304は「リソースの解放に失敗した」という警告を出力する。そして処理はステップS14013へ進む。ステップS14013では処理対象のリソースについてすべて処理が終わったかを判定し終わっていなければステップS14008から繰返し処理を続行する。処理が終わっていたら処理はステップS14014へ進む。
ステップS14014では、アンインストールされたアプリケーション11nが属していたグループについて、そのグループに属する他のアプリケーション11nがインストールされた状態で存在しているかどうかを判定する。存在していれば処理はステップS14016へ進む。存在していなければ処理はステップS14015へ進む。ステップS14015ではグループデータテーブル600上で当該グループのグループ管理を無効化し、ステップS14016へ進む。ステップS14016へ進むと一連の処理を完了する。
ここまで見てきたように本発明の第二の実施例においては、リソースサービス304を用いることで、グループ管理対象のアプリケーション11nを必ずグループ管理の下で動作させることができるようになる。
結果として本実施例に依れば複数のアプリケーション11nを組み合わせて導入する際にグループ情報を保持するフラグメントバンドル305を利用することができる。これにより、管理者はアプリケーション11nを本来、それぞれを単独で導入しようとするとリソースが足りないために導入できなかったところを、グループとして導入することができるようになるという効果が得られる。
また第一の実施例と比較して、グループ管理対象のアプリケーションを単独管理下で実行することがないため、処理手順が簡潔になり、また、よりリソースの効率的利用を促進できる。
[その他の実施例]
なお本発明は以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア(プログラム)を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ(またはCPUやMPU等)がプログラムを読み出して実行する処理である。
100 画像形成装置、101 情報処理装置、130 ネットワーク、302 アプリケーション管理フレームワーク、304 リソースサービス、305 フラグメントバンドル、402 アプリケーションリソース上限宣言ファイル、412 リソース上限値

Claims (12)

  1. アプリケーション群に属するアプリケーションの識別子と、前記アプリケーション群に対する使用リソース宣言量とが定義された情報を取得する取得手段と、
    アプリケーションからリソース取得APIが呼び出されたことに応じて、前記アプリケーションの識別子を基に前記アプリケーションが属するアプリケーション群を特定し、特定されたアプリケーション群に対する使用リソース宣言量を、前記情報から特定する特定手段と、
    前記アプリケーションが要求するリソース量を前記アプリケーション群が使用しているリソース量の総計に加算した結果、その値が前記特定手段により特定された使用リソース宣言量を超えてしまう場合は、前記アプリケーションにリソースオブジェクトを渡さず、そうでない場合には前記アプリケーションに前記リソースオブジェクトを渡すリソース管理手段と
    を有することを特徴とする画像形成装置。
  2. 前記リソース取得APIを呼び出したアプリケーションが、前記アプリケーション群に属しており且つ前記アプリケーション群で共有するリソースからリソースを割り当てられるグループ管理の対象となっていることを判定する判定手段を更に有し、
    前記特定手段は、前記アプリケーションが前記グループ管理の対象でない場合には、前記アプリケーションに対する使用リソース宣言量を前記情報から特定し、
    前記リソース管理手段は、前記アプリケーションが前記グループ管理の対象となっていない場合には、前記アプリケーションが要求するリソース量を前記アプリケーションが使用しているリソース量の総計に加算した結果、前記アプリケーションが前記特定手段により特定された使用リソース宣言量を超えてしまう場合は、前記アプリケーションにリソースオブジェクトを渡さず、そうでない場合には前記アプリケーションに前記リソースオブジェクトを渡すことを特徴とする請求項1に記載の画像形成装置。
  3. 前記特定手段は、前記アプリケーションが前記グループ管理の対象となっている場合には、前記アプリケーション群に対する使用リソース宣言量を前記情報から特定し、
    前記リソース管理手段は、前記アプリケーションが前記グループ管理の対象である場合には、前記アプリケーションが要求するリソース量を前記アプリケーション群が使用しているリソース量の総計に加算した結果、前記アプリケーションが前記特定手段により特定された使用リソース宣言量を超えてしまう場合は、前記アプリケーションにリソースオブジェクトを渡さず、そうでない場合には前記アプリケーションに前記リソースオブジェクトを渡すことを特徴とする請求項2に記載の画像形成装置。
  4. 前記アプリケーション群に属し且つ前記グループ管理の対象になっていないアプリケーションのグループ管理を開始する場合には、前記アプリケーションに対して割り当てたリソースを解放し、前記アプリケーションの属するアプリケーション群に対して該アプリケーション群の前記使用リソース宣言量のリソースを確保する手段を更に有することを特徴とする請求項2または3に記載の画像形成装置。
  5. 前記グループ管理の対象になっているアプリケーションのグループ管理を停止する場合には、前記アプリケーション群に対して割り当てたリソースを解放し、前記アプリケーションに対して該アプリケーションの前記使用リソース宣言量のリソースを確保する手段を更に有することを特徴とする請求項4に記載の画像形成装置。
  6. アプリケーションがインストールされた際に、該アプリケーションが前記グループ管理の対象であるか判定し、該当する場合には、前記アプリケーションに対して割り当てたリソースを解放し、前記アプリケーションの属するアプリケーション群に対して該アプリケーション群の前記使用リソース宣言量のリソースを確保する手段を更に有することを特徴とする請求項2乃至5のいずれか一項に記載の画像形成装置。
  7. アプリケーションがアンインストールされた際に、該アプリケーションが前記グループ管理の対象であったか判定し、該当する場合には、さらに当該アプリケーション群に属しているアプリケーションがインストールされているか判定し、インストールされていない場合には、前記アプリケーション群に対して割り当てたリソースを解放し、前記アプリケーション群に対するグループ管理を停止することを特徴とする請求項2乃至6のいずれか一項に記載の画像形成装置。
  8. 前記リソース取得APIを呼び出したアプリケーションが、前記アプリケーション群に属しており且つ前記アプリケーション群で共有するリソースからリソースを割り当てられるグループ管理の対象となっていることを判定する判定手段を更に有し、
    前記グループ管理の対象になっているアプリケーションのグループ管理を停止する場合には、前記アプリケーションに対して割り当てたリソースを解放し、前記アプリケーションを停止させることを特徴とする請求項1に記載の画像形成装置。
  9. アプリケーションがアンインストールされた際に、該アプリケーションが前記グループ管理の対象であったか判定し、該当する場合には、さらに当該アプリケーション群に属しているアプリケーションがインストールされているか判定し、インストールされていない場合には、前記アプリケーション群に対して割り当てたリソースを解放し、前記アプリケーション群に対するグループ管理を停止することを特徴とする請求項8に記載の画像形成装置。
  10. 前記グループ管理は、前記アプリケーション群に属するアプリケーションの識別子と、前記アプリケーション群に対する使用リソース宣言量とが定義された前記情報を追加することにより開始され、該情報の削除により停止されることを特徴とする請求項2乃至9のいずれか一項に記載の画像形成装置。
  11. アプリケーション群に属するアプリケーションの識別子と、前記アプリケーション群に対する使用リソース宣言量とが定義された情報を取得する取得工程と、
    アプリケーションからリソース取得APIが呼び出されたことに応じて、前記アプリケーションの識別子を基に前記アプリケーションが属するアプリケーション群を特定し、特定されたアプリケーション群に対する使用リソース宣言量を、前記情報から特定する特定工程と、
    前記アプリケーションが要求するリソース量を前記アプリケーション群が使用しているリソース量の総計に加算した結果、その値が前記特定工程により特定された使用リソース宣言量を超えてしまう場合は、前記アプリケーションにリソースオブジェクトを渡さず、そうでない場合には前記アプリケーションに前記リソースオブジェクトを渡すリソース管理工程と
    を有することを特徴とするリソース管理方法。
  12. 請求項1乃至10のいずれか一項に記載の画像形成装置としてコンピュータを機能させるためのプログラム。
JP2014177432A 2014-09-01 2014-09-01 画像形成装置およびリソース管理方法 Pending JP2016051395A (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP2014177432A JP2016051395A (ja) 2014-09-01 2014-09-01 画像形成装置およびリソース管理方法
KR1020150118574A KR101860611B1 (ko) 2014-09-01 2015-08-24 화상 형성 장치 및 리소스 관리 방법
DE102015114244.9A DE102015114244B4 (de) 2014-09-01 2015-08-27 Bilderzeugungsvorrichtung und ressourcenverwaltungsverfahren
US14/837,754 US9727381B2 (en) 2014-09-01 2015-08-27 Image forming apparatus and resource management method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2014177432A JP2016051395A (ja) 2014-09-01 2014-09-01 画像形成装置およびリソース管理方法

Publications (1)

Publication Number Publication Date
JP2016051395A true JP2016051395A (ja) 2016-04-11

Family

ID=55312374

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014177432A Pending JP2016051395A (ja) 2014-09-01 2014-09-01 画像形成装置およびリソース管理方法

Country Status (4)

Country Link
US (1) US9727381B2 (ja)
JP (1) JP2016051395A (ja)
KR (1) KR101860611B1 (ja)
DE (1) DE102015114244B4 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115794337A (zh) * 2022-11-14 2023-03-14 北京百度网讯科技有限公司 资源调度方法、装置、云平台、设备及存储介质

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7172342B2 (ja) * 2018-09-19 2022-11-16 富士フイルムビジネスイノベーション株式会社 情報処理装置および画像処理装置
JP7455601B2 (ja) * 2020-02-05 2024-03-26 キヤノン株式会社 情報処理装置とその制御方法、及びプログラム

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08328884A (ja) 1995-06-02 1996-12-13 Toshiba Corp 資源管理装置
US6654780B1 (en) 1997-03-28 2003-11-25 International Business Machines Corporation System of managing processor resources in a non-dedicated computer system
JP2003263324A (ja) 2002-03-11 2003-09-19 Canon Inc 情報処理装置及びその方法、プログラム
JP4150853B2 (ja) 2003-06-06 2008-09-17 日本電気株式会社 資源競合制御システム及び制御方法並びにプログラム
JP2007072674A (ja) 2005-09-06 2007-03-22 Canon Inc ソフトウェアアプリケーション及び印刷システム
JP2007199811A (ja) 2006-01-24 2007-08-09 Hitachi Ltd プログラム制御方法、計算機およびプログラム制御プログラム
JP4817994B2 (ja) 2006-07-03 2011-11-16 キヤノン株式会社 データ管理システム
JP2010039689A (ja) 2008-08-04 2010-02-18 Canon Inc 情報処理装置
JP5511483B2 (ja) 2010-04-20 2014-06-04 キヤノン株式会社 情報処理装置、制御方法、およびプログラム
JP5904800B2 (ja) 2012-01-16 2016-04-20 キヤノン株式会社 装置、制御方法、並びにプログラム

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115794337A (zh) * 2022-11-14 2023-03-14 北京百度网讯科技有限公司 资源调度方法、装置、云平台、设备及存储介质
CN115794337B (zh) * 2022-11-14 2023-09-26 北京百度网讯科技有限公司 资源调度方法、装置、云平台、设备及存储介质

Also Published As

Publication number Publication date
KR20160026713A (ko) 2016-03-09
US9727381B2 (en) 2017-08-08
DE102015114244A1 (de) 2016-03-03
KR101860611B1 (ko) 2018-05-23
US20160062801A1 (en) 2016-03-03
DE102015114244B4 (de) 2024-07-18

Similar Documents

Publication Publication Date Title
JP7090657B2 (ja) アプリケーションをアップグレードするための方法、装置、デバイスならびに記憶媒体
JP5401922B2 (ja) 仮想システム制御プログラム、方法及び装置
US8117641B2 (en) Control device and control method for information system
US7979869B2 (en) Method and system for performing I/O operations using a hypervisor
JP5204300B2 (ja) マルチスレッド上で動作するプログラムのプログラム・コードをロック衝突が少ないプログラム・コードに変換するための方法、並びにそのコンピュータ・プログラム及びコンピュータ・システム
JP2007213490A (ja) アプリケーションサーバシステムおよび仮想マシンプログラム
US8443178B2 (en) Operating system image shrinking apparatus and method and computer readable tangible medium storing a program for operating system image shrinking
JP2007115246A (ja) ソフトウェアによって使用される資源を動的に割り当てるための方法及び装置
US9542226B2 (en) Operating programs on a computer cluster
JP2008021111A (ja) 業務システム構成変更方法、管理コンピュータ、および、業務システム構成変更方法のプログラム
US20110029930A1 (en) Distributed processing device and distributed processing method
JP2014170515A (ja) 機器、情報記録プログラム、及び情報記録方法
JP2016051395A (ja) 画像形成装置およびリソース管理方法
JP2006065462A (ja) ソフトウェア・システム、ソフトウェア停止方法、プログラム、及び、記憶媒体
JP2017045217A (ja) ログ管理装置、ログ管理方法、およびログ管理プログラム
JP2015125713A (ja) プログラマブルコントローラ・システム、その支援装置、プログラマブルコントローラ、プログラム
US9753775B2 (en) Resource management apparatus and resource management method
JP2017126293A (ja) 情報処理装置及びリソース管理方法
JP2008305021A (ja) 情報処理装置及びアプリケーション管理方法
JP2008059482A (ja) 情報処理装置、情報処理方法
JP5357989B2 (ja) メモリ管理装置、メモリ管理方法およびメモリ管理プログラム
JP2019008437A (ja) データアクセス装置及びアクセスエラーの通知方法
US9678815B2 (en) Information processing system, information processing apparatus, and method of controlling them
JP2009223841A (ja) 命令ログ取得プログラム及び仮想計算機システム
JP2008191786A (ja) プログラム管理装置、プログラム管理方法及びプログラム