(57)【特許請求の範囲】
【請求項１】
１つまたは複数のコアをそれぞれに含む第一の処理ユニットおよび第二の処理ユニットを有しかつ当該第一の処理ユニットおよび当該第二の処理ユニットそれぞれが異なるプログラムを実行するように構成されたプロセッサと、
前記第一の処理ユニットおよび前記第二の処理ユニットによって共有され、特定の処理を行うための第一のルーチンが記述された第一のプログラムが記憶されるメモリと、
を有し、
前記第一の処理ユニットは、前記第一のプログラムを実行し、
前記メモリは、前記第一のプログラムのアップデート版であって前記特定の処理を行うための第二のルーチンが記述された第二のプログラムを記憶し、
前記第二の処理ユニットは、前記第二のプログラムを実行し始めた後、前記第二のルーチンへ進むのを待機し、前記第一の処理ユニットが前記特定の処理を完了しまたは停止した後、前記第二のルーチンへ進み、
前記第一の処理ユニットは、前記第二の処理ユニットが前記第二のルーチンへ進んだ後、前記第一のルーチンから抜け、前記第一のルーチンへ再び進むのを待機し、前記第二の処理ユニットが前記特定の処理を正常に行えなかった場合に、前記第一のルーチンへ再び進む、
ことを特徴とする画像処理装置。
【請求項２】
前記特定の処理は、画像の入出力を伴うジョブを制御する処理である、
請求項１に記載の画像処理装置。
【請求項３】
１つまたは複数のコアをそれぞれに含む第一の処理ユニットおよび第二の処理ユニットを有しかつ当該第一の処理ユニットおよび当該第二の処理ユニットそれぞれが異なるプログラムを実行するように構成されたプロセッサと、前記第一の処理ユニットおよび前記第二の処理ユニットによって共有されかつ特定の処理を行うための第一のルーチンが記述された第一のプログラムが記憶されるメモリと、を有する画像処理装置において、当該第一のプログラムを更新するプログラム更新方法であって、
前記第一の処理ユニットが前記第一のプログラムを実行している際に、前記第一のプログラムのアップデート版でありかつ前記特定の処理を行うための第二のルーチンが記述された第二のプログラムを前記メモリに記憶させ、
前記第二のプログラムを実行し始めた後、前記第二のルーチンへ進むのを前記第二の処理ユニットに待機させ、
前記第一の処理ユニットが前記特定の処理を完了しまたは停止した後、前記第二の処理ユニットを前記第二のルーチンへ進ませ、
前記第二の処理ユニットが前記第二のルーチンへ進んだ後、前記第一の処理ユニットを前記第一のルーチンから抜けさせて、さらに、前記第一のルーチンへ再び進むのを当該第一の処理ユニットに待機させ、
前記第二の処理ユニットが前記特定の処理を正常に行えなかった場合に、前記第一の処理ユニットを、前記第一のルーチンへ再び進ませる、
ことを特徴とするプログラム更新方法。
【請求項４】
１つまたは複数のコアをそれぞれに含む第一の処理ユニットおよび第二の処理ユニットを有しかつ当該第一の処理ユニットおよび当該第二の処理ユニットそれぞれが共通のメモリを用いて異なるプログラムを実行するように構成されたプロセッサに、特定の処理を実行させるための特定処理プログラムであって、
前記第二の処理ユニットが当該特定処理プログラムを実行し始めた後、当該特定処理プログラムよりもバージョンが古い第二の特定処理プログラムが前記第一の処理ユニットによって実行されている場合に、前記特定の処理のルーチンへ進むのを前記第二の処理ユニットに待機させ、
前記第一の処理ユニットが前記特定の処理を完了しまたは停止した後、前記第二の処理ユニットを前記ルーチンへ進ませ、
前記第二の処理ユニットが前記特定の処理のルーチンへ進んだ後、前記第一の処理ユニットを前記特定の処理のルーチンから抜けさせて、さらに、前記特定の処理のルーチンへ再び進むのを当該第一の処理ユニットに待機させ、
前記第二の処理ユニットが前記特定の処理を正常に行えなかった場合に、前記第一の処理ユニットを、前記特定の処理のルーチンへ再び進ませる、
ことを特徴とする特定処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像処理装置のプログラムを更新する技術に関する。
【背景技術】
【０００２】
近年、「ＭＦＰ（Multi Function Peripherals）」または「画像形成装置」などと呼ばれる、多機能な画像処理装置が普及している。
【０００３】
画像処理装置は制御用のプログラム（以下、「制御プログラム」と記載する。）に基づいて動作する。制御プログラムは、しばしば、機能の改善またはバグの修正のために更新される。
【０００４】
従来、更新された制御プログラムを画像処理装置に適用するために、次の作業が行われる。
【０００５】
画像処理装置は、実行中のジョブがあれば、それを停止させる。または、完了するまで待つ。更新された制御プログラムを、サーバからダウンロードしまたはＵＳＢ（Universal Serial Bus）メモリなどの記録媒体から読み込むことによって取得する。この制御プログラムをインストールする。そして、再起動を必要に応じて行い、この制御プログラムをＲＡＭ（Random Access Memory）へロードして実行する。
【０００６】
画像処理装置のプログラムを更新する技術として、次のような技術が提案されている。共通のオペレーションシステムが組み込まれたＣＰＵを具備したマルチＣＰＵ構成とする装置において、ＣＰＵが使用するアプリソフトを書き換え、回路モジュールの機能を更新する。複数の回路モジュールのＣＰＵについてアプリソフトを書き換える際には、一方の回路モジュールに一方と他方のＣＰＵの各々が使用するアプリソフトを送付し、一方のＣＰＵにより双方についてアプリソフトを書き換える。この際、プログラム更新を担当する一方のＣＰＵは、共通の書換プログラムを用いて双方についてアプリソフトを書き換える、あるいは双方について時分割で書換処理することで、並行してアプリソフトを書き換えるなどする（特許文献１）。
【０００７】
または、他の発明に係る画像形成装置は、画像形成部、操作部、メインＣＰＵ、複数のサブＣＰＵを備える。メインＣＰＵは、機能ＩＤに対応する使用サブＣＰＵ情報を取得し、サブＣＰＵファームウェア更新状態テーブルのサブＣＰＵ状態と照合する。メインＣＰＵは、機能ＩＤのプリントモードに対応するサブＣＰＵに関してファームウェア更新中か否かを判定し、ファームウェア更新中の場合は、操作部の画面上の該当プリントモード選択ボタンを無効化する（特許文献２）。
【０００８】
または、他の発明に係る画像形成装置は、互いに独立して動作する複数のモジュールと、モジュールの各々に備えられ当該モジュールで動作するソフトウェアが格納されたフラッシュＲＯＭを備えている。モジュールのいずれかでソフトウェアの更新が行われている際、ジョブを受け付けると、メインＣＰＵは当該ジョブで用いるモジュールがソフトウェアの更新中であるか否かを判定する。そして、ジョブで用いるモジュールがソフトウェアの更新中であると判定すると、メインＣＰＵはソフトウェアの更新が終了するまで、ジョブの実行を待機する（特許文献３）。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特開２００４−９４３０１号公報
【特許文献２】特開２０１３−１０９４７６号公報
【特許文献３】特開２０１３−９７５１５号公報
【発明の概要】
【発明が解決しようとする課題】
【００１０】
ところで、近年、マルチコアのＣＰＵ（Central Processing Unit）が普及している。画像処理装置においても、今後、マルチコアのＣＰＵが普及すると考えられる。
【００１１】
そこで、マルチコアのＣＰＵを採用する画像処理装置における制御プログラムの更新を、ユーザの利便性をできるだけ損なうことなく行うことが求められる。
【００１２】
特許文献１、２に記載される方法では、ＣＰＵそのものを複数備える画像処理装置においては一定の効果があるかもしれない。しかし、マルチコアのＣＰＵを備える画像処理装置においては、効果が得られない。
【００１３】
特許文献３に記載される方法では、ダウンタイムが少なからず発生する。そこで、ユーザの利便性をさらに高めることが求められる。
【００１４】
本発明は、このような背景に鑑み、マルチコアのＣＰＵを採用する画像処理装置においてユーザの利便性を従来よりも確実に保ちつつプログラムを更新できるようにすることを、目的とする。
【課題を解決するための手段】
【００１５】
本発明の一形態に係る画像処理装置は、１つまたは複数のコアをそれぞれに含む第一の処理ユニットおよび第二の処理ユニットを有しかつ当該第一の処理ユニットおよび当該第二の処理ユニットそれぞれが異なるプログラムを実行するように構成されたプロセッサと、前記第一の処理ユニットおよび前記第二の処理ユニットによって共有され、特定の処理を行うための第一のルーチンが記述された第一のプログラムが記憶されるメモリと、を有し、前記第一の処理ユニットは、前記第一のプログラムを実行し、前記メモリは、前記第一のプログラムのアップデート版であって前記特定の処理を行うための第二のルーチンが記述された第二のプログラムを記憶し、前記第二の処理ユニットは、前記第二のプログラムを実行し始めた後、前記第二のルーチンへ進むのを待機し、前記第一の処理ユニットが前記特定の処理を完了しまたは停止した後、前記ルーチンへ進み、前記第一の処理ユニットは、前記第二の処理ユニットが前記第二のルーチンへ進んだ後、前記第一のルーチンから抜け、前記第一のルーチンへ再び進むのを待機し、前記第二の処理ユニットが前記特定の処理を正常に行えなかった場合に、前記第一のルーチンへ再び進む。
【００１８】
前記特定の処理は、画像の入出力を伴うジョブ（例えば、コピー、スキャン、プリント、ファックス送信、ファックス受信などのジョブ）を制御する処理である。
【発明の効果】
【００１９】
本発明によると、マルチコアのＣＰＵを採用する画像処理装置においてユーザの利便性を従来よりも確実に保ってプログラムを更新することができる。
【図面の簡単な説明】
【００２０】
【図１】画像処理システムの全体的な構成の例を示す図である。
【図２】画像処理装置のハードウェア構成の例を示す図である。
【図３】ＣＰＵの構成およびＲＡＭの割当ての例を示す図である。
【図４】画像処理装置にインストールされるプログラムの例を示す図である。
【図５】全体制御プログラムによって実現される機能的構成の例を示す図である。
【図６】実行待ちまたは実行中のジョブの遷移の例を示す図である。
【図７】全体制御プログラムによる全体的な処理の流れの例を説明するフローチャートである。
【図８】全体制御プログラムによって実現される機能的構成の例を示す図である。
【図９】全体制御プログラムによる全体的な処理の流れの例を説明するフローチャートである。
【図１０】通常モードの処理の流れの例を説明するフローチャートである。
【図１１】更新処理の流れの例を説明するフローチャートである。
【図１２】リカバリモードの処理の流れの例を説明するフローチャートである。
【図１３】ＣＰＵの構成の変形例を示す図である。
【発明を実施するための形態】
【００２１】
〔第一の実施形態〕
図１は、画像処理システム３の全体的な構成の例を示す図である。図２は、画像処理装置１のハードウェア構成の例を示す図である。図３は、ＣＰＵ１０ａの構成およびＲＡＭ１０ｂの割当ての例を示す図である。図４は、画像処理装置１にインストールされるプログラムの例を示す図である。図５は、全体制御プログラム１ＰＡによって実現される機能的構成の例を示す図である。図６は、実行待ちまたは実行中のジョブの遷移の例を示す図である。
【００２２】
画像処理システム３は、画像に関する種々の処理を実行するシステムであって、図１に示すように、画像処理装置１、サーバ２１、端末装置２２、および通信回線２８などによって構成される。
【００２３】
サーバ２１と端末装置２２とは、通信回線２８を介して通信を行うことができる。通信回線２８として、公衆回線、いわゆるＬＡＮ（Local Area Network）回線、インターネット、または専用線などが用いられる。
【００２４】
画像処理装置１は、コピー、プリント、ファックス、およびスキャナなどの機能を集約した装置である。一般に、「画像形成装置」、「複合機」、または「ＭＦＰ（Multi Function Peripheral）」などと呼ばれることがある。
【００２５】
画像処理装置１は、図２に示すように、ＣＰＵ（Central Processing Unit）１０ａ、ＲＡＭ（Random Access Memory）１０ｂ、ＲＯＭ（Read Only Memory）１０ｃ、大容量記憶装置１０ｄ、電源供給部１０ｅ、画像処理部１０ｆ、タッチパネルディスプレイ１０ｇ、操作キーパネル１０ｈ、ＵＡＲＴ（Universal Asynchronous Receiver Transmitter）１０ｉ、ＮＩＣ（Network Interface Card）１０ｊ、ファックス通信ユニット１０ｋ、ＵＳＢ（Universal Serial Bus）通信部１０ｍ、スキャンユニット１０ｎ、およびプリントユニット１０ｐなどによって構成される。
【００２６】
電源供給部１０ｅは、画像処理装置１の各ハードウェアモジュールに対して電力を供給する。
【００２７】
画像処理部１０ｆは、入力された画像または印刷の対象の画像に対して種々の画像処理を施す。
【００２８】
タッチパネルディスプレイ１０ｇは、ユーザに対するメッセージを示す画面、ユーザがコマンドまたは情報を入力するための画面、およびＣＰＵ１０ａが実行した処理の結果を示す画面などを表示する。また、タッチパネルディスプレイ１０ｇは、タッチされた位置を示す信号をＣＰＵ１０ａへ送る。
【００２９】
操作キーパネル１０ｈは、いわゆるハードウェアキーボードであって、テンキー、スタートキー、ストップキー、およびファンクションキーなどによって構成される。
【００３０】
ＵＡＲＴ１０ｉは、シリアル信号をパラレル信号に変換し、または、その逆方向に変換する。
【００３１】
ＮＩＣ１０ｊは、ＴＣＰ／ＩＰ（Transmission Control Protocol/Internet Protocol）などのプロトコルでサーバ２１または端末装置２２との間で通信を行う。
【００３２】
ファックス通信ユニット１０ｋは、モデムおよびＮＣＵ（Network Control Unit）などによって構成され、ファクシミリ端末との間でＧ３などのプロトコルでファックスデータをやり取りする。
【００３３】
ＵＳＢ通信部１０ｍは、ＵＳＢメモリまたは外付ハードディスクドライブなどの周辺機器とＵＳＢケーブルを介して接続され、データのやり取りを行う。
【００３４】
スキャンユニット１０ｎは、プラテンガラスの上にセットされた用紙に記されている画像を読み取って画像データを生成する。
【００３５】
プリントユニット１０ｐは、スキャンユニット１０ｎによって読み取られた画像のほか、ＮＩＣ１０ｊ、ファックス通信ユニット１０ｋ、またはＵＳＢ通信部１０ｍによって他の装置から取得した画像を用紙に印刷する。
【００３６】
ＣＰＵ１０ａは、複数のコアを有するマルチコアＣＰＵである。本実施形態では、ＣＰＵ１０ａとして、図３に示すような、４つのコア１ＣＲを有するクアッドコアが用いられる。以下、それぞれのコア１ＣＲを「第一のコア１ＣＲ１」、「第二のコア１ＣＲ２」、…、「第四のコア１ＣＲ４」と区別して記載することがある。また、ＣＰＵ１０ａは、ＳＭＰ（Symmetric Multiprocessing）ではなくＡＭＰ（Asymmetric Multiprocessing）の方式で動作し、４つのコア１ＣＲそれぞれが別々のプログラムを実行する。
【００３７】
ＲＯＭ１０ｃまたは大容量記憶装置１０ｄには、全体制御プログラム１ＰＡ、ディスプレイ制御プログラム１ＰＢ、スキャナ制御プログラム１ＰＣ、プリンタ制御プログラム１ＰＤ、ファックス通信制御プログラム１ＰＥ、ストレージ制御プログラム１ＰＦ、ＩＰ通信制御プログラム１ＰＧ、およびＵＳＢ制御プログラム１ＰＨなどのプログラムがインストールされている。
【００３８】
全体制御プログラム１ＰＡは、画像処理装置１の全体的な制御、例えば、ジョブの実行に関する全体的な制御を行う。つまり、全体制御プログラム１ＰＡは、ＭＦＰ制御プログラムである。
【００３９】
つまり、ディスプレイ制御プログラム１ＰＢは、画像が表示されるようにタッチパネルディスプレイ１０ｇを制御するプログラムである。
【００４０】
スキャナ制御プログラム１ＰＣは、用紙から画像を読み取るようにスキャンユニット１０ｎを制御するプログラムである。
【００４１】
プリンタ制御プログラム１ＰＤは、画像が用紙に印刷されるようにプリントユニット１０ｐを制御するプログラムである。
【００４２】
ファックス通信制御プログラム１ＰＥは、ファックスデータをファックス端末とやり取りするようにファックス通信ユニット１０ｋを制御するプログラムである。
【００４３】
ストレージ制御プログラム１ＰＦは、データを保存したり、読み出したり、更新したり、削除したりするように大容量記憶装置１０ｄを制御するプログラムである。
【００４４】
ＩＰ通信制御プログラム１ＰＧは、いわゆるＩＰ通信を行うようにＮＩＣ１０ｊを制御するプログラムである。
【００４５】
このように、ディスプレイ制御プログラム１ＰＢ、スキャナ制御プログラム１ＰＣ、およびプリンタ制御プログラム１ＰＤ、ファックス通信制御プログラム１ＰＥ、ストレージ制御プログラム１ＰＦ、ＩＰ通信制御プログラム１ＰＧ、およびＵＳＢ制御プログラム１ＰＨは、ハードウェアを制御するためのドライバである。
【００４６】
そのほか、様々なドライバがＲＯＭ１０ｃまたは大容量記憶装置１０ｄにインストールされている。また、ユーザ認証用のプログラムなどもインストールされている。
【００４７】
これらのプログラムは、必要に応じてＲＡＭ１０ｂにロード（展開）される。そして、予め決められたいずれかのコア１ＣＲによって実行される。
【００４８】
例えば、全体制御プログラム１ＰＡが第一のコア１ＣＲ１によって実行され、ディスプレイ制御プログラム１ＰＢが第三のコア１ＣＲ３によって実行され、スキャナ制御プログラム１ＰＣ、プリンタ制御プログラム１ＰＤ、ファックス通信制御プログラム１ＰＥ、ストレージ制御プログラム１ＰＦ、ＮＩＣ制御プログラム１ＰＧ、およびＵＳＢ制御プログラム１ＰＨが第四のコア１ＣＲ４によって実行される。
【００４９】
このように、ＲＡＭ１０ｂは、４つのコア１ＣＲによって共有される。したがって、ＲＡＭ１０ｂは共有メモリであると言える。
【００５０】
ところで、一般に、ＭＦＰのメーカは、種々のプログラムを適宜、アップデートし、ＭＦＰへ適用する。画像処理装置１の各プログラムも同様に、適宜、アップデートされる。そして、画像処理装置１へ提供され適用される。
【００５１】
サーバ２１は、上述の各プログラムの最新版を公開し、画像処理装置１からの要求に応じて配付する。サーバ２１として、ウェブサーバが用いられる。
【００５２】
端末装置２２は、画像処理装置１のサービスを受けるクライアントである。端末装置２２として、パーソナルコンピュータ、スマートフォン、またはタブレットコンピュータなどが用いられる。
【００５３】
以下、全体制御プログラム１ＰＡをアップデートして画像処理装置１へ適用する仕組みについて、説明する。
【００５４】
全体制御プログラム１ＰＡによると、図５に示すジョブ制御部１０１および更新処理部１０２などの機能が実現される。
【００５５】
ジョブ制御部１０１は、外部からの入力に従ってジョブを生成し、キューに登録する。そして、登録順および各ハードウェアの稼働の状況などに応じて、各ドライバによって各ジョブを実行する。
【００５６】
例えば、ユーザが原稿の用紙をセットしコピーのコマンド（指令）を入力した場合は、コピージョブを生成し、キューに登録する。そして、このコピージョブの順番が訪れると、このコピージョブの実行を開始する。
【００５７】
具体的には、ジョブ制御部１０１は、この用紙から画像を読み取る処理を、スキャナ制御プログラム１ＰＣによってスキャンユニット１０ｎに実行させる。読み取られた画像の画像データを所定のフォーマットに変換して一時的にＲＡＭ１０ｂに記憶させる。そして、この画像データに基づいてこの画像を印刷する処理を、プリンタ制御プログラム１ＰＤによってプリントユニット１０ｐに実行させる。
【００５８】
なお、スキャナ制御プログラム１ＰＣおよびプリンタ制御プログラム１ＰＤは、上述の通り、予め決められたコア１ＣＲによって実行される。後述する各ドライバも、同様である。
【００５９】
または、ユーザが原稿の用紙をセットしスキャンのコマンドおよび保存先を入力した場合は、ジョブ制御部１０１は、スキャンジョブを生成し、キューに登録する。そして、このスキャンジョブの順番が訪れると、このスキャンジョブの実行を開始する。
【００６０】
具体的には、ジョブ制御部１０１は、この用紙から画像を読み取る処理を、スキャナ制御プログラム１ＰＣによってスキャンユニット１０ｎに実行させる。読み取られた画像の画像データを所定のフォーマットに変換して一時的にＲＡＭ１０ｂに記憶させる。そして、この画像データをユーザが指定した保存先に保存する処理を実行させる。大容量記憶装置１０ｄの中の特定のフォルダが保存先として指定された場合は、このフォルダにこの画像データを保存する処理をストレージ制御プログラム１ＰＦによって大容量記憶装置１０ｄに実行させる。または、画像処理装置１に繋げられたリムーバブルディスクの中の特定のフォルダが保存先として指定された場合は、このフォルダにこの画像データを保存する処理をＵＳＢ制御プログラム１ＰＨによってＵＳＢ通信部１０ｍに実行させる。または、通信回線２８を介して画像処理装置１に接続される外部の装置の中の特定のフォルダが保存先として指定された場合は、このフォルダへこの画像データを送信する処理をＩＰ通信制御プログラム１ＰＧによってＮＩＣ１０ｊに実行させる。
【００６１】
または、ユーザが原稿の用紙をセットしファックスによる送信のコマンドおよび電話番号を入力した場合は、ジョブ制御部１０１は、ファックス送信ジョブを生成し、キューに登録する。そして、このファックス送信ジョブの順番が訪れると、このファックス送信ジョブの実行を開始する。
【００６２】
具体的には、ジョブ制御部１０１は、この用紙から画像を読み取る処理を、スキャナ制御プログラム１ＰＣによってスキャンユニット１０ｎに実行させる。読み取られた画像の画像データを所定のフォーマットに変換して一時的にＲＡＭ１０ｂに記憶させる。そして、ユーザが指定した電話番号にダイアルしてこの画像データを送信する処理をファックス通信制御プログラム１ＰＥによってファックス通信ユニット１０ｋに実行させる。
【００６３】
または、ＰＤＬ（Page Description Language）で記述された印刷データおよびプリントのコマンドが端末装置２２から送信されてきた場合は、ジョブ制御部１０１は、プリントジョブを生成し、キューに登録する。また、この印刷データをＲＡＭ１０ｂに一時的に記憶させておく。そして、このプリントジョブの順番が訪れると、このプリントジョブの実行を開始する。
【００６４】
具体的には、ジョブ制御部１０１は、この印刷データに基づいて画像を印刷する処理を、プリンタ制御プログラム１ＰＤによってプリントユニット１０ｐに実行させる。
【００６５】
または、ファックスデータがファックス端末から送信されてきた場合は、ジョブ制御部１０１は、ファックス受信ジョブを生成し、キューに登録する。さらに、このファックスデータをＲＡＭ１０ｂに一時的に記憶させておく。そして、このファックス受信ジョブの順番が訪れると、このファックス受信ジョブの実行を開始する。
【００６６】
具体的には、ジョブ制御部１０１は、このファックスデータに基づいて画像を印刷する処理を、プリンタ制御プログラム１ＰＤによってプリントユニット１０ｐに実行させる。
【００６７】
なお、大容量記憶装置１０ｄが仮想メモリとして使用されるときは、上記の各データがＲＡＭ１０ｂの代わりに大容量記憶装置１０ｄに記憶される場合がある。この場合は、ストレージ制御プログラム１ＰＦによって大容量記憶装置１０ｄが制御される。
【００６８】
また、ハードウェアの稼働の状況によって、複数のジョブが並行して実行されることがある。例えば、コピージョブとスキャンジョブとが連続して並んでおり、コピージョブの開始後、原稿の画像の読取りのフェーズが終わったら、スキャンジョブが並行して実行される。
【００６９】
更新処理部１０２は、画像処理装置１において現在実行している全体制御プログラム１ＰＡを、アップデートされたものに更新する処理を行う。
【００７０】
以下、画像処理装置１の全体制御プログラム１ＰＡを、旧全体制御プログラム１ＰＡ１から新全体制御プログラム１ＰＡ２に切り換える場合を例に説明する。
【００７１】
旧全体制御プログラム１ＰＡ１は、第一のコア１ＣＲ１によって実行されている。他のプログラムは、第三のコア１ＣＲ３または第四のコア１ＣＲ４のいずれかによって実行されている。
【００７２】
第二のコア１ＣＲ２は、何もプログラムを実行しておらず、新全体制御プログラム１ＰＡ２を実行させるために待機させられている。
【００７３】
更新処理部１０２は、ダウンロード処理部１２１、新プログラム起動部１２２、切換可否判別部１２３、および待機解除指令部１２４などによって構成される。以下に説明する各部による処理は、適宜、各ドライバ（特に、ストレージ制御プログラム１ＰＦおよびＮＩＣ制御プログラム１ＰＧ）に基づいて第三のコア１ＣＲ３または第四のコア１ＣＲ４と連携して実行される。
【００７４】
ダウンロード処理部１２１は、アップデートされた全体制御プログラム１ＰＡがサーバ２１において公開されているか否かを定期的にチェックし、公開されていれば、これをダウンロードする。ダウンロードされた全体制御プログラム１ＰＡ（本例では、新全体制御プログラム１ＰＡ２）は、ＲＯＭ１０ｃまたは大容量記憶装置１０ｄに記憶される。
【００７５】
新プログラム起動部１２２は、新全体制御プログラム１ＰＡ２をＲＡＭ１０ｂにロードし、第二のコア１ＣＲ２に実行させる。これにより、新全体制御プログラム１ＰＡ２が起動する。
【００７６】
新全体制御プログラム１ＰＡ２は、旧全体制御プログラム１ＰＡ１がアップデートされたものである。つまり、機能の向上またはバグの修正がなされている。よって、旧全体制御プログラム１ＰＡ１とは内容が異なる。しかし、基本的な役割は旧全体制御プログラム１ＰＡ１と同じであり、図５に示す通りである。
【００７７】
新全体制御プログラム１ＰＡ２は、起動後、ジョブの制御を開始するのを待機する。第二のコア１ＣＲ２は、第一のコア１ＣＲ１から待機の解除のコマンドを受け付けるまで待機する。
【００７８】
切換可否判別部１２３は、全体制御プログラム１ＰＡを旧全体制御プログラム１ＰＡ１から新全体制御プログラム１ＰＡ２へ切り換えてよいか否かを次のように判別する。
【００７９】
切換可否判別部１２３は、ジョブ制御部１０１によって管理されるジョブごとの状況をチェックする。そして、実行中のジョブが１つもない状態であれば、切り換えてはいけないと判別する。
【００８０】
例えば、図６（Ａ）に示すように、コピージョブを現在実行している最中である場合は、切換可否判別部１２３は、切り換えてはいけないと判別する。
【００８１】
その後、図６（Ｂ）に示すように、このコピージョブが完了するまでに、１つのファックス受信ジョブおよび２つのプリントジョブが新たに生成され、このファックス受信ジョブが並行して実行されている場合も、切換可否判別部１２３は、切り換えてはいけないと判別する。
【００８２】
そして、図６（Ｃ）に示すように、このコピージョブおよびこのファックス受信ジョブが完了した後、未実行のジョブがすべて待機している間、切換可否判別部１２３は、切り換えてもよいと判別する。
【００８３】
その後、図６（Ｄ）に示すように、いずれかのジョブが実行されている場合は、切換可否判別部１２３は、切り換えてはいけないと判別する。しかし、このジョブが完了した後、未実行のジョブがすべて待機している間、切換可否判別部１２３は、切り換えてもよいと判別する。
【００８４】
また、図６（Ｅ）に示すように、実行中のジョブも待機しているジョブも１つもない場合に、切換可否判別部１２３は、切り換えてもよいと判別する。
【００８５】
待機解除指令部１２４は、切り換えてもよいと切換可否判別部１２３によって判別されると、待機の解除のコマンドを第二のコア１ＣＲ２に対して与えるとともに、旧全体制御プログラム１ＰＡ１を終了させる。
【００８６】
なお、このコマンドはＲＡＭ１０ｂを介してやり取りすればよい。すなわち、第一のコア１ＣＲ１は、ＲＡＭ１０ｂの特定のアドレスに特定の値を書き込む。そして、第二のコア１ＣＲ２は、新全体制御プログラム１ＰＡ２に基づいて、定期的にこのアドレスの値をチェックすることによって、このコマンドを検知する。後述する他のコマンドも同様に、２つのコア１ＣＲ間で、ＲＡＭ１０ｂを介してやり取りされる。ＲＡＭ１０ｂの代わりに大容量記憶装置１０ｄに記憶されている特定のファイルを用いてもよい。
【００８７】
第二のコア１ＣＲ２は、このコマンドが与えられると、待機を止め、新全体制御プログラム１ＰＡ２に基づいて、ジョブ制御部１０１および更新処理部１０２を開始する。
【００８８】
キューの情報および待機中のジョブのデータが記憶される場所は、全体制御プログラム１ＰＡの全バージョンで共通化されている。これにより、旧全体制御プログラム１ＰＡ１によるジョブ制御部１０１のキューを、新全体制御プログラム１ＰＡ２による更新処理部１０２へ引き継ぐことができる。
【００８９】
このようにして、ジョブ制御部１０１および更新処理部１０２が、旧全体制御プログラム１ＰＡ１および第一のコア１ＣＲ１から新全体制御プログラム１ＰＡ２および第二のコア１ＣＲ２へ引き継がれる。
【００９０】
図７は、全体制御プログラム１ＰＡによる全体的な処理の流れの例を説明するフローチャートである。
【００９１】
次に、旧全体制御プログラム１ＰＡ１から新全体制御プログラム１ＰＡ２へ切り換える場合を例に、画像処理装置１における全体制御プログラム１ＰＡを更新する際の全体的な処理の流れを、フローチャートを参照しながら説明する。
【００９２】
旧全体制御プログラム１ＰＡ１も新全体制御プログラム１ＰＡ２も、基本的な処理の流れは同じであり、図７に示す通りである。
【００９３】
画像処理装置１の電源がオンになりまたはリセットされると、第一のコア１ＣＲ１は、現時点で画像処理装置１にインストールされている全体制御プログラム１ＰＡを起動する。ここでは、旧全体制御プログラム１ＰＡ１を起動する。そして、旧全体制御プログラム１ＰＡ１に基づいて、図７に示す手順で処理を実行する。
【００９４】
前に述べた通り、ジョブに関する処理は、待機の解除のコマンドがあるまで行われない。しかし、電源がオンになった場合およびリセットされた場合は（図７の＃７０１でＹｅｓ）、ステップ＃７０２〜＃７０３をスキップする。そして、ジョブの制御およびアップデートされた全体制御プログラム１ＰＡの有無のチェックを行う（＃７０４、＃７０５）。ステップ＃７０４のジョブの制御は、適宜、実行される。また、ステップ＃７０４は、ジョブがその種類などに応じて実行されるように各ハードウェアを制御するサブルーチンである。ステップ＃７０５の、アップデートされた全体制御プログラム１ＰＡの有無のチェックは、定期的に実行される。
【００９５】
アップデートされた全体制御プログラム１ＰＡが見つかったら（＃７０６でＹｅｓ）、第一のコア１ＣＲ１は、この全体制御プログラム１ＰＡ（本例では、新全体制御プログラム１ＰＡ２）をサーバ２１からダウンロードする（＃７０７）。そして、これをＲＡＭ１０ｂにロードして第二のコア１ＣＲ２に実行させる（＃７０８）。これにより、新全体制御プログラム１ＰＡ２が起動される。
【００９６】
すると、第二のコア１ＣＲ２が、新全体制御プログラム１ＰＡ２に基づいて、図７に示す手順で処理を実行する。これにより、バージョンの異なる２つの全体制御プログラム１ＰＡが働く。
【００９７】
新全体制御プログラム１ＰＡ２の起動は電源がオンになったことにもリセットされたことにも起因していないので（＃７０１でＮｏ）、第二のコア１ＣＲ２は、第一のコア１ＣＲ１からの待機の解除のコマンドの検知を試みる（＃７０２）。
【００９８】
第一のコア１ＣＲ１は、未だ完了していないジョブがある場合は（＃７０９でＹｅｓ）、第一のコア１ＣＲ１の制御の下で実行中であるジョブがなくなったら（＃７１０でＮｏ）、第二のコア１ＣＲ２へ待機の解除のコマンドを与えるとともに（＃７１１）、旧全体制御プログラム１ＰＡ１を終了する。この際に、旧全体制御プログラム１ＰＡ１をアンインストールしてもよい。実行中のジョブも待機中のジョブも１つもない場合も（＃７０９でＮｏ）、同様である（＃７１１）。
【００９９】
一方、第二のコア１ＣＲ２は、待機の解除のコマンドを検知すると（＃７０３でＹｅｓ）、ジョブの制御の処理を開始する（＃７０４）。
【０１００】
このようにして、旧全体制御プログラム１ＰＡ１から新全体制御プログラム１ＰＡ２への切換えが完了する。
【０１０１】
さらに、第二のコア１ＣＲ２は、アップデートされた全体制御プログラム１ＰＡの有無のチェックの処理も開始する（＃７０５）。
【０１０２】
ステップ＃７０４は、旧全体制御プログラム１ＰＡ１においては、本発明における第一のルーチンに相当し、新全体制御プログラム１ＰＡ２においては、第二のルーチンに相当する。
【０１０３】
第一の実施形態によると、マルチコアのＣＰＵをＣＰＵ１０ａとして採用する画像処理装置１において、ＣＰＵ１０ａをＡＭＰで動作させ、ある１つのコア１ＣＲに全体制御プログラム１ＰＡを実行させ、アップデートされた全体制御プログラム１ＰＡを他の１つのコア１ＣＲに実行させた。しかも、特定の処理のルーチン（ジョブの制御のルーチン）へ進む前に停止させ、古いほうの全体制御プログラム１ＰＡによるジョブが完了しまたは停止したタイミングでこのルーチンを開始させるように、全体制御プログラム１ＰＡを構成した。これにより、ダウンタイムの発生の防止を図り、ユーザの利便性を従来よりも確実に保って画像処理装置１の全体制御プログラム１ＰＡを更新することができる。
【０１０４】
〔第二の実施形態〕
図８は、全体制御プログラム１ＲＡによって実現される機能的構成の例を示す図である。
【０１０５】
画像処理装置１にインストールされている全体制御プログラムを更新した後、画像処理装置１に不具合が生じる場合がある。このような場合は、全体制御プログラムを古いバージョンに戻した方がよいことがある。第二の実施形態の全体制御プログラム１ＲＡは、古いバージョンにリカバリ（復帰）させる機能を備えている。
【０１０６】
以下、この機能を中心に、全体制御プログラム１ＲＡについて説明する。第一の実施形態と重複する点については、説明を省略する。
【０１０７】
画像処理システム３の全体的な構成は、第一の実施形態と同様であり、図１に示した通りである。画像処理装置１のハードウェアの構成も、第一の実施形態と同様であり、図２に示した通りである。
【０１０８】
ただし、全体制御プログラム１ＰＡの代わりに全体制御プログラム１ＲＡが用いられる。全体制御プログラム１ＲＡによると、図８に示すジョブ制御部１５１、更新処理部１５２、およびリカバリ処理部１５３などの機能が実現される。
【０１０９】
ジョブ制御部１５１は、第一の実施形態のジョブ制御部１０１（図５参照）と同様に、外部からの入力に従ってジョブを生成し、キューに登録する。そして、登録順および各ハードウェアの稼働の状況などに応じて、各ドライバによって各ジョブを実行する。
【０１１０】
ただし、第二の実施形態においては、この全体制御プログラム１ＲＡは、新しい全体制御プログラム１ＲＡに切り換わった後、終了するのではなく、リカバリのために常駐し続ける。このとき、ジョブ制御部１５１は、休止する。そして、後述する通り、新しい全体制御プログラム１ＲＡを実行しているコア１ＣＲからリカバリのコマンドが与えられたら、再び動作し始める。次に説明する更新処理部１５２およびリカバリ処理部１５３も同様である。
【０１１１】
更新処理部１５２は、第一の実施形態の更新処理部１０２と同様に、現在実行している全体制御プログラム１ＲＡを更新する処理を行う。
【０１１２】
更新処理部１５２は、ダウンロード処理部１６１、新プログラム起動部１６２、切換可否判別部１６３、および待機解除指令部１６４などによって構成される。これらの役割は、第一の実施形態のダウンロード処理部１２１、新プログラム起動部１２２、切換可否判別部１２３、および待機解除指令部１２４と同様である。
【０１１３】
リカバリ処理部１５３は、この全体制御プログラム１ＲＡによるジョブの処理に不具合が生じた場合に、古い全体制御プログラム１ＲＡへリカバリするための処理を行う。
【０１１４】
リカバリ処理部１５３は、不具合検知部１７１、リカバリ指令部１７２、および旧プログラム起動部１７３などによって構成される。
【０１１５】
不具合検知部１７１は、ジョブ制御部１５１が実行させているジョブの状況を監視することによって不具合を検知する。
【０１１６】
リカバリ指令部１７２は、不具合検知部１７１によって不具合が検知されたら、１つ古いバージョンの全体制御プログラム１ＲＡを実行しているコア１ＣＲに対して、処理を再開するようにコマンドする。つまり、リカバリのコマンドを与える。
【０１１７】
旧プログラム起動部１７３は、画像処理装置１の電源がオンになりまたはリセットされた場合に、１つ古いバージョンの全体制御プログラム１ＲＡを起動し他のコア１ＣＲに実行させる。
【０１１８】
図９は、全体制御プログラム１ＲＡによる全体的な処理の流れの例を説明するフローチャートである。図１０は、通常モードの処理の流れの例を説明するフローチャートである。図１１は、更新処理の流れの例を説明するフローチャートである。図１２は、リカバリモードの処理の流れの例を説明するフローチャートである。
【０１１９】
次に、旧全体制御プログラム１ＲＡ１を新全体制御プログラム１ＲＡ２へ切り換える場合を例に、画像処理装置１における全体制御プログラム１ＲＡを更新する際の処理の流れを、フローチャートを参照しながら説明する。
【０１２０】
旧全体制御プログラム１ＲＡ１は、初版であり、新全体制御プログラム１ＲＡ２はその次のバージョンである。最初は、旧全体制御プログラム１ＲＡ１のみが画像処理装置１にインストールされている。
【０１２１】
旧全体制御プログラム１ＲＡ１も新全体制御プログラム１ＲＡ２も、全体的な処理の流れは同じであり、図９に示す通りである。
【０１２２】
＜１＞  未アップデート時における電源オンまたはリセットに伴う処理
画像処理装置１の電源がオンになりまたはリセットされると、第一のコア１ＣＲ１は、この時点で画像処理装置１にインストールされている最新の全体制御プログラム１ＲＡを起動する。ここでは、旧全体制御プログラム１ＲＡ１を起動する。そして、旧全体制御プログラム１ＲＡ１に基づいて、図９に示す手順で処理を実行する。
【０１２３】
この時点では、旧全体制御プログラム１ＲＡ１は画像処理装置１にインストールされている古いバージョンではなく（図９の＃７２１でＮｏ）、かつ、今回の起動は電源のオンまたはリセットに伴うものなので（＃７２２でＹｅｓ）、第一のコア１ＣＲ１は、旧全体制御プログラム１ＲＡ１に基づいて通常モードのルーチンに進み、適宜、通常モードの処理を行う（＃７２５）。
【０１２４】
なお、旧全体制御プログラム１ＲＡ１よりも古いバージョンの全体制御プログラム１ＲＡがないので（＃７２３でＮｏ）、ステップ＃７２４の処理はスキップされる。古いバージョンの全体制御プログラム１ＲＡがある場合は、後述するように、第一のコア１ＣＲ１は、通常モードへ進むのと前後してまたは並行してステップ＃７２４の処理を実行する。
【０１２５】
通常モードの処理の手順は、図１０に示す通りである。第一のコア１ＣＲ１は、第一の実施形態と同様に、ジョブの制御およびアップデートされた全体制御プログラム１ＲＡの有無のチェックを行う（図１０の＃７４１、＃７４６）。ステップ＃７４１は、第一の実施形態のステップ＃７０４と同様、ジョブがその種類などに応じて実行されるように各ハードウェアを制御するサブルーチンである。
【０１２６】
ステップ＃７４１によるジョブが正常に終了しなかった場合つまりジョブに異常があった場合は（＃７４２でＹｅｓ、＃７４３でＹｅｓ）、古いバージョンの全体制御プログラム１ＲＡが画像処理装置１にインストールされていれば、ステップ＃７４５において、この全体制御プログラム１ＲＡへの切換えを行う。つまり、古い全体制御プログラム１ＲＡへのリカバリを行う。しかし、この時点では、この全体制御プログラム１ＲＡがインストールされていないので（＃７４４でＮｏ）、リカバリをスキップする。リカバリについては、後述する。
【０１２７】
アップデートされた全体制御プログラム１ＲＡ（本例では、新全体制御プログラム１ＲＡ２）が見つかったら（＃７４７でＹｅｓ）、第一のコア１ＣＲ１は、画像処理装置１の全体制御プログラム１ＲＡを更新する処理、つまり、旧全体制御プログラム１ＲＡ１から新全体制御プログラム１ＲＡ２への切換えを行う（＃７４８）。この処理の手順は、図１１に示す通りである。
【０１２８】
旧全体制御プログラム１ＲＡ１から新全体制御プログラム１ＲＡ２への切換えは、基本的に第一の実施形態と同様である。
【０１２９】
すなわち、第一のコア１ＣＲ１は、新全体制御プログラム１ＲＡ２をサーバ２１からダウンロードし（図１１の＃７６１）、これをＲＡＭ１０ｂにロードして第二のコア１ＣＲ２に実行させる（＃７６２）。これにより、新全体制御プログラム１ＲＡ２が起動される。しかし、この時点では、第二のコア１ＣＲ２によるジョブの制御は開始されない。新全体制御プログラム１ＲＡ２は、ＲＯＭ１０ｃまたは大容量記憶装置１０ｄに記憶（インストール）される。
【０１３０】
未だ完了していなジョブがある場合は（＃７６３でＹｅｓ）、第一のコア１ＣＲ１の制御の下で実行中であるジョブがなくなったら（＃７６４でＮｏ）、第一のコア１ＣＲ１は、第二のコア１ＣＲ２へ待機の解除のコマンドを与える（＃７６５）。実行中のジョブも待機中のジョブも１つもない場合も（＃７６３でＮｏ）、同様である（＃７６５）。
【０１３１】
第一の実施形態では、第一のコア１ＣＲ１は、古いほうの全体制御プログラムを終了させたが、第二の実施形態では、終了させない。第一のコア１ＣＲ１は、リカバリモードのルーチンへ進み、リカバリモードの処理を実行する（＃７６６）。この処理の手順は、図１２に示す通りである。
【０１３２】
第一のコア１ＣＲ１は、新しい全体制御プログラム１ＲＡ（本例では、新全体制御プログラム１ＲＡ２）を実行するコア１ＣＲ（本例では、第二のコア１ＣＲ２）からのリカバリのコマンドが与えられるのを待つ（図１２の＃７７１）。
【０１３３】
リカバリのコマンドが与えられたら（＃７７２でＹｅｓ）、第一のコア１ＣＲ１は、通常モードへ再び進む（＃７７３）。つまり、ジョブの制御などを開始する。通常モードの処理の手順は、前に図１０で説明した通りである。
【０１３４】
＜２＞  新しい全体制御プログラム１ＲＡによる処理
新全体制御プログラム１ＲＡ２は、上述の通り、第一のコア１ＣＲ１および旧全体制御プログラム１ＲＡ１によってダウンロードされＲＡＭ１０ｂにロードされると、第二のコア１ＣＲ２によって実行される。
【０１３５】
すると、第二のコア１ＣＲ２は、新全体制御プログラム１ＲＡ２に基づいて、図９に示す手順で処理を実行する。
【０１３６】
新全体制御プログラム１ＲＡ２は画像処理装置１にインストールされている全体制御プログラム１ＲＡのうち新しい全体制御プログラム１ＲＡであり（図９の＃７２１でＮｏ）、今回の起動は電源のオンに伴うものでもリセットに伴うものでないので（＃７２２でＮｏ）、第二のコア１ＣＲ２は、待機の解除のコマンドが第一のコア１ＣＲ１から与えられるのを待つ（＃７２６）。
【０１３７】
そして、待機の解除のコマンドが与えられたら（＃７２７でＹｅｓ）、通常モードへ進み、ジョブの制御などを開始する（＃７２８）。通常モードの処理の手順は、前に図１０で説明した通りである。
【０１３８】
すなわち、第二のコア１ＣＲ２は、上述の通り、ジョブの制御およびアップデートされた全体制御プログラム１ＲＡの有無のチェックを行う（図１０の＃７４１、＃７４７）。
【０１３９】
ステップ＃７４１によるジョブが正常に終了しなかった場合つまりジョブに異常があった場合は（＃７４２でＹｅｓ、＃７４３でＹｅｓ）、上述の通り、古いバージョンの全体制御プログラム１ＲＡが画像処理装置１にインストールされていれば、第二のコア１ＣＲ２は、リカバリを行う。本例では、旧全体制御プログラム１ＲＡ１がインストールされているので（＃７４４でＹｅｓ）、旧全体制御プログラム１ＲＡ１のリカバリを行う（＃７４５）。具体的には、旧全体制御プログラム１ＲＡ１を実行するコア１ＣＲに対してリカバリのコマンドを与える。
【０１４０】
なお、旧全体制御プログラム１ＲＡ１による処理は、リカバリモードのステップ＃７７１（図１２参照）でリカバリのコマンドを待っている状態である。そして、このコマンドに従って、通常モードへ再び進み、旧全体制御プログラム１ＲＡ１による通常モードの処理（＃７７３）が再開される。
【０１４１】
旧全体制御プログラム１ＲＡ１による通常モードの処理が再開された後、第二のコア１ＣＲ２は、新全体制御プログラム１ＲＡ２を終了する。
【０１４２】
＜３＞  アップデート後における電源オンまたはリセットに伴う処理
アップデートされた全体制御プログラム１ＲＡがインストールされ適用された後も、古いバージョンの全体制御プログラム１ＲＡは、アンインストールされず、画像処理装置１に残る。
【０１４３】
画像処理装置１の電源がオフにされた後、再びオンにされると、または、リセットされると、これらの２つの全体制御プログラム１ＲＡの両方が次のように起動される。この際に、図９に示した手順の処理がそれぞれ独立して実行される。以下、旧全体制御プログラム１ＲＡ１および新全体制御プログラム１ＲＡ２を起動する場合を例に説明する。
【０１４４】
画像処理装置１のオペレーティングシステムが起動する際に、新しいほうの全体制御プログラム１ＲＡつまり新全体制御プログラム１ＲＡ２がＲＡＭ１０ｂにロードされる。そして、第一のコア１ＣＲ１によって実行される。
【０１４５】
新全体制御プログラム１ＲＡ２は画像処理装置１にインストールされている古いバージョンではなく（図９の＃７２１でＮｏ）、今回の起動は電源のオンまたはリセットに伴うものであり（＃７２２でＹｅｓ）、かつ古いバージョンの全体制御プログラム１ＲＡ（本例では、旧全体制御プログラム１ＲＡ１）があるので（＃７２３でＹｅｓ）、第一のコア１ＣＲ１は、旧全体制御プログラム１ＲＡ１をＲＡＭ１０ｂにロードし、第二のコア１ＣＲ２に実行させる（＃７２４）。これにより、旧全体制御プログラム１ＲＡ１が起動される。
【０１４６】
旧全体制御プログラム１ＲＡ１の起動と前後してまたは並行して、第一のコア１ＣＲ１は、通常モードの処理を開始する（＃７２５）。通常モードの処理の手順は、図１０に示した通りである。
【０１４７】
一方、第二のコア１ＣＲ２は、旧全体制御プログラム１ＲＡ１に従って図９に示す手順で処理を実行する。旧全体制御プログラム１ＲＡ１は古いほうの全体制御プログラム１ＲＡなので（＃７２１でＹｅｓ）、リカバリモードへ進む（＃７２９）。リカバリモードの処理の手順は、前に図１２で説明した通りである。これにより、第二のコア１ＣＲ２は、リカバリに備える。
【０１４８】
その後、第一のコア１ＣＲ１および新全体制御プログラム１ＲＡ２によるジョブに不具合が生じたら、ジョブの制御などが第二のコア１ＣＲ２および旧全体制御プログラム１ＲＡ１へ切り換えられる。つまり、旧全体制御プログラム１ＲＡ１がリカバリされる。
【０１４９】
ステップ＃７４１は、旧全体制御プログラム１ＲＡ１においては、本発明における第一のルーチンに相当し、新全体制御プログラム１ＲＡ２においては、第二のルーチンに相当する。
【０１５０】
第二の実施形態によると、第一の実施形態と同様に、ダウンタイムの発生の防止を図り、ユーザの利便性を従来よりも確実に保って画像処理装置１の全体制御プログラム１ＰＡを更新することができる。
【０１５１】
さらに、第二の実施形態によると、更新後にジョブに不具合が発生した場合に、サービスエンジニアの作業を伴うことなく古いバージョンにリカバリして、画像処理装置１の安定的な運用を図ることができる。
【０１５２】
図１３は、ＣＰＵ１０ａの構成の変形例を示す図である。第一の実施形態および第二の実施形態では、４つのコア１ＣＲそれぞれが別々のプログラムを実行するようにＣＰＵ１０ａを構成したが、１つまたは複数のコア１ＣＲによってユニットを構成し、ユニットごとに別々のプログラムを実行するようにＣＰＵ１０ａを構成してもよい。
【０１５３】
例えば、図１３（Ａ）に示すように、第一のコア１ＣＲ１および第二のコア１ＣＲ２によって処理ユニット１Ｕ１を構成し、第三のコア１ＣＲ３および第四のコア１ＣＲ４によって処理ユニット１Ｕ２を構成してもよい。この場合は、一方の処理ユニットに旧全体制御プログラム１ＰＡ１または１ＲＡ１を実行させ、他方の処理ユニットに新全体制御プログラム１ＰＡ２または１ＲＡ２を実行させればよい。
【０１５４】
または、図１３（Ｂ）に示すように、第一のコア１ＣＲ１によって処理ユニット１Ｕ３を構成し、第二のコア１ＣＲ２によって処理ユニット１Ｕ４を構成し、第三のコア１ＣＲ３および第四のコア１ＣＲ４によって処理ユニット１Ｕ５を構成してもよい。この場合は、３つの処理ユニットのうちのいずれか１つに旧全体制御プログラム１ＰＡ１または１ＲＡ１を実行させ、他のいずれか１つに新全体制御プログラム１ＰＡ２または１ＲＡ２を実行させればよい。
【０１５５】
第一の実施形態および第二の実施形態では、４つのコア１ＣＲからなるマルチコアプロセッサをＣＰＵ１０ａとして用いたが、他の個数（例えば、２つ、６つ、または８つなど）のコア１ＣＲからなるマルチコアプロセッサを用いてもよい。
【０１５６】
第一の実施形態および第二の実施形態では、新全体制御プログラム１ＰＡ２または１ＲＡ２を、空いているコア１ＣＲに実行させたが、旧全体制御プログラム１ＰＡ１または１ＲＡ１を実行していないコア１ＣＲであれば、他のプログラムを実行しているコア１ＣＲに新全体制御プログラム１ＰＡ２または１ＲＡ２を実行させてもよい。
【０１５７】
第一の実施形態および第二の実施形態では、全体制御プログラム１ＰＡ、１ＲＡを更新する場合を例に説明したが、ジョブの制御以外のファームウェアのほかアプリケーションプログラムなどを更新する場合にも本発明を適用することができる。
【０１５８】
第一の実施形態および第二の実施形態では、新全体制御プログラム１ＰＡ２、１ＲＡ２をサーバ２１からダウンロードすることによって取得したが、ＵＳＢ通信部１０ｍを介して記録媒体から読み取ることによって取得してもよい。
【０１５９】
その他、画像処理システム３、画像処理装置１の全体または各部の構成、処理内容、処理順序、データベースの構成などは、本発明の趣旨に沿って適宜変更することができる。
【符号の説明】
【０１６０】
１  画像処理装置
１０ａ  ＣＰＵ（プロセッサ）
１０ｂ  ＲＡＭ（メモリ）
１ＣＲ  コア
１ＣＲ１  第一のコア（第一の処理ユニット）
１ＣＲ２  第二のコア（第二の処理ユニット）
１ＰＡ１、１ＲＡ１  旧全体制御プログラム（第一のプログラム）
１ＲＡ２、１ＲＡ２  新全体制御プログラム（第二のプログラム）
１Ｕ１、１Ｕ３  処理ユニット（第一の処理ユニット）
１Ｕ２、１Ｕ４  処理ユニット（第二の処理ユニット）
【図１】
0006464657.tif 000002
【図２】
0006464657.tif 000003
【図３】
0006464657.tif 000004
【図４】
0006464657.tif 000005
【図５】
0006464657.tif 000006
【図６】
0006464657.tif 000007
【図７】
0006464657.tif 000008
【図８】
0006464657.tif 000009
【図９】
0006464657.tif 000010
【図１０】
0006464657.tif 000011
【図１１】
0006464657.tif 000012
【図１２】
0006464657.tif 000013
【図１３】
0006464657.tif 000014