以下、本発明の実施の形態について図面を参照して説明する。以下の説明では同一の部品には同一の符号を付してある。それらの名称および機能も同じである。従ってそれらについての詳細な説明は繰り返さない。
<第1の実施の形態>
図1は、本発明の実施の形態の一つにおける情報処理システムの全体概要の一例を示す図である。図1を参照して、情報処理システム1は、MFP(Multi Function Peripheral)100と、サーバー200と、を含む。
MFP100は、画像形成装置の一例であり、処理対象となるデータを画像処理する画像処理機能、画像データに基づいて用紙などの記録媒体に画像を形成するための画像形成機能を少なくとも備えている。MFP100は、画像処理機能および画像形成機能に加えて、原稿を読み取るための原稿読取機能、およびファクシミリデータを送受信するファクシミリ送受信機能を備えてもよい。
サーバー200は、一般的なコンピューターである。サーバー200およびMFP100それぞれは、ローカルエリアネットワーク(LAN)3に接続される。LAN3に接続されるMFP100およびサーバー200それぞれは、LAN3を介してデータの送受信が可能である。なお、LAN3の接続形態は有線または無線を問わない。なお、LAN3に代えて、公衆交換電話網(Public Switched Telephone Networks)を用いたネットワーク、ワイドエリアネットワーク(WAN)を用いるようにしてもよい。
本実施の形態における情報処理システム1において、MFP100が有するハードウェア資源に故障が発生する場合に、サーバー200で、MFP100において発生した故障に対応したソフトウェア構成を決定し、MFPのソフトウェア構成が、決定されたソフトウェア構成となるようにMFP100を設定する。これにより、MFP100が有するハードウェア資源に不具合が生じた場合であっても、MFP100が、少なくとも一部の処理を実行可能となる。
図2は、本実施の形態におけるサーバーのハードウェア構成の概要の一例を示すブロック図である。図2を参照して、サーバー200は、サーバー200の全体を制御するための中央演算装置(CPU)201と、CPU201が実行するためのプログラムを記憶するROM(Read Only Memory)202と、CPU201の作業領域として使用されるRAM(Random Access Memory)203と、データを不揮発的に記憶するハードディスクドライブ(HDD)204と、CPU201をLAN3に接続する通信部205と、情報を表示する表示部206と、ユーザーの操作の入力を受け付ける操作部207と、外部記憶装置208と、を含む。
表示部206は、液晶表示装置(LCD)、有機ELD(Electro−Luminescence Display)等の表示装置である。操作部207は、キーボードなどのハードキーである。また、操作部207は、タッチパネルであってもよい。タッチパネルは、表示部206の上面または下面に表示部206に重畳して設けられる。タッチパネルは、表示部206の表示面中でユーザーにより指示された位置を検出する。
通信部205は、CPU201をLAN3に接続するためのインターフェースである。通信部205は、TCP(Transmission Control Protocol)またはUDP(User Datagram Protocol)等の通信プロトコルで、LAN3に接続されたMFP100と通信する。なお、通信のためのプロトコルは、特に限定されることはなく、任意のプロトコルを用いることができる。サーバー200に、MFP100のIP(Internet Protocol)アドレスを登録しておくことにより、サーバー200は、MFP100と通信することができ、データの送受信が可能となる。
HDD204は、CPU201が実行するプログラム、またはそのプログラムを実行するために必要なデータを記憶する。CPU201は、HDD204に記録されたプログラムを、RAM203にロードして実行する。
外部記憶装置208は、プログラムを記憶したCD−ROM(Compact Disk ROM)209が装着される。CPU201は、外部記憶装置208を介してCD−ROM209にアクセス可能である。CPU201は、外部記憶装置208に装着されたCD−ROM209に記録されたプログラムをRAM203にロードして実行する。なお、CPU201が実行するプログラムを記憶する媒体としては、CD−ROM209に限られず、光ディスク(MO(Magnetic Optical Disc)/MD(Mini Disc)/DVD(Digital Versatile Disc))、ICカード、光カード、マスクROMまたはEPROM(Erasable Programmable ROM)などの半導体メモリであってもよい。
また、CPU201が実行するプログラムは、CD−ROM209に記録されたプログラムに限られず、HDD204に記憶されたプログラムをRAM203にロードして実行するようにしてもよい。この場合、LAN3に接続された他のコンピューターが、HDD204に記憶されたプログラムを書き換える、または、新たなプログラムを追加して書き込むようにしてもよい。さらに、サーバー200が、LAN3またはインターネットに接続された他のコンピューターからプログラムをダウンロードして、そのプログラムをHDD204に記憶するようにしてもよい。ここでいうプログラムは、CPU201が直接実行可能なプログラムだけでなく、ソースプログラム、圧縮処理されたプログラム、暗号化されたプログラム等を含む。
図3は、本実施の形態におけるMFPのハードウェア構成の概要の一例を示すブロック図である。図3を参照して、MFP100は、メイン基板111と、原稿を読み取るための原稿読取部130と、原稿を原稿読取部130に搬送するための自動原稿搬送装置120と、原稿読取部130が原稿を読み取って出力する画像データに基づいて用紙等に画像を形成するための画像形成部140と、画像形成部140に用紙を供給するための給紙部150と、通信インターフェース(I/F)部160と、ファクシミリ部170と、外部記憶装置180と、大容量記憶装置としてのハードディスクドライブ(HDD)113と、ユーザーインターフェースとしての操作パネル115とを含む。
メイン基板111は、自動原稿搬送装置120、原稿読取部130、画像形成部140および給紙部150、通信I/F部160、ファクシミリ部170、外部記憶装置180、HDD113、および操作パネル115と接続され、MFP100の全体を制御する。
自動原稿搬送装置120は、原稿トレイ上にセットされた複数枚の原稿を1枚ずつ自動的に原稿読取部130のプラテンガラス上に設定された所定の原稿読み取り位置まで搬送し、原稿読取部130により原稿に形成された画像が読み取られた原稿を原稿排紙トレイに排出する。原稿読取部130は、原稿読取位置に搬送されてきた原稿に光を照射する光源と、原稿で反射した光を受光する光電変換素子とを含み、原稿のサイズに応じた原稿画像を走査する。光電変換素子は、受光した光を電気信号である画像データに変換して、画像形成部140に出力する。
給紙部150は、給紙トレイに収納された用紙を画像形成部140に搬送する。画像形成部140は、周知の電子写真方式により画像を形成するものであって、原稿読取部130から入力される画像データにシェーディング補正などの各種のデータ処理を施した、データ処理後の画像データまたは、外部から受信された画像データに基づいて、給紙部150により搬送される用紙に画像を形成し、画像を形成した用紙を排紙トレイに排出する。
通信I/F部160は、LAN3にMFP100を接続するためのインターフェースである。通信I/F部160は、TCPまたはUDP等の通信プロトコルで、LAN3に接続された他のコンピューターと通信する。なお、通信のためのプロトコルは、特に限定されることはなく、任意のプロトコルを用いることができる。
通信I/F部160は、LAN3から受信されるデータをメイン基板111に出力し、メイン基板111から入力されるデータをLAN3に出力する。通信I/F部160は、LAN3から受信されるデータのうちMFP100宛てのデータのみを、メイン基板111に出力し、LAN3から受信されるデータのうちMFP100とは異なる装置宛てのデータを廃棄する。
ファクシミリ部170は、公衆交換電話網(PSTN)に接続され、ファクシミリデータを送受信する。外部記憶装置180は、CD−ROM181、または半導体メモリが装着される。外部記憶装置180は、CD−ROM181または半導体メモリに記憶されたデータを読み出す。外部記憶装置180は、CD−ROM181または半導体メモリにデータを記憶する。
操作パネル115は、MFP100の上面に設けられ、表示部118と操作部119とを含む。表示部118は、液晶表示装置(LCD)、有機ELD等の表示装置であり、ユーザーに対する指示メニューや取得した画像データに関する情報等を表示する。操作部119は、複数のハードキーと、タッチパネルと、を含む。タッチパネルは、表示部118の上面または下面に表示部に重畳して設けられたマルチタッチ対応のタッチパネルであり、表示部118の表示面中でユーザーにより指示された位置を検出する。
図4は、本実施の形態におけるメイン基板の詳細な構成の一例を示すブロック図である。図4を参照して、メイン基板111は、CPU171と、ROM173と、RAM175と、画像制御ASIC(Application Specific Integrated Circuit)177と、を含む。
CPU171、ROM173、RAM175および画像制御ASIC177それぞれは、バス179に接続されており、データの転送が可能である。バス179には、原稿読取部130、画像形成部140、およびファクシミリ部170が接続される。なお、図4には示していないが、バス179には、自動原稿搬送装置120、給紙部150、通信I/F部160、外部記憶装置180、HDD113および操作パネル115が接続される。
CPU171は、MFP100の全体を制御する。具体的には、CPU171は、バス179を介して、画像制御ASIC177、原稿読取部130、画像形成部140、ファクシミリ部170、自動原稿搬送装置120、給紙部150、通信I/F部160、外部記憶装置180、HDD113および操作パネル115を制御する。ROM173は、CPU171が実行するプログラムを記憶する。RAM175は、揮発性の半導体メモリである。
CPU171は、HDD113に記憶されたプログラムをRAM175にロードして実行する。CPU171が実行するプログラムは、ハードウェア資源を制御するための制御プログラム、およびアプリケーションプログラムを含む。ハードウェア資源は、RAM175、画像制御ASIC177、自動原稿搬送装置120、原稿読取部130、画像形成部140、給紙部150、通信I/F部160、ファクシミリ部170、外部記憶装置180、HDD113および操作パネル115を含む。アプリケーションプログラムは、例えば、ファクシミリ部170を制御してファクシミリデータを送信するファクシミリ送信プログラム、ファクシミリ部170を制御してファクシミリデータを受信するファクシミリ受信プログラム、通信I/F部160を制御してプリントジョブを受信し、画像形成部140および給紙部150を制御してプリントジョブに基づいて画像を形成するプリントプログラム、原稿読取部130を制御して原稿を読み取る原稿読取プログラムを含む。また、アプリケーションプログラムは、MFP100が備える消耗品を管理するメンテナンスプログラム、エラー状態を通知するエラー状態通知プログラムを、含んでもよい。なお、CPU171が実行するアプリケーションプログラムを、これらに限定するものではない。
画像制御ASIC177は、原稿読取部130、画像形成部140およびファクシミリ部170と接続され、CPU171によって制御される。画像制御ASIC177は、複数のDMA(Direct Memory Access)チャンネルを有する。ここでは、画像制御ASIC177は、チャンネル番号がDMA−00〜DMA07の8個のDMAチャンネルを有する。
チャンネル番号がDMA−00のDMAチャンネルは、スキャン処理が割り当てられており、原稿読取部130と接続される。画像制御ASIC177は、原稿読取部130が原稿を読み取って出力する画像データが原稿読取部130から入力されると、画像データを画像処理し、RAM175に記憶する処理を実行する。
チャンネル番号がDMA−01のDMAチャンネルは、プリント出力処理が割り当てられており、画像形成部140と接続される。画像制御ASIC177は、RAM175に記憶されたデータを読み出して、画像形成部140がプリントするためのラスターデータに変換し、ラスターデータを画像形成部140に出力する処理を実行する。
チャンネル番号がDMA−02のDMAチャンネルは、FAX転送処理が割り当てられており、ファクシミリ部170と接続される。画像制御ASIC177は、ファクシミリ部170が受信したファクシミリデータが入力されると、ファクシミリデータを画像処理した後のデータをRAM175に記憶する処理を実行する。また、画像制御ASIC177は、RAM175に記憶されたデータを読み出して、ファクシミリデータに変換し、ファクシミリ部170に出力する処理を実行する。
また、チャンネル番号がDMA−03のDMAチャンネルは、データの圧縮処理および伸長処理が割り当てられる。画像制御ASIC177は、RAM175に記憶されたデータを読み出して、圧縮または伸長し、処理後のデータをRAM175に記憶する処理を実行する。チャンネル番号がDMA−04のDMAチャンネルは、データの暗号化処理および復号処理が割り当てられる。画像制御ASIC177は、RAM175に記憶されたデータを読み出して、暗号化または復号し、処理後のデータをRAM175に記憶する処理を実行する。チャンネル番号がDMA−05のDMAチャンネルは、画像データを合成する処理が割り当てられる。画像制御ASIC177は、RAM175に記憶された画像データを読み出して合成し、合成した画像データをRAM175に記憶する処理を実行する。チャンネル番号がDMA−06のDMAチャンネルは、色変換処理が割り当てられる。画像制御ASIC177は、RAM175に記憶された画像データを読み出して色変換し、変換後の画像データをRAM175に記憶する処理を実行する。チャンネル番号がDMA−07のDMAチャンネルは、変倍処理が割り当てられる。画像制御ASIC177は、RAM175に記憶された画像データを読み出してサイズを変更し、処理後の画像データをRAM175に記憶する処理を実行する。
第1の実施の形態におけるサーバー200は、MFP100をシミュレートするシミュレータを備えている。
図5は、第1の実施の形態におけるサーバーが備えるシミュレータの概要の一例を示す図である。このシミュレータは、CPU201がシミュレートプログラムを実行することにより、CPU201に形成される。図5を参照して、シミュレータは、CPU周辺シミュレータ300と、ハードウェア(HW)シミュレータ320と、を含む。CPU周辺シミュレータ300は、MFP100が備えるCPU171をシミュレートする仮想CPU301と、ROM173およびRAM175をエミュレートする仮想メモリ303と、周辺モデル305と、同期設定モデル307と、割込制御部309と、を含む。仮想CPU301、仮想メモリ303、周辺モデル305および同期設定モデル307は、バス(Bus)311に接続されている。
周辺モデル305は、MFP100が備えるHDD113、操作パネル115、通信I/F部160および外部記憶装置180をそれぞれエミュレートするHDD113A、操作パネル115A、通信I/F部160Aおよび外部記憶装置180Aを含む。
同期設定モデル307は、仮想CPU301が、仮想メモリ303および周辺モデル305と同期するための設定をする。割込制御部309は、仮想CPU301が仮想メモリ303および周辺モデル305と同期するための設定時に、仮想CPU301に割り込みを発生させる。
HWシミュレータ320は、PCI−ExpressBusモデル321と、画像制御ASICモデル323と、装置モデル325と、を含む。PCI−ExpressBusモデル321は、バス311に接続され、PCI−Express規格に従った接続をエミュレートする。画像制御ASICモデル323は、MFP100が備える画像制御ASIC177をエミュレートする。装置モデル325は、MFP100が備える自動原稿搬送装置120、原稿読取部130、画像形成部140、給紙部150およびファクシミリ部170をそれぞれエミュレートする自動原稿搬送装置120A、原稿読取部130A、画像形成部140A、給紙部150Aおよびファクシミリ部170Aを含む。
図6は、第1の実施の形態におけるMFPが備えるCPUが有する機能の一例を示すブロック図である。図6に示す機能は、MFP100が備えるCPU171が、ROM173、HDD113またはCD−ROM181に記憶された画像制御プログラムを実行することにより、CPU171により実現される機能である。画像制御プログラムは、装置設定プログラムの一部である。図6を参照して、CPU171は、処理データを受け付けるデータ受付部51と、データに対して画像処理を実行する画像処理部53と、画像処理の履歴を記憶する履歴記憶部55と、画像処理部53による画像処理の不具合を検出する不具合検出部57と、不具合の原因となるハードウェア資源の故障個所を検出するハードエラー検出部61と、サーバー200に検証を依頼する検証依頼部59と、設定部63と、復元部65と、を含む。
データ受付部51は、MFP100が処理の対象とする処理データを受け付ける。データ受付部51は、処理データを受け付けることに応じて、その処理データを画像処理部53に出力する。データ受付部51は、原稿読取部130が原稿を読み取って出力する画像データを処理データとして受け付ける。データ受付部51は、通信I/F部160が、LAN3に接続されたパーソナルコンピューター(以下PCという)からプリントジョブを受信する場合、プリントジョブに含まれるプリントデータを処理データとして受け付ける。データ受付部51は、通信I/F部160がインターネット5に接続されたウェブ(Web)サーバーからWebデータを受信する場合、Webデータを処理データとして受け付ける。また、データ受付部51は、HDD113に記憶されたデータをプリントする指示を受け付ける場合、HDD113に記憶されたデータを処理データとして受け付ける。
画像処理部53は、データを画像処理し、画像データを生成する。画像処理部53は、データ受付部51から処理データが入力されることに応じて、処理データを画像処理する。例えば、処理データがプリントデータの場合、プリントジョブによって定められた条件に従ってプリントデータを画像処理する。画像処理部53は、処理データが、原稿読取部130が出力する画像データ、WebデータまたはHDD113に記憶されたデータの場合、ユーザーが操作部119に入力するプリント条件に従って処理データを画像処理する。画像処理部53が処理データに対して実行する画像処理は1以上である。1つの処理データに対して画像処理部53が実行する1以上の画像処理をまとめたものをジョブという。
履歴記憶部55は、画像処理部53が実行したジョブの履歴を記憶する。具体的には、HDD113に、ジョブを記憶する。履歴記憶部55は、ジョブの履歴を検証依頼部59に出力する。
不具合検出部57は、画像処理部53が画像処理を実行中に発生する不具合を検出する。画像処理部53は、CPU171が画像処理プログラムを実行する画像処理タスクである。不具合検出部57は、画像処理タスクが、画像処理プログラムにより予め定められたエラーを検出する場合に、不具合を検出する。画像処理プログラムにより予め定められたエラーは、画像処理部53が画像処理を開始してから予め定められた時間が経過するタイムアウトエラーを含む。予め定められた時間は、例えば、画像処理の対象となるデータのデータ量に比例する時間としてもよい。不具合検出部57は、不具合を検出する場合、検出された不具合を特定するための不具合情報をハードエラー検出部61に出力する。
ハードエラー検出部61は、不具合情報が入力されることに応じて、ハードウェア資源の不具合を検出する。具体的には、ハードエラー検出部61は、不具合情報で特定される不具合の原因となるハードウェア資源とその故障個所を特定する。ハードエラー検出部61は、特定されたハードウェア資源および故障個所を示すエラー情報を生成し、エラー情報をエラー情報送信部92に出力する。
不具合検出部57が検出する不具合は、画像処理タスクが検出するエラーであり、画像処理に対応する。このため、例えば、画像処理と、その画像処理を実行するために用いられるハードウェア資源とを対応付けたテーブルを予め準備しておき、不具合情報に対して、その不具合情報で特定される不具合が発生した画像処理に対応するハードウェア資源を特定する。ハードウェア資源は、RAM175、画像制御ASIC177、自動原稿搬送装置120、原稿読取部130、画像形成部140、給紙部150、通信I/F部160、ファクシミリ部170、外部記憶装置180、HDD113および操作パネル115を含む。ハードエラー検出部61は、不具合の原因となるハードウェア資源として、自動原稿搬送装置120、原稿読取部130、画像形成部140、給紙部150、通信I/F部160、ファクシミリ部170、外部記憶装置180、HDD113および操作パネル115を特定する場合、それらを識別するための装置識別情報を含むエラー情報を生成する。
ハードエラー検出部61は、不具合の原因となるハードウェア資源として、RAM175または画像制御ASIC177を特定する場合、故障個所を特定する。画像処理タスクは、RAM175の作業領域を用いて画像処理する。また、画像処理タスクは、画像制御ASIC177に画像制御ASIC177が実行可能な複数の処理の一部を依頼する場合がある。画像制御ASIC177は、RAM175の作業領域を用いて画像処理する。
RAM175に発生する故障は、アクセスができない領域が存在する場合である。ハードエラー検出部61は、RAM175をスキャンして、アクセスができない領域を故障個所として特定する。例えば、データの書き込みおよび読出しができないアドレスを検出する。ハードエラー検出部61は、RAM175において故障個所を特定する場合、特定された領域を示す領域情報を含むエラー情報を生成する。
ハードエラー検出部61は、画像制御ASIC177が有する複数のDMAチャンネルのうち不具合が発生した画像処理が割り当てられたDMAチャンネルについて、動作チェックを実行する。動作チェックは、例えば、予め定められたデータを入力し、出力値を期待値と照合する処理である。ハードエラー検出部61は、動作チェックで、出力値が期待値以下となるDMAチャンネルを故障個所として特定する。ハードエラー検出部61は、画像制御ASIC177において故障個所を特定する場合、特定されたDMAチャンネルを示すチャンネル識別情報を含むエラー情報を生成する。なお、ハードエラー検出部61は、画像制御ASIC177が有する複数のDMAチャンネルそれぞれについて、動作チェックを実行するようにし、動作チェックでエラーが発生したDMAチャンネルを故障個所として特定するようにしてもよい。この場合には、画像制御ASIC177が有する複数のDMAチャンネルの全てを動作チェックするので、動作チェックの対象となるDMAチャンネルを特定する必要がない。
検証依頼部59は、ハードエラー検出部からエラー情報が入力されることに応じて、サーバー200に検証を依頼する。検証依頼部59は、履歴送信部91と、エラー情報送信部92と、装置情報送信部93と、復元依頼部94と、設定指示受付部95と、一時記憶依頼部96と、を含む。
履歴送信部91は、通信I/F部160を制御して、履歴記憶部55に記憶されたジョブの履歴を含む履歴情報をサーバー200に送信する。エラー情報送信部92は、ハードエラー検出部61からエラー情報が入力されることに応じて、通信I/F部160を制御してエラー情報をサーバー200に送信するとともに、装置情報送信部93に送信指示を出力する。装置情報送信部93は、エラー情報送信部92から送信指示が入力されることに応じて、装置情報を生成し、生成された装置情報を、通信I/F部160を制御してサーバー200に送信する。装置情報は、MFP100に搭載されているCPU171に関する情報、MFP100にインストールされたハードウェア資源に関するハード情報と、MFP100にインストールされたソフトウェア資源に関するソフト情報と、を含む。CPU171に関する情報は、CPU171の機種名を含む。ハード情報は、ハードウェア資源を識別するためのハード識別情報と、ハードウェア資源を制御するために設定されているハードパラメータとを含む。ハード情報は、ハードウェア資源が複数の場合には、複数のハードウェア資源ごとに、ハード識別情報とハードパラメータとを含む。ソフト情報は、MFP100にインストールされているプログラムのプログラム名と、そのプログラムを実行するために設定されているソフトパラメータと、を含む。
復元依頼部94、設定指示受付部95、一時記憶依頼部96、設定部63および復元部65については後述する。
図7は、第1の実施の形態におけるサーバーが備えるCPUが有する機能の一例を示すブロック図である。図7に示す機能は、サーバー200が備えるCPU201が、ROM202、HDD204またはCD−ROM209に記憶されたサーバー側画像制御プログラムを実行することにより、CPU201により実現される機能である。サーバー側画像制御プログラムは、画像制御プログラムの一部である。
図7を参照して、サーバー200が備えるCPU201は、装置情報取得部251と、履歴取得部253と、シミュレート部255と、仮想実行制御部257と、エラー情報受信部259と、設定指示部261と、依頼時記憶部263と、復元依頼受付部265と、を含む。
装置情報取得部251は、MFP100から装置情報を取得する。上述したように、MFP100は、処理データを画像処理している間に不具合が検出される場合に、装置情報を送信する。装置情報取得部251は、通信部205がMFP100から装置情報を受信すると、通信部205が受信した装置情報を取得する。装置情報取得部251は、装置情報を取得する場合、装置情報をシミュレート部255に出力する。
履歴取得部253は、MFP100から履歴情報を取得する。履歴取得部253は、通信部205がMFP100から履歴情報を受信すると、通信部205が受信した履歴情報を取得する。履歴取得部253は、取得された履歴情報を仮想実行制御部257に出力する。
エラー情報受信部259は、通信部205を制御して、MFP100からエラー情報を受信する。エラー情報受信部259は、受信されたエラー情報をシミュレート部255および仮想実行制御部257に出力する。
シミュレート部255は、装置情報取得部251から入力される装置情報に基づいてMFP100をシミュレートし、後述する仮想実行制御部257から入力されるテストジョブを実行する。まず、シミュレート部255は、装置情報に基づいて、MFP100に装着された装置を設定し、ハードパラメータを設定し、MFP100のCPU171が実行するソフトウェア資源を仮想CPU301に実行させ、ソフトパラメータを設定する。
MFP100は、装置として、画像制御ASIC177、自動原稿搬送装置120、原稿読取部130、画像形成部140、給紙部150、通信I/F部160、ファクシミリ部170、外部記憶装置180、HDD113および操作パネル115を含む。このため、装置情報に含まれるハード情報は、画像制御ASIC177、自動原稿搬送装置120、原稿読取部130、画像形成部140、給紙部150、通信I/F部160、ファクシミリ部170、外部記憶装置180、HDD113および操作パネル115を装置として定める。シミュレート部255は、装置情報に含まれるハード情報で定められた画像制御ASIC177、自動原稿搬送装置120、原稿読取部130、画像形成部140、給紙部150、通信I/F部160、ファクシミリ部170、外部記憶装置180、HDD113および操作パネル115それぞれをエミュレートするエミュレータを設定するとともに、ハード情報に含まれるハードパラメータを設定する。さらに、シミュレート部255は、エミュレートする装置との同期を設定する。例えば、図5に示したCPU周辺シミュレータ300の同期設定モデル307に、仮想CPU301が、装置のエミュレータと同期するように仮想CPU301のレジスタ値を設定させるとともに、仮想メモリ303のメモリマップを書き換える。
シミュレート部255は、エラー情報受信部259からエラー情報が入力される場合、エラー情報で特定されるハードウェア資源に対応するエミュレータを、エラー情報に含まれる故障個所が故障した状態に設定する。具体的には、シミュレート部255は、エラー情報がRAM175において故障個所として特定された領域を示す領域情報を含む場合、図5に示した仮想メモリ303のRAM175をエミュレートする部分であって、エラー情報に含まれる領域情報で特定される領域を、アクセス不可能な状態に設定する。また、シミュレート部255は、エラー情報が画像制御ASIC177において故障個所として特定されたDMAチャンネルを識別するためのチャンネル識別情報を含む場合、図5に示した画像制御ASIC177をエミュレートする画像制御ASICモデル323において、エラー情報に含まれるチャンネル識別情報で特定されるDMAチャンネルを使用不可能な状態に設定する。
また、シミュレート部255は、装置情報に含まれるソフト情報で定められたソフトウェア資源を仮想CPUが実行する状態に設定し、装置情報に含まれる設定値を設定する。具体的には、シミュレート部255は、装置情報に含まれるソフト情報で定められたソフトウェア資源である既定プログラムをインストールし、装置情報に含まれる設定値を設定する。これにより、シミュレート部255において、MFP100をシミュレートした仮想装置が完成する。なお、MFP100のRAM175に記憶されたデータをスナップショットとして取得し、仮想メモリ303に記憶するようにしてもよい。
仮想実行制御部257は、シミュレート部255を制御して、シミュレート部255がMFP100をシミュレートする仮想装置にテストジョブを実行させる。仮想実行制御部257は、確認部271と、代替部273と、インストール部275と、設定組決定部277と、動作状態取得部279と、優先度決定部281と、を含む。
優先度決定部281は、履歴取得部253から入力される履歴情報に基づいて、MFP100が実行可能な複数の処理それぞれに優先度を決定する。履歴情報は、MFP100で実行されたジョブを定める。ジョブは、複数の処理を組み合わせたものであり、複数の処理の組み合わせの違いにより複数の種類がある。例えば、種類がコピーのジョブは、原稿を読み取るスキャン処理と、画像データを画像形成する画像形成処理とを組み合わせたジョブである。種類がファクシミリ受信のジョブは、ファクシミリデータを受信する処理と、ファクシミリデータを画像データに変換する処理と、画像データを画像形成する画像形成処理とを組み合わせたジョブである。
優先度決定部281は、履歴情報に基づいて、過去に実行されたことのある処理に対して優先度を決定する。具体的には、優先度決定部281は、履歴情報に含まれる複数のジョブに基づいて、それぞれのジョブで定められる1以上の処理の種類ごとに、その処理が実行された回数を算出し、複数の種類の処理ごとに過去に実行された回数が多いほど高い優先順位を決定する。
優先度決定部281は、複数の種類の処理ごとの優先度を示す優先度情報を確認部271およびインストール部275に出力する。優先度情報は、複数の種類の処理ごとに、処理を識別するための処理識別情報と優先度との組を含む。
確認部271は、エラー情報受信部259からエラー情報が入力されることに応じて、エラー情報を代替部273およびインストール部275に出力する。
代替部273は、確認部271からエラー情報が入力される場合、エラー情報で特定されるハードウェア資源で実行される処理を定めた代替プログラムをインストール部275に通知する。具体的には、エラー情報が画像制御ASIC177において故障個所として特定されたDMAチャンネルを識別するためのチャンネル識別情報を含む場合、そのDMAチャンネルに対して割り当てられた処理を定めた代替プログラムをインストール部275に通知する。エラー情報が複数のチャンネル識別情報を含む場合、代替部273は、複数のDMAチャンネルにそれぞれ対応する処理を定めた複数の代替プログラムをインストール部275に通知する。
インストール部275は、優先度決定部281から入力される優先度に基づいて、優先度の高い順に処理を1つずつ選択し、複数の既定プログラムのうちから、また、代替部273から代替プログラムが通知される場合には、複数の既定プログラムおよび代替プログラムのうちから、選択された処理を定めるプログラムをインストールする。ここでのインストール部275によるインストールとは、プログラムの実行ファイルを仮想メモリ303のRAM175に対応する部分に記憶し、仮想装置がプログラムを実行可能な状態に仮想装置を設定することをいう。例えば、インストール部275は、既定プログラムおよび代替プログラムそれぞれが実行可能な状態に設定される場合に、RAM175に記憶されるデータ量を定めておき、インストールされたプログラムおよびインストールされていない1以上のプログラムのうち優先度が最高のプログラムそれぞれのデータ量の合計が、RAM175の使用可能な領域の容量を超えない場合にインストール可能と判断する。
確認部271は、インストール部275によってインストールされたプログラムに基づいて、1以上のテストジョブを決定し、決定された1以上のテストジョブを仮想装置に実行させる。具体的には、確認部271は、インストール部275によって仮想装置にインストールされた1以上のプログラムでそれぞれ定められる1以上の処理を特定する。MFP100が実行可能な複数の処理をそれぞれ定めた複数のテストジョブを予め準備しておき、確認部271は、予め準備された複数のテストジョブのうちから、特定された1以上の処理を定めた1以上のテストジョブを決定し、決定された1以上のテストジョブを仮想装置に実行させる。
複数のテストジョブは、それぞれに対して、基準値が予め定められている。基準値は、MFP100にハードウェア資源に故障が発生していない正常時の状態で、MFP100がテストジョブを実行した場合における動作状態を示す値である。動作状態を示す値は、例えば、テストジョブを開始してから終了するまでの処理時間、CPU171の使用率、テストジョブを実行している間のレスポンスタイムである。レスポンスタイムは、ユーザーが操作パネル115に操作を入力してからその操作に対応する処理の実行を完了するまでの時間である。
動作状態取得部279は、シミュレート部255がシミュレートする仮想装置がテストジョブを実行する間における動作状態を取得し、取得された動作状態をインストール部275に出力する。
インストール部275は、動作状態取得部279から入力される動作状態が許容条件を満たす場合、最後にインストールしたプログラムを識別するためのプログラム識別情報を含む追加指示を、確認部271および設定組決定部277に出力する。また、インストール部275は、動作状態取得部279から入力される動作状態が許容条件を満たす場合、未だ選択されていない処理のうちから優先度の最高の処理を選択し、複数の既定プログラムのうちから、また、代替部273から代替プログラムが通知される場合には、複数の既定プログラムおよび代替プログラムのうちから、選択された処理を定めるプログラムをインストールする。
インストール部275は、動作状態取得部279から入力される動作状態が許容条件を満たさない場合、設定組決定部277に決定指示を出力する。インストール部275は、動作状態で示される評価値が、基準値内であれば、許容条件を満たすと判断する。例えば、動作状態としてテストジョブを開始してから終了するまでの処理時間を用いる場合、処理時間が基準値以下であれば許容条件を満たすと判断し、処理時間が基準値を超えるならば許容条件を満たさないと判断する。また、動作状態としてCPU171の使用率を用いる場合、仮想装置の仮想CPU301の使用率が基準値以下であれば許容条件を満たすと判断するが、仮想装置の仮想CPU301の使用率が基準値より大きければ許容条件を満たさないと判断する。また、動作状態としてレスポンスタイムを用いる場合、仮想装置のレスポンスタイムが基準値以下であれば許容条件を満たすと判断するが、仮想装置のレスポンスタイムが基準値より大きければ許容条件を満たさないと判断する。
設定組決定部277は、インストール部275から決定指示が入力される場合に、それまでにインストール部275から入力された1以上の追加指示に含まれるプログラム識別情報で特定される1以上のインストールプログラムの組を設定組に決定する。設定組決定部277は、設定組を決定する場合、設定組を設定指示部261に出力する。
確認部271は、インストール部275によって1以上のプログラムがインストールされるごとに、テストジョブを決定し、シミュレート部255を制御して仮想装置にテストジョブを実行させる。インストール部275は、動作状態取得部279から許容条件を満たす動作状態が入力されるごとに、優先度の高い順に処理を1つ選択し、選択された処理を定めるプログラムをインストールする。このため、設定組決定部277によって、許容条件を満たす最大数のプログラムの組が設定組に決定される。
また、確認部271は、エラー情報受信部259から入力されるエラー情報に基づいて、実行不可テーブルを生成する。実行不可テーブルは、MFP100が実行することのできない処理を定めるテーブルである。確認部271は、エラー情報で特定されるハードウェア資源が、自動原稿搬送装置120、原稿読取部130、画像形成部140、給紙部150、通信I/F部160、ファクシミリ部170、外部記憶装置180、および操作パネル115の場合、それらで実行される処理を識別するための処理識別情報を実行不可テーブルに追加する。確認部271は、エラー情報で特定されるハードウェア資源がRAM175またはHDD113の場合、それらによって処理を特定できないので、実行不可テーブルを更新しない。また、確認部271は、エラー情報で特定されるハードウェア資源が画像制御ASIC177の場合、代替部273によって代替プログラムがインストールされ、処理が実行可能なので、実行不可テーブルを更新しない。
確認部271は、複数の既定プログラムおよび代替部273から通知された代替プログラムのうちインストール部275によってインストールされなかったプログラムが存在する場合には、実行不可テーブルを更新する。具体的には、確認部271は、インストールされなかったプログラムで定められる処理を識別するための処理識別情報を実行不可テーブルに追加する。なお、インストール部275によって最後にインストールされ、テストジョブの実行により許容条件を満たさなかったプログラムが存在する場合には、そのプログラムで定められる処理の処理識別情報を実行不可テーブルに追加する。
設定指示部261は、設定組決定部277から設定組が入力されることに応じて、MFP100に設定組に含まれる1以上のプログラムのみがインストールされるようにMFP100を制御する。設定指示部261は、通信部205を制御して、MFP100に設定指示を送信する。設定指示は、確認部271から入力される実行不可テーブルと、設定組に含まれる1以上のプログラムを識別するためのプログラム識別情報とを含み、設定組に含まれる1以上のプログラムが代替プログラムを含む場合には代替プログラムを含む。設定指示部261は、設定指示を送信すると、依頼時記憶部263に記憶指示を出力する。
設定指示部261は、設定組決定部277から設定組が入力されることに応じて、MFP100に設定組に含まれる1以上のプログラムのみがインストールされるようにMFP100を制御する。設定指示部261は、通信部205を制御して、MFP100に設定指示を送信する。設定指示は、確認部271から入力される実行不可テーブルと、設定組に含まれる1以上のプログラムを識別するためのプログラム識別情報とを含み、設定組に含まれる1以上のプログラムが代替プログラムを含む場合には代替プログラムを含む。設定指示部261は、設定指示を送信すると、依頼時記憶部263に記憶指示を出力する。
ここで、図6に示した、復元依頼部94、設定指示受付部95、一時記憶依頼部96、設定部63および復元部65とともに説明する。
設定指示を受信するMFP100の設定指示受付部95は、通信I/F部160がサーバー200から設定指示を受信すると、受信された設定指示を受け付ける。設定指示受付部95は、設定指示を受け付けると、一時記憶依頼部96に依頼指示を出力する。
一時記憶依頼部96は、依頼指示が入力されることに応じて、その時点でCPU171にインストールされている1以上のプログラムの一時的な記憶をサーバー200に依頼する。具体的には、CPU171にインストールされている1以上のプログラムを含む退避依頼を、通信I/F部160を制御して、サーバー200に送信する。一時記憶依頼部96は、退避依頼のサーバー200への送信が完了すると、設定指示受付部95に完了信号を出力する。サーバー200の依頼時記憶部263は、通信部205がMFP100から退避依頼を受信することに応じて、受信された退避依頼に含まれる1以上のプログラムをMFP100と関連付けてHDD204に記憶する。
設定指示受付部95は、一時記憶依頼部96より完了信号が入力されることに応じて、設定部63に設定情報を出力する。設定情報は、サーバー200から受信された設定指示を含む。
設定部63は、設定情報が入力されることに応じて、設定指示に従って、設定指示に含まれるプログラム識別情報で特定されるプログラムのみをCPU171にインストールする。設定指示が代替プログラムを含む場合には、CPU171には、代替プログラムがインストールされるので、画像制御ASIC177に故障が発生している場合であっても、CPU171が代替プログラムを実行するので、画像制御ASIC177で実行できない画像処理をCPU171で実行することができる。
また、設定部63は、設定指示が実行不可テーブルを含む場合、実行不可テーブルに含まれる処理識別情報で識別される処理を実行不可に設定する。また、設定部63は、実行不可に設定された処理に対して、ユーザーにより実行を指示する操作が入力される場合に、指示された処理を実行できないことを通知するためのエラーメッセージを表示する。
また、MFP100は、エラー情報を送信した後に、ハードウェア資源が交換などで故障が解消する場合がある。ハードエラー検出部61は、RAM175または画像制御ASIC177において故障個所を検出した後に、RAM175または画像制御ASIC177が交換されるなどすると、故障が解消したことを検出する。具体的には、ハードエラー検出部61は、RAM175において不具合を検出した後、所定時間間隔で、RAM175をスキャンして、アクセスができない領域を特定できない場合に、故障の解消を検出する。また、ハードエラー検出部61は、画像制御ASIC177において故障個所を検出した後に、所定時間間隔で、故障個所のDMAチャンネルについて、動作チェックを実行し、出力値が期待値の範囲内となる場合に、故障の解消を検出する。ハードエラー検出部61は、故障が解消したことを検出すると、復元指示を復元依頼部94に出力する。
復元依頼部94は、復元指示が入力されることに応じて、サーバー200にプログラムの復元を依頼する。具体的には、復元依頼部94は、通信I/F部160を制御して、サーバー200に復元依頼を送信する。
サーバー200の復元依頼受付部265は、通信部205がMFP100から復元依頼を受信する場合、依頼時記憶部263によりHDD204に記憶された複数のプログラムを読み出して、通信部205を制御して、それらをMFP100に送信する。
MFP100の復元部65は、通信I/F部160がサーバー200から1以上のプログラムを受信すると、受信されたプログラムのみをCPU171にインストールする。これにより、CPU171にインストールされる1以上のプログラムを、RAM175または画像制御ASIC177に故障が発生する前と同じにすることができる。
図8は、ハードエラー検出結果の一例を示す図である。図8を参照して、画像制御ASIC177が8つのDMAチャンネルごとに、その動作チェックの結果を示している。動作チェック結果が正常となる場合を「OK」で示し、動作チェック結果がエラーとなる場合を「NG」で示す。ここでは、チャンネル番号がDMA−05のDMAチャンネルとチャンネル番号がDMA07のDMAチャンネルにおいて、動作チェックでエラーとなったことを示している。この場合、チャンネル番号がDMA−05のDMAチャンネルに割り当てられた画像合成処理を定める代替プログラムおよびチャンネル番号がDMA−07のDMAチャンネルに割り当てられた変倍処理を定める代替プログラムをCPU171にインストールすることによって、画像制御ASIC177において実行できなくなった画像合成処理および変倍処理を、CPU171で実行することができる。
図9は、履歴情報の集計結果の一例を示す図である。図9を参照して、集計結果は、処理ごとに実行された回数である。この場合、プリント出力処理、圧縮/伸長処理、FAX転送処理、変倍処理、暗号/復号処理、スキャン処理、色変換処理、画像合成処理の順に実行回数が多いので、実行回数が大きい順に優先度が高い。
図10は、装置設定処理の流れの一例を示すフローチャートである。装置設定処理は、サーバー200が備えるCPU201が、装置設定プログラムを実行することにより、CPU201により実行される処理である。図10を参照して、サーバー200が備えるCPU201は、通信部205を制御して、MFP100から装置情報とエラー情報とを受信したか否かを判断する(ステップS01)。装置情報とエラー情報とを受信するまで待機状態となり(ステップS01でNO)、装置情報とエラー情報とを受信したならば(ステップS01でYES)、処理をステップS02に進める。
ステップS02においては、通信部205を制御して、MFP100から履歴情報を受信する。次のステップS03においては、過去に実行された処理に優先順位を付与し、処理をステップS04に進める。ステップS02において受信された履歴情報に含まれるジョブの履歴に基づいて、ジョブに含まれる処理ごとに、過去に実行された回数を算出する。そして、MFP100が実行可能な複数の処理ごとに、実行回数が多いほど高い優先順位を付与する。ステップS04においては、仮想装置設定処理を実行し、処理をステップS05に進める。仮想装置設定処理の詳細は後述するが、仮想装置をシミュレートし、設定組を決定する処理である。
ステップS05においては、設定指示を、エラー情報を送信してきたMFP100に送信し、処理をステップS06に進める。設定指示は、設定組に含まれる1以上のプログラムのみがインストールされるようにMFP100を制御する指令である。設定指示は、実行不可テーブルと、設定組に含まれる1以上のプログラムを識別するためのプログラム識別情報と、を含む。また、設定指示は、設定組に含まれる1以上のプログラムのうちに代替プログラムが含まれる場合は、その代替プログラムを含む。
設定指示を受信するMFP100は、設定指示に従って設定組に含まれる1以上のプログラムのみをインストールするが、インストールする前の段階でインストールされている1以上のプログラムを退避用プログラムとして送信する。ステップS06においては、通信部205を制御して、MFP100から送信される退避用プログラムを受信する。そして、受信された退避用プログラムをHDD204にMFP100と関連付けて記憶し(ステップS07)、処理をステップS08に進める。
MFP100においては、故障したハードウェア資源が修理されることによりハードウェア資源の故障が回復すると、サーバー200にプログラムの復元を依頼する。ステップS08においては、通信部205がMFP100から復元依頼を受信したか否かを判断する。復元依頼を受信するまで待機状態となり、復元依頼を受信したならば処理をステップS09に進める。ステップS09においては、HDD204にMFP100に関連付けられた記憶された退避用プログラムを、通信部205を制御してMFP100に送信し、処理を終了する。
図11は、仮想装置設定処理の流れの一例を示すフローチャートである。図11を参照して、CPU201は、装置設定処理のステップS01において受信された装置情報に基づいて、シミュレート対象であるMFP100のハードウェア資源を仮想装置に設定し(ステップS21)、処理をステップS22に進める。具体的には、装置情報に含まれるハード情報で定められたハードウェア資源をエミュレートするエミュレータを設定する。
次のステップS22においては、画像制御ASIC177が故障したか否かを判断する。装置設定処理のステップS01において受信されたエラー情報が、チャンネル識別情報を含む場合、画像制御ASIC177が故障したと判断する。画像制御ASIC177が故障したと判断する場合、処理をステップS23に進め、そうでなければ処理をステップS25に進める。ステップS23においては、仮想装置に故障を設定し、処理をステップS24に進める。具体的には、ステップS21において仮想装置のエミュレートとして設定された画像制御ASICモデル323において、エラー情報に含まれるチャンネル識別情報で特定されるDMAチャンネルを使用不可の状態に設定する。
ステップS24においては、代替プログラムを決定し、処理をステップS25に進める。エラー情報に含まれるチャンネル識別情報で特定されるDMAチャンネルに割り当てられた処理を定めたプログラムを代替プログラムに決定する。エラー情報が複数のチャンネル識別情報を含む場合は、複数のDMAチャンネルにそれぞれ対応する複数の代替プログラムを決定する。
次のステップS25においては、RAM175が故障したか否かを判断する。ステップS01において受信されたエラー情報が、RAM175の故障個所を特定する領域情報を含む場合、RAM175が故障したと判断する。RAM175が故障したならば処理をステップS26に進めるが、そうでなければ処理をステップS27に進める。ステップS26においては、ステップS02において設定された仮想装置において、RAM175をエミュレートする仮想メモリ303のRAM175に対応する部分であって、エラー情報に含まれる領域情報で特定される部分をアクセス不可能な状態に設定する。
ステップS27においては、RAM175および画像制御ASIC177以外の他のハードウェア資源が故障したか否かを判断する。エラー情報が領域情報およびチャンネル識別情報とは別の故障個所を示す情報を含む場合、処理をステップS28に進めるが、そうでなければ処理をステップS29に進める。ステップS28においては、実行不可テーブルを更新し、処理をステップS29に進める。MFP100が有するハードウェア資源は、RAM175および画像制御ASIC177とは別に、自動原稿搬送装置120、原稿読取部130、画像形成部140、給紙部150、通信I/F部160、ファクシミリ部170、外部記憶装置180、HDD113および操作パネル115がある。エラー情報が、自動原稿搬送装置120、原稿読取部130、画像形成部140、給紙部150、通信I/F部160、ファクシミリ部170、外部記憶装置180、HDD113または操作パネル115で故障が発生したことを示す情報を含む場合、故障が発生したハードウェア資源で実行される処理を、実行不可テーブルに追加する。
ステップS29においては、処理対象に選択されていない処理のうちから優先度が最高の処理を処理対象に選択する。そして、処理対象に選択された処理を定めるプログラムが選択可能か否かを判断する(ステップS30)。処理対象に選択された処理を定めるプログラムが選択可能ならば処理をステップS31に進めるが、そうでなければ処理をステップS35に進める。MFP100にインストールされている複数の既定プログラムと、ステップS24において決定された代替プログラムのうちに、処理対象に選択された処理を定めるプログラムが存在すれば、そのプログラムを選択するが、処理対象に選択された処理を定めるプログラムが存在しなければ、選択不可と判断する。処理対象に選択された処理を定めるプログラムが存在しない場合は、例えば、画像制御ASIC177に故障が発生し、代替プログラムが存在しない場合である。
ステップS31においては、選択されたプログラムを仮想装置にインストール可能か否かを判断する。仮想メモリ303のRAM175をエミュレートする部分の空き容量が、ステップS30において処理対象に選択されたプログラムを仮想装置が実行可能な状態にするために必要な容量が残されている否かを判断する。仮想メモリ303のRAM175をエミュレートする部分の空き容量が存在すれば処理をステップS32に進めるが、そうでなければ、処理をステップS39に進める。
ステップS32においては、ステップS28において処理対象に選択されたプログラムをインストールし、処理をステップS33に進める。具体的には、処理対象に選択されたプログラムを仮想装置が実行可能な状態に設定する。例えば、実行ファイルを仮想メモリ303のRAM175をエミュレートする部分に記憶する。
ステップS33においては、テストジョブを仮想装置に実行させ、処理をステップS34に進める。予め準備された複数のテストジョブのうちから、仮想装置にインストールされているすべての処理をそれぞれ定めた1以上のテストジョブを決定する。そして、決定されたテストジョブを仮想装置に実行させる。テストジョブが複数の場合、複数のテストジョブを順に仮想装置に実行させる。
ステップS34においては、仮想装置の動作状態を検出し、処理をステップS35に進める。ここでは、仮想装置の動作状態を、仮想装置の評価値を測定することにより検出する。テストジョブは、基準値が定められているので、基準値に対応する評価値を測定する。動作状態として検出される評価値は、テストジョブの基準値が処理時間を示す場合は、テストジョブを開始してから終了するまでの時間であり、テストジョブの基準値がCPU171の使用率を示す場合は、テストジョブを実行している間の仮想CPU301の使用率であり、テストジョブの基準値がレスポンスタイムを示す場合は、操作パネル115Aに操作を入力してからその操作に対応する処理の実行を完了するまでの時間である。
ステップS35においては、許容範囲内か否かを判断する。動作状態として検出された評価値が基準値から所定の範囲内であれば許容範囲内と判断する。許容範囲内ならば処理をステップS37に進めるが、そうでなければ処理をステップS39に進める。ステップS37においては、ステップS30において選択されたプログラムを設定組に設定し、処理をステップS38に進める。
ステップS38においては、ステップS27において処理対象に選択されていない処理が存在するか否かを判断する。未選択の処理が存在するならば処理をステップS27に戻すが、そうでなければ処理をステップS39に進める。ステップS39においては、実行不可テーブルを更新し、処理を装置設定処理に戻す。具体的には、仮想装置にインストールされなかったすべてのプログラムで定められる処理の処理識別情報を実行不可テーブルに追加する。また、ステップS32において仮想装置にインストールされた後のステップS35において許容範囲外と判断されたプログラムで定められる処理の処理識別情報を実行不可テーブルに追加する。
<第1の変形例>
第1の実施の形態におけるサーバー200は、設定組を決定するために、許容範囲を満たさなくなるまで、優先度の高い処理から順に選択し、選択された処理を定めるプログラムを仮想装置にインストールするようにした。第1の変形例におけるサーバー200は、設定組を決定するために、RAM175にインストール可能な数のプログラムをインストールしておき、許容範囲内になるまで、優先度の低い処理から順に選択して、選択された処理を定めるプログラムを仮想装置からアンインストールする。以下、第1の実施の形態におけるサーバー200と異なる点を主に説明する。
図12は、第1の変形例におけるサーバーが備えるCPUが有する機能の一例を示すブロック図である。図12を参照して、図7に示した機能と異なる点は、仮想実行制御部257が仮想実行制御部257Aに変更された点である。その他の機能は、図7に示した機能と同じなので、ここでは説明を繰り返さない。
仮想実行制御部257Aは、シミュレート部255を制御して、シミュレート部255がMFP100をシミュレートする仮想装置にテストジョブを実行させる。仮想実行制御部257Aは、確認部271Aと、代替部273Aと、アンインストール部275Aと、設定組決定部277Aと、動作状態取得部279Aと、優先度決定部281Aと、を含む。
優先度決定部281Aは、履歴取得部253から入力される履歴情報に基づいて、MFP100が実行可能な複数の処理それぞれに優先度を決定する。履歴情報は、MFP100で実行されたジョブを定める。ジョブは、複数の処理を組み合わせたものであり、複数の処理の組み合わせの違いにより複数の種類がある。例えば、種類がコピーのジョブは、原稿を読み取るスキャン処理と、画像データを画像形成する画像形成処理とを組み合わせたジョブである。種類がファクシミリ受信のジョブは、ファクシミリデータを受信する処理と、ファクシミリデータを画像データに変換する処理と、画像データを画像形成する画像形成処理とを組み合わせたジョブである。
優先度決定部281Aは、履歴情報に基づいて、過去に実行されたことのある処理に対して優先度を決定する。具体的には、優先度決定部281Aは、履歴情報に含まれる複数のジョブに基づいて、それぞれのジョブで定められる1以上の処理の種類ごとに、その処理が実行された回数を算出し、複数の種類の処理ごとに過去に実行された回数が多いほど高い優先順位を決定する。優先度決定部281Aは、複数の種類の処理ごとの優先度を示す優先度情報を確認部271Aおよびアンインストール部275Aに出力する。優先度情報は、複数の種類の処理ごとに、処理を識別するための処理識別情報と優先度との組を含む。また、優先度決定部281Aは、履歴に含まれる複数のジョブに基づいて、過去に実行されたことのない処理を特定し、特定された処理の処理を示す不実行情報をアンインストール部275Aに出力する。不実行情報は、過去に実行されたことのない処理を識別するための処理識別情報を含む。
確認部271Aは、エラー情報受信部259からエラー情報が入力されることに応じて、エラー情報を代替部273Aに出力する。代替部273Aは、確認部271Aからエラー情報が入力される場合、エラー情報で特定されるハードウェア資源で実行される処理を定めた代替プログラムを、シミュレート部255がシミュレートする仮想装置にインストールする。具体的には、エラー情報が画像制御ASIC177において故障個所として特定されたDMAチャンネルを識別するためのチャンネル識別情報を含む場合、そのDMAチャンネルに対して割り当てられた処理を定めた代替プログラムを、シミュレート部255がシミュレートする仮想装置にインストールする。ここでのインストールとは、仮想装置が代替プログラムを実行可能な状態に仮想装置を設定することをいう。エラー情報が複数のチャンネル識別情報を含む場合、代替部273Aは、複数のDMAチャンネルにそれぞれ対応する処理を定めた複数の代替プログラムを、仮想装置にインストールする。
また、確認部271Aは、エラー情報受信部259から入力されるエラー情報に基づいて、実行不可テーブルを生成する。実行不可テーブルは、MFP100が実行することのできない処理を定めるテーブルである。確認部271Aは、エラー情報で特定されるハードウェア資源が、自動原稿搬送装置120、原稿読取部130、画像形成部140、給紙部150、通信I/F部160、ファクシミリ部170、外部記憶装置180、および操作パネル115の場合、それらで実行される処理を識別するための処理識別情報を実行不可テーブルに追加する。確認部271Aは、エラー情報で特定されるハードウェア資源がRAM175またはHDD113の場合、それらによって処理を特定できないので、実行不可テーブルを更新しない。また、確認部271Aは、エラー情報で特定されるハードウェア資源が画像制御ASIC177の場合、代替部273Aによって代替プログラムがインストールされ、処理が実行可能なので、実行不可テーブルを更新しない。
シミュレート部255は、装置情報に含まれるソフト情報で定められたソフトウェア資源である複数の既定プログラムを仮想CPUが実行可能な状態に設定し、確認部271Aが、エラー情報で特定されるハードウェア資源で実行される処理を定めた代替プログラムを仮想装置が実行可能な状態に設定する場合がある。一方、MFP100においてRAM175で不具合が発生した場合、RAM175で使用可能な領域の容量が、既定プログラムと代替プログラムとを仮想装置が実行可能な状態に設定するために十分でない場合がある。この場合、確認部271Aは、RAM175で使用可能な領域の容量に基づいて、複数の既定プログラム、代替プログラムが存在する場合には、複数の既定プログラムおよび代替プログラムのうちから選択された1以上のプログラムを仮想装置が実行可能な状態に設定する。
確認部271Aは、優先度決定部281Aから入力される優先度に基づいて、複数の既定プログラムのうちから、また、代替プログラムが存在する場合には、複数の既定プログラムおよび代替プログラムのうちから、優先度の高い処理を定めるプログラムから順に選択する。例えば、確認部271Aは、既定プログラムおよび代替プログラムそれぞれが実行可能な状態に設定される場合に、RAM175に記憶されるデータ量を定めておき、選択されたプログラムそれぞれのデータ量の合計が、RAM175の使用可能な領域の容量を超えない最大数のプログラムを選択する。
確認部271Aは、複数の既定プログラムのうちから、また、代替プログラムが存在する場合には、複数の既定プログラムおよび代替プログラムのうちから、選択されなかったプログラムが存在する場合には、実行不可テーブルを更新する。具体的には、確認部271Aは、選択されなかったプログラムで定められる処理を識別するための処理識別情報を実行不可テーブルに追加する。
確認部271Aは、実行不可テーブルに基づいて、1以上のテストジョブを決定し、決定された1以上のテストジョブを仮想装置に実行させる。具体的には、確認部271Aは、MFP100が実行可能な複数の処理のうち実行不可テーブルに含まれる処理識別情報で特定される1以上の処理を除く1以上の処理を特定する。MFP100が実行可能な複数の処理をそれぞれ定めた複数のテストジョブを予め準備しておき、確認部271Aは、予め準備された複数のテストジョブのうちから、特定された1以上の処理を定めた1以上のテストジョブを決定し、決定された1以上のテストジョブを仮想装置に実行させる。
複数のテストジョブは、それぞれに対して、基準値が予め定められている。基準値は、MFP100にハードウェア資源に故障が発生していない正常時の状態で、MFP100がテストジョブを実行した場合における動作状態を示す値である。動作状態を示す値は、例えば、テストジョブを開始してから終了するまでの処理時間、CPU171の使用率、テストジョブを実行している間のレスポンスタイムである。レスポンスタイムは、ユーザーが操作パネル115に操作を入力してからその操作に対応する処理の実行を完了するまでの時間である。
アンインストール部275Aは、仮想装置にインストールされている複数のプログラムのうちから1以上をアンインストールし、アンインストール後に仮想装置にインストールされている1以上のインストールプログラムを設定組決定部277Aに通知する。ここで、アンインストール部275Aによるアンインストールとは、仮想装置がそのプログラムを実行不可能な状態に設定することをいう。具体的には、プログラムのアンインストールは、プログラムの実行ファイルを仮想メモリ303のRAM175に対応する部分から消去する処理を示す。アンインストール部275Aは、優先度決定部281Aから不実行情報が入力される場合、仮想装置にインストールされている複数のプログラムのうち、不実行情報に含まれる処理識別情報で特定される処理を定めたプログラムをアンインストールし、アンインストール後に仮想装置にインストールされている1以上のプログラムを設定組決定部277Aに通知する。
また、アンインストール部275Aは、優先度決定部281Aから入力される優先度情報に従って、仮想装置にインストールされている複数のプログラムのうちから、優先度が低い処理を定めたプログラムから順にアンインストールし、アンインストール後に仮想装置にインストールされている1以上のプログラムを設定組決定部277Aに通知する。
確認部271Aは、アンインストール部275Aによってプログラムがアンインストールされる場合、アンインストールされたプログラムが定める処理を識別するための処理識別情報を実行不可テーブルに追加することによって実行不可テーブルを更新する。確認部271Aは、実行不可テーブルを更新するごとに、実行不可テーブルを設定指示部261に出力する。確認部271Aは、アンインストール部275Aによって1以上のプログラムがアンインストールされるごとに更新後の実行不可テーブルに基づいて、テストジョブを決定し、シミュレート部255を制御して仮想装置にテストジョブを実行させる。
動作状態取得部279Aは、シミュレート部255がシミュレートする仮想装置がテストジョブを実行する間における動作状態を取得し、取得された動作状態を設定組決定部277Aに出力する。設定組決定部277Aは、動作状態取得部279Aから入力される動作状態が許容条件を満たす場合に、その時点で仮想装置にインストールされている1以上のインストールプログラムの組を設定組に決定する。動作状態で示される評価値が、基準値内であれば、許容条件を満たすと判断する。例えば、動作状態としてテストジョブを開始してから終了するまでの処理時間を用いる場合、処理時間が基準値以下であれば許容条件を満たすと判断し、処理時間が基準値を超えるならば許容条件を満たさないと判断する。また、動作状態としてCPU171の使用率を用いる場合、仮想装置の仮想CPU301の使用率が基準値以下であれば許容条件を満たすと判断するが、仮想装置の仮想CPU301の使用率が基準値より大きければ許容条件を満たさないと判断する。また、動作状態としてレスポンスタイムを用いる場合、仮想装置のレスポンスタイムが基準値以下であれば許容条件を満たすと判断するが、仮想装置のレスポンスタイムが基準値より大きければ許容条件を満たさないと判断する。設定組決定部277Aは、設定組を決定する場合、設定組を設定指示部261に出力する。
第1の変形例におけるサーバー200が備えるCPU201は、図10に示した装置設定処理を実行するが、ステップS04で実行される仮想装置設定処理が異なる。
図13および図14は、第1の変形例における仮想装置設定処理の流れの一例を示すフローチャートである。図13および図14を参照して、ステップS51〜ステップS58の処理は、図11のステップS21〜ステップS28と同じである。
ステップS59においては、処理対象に選択されていない処理のうちから優先度が最高の処理を処理対象に選択する。そして、処理対象に選択された処理を定めるプログラムが選択可能か否かを判断する(ステップS60)。処理対象に選択された処理を定めるプログラムが選択可能ならば処理をステップS61に進めるが、そうでなければ処理をステップS63に進める。MFP100にインストールされている複数の既定プログラムと、ステップS54において決定された代替プログラムのうちに、処理対象に選択された処理を定めるプログラムが存在すれば、そのプログラムを選択するが、処理対象に選択された処理を定めるプログラムが存在しなければ、選択不可と判断する。処理対象に選択された処理を定めるプログラムが存在しない場合は、例えば、画像制御ASIC177に故障が発生し、代替プログラムが存在しない場合である。
ステップS61においては、RAM175に空き容量が存在するか否かを判断する。仮想メモリ303のRAM175をエミュレートする部分の空き容量が、ステップS60において処理対象に選択されたプログラムを仮想装置が実行可能な状態にするために必要な容量が残されている否かを判断する。仮想メモリ303のRAM175をエミュレートする部分の空き容量が存在すれば処理をステップS62に進めるが、そうでなければ、処理を装置設定処理に戻す。
ステップS62においては、ステップS60において処理対象に選択されたプログラムをインストールし、処理をステップS63に進める。具体的には、処理対象に選択されたプログラムを仮想装置が実行可能な状態に設定する。例えば、実行ファイルを仮想メモリ303のRAM175をエミュレートする部分に記憶する。
ステップS63においては、ステップS59において処理対象に選択されていない処理が存在するか否かを判断する。未選択の処理が存在するならば処理をステップS59に戻すが、そうでなければ処理をステップS64に進める。
ステップS64においては、過去に実行されていない処理が存在するか否かを判断する。MFP100が実行可能な複数の処理のうち、履歴情報に含まれていない処理を過去に実行されていない処理に決定する。過去に実行されていない処理が存在するならば処理をステップS65に進め、そうでなければ処理をステップS68に進める。
ステップS65においては、過去に実行されていない処理を定めるプログラムを対象プログラムとして選択し、処理をステップS66に進める。過去に実行されていない処理が複数の場合、過去に実行されていない複数の処理をそれぞれ定める複数のプログラムを対象プログラムとして選択する。ステップS66においては、対象プログラムを仮想装置からアンインストールし、処理をステップS67に進める。ステップS67においては、実行不可テーブルを更新し、処理をステップS68に進める。具体的には、過去に実行されたことのない処理を識別するための処理識別情報を実行不可テーブルに追加する。
次のステップS68においては、テストジョブを仮想装置に実行させる。MFP100が実行可能な複数の処理のうち実行不可テーブルに含まれる処理識別情報で特定される1以上の処理を除く1以上の処理を特定し、特定された1以上の処理をそれぞれ定めた1以上のテストジョブを決定し、決定された1以上のテストジョブを仮想装置に順に実行させる。
ステップS69においては、仮想装置の動作状態を検出する。テストジョブに定められている基準値に対応する評価値を、仮想装置の動作状態として検出する。ステップS70においては、許容範囲内か否かを判断する。動作状態として検出された評価値が基準値から所定の範囲内であれば許容範囲内と判断する。許容範囲内ならば処理をステップS79に進めるが、そうでなければ処理をステップS71に進める。テストジョブが複数の場合、複数のテストジョブのすべてで、動作状態が許容範囲内の場合に処理をステップS79に進める。換言すれば、複数のテストジョブのいずれか1つでも、動作状態が許容範囲を外れる場合は、処理をステップS71に進める。ステップS79においては、その時点で仮想装置にインストールされている1以上のプログラムの組を設定組に決定し、処理を装置設定処理に戻す。
ステップS71においては、過去に実行された1以上の処理のうちから優先順位が最低の処理を処理対象に選択する。そして、処理対象に選択された処理を定めるプログラムを対象プログラムとして選択する(ステップS72)。次のステップS73においては、仮想装置から対象プログラムをアンインストールし、処理をステップS74に進める。ステップS74においては、実行不可テーブルを更新する。実行不可テーブルに、処理対象の処理の処理識別情報を追加することにより、実行不可テーブルを更新する。
次のステップS75においては、テストジョブを仮想装置に実行させ、処理をステップS76に進める。MFP100が実行可能な複数の処理のうち実行不可テーブルに含まれる処理識別情報で特定される1以上の処理を除く1以上の処理を特定し、特定された1以上の処理をそれぞれ定めた1以上のテストジョブを決定し、決定された1以上のテストジョブを仮想装置に順に実行させる。
ステップS76においては、ステップS69と同様に仮想装置の動作状態を検出し、処理をステップS77に進める。ステップS77においては、ステップS70と同様に許容範囲内か否かを判断する。許容範囲内ならば処理をステップS79に進めるが、そうでなければ処理をステップS78に進める。ステップS79においては、その時点で仮想装置にインストールされている1以上のプログラムの組を設定組に決定し、処理を装置設定処理に戻す。
ステップS78においては、過去に実行された1以上の処理のうちで、ステップS71において処理対象に選択されていない処理が存在するか否かを判断する。未選択の処理が存在するならば処理をステップS71に戻し、存在しなければ処理を装置設定処理に戻す。
以上説明したように第1の実施の形態における情報処理システム1において、サーバー200は、MFP100が有するハードウェア資源に不具合が発生する場合に、MFP100をシミュレートし、MFP100をシミュレートする仮想装置にインストールされている複数のプログラムのうちから仮想装置がジョブを実行しても予め定められた許容条件を満たす1以上のプログラムの組を設定組に決定し、設定組に含まれる1以上のプログラムのみをMFP100にインストールされるようにMFP100を制御する。このため、MFP100は、ハードウェア資源に不具合が発生した状態でジョブを実行しても許容条件を満たすことができる。したがって、ハードウェア資源に不具合のあるMFP100を、少なくとも一部の処理を実行可能な状態に設定することができる。
また、サーバー200は、MFP100が備える不揮発性メモリであるRAM175に不具合が発生する場合、MFP100に予めインストールされている複数の既定プログラムのうちからRAM175のアクセス可能な領域のみを用いてMFP100が実行可能な1以上のプログラムを実行可能な状態に仮想装置を設定する。このため、RAM175に不具合が発生するMFP100を、少なくとも一部の処理を実行可能な状態に設定することができる。
また、サーバー200は、不具合が検出されたハードウェア資源で実行される処理を定めた代替プログラムが存在する場合、複数の既定プログラムおよび代替プログラムのうちからRAM175の有効な領域のみを用いてMFP100で実行可能な1以上のプログラムを実行可能な状態に仮想装置を設定する。このため、ハードウェア資源に不具合が発生するMFP100を、少なくとも一部の処理を実行可能な状態に設定することができる。
また、サーバー200は、MFP100で過去に実行された回数の多い処理に対応するプログラムを実行可能な状態に仮想装置を設定するので、ハードウェア資源に不具合が発生するMFP100を、過去に実行された回数の多い処理を実行可能な状態に設定することができる。
また、サーバー200は、ハードウェア資源で実行される処理を定めた代替プログラムを実行可能な状態に仮想装置を設定するので、ハードウェア資源に不具合が発生するMFP100に、不具合の発生したハードウェア資源で実行される処理を実行させることができる。
また、サーバー200は、MFP100で過去に実行された処理の履歴に基づいて、過去に実行されたことのある1以上の処理をそれぞれ定める1以上のインストールプログラムを含む組を設定組に決定するので、MFP100で実行される確率の高い処理を実行可能な状態にすることができる。
また、サーバー200は、MFP100で過去に実行された回数の多い処理を定めるインストールプログラムから順にインストールする。このため、MFP100で実行された頻度の高い処理を優先して実行可能な状態にすることができる。
また、サーバー200は、MFP100をシミュレートする仮想装置にインストールされている複数のプログラムうち1以上をインストールし、仮想装置がジョブを実行する間の仮想装置の状態が許容条件を満たす場合において仮想装置にインストールされている1以上のインストールプログラムを設定組に決定する。このため、仮想装置にインストールされている複数のプログラムのうちから仮想装置がジョブを実行しても予め定められた許容条件を満たす1以上のプログラムの設定組を容易に決定することができる。
また、サーバー200は、MFP100で過去に実行されたことのない1以上の処理をそれぞれ定める1以上のインストールプログラムをアンインストールするので、MFP100で実行されたことのない処理を実行不可能な状態にして、許容条件を満たすインストールプログラムの設定組を決定することができる。
また、サーバー200は、MFP100で過去に実行された回数の多い処理を定めるインストールプログラムから順にインストールするので、MFP100で実行された頻度の高い処理を優先して実行可能な状態にすることができる。
また、サーバー200は、MFP100が備えるハードウェア資源を代替する処理を定めた代替プログラムを、仮想装置にインストールするので、MFP100において不具合のあるハードウェア資源で実行される処理をMFP100に実行させることができる。
また、サーバー200は、設定組に含まれる1以上のプログラムのみをMFP100に実行させる前に、MFP100にインストールされているプログラムを退避プログラムとして記憶し、MFP100においてハードウェア資源に発生した不具合が解消された後に、退避プログラムがMFP100にインストールされるようにMFP100を制御する。このため、MFP100を、ハードウェア資源に発生した不具合が解消された後に、不具合が発生する前の状態に戻すことができる。
また、第1の変形例におけるサーバー200は、MFP100をシミュレートする仮想装置にインストールされている複数のプログラムうち1以上をアンインストールし、仮想装置がジョブを実行する間の仮想装置の状態が許容条件を満たす場合において仮想装置にインストールされている1以上のインストールプログラムを設定組に決定する。このため、仮想装置にインストールされている複数のプログラムのうちから仮想装置がジョブを実行しても予め定められた許容条件を満たす1以上のプログラムの設定組を容易に決定することができる。
また、第1の変形例におけるサーバー200は、MFP100で過去に実行された回数の少ない処理を定めるインストールプログラムから順にアンインストールする。このため、MFP100で実行された頻度の高い処理を優先して実行可能な状態にすることができる。
また、第1の変形例におけるサーバー200は、MFP100で過去に実行されたことのない1以上の処理をそれぞれ定める1以上のインストールプログラムをアンインストールするので、MFP100で実行されたことのない処理を実行不可能な状態にして、許容条件を満たすインストールプログラムの設定組を決定することができる。
また、第1の変形例におけるサーバー200は、MFP100で過去に実行された回数の少ない処理を定めるインストールプログラムから順にアンインストールするので、MFP100で実行された頻度の高い処理を優先して実行可能な状態にすることができる。
<第2の実施の形態>
第1の実施の形態においては、サーバー200でMFP100をシミュレートした仮想装置で設定組を決定するようにした。第2の実施の形態においては、サーバー200を用いることなく、MFP100で設定組を決定するようにしたものである。第2の実施の形態におけるMFP100は、第1の実施の形態におけるサーバー200で実行する装置設定処理を実行する。第2の実施の形態におけるMFP100においては、CPU171が装置設定プログラムを実行するため、RAM175に、装置設定プログラムを実行するための領域が確保される点で、第1の実施の形態におけるサーバー200と異なる。また、第1の実施の形態におけるサーバー200が仮想装置に実行させていた処理を、第2の実施の形態におけるMFP100が備えるCPU171が実行する点が異なる。
第2の実施の形態におけるMFP100は、ハードウェア資源に不具合が発生する場合に、インストールされている複数のプログラムのうちからジョブを実行する間の動作状態が許容条件を満たす1以上のプログラムの組を設定組に決定し、設定組に含まれる1以上のプログラムのみをインストールする。このため、ハードウェア資源に不具合が発生した状態でジョブを実行しても許容条件を満たすように設定することができる。
また、MFP100は、不揮発性メモリであるRAM175に不具合が発生する場合、MFP100に予めインストールされている複数の既定プログラムのうちからRAM175のアクセス可能な領域のみを用いてMFP100が実行可能な1以上のプログラムを実行可能な状態に設定する。このため、RAM175に不具合が発生する場合に、少なくとも一部の処理を実行可能な状態に設定することができる。
また、MFP100は、不具合が検出されたハードウェア資源で実行される処理を定めた代替プログラムが存在する場合、複数の既定プログラムおよび代替プログラムのうちからRAM175の有効な領域のみを用いて実行可能な1以上のプログラムを実行可能な状態に設定する。このため、ハードウェア資源に不具合が発生する場合に、少なくとも一部の処理を実行可能な状態に設定することができる。
また、MFP100は、過去に実行された回数の多い処理に対応するプログラムを実行可能な状態に仮設定するので、ハードウェア資源に不具合が発生する場合に、過去に実行された回数の多い処理を実行可能な状態に設定することができる。
また、MFP100は、ハードウェア資源で実行される処理を定めた代替プログラムを実行可能な状態に設定するので、ハードウェア資源に不具合が発生する場合に、不具合の発生したハードウェア資源で実行される処理を実行させることができる。
また、MFP100は、過去に実行した処理の履歴に基づいて、過去に実行されたことのある1以上の処理をそれぞれ定める1以上のインストールプログラムを含む組を設定組に決定するので、実行される確率の高い処理を実行可能な状態にすることができる。
また、MFP100は、過去に実行された回数の多い処理を定めるインストールプログラムから順にインストールするので、過去に実行された頻度の高い処理を優先して実行可能な状態にすることができる。
また、MFP100は、複数のプログラムうち1以上をインストールし、ジョブを実行する間の状態が許容条件を満たす時点においてインストールされている1以上のインストールプログラムを設定組に決定するので、複数のプログラムのうちからジョブを実行しても予め定められた許容条件を満たす1以上のプログラムの組を容易に決定することができる。
また、MFP100は、過去に実行された回数の多い処理を定めるインストールプログラムから順にインストールするので、過去に実行された頻度の高い処理を優先して実行可能な状態にすることができる。
また、MFP100は、ハードウェア資源を代替する処理を定めた代替プログラムをインストールするので、不具合のあるハードウェア資源で実行される処理を実行するように設定することができる。
また、MFP100は、設定組に含まれる1以上のプログラムのみをインストールする前に、MFP100にインストールされているプログラムを退避プログラムとして記憶しておき、ハードウェア資源に発生した不具合が解消された後に、退避プログラムをインストールする。このため、MFP100を、ハードウェア資源に発生した不具合が解消された後に、不具合が発生する前の状態に戻すことができる。
<第2の変形例>
第2の実施の形態におけるMFP100は、設定組を決定するために、許容範囲を満たさなくなるまで、優先度の高い処理から順に選択し、選択された処理を定めるプログラムを仮想装置にインストールするようにした。第2の変形例におけるMFP100は、第1の変形例と同様に、設定組を決定するために、RAM175にインストール可能な数のプログラムをインストールしておき、許容範囲内になるまで、優先度の低い処理から順に選択して、選択された処理を定めるプログラムをアンインストールする。
第2の変形例におけるMFP100は、過去に実行された回数の少ない処理を定めるインストールプログラムから順にアンインストールするので、過去に実行された頻度の高い処理を優先して実行可能な状態にすることができる。
また、第2の変形例におけるMFP100は、インストールされている複数のプログラムうち1以上をアンインストールし、ジョブを実行する間の状態が許容条件を満たす時点においてインストールされている1以上のインストールプログラムを設定組に決定するので、複数のプログラムのうちからジョブを実行しても予め定められた許容条件を満たす1以上のプログラムの組を容易に決定することができる。
また、第2の変形例におけるMFP100は、過去に実行されたことのない1以上の処理をそれぞれ定める1以上のインストールプログラムをアンインストールするので、過去に実行されたことのない処理を実行不可能な状態にして、許容条件を満たすインストールプログラムの設定組を決定することができる。
また、第2の変形例におけるMFP100は、過去に実行された回数の少ない処理を定めるインストールプログラムから順にアンインストールするので、過去に実行された頻度の高い処理を優先して実行可能な状態にすることができる。
なお、上述した第1の実施の形態においては、情報処理装置の一例としてサーバー200を例に示したが、図10、図11および図12に示した装置設定処理を、サーバー200に実行させる装置設定方法、また、その装置設定方法をサーバー200が備えるCPU201に実行させる装置設定プログラムとして発明を捉えることができるのは言うまでもない。
また、第2の実施の形態においては、情報処理装置の一例としてMFP100を例に示したが、図14、図15および図11に示した装置設定処理を、MFP100に実行させる装置設定方法、また、その装置設定方法をMFP100が備えるCPU171に実行させる装置設定プログラムとして発明を捉えることができるのは言うまでもない。
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
<付記>
(1) 前記設定組決定手段は、前記仮想装置が前記ジョブを実行する間の前記仮想装置の動作状態が前記許容条件を満たさなくなく直前に前記仮想装置で実行可能な状態に設定されている1以上のプログラムの組を前記設定組に決定する、請求項7に記載のシミュレート装置。この局面によれば、仮想装置で実行可能に設定されている複数のプログラムのうちから仮想装置がジョブを実行しても予め定められた許容条件を満たす最大数のプログラムの組を容易に決定することができる。
(2) 前記設定組決定手段は、前記仮想装置が前記ジョブを実行する間の前記仮想装置の動作状態が前記許容条件を満たし、かつ、前記仮想装置で実行可能な状態に設定されている1以上のプログラムの数が最大となる組を前記設定組に決定する、請求項8に記載のシミュレート装置。この局面によれば、仮想装置で実行可能に設定されている複数のプログラムのうちから仮想装置がジョブを実行しても予め定められた許容条件を満たす最大数のプログラムの組を容易に決定することができる。
(3) 前記仮想装置で実行可能な状態に設定されている複数のプログラムうち1以上のプログラムを実行不可能な状態に設定するアンインストール手段を、さらに備え、
前記設定組決定手段は、前記仮想装置が前記ジョブを実行する間の前記仮想装置の状態が前記許容条件を満たす場合に前記仮想装置で実行可能な状態に設定されている1以上のプログラムの組を前記設定組に決定する、請求項1〜5のいずれかに記載のシミュレート装置。この局面に従えば、仮想装置で実行可能な状態に設定されている複数のプログラムうち1以上が実行不可能な状態に設定され、仮想装置がジョブを実行する間の仮想装置の状態が許容条件を満たす場合において仮想装置で実行可能に設定されている1以上のインストールプログラムが決定される。このため、仮想装置で実行可能に設定されている複数のプログラムのうちから仮想装置がジョブを実行しても予め定められた許容条件を満たす最大数のプログラムの組を容易に決定することができる。
(4) 前記アンインストール手段は、前記画像形成装置において過去に実行されたことのない1以上の処理をそれぞれ定める1以上のプログラムを実行不可能な状態に設定する、(3)に記載のシミュレート装置。この局面に従えば、過去に実行されたことのない1以上の処理をそれぞれ定める1以上のプログラムを実行不可能な状態に設定するので、画像処理装置で実行されたことのない処理を実行不可能な状態にして、許容条件を満たすプログラムの組を決定することができる。
(5) 前記アンインストール手段は、過去に実行された回数の少ない処理を定めるプログラムから順に実行不可能な状態に設定する、(4)に記載のシミュレート装置。この局面に従えば、過去に実行された回数の少ない処理を定めるプログラムから順に実行不可能な状態に設定するので、画像処理装置で実行された頻度の高い処理を優先して実行可能な状態にすることができる。
(6) 前記設定組決定手段は、前記ジョブを実行する間の動作状態が前記許容条件を満たさなくなく直前に前記仮想装置で実行可能な状態に設定されている1以上のプログラムの組を前記設定組に決定する、請求項16に記載の画像形成装置。この局面によれば、実行可能に設定されている複数のプログラムのうちからジョブを実行しても予め定められた許容条件を満たす最大数のプログラムの組を容易に決定することができる。
(7) 前記設定組決定手段は、前記ジョブを実行する間の動作状態が前記許容条件を満たし、かつ、実行可能な状態に設定されている1以上のプログラムの数が最大となる組を前記設定組に決定する、請求項17に記載の画像形成装置。この局面によれば、実行可能に設定されている複数のプログラムのうちからジョブを実行しても予め定められた許容条件を満たす最大数のプログラムの組を容易に決定することができる。
(8) 実行可能な状態に設定されている複数のプログラムうち1以上を実行不可能な状態に設定するアンインストール手段を、さらに備え、
前記設定組決定手段は、前記ジョブを実行する間の状態が前記許容条件を満たす時点で実行可能な状態に設定されている1以上のプログラムの組を前記設定組に決定する、請求項10〜14のいずれかに記載の画像形成装置。この局面に従えば、実行可能な状態に設定されている複数のプログラムうち1以上が実行不可能な状態に設定され、ジョブを実行する間の状態が許容条件を満たす時点において実行可能な状態に設定されている1以上のプログラムが設定組に決定される。このため複数のプログラムのうちからジョブを実行しても予め定められた許容条件を満たす1以上のプログラムの組を容易に決定することができる。
(9) 前記アンインストール手段は、過去に実行されたことのない1以上の処理をそれぞれ定める1以上のプログラムを実行不可能な状態に設定する、(8)に記載の画像形成装置。この局面に従えば、過去に実行されたことのない1以上の処理をそれぞれ定める1以上のプログラムを実行不可能な状態に設定するので、過去に実行されたことのない処理を実行不可能な状態にして、許容条件を満たすインストールプログラムの組を決定することができる。
(10) 前記アンインストール手段は、過去に実行された回数の少ない処理を定めるプログラムから順に実行不可能な状態に設定する、(9)に記載の画像形成装置。この局面に従えば、過去に実行された回数の少ない処理を定めるプログラムから順に実行不可能な状態に設定するので、過去に実行された頻度の高い処理を優先して実行可能な状態にすることができる。