(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024158473
(43)【公開日】2024-11-08
(54)【発明の名称】情報処理システム、制御プログラム、及び例外プログラム
(51)【国際特許分類】
G06F 11/14 20060101AFI20241031BHJP
【FI】
G06F11/14 610
【審査請求】未請求
【請求項の数】7
【出願形態】OL
(21)【出願番号】P 2023073704
(22)【出願日】2023-04-27
(71)【出願人】
【識別番号】000005496
【氏名又は名称】富士フイルムビジネスイノベーション株式会社
(74)【代理人】
【識別番号】110001519
【氏名又は名称】弁理士法人太陽国際特許事務所
(72)【発明者】
【氏名】諏訪 辰寿
(72)【発明者】
【氏名】大竹 裕仁
(72)【発明者】
【氏名】田中 英憲
(57)【要約】
【課題】メモリ領域の破損に伴う例外が発生した場合であっても、一方のプロセッサが他方のプロセッサによって指示された動作を継続して行う。
【解決手段】画像形成装置1は、CPU11Aからの命令によって指示された処理を実行するために使用する指定メモリ領域3の破損によって、CPU12Aが指示された処理を実行することができない場合、CPU12Aは破損メモリ領域をCPU11Aに通知し、CPU11Aは、破損メモリ領域とは異なる代替メモリ領域5をCPU12Aに通知すると共に、CPU12Aに命令を再通知し、CPU12Aは、代替メモリ領域5を用いて命令によって指示された処理を実行する。
【選択図】
図6
【特許請求の範囲】
【請求項1】
第1プロセッサと第2プロセッサを備え、
前記第2プロセッサが、前記第1プロセッサからの命令によって指示された処理を実行するために使用するメモリ領域の破損により、前記第1プロセッサから指示された処理を実行することができない場合、前記第2プロセッサは、破損しているメモリ領域の範囲を前記第1プロセッサに通知し、
前記第1プロセッサは、破損しているメモリ領域の範囲とは異なるメモリ領域である代替メモリ領域を前記第2プロセッサに通知すると共に、前記命令を前記第2プロセッサに再通知し、
前記第2プロセッサは、前記代替メモリ領域を用いて前記命令によって指示された処理を実行する
情報処理システム。
【請求項2】
前記第2プロセッサは、前記第1プロセッサによって指示された処理に対応したプログラムを読み込んで指示され処理を実行している途中に、前記第2プロセッサが想定していない現象を認識した場合に発生する例外を検知した場合、前記例外が発生した前記プログラムの位置を特定し、
前記例外が発生した前記プログラムの位置から前記プログラムの再実行を行うか、又は、使用しているメモリ領域の破損状態を診断するかを選択する
請求項1に記載の情報処理システム。
【請求項3】
前記第2プロセッサは、メモリ領域の診断において、使用しているメモリ領域が破損していると診断した場合、破損しているメモリ領域の範囲を特定する
請求項2に記載の情報処理システム。
【請求項4】
前記第1プロセッサは、前記命令によって指示した処理に対して使用するメモリ領域を避けて前記代替メモリ領域を確保する
請求項1~請求項3の何れか1項に記載の情報処理システム。
【請求項5】
前記第1プロセッサは、前記代替メモリ領域を前記第2プロセッサに通知した後に、前記命令の再通知を行う
請求項1~請求項3の何れか1項に記載の情報処理システム。
【請求項6】
コンピュータに、
指示した処理を実行させるために通信相手のプロセッサに通知した命令の応答として、前記プロセッサから、前記命令によって指示された処理の実行に伴って検出した、破損しているメモリ領域の範囲が通知された場合、
前記プロセッサから破損していると通知されたメモリ領域の範囲とは異なるメモリ領域を代替メモリ領域として前記プロセッサに通知すると共に、前記命令を前記プロセッサに再通知する処理を実行させるための
制御プログラム。
【請求項7】
コンピュータに、
通信相手のプロセッサからの命令によって指示された処理を実行するために使用するメモリ領域の破損により、前記プロセッサから指示された処理を実行することができない場合、破損しているメモリ領域の範囲をプロセッサに通知して、前記プロセッサから指示された処理に対して、破損しているメモリ領域の範囲とは異なる新たなメモリ領域を割り当てるように前記プロセッサに要求する処理を実行させるための
例外プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、情報処理システム、制御プログラム、及び例外プログラムに関する。
【背景技術】
【0002】
特許文献1には、マルチコアCPUモジュールを搭載し、複数のオペレーティングシステムが異なるコアCPU上で動作する計算機システムであって、第1のコアCPU上の第1のオペレーティングシステムで動作するアプリケーション、前記第2のコアCPU上の第2のオペレーティングシステムで動作し、前記アプリケーションに用いられるメモリの診断を行うメモリ診断手段、前記第2のオペレーティングシステムで動作し、前記メモリ診断手段により前記メモリの異常が検出されたとき、前記異常を通知する異常通知手段、及び前記第1のオペレーティングシステムで動作し、前記異常通知手段からの通知を受けて障害発生時の対処を行う障害対処手段を備えた計算機システムが開示されている。
【0003】
特許文献2には、メインCPUと、少なくとも一つのサブCPUと、前記メインCPUと前記各サブCPUとの間に設けられ、前記メインCPUと前記各サブCPUが共通に使用する共有メモリとを備えた簡易マルチプロセッサ監視システムにおいて、前記共有メモリは、前記サブCPUの動作状態詳細情報及び前記メインCPUからサブCPUへのコマンドを格納する状態/コマンド領域とを備え、前記メインCPUは、前記共有メモリの前記状態/コマンド領域に格納されている動作状態詳細情報を参照して、各サブCPUを監視する簡易マルチプロセッサ監視システムが開示されている。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2010-186242号公報
【特許文献2】特開平09-114701号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
第1プロセッサが処理の実行指示を行い、第2プロセッサが第1プロセッサから指示された処理を実行するような、異なる役割が割り当てられた複数のプロセッサを有するシステムが存在する。
【0006】
指示された処理と対応付けられているメモリ領域が破損していた場合、第2プロセッサは、指示された処理をやり直したとしても、メモリ領域の破損に伴う例外が毎回発生してしまい、指示された処理を継続することができない。
【0007】
本開示は、第2プロセッサによる第1プロセッサから指示された処理の実行中に、第2プロセッサに対してメモリ領域の破損に伴う例外が発生した場合であっても、第2プロセッサが指示された動作を継続して行うことができる情報処理システム、制御プログラム、及び例外プログラムを提供することを目的とする。
【課題を解決するための手段】
【0008】
第1態様に係る情報処理システムは、第1プロセッサと第2プロセッサを備え、前記第2プロセッサが、前記第1プロセッサからの命令によって指示された処理を実行するために使用するメモリ領域の破損により、前記第1プロセッサから指示された処理を実行することができない場合、前記第2プロセッサは、破損しているメモリ領域の範囲を前記第1プロセッサに通知し、前記第1プロセッサは、破損しているメモリ領域の範囲とは異なるメモリ領域である代替メモリ領域を前記第2プロセッサに通知すると共に、前記命令を前記第2プロセッサに再通知し、前記第2プロセッサは、前記代替メモリ領域を用いて前記命令によって指示された処理を実行する。
【0009】
第2態様に係る情報処理システムは、第1態様に係る情報処理システムにおいて、前記第2プロセッサは、前記第1プロセッサによって指示された処理に対応したプログラムを読み込んで指示され処理を実行している途中に、前記第2プロセッサが想定していない現象を認識した場合に発生する例外を検知した場合、前記例外が発生した前記プログラムの位置を特定し、前記例外が発生した前記プログラムの位置から前記プログラムの再実行を行うか、又は、使用しているメモリ領域の破損状態を診断するかを選択する。
【0010】
第3態様に係る情報処理システムは、第2態様に係る情報処理システムにおいて、前記第2プロセッサは、メモリ領域の診断において、使用しているメモリ領域が破損していると診断した場合、破損しているメモリ領域の範囲を特定する。
【0011】
第4態様に係る情報処理システムは、第1態様~第3態様の何れかの態様に係る情報処理システムにおいて、前記第1プロセッサは、前記命令によって指示した処理に対して使用するメモリ領域を避けて前記代替メモリ領域を確保する。
【0012】
第5態様に係る情報処理システムは、第1態様~第3態様の何れかの態様に係る情報処理システムにおいて、前記第1プロセッサは、前記代替メモリ領域を前記第2プロセッサに通知した後に、前記命令の再通知を行う。
【0013】
第6態様に係る制御プログラムは、コンピュータに、指示した処理を実行させるために通信相手のプロセッサに通知した命令の応答として、前記プロセッサから、前記命令によって指示された処理の実行に伴って検出した、破損しているメモリ領域の範囲が通知された場合、前記プロセッサから破損していると通知されたメモリ領域の範囲とは異なるメモリ領域を代替メモリ領域として前記プロセッサに通知すると共に、前記命令を前記プロセッサに再通知する処理を実行させるためのプログラムである。
【0014】
第7態様に係る例外プログラムは、コンピュータに、通信相手のプロセッサからの命令によって指示された処理を実行するために使用するメモリ領域の破損により、前記プロセッサから指示された処理を実行することができない場合、破損しているメモリ領域の範囲をプロセッサに通知して、前記プロセッサから指示された処理に対して、破損しているメモリ領域の範囲とは異なる新たなメモリ領域を割り当てるように前記プロセッサに要求する処理を実行させるためのプログラムである。
【発明の効果】
【0015】
第1態様、第6態様、及び第7態様によれば、第2プロセッサによる第1プロセッサから指示された処理の実行中に、第2プロセッサに対してメモリ領域の破損に伴う例外が発生した場合であっても、第2プロセッサが指示された動作を継続して行うことができる、という効果を有する。
【0016】
第2態様によれば、第2プロセッサは自身で復旧可能な例外であるか否かを切り分けることができる、という効果を有する。
【0017】
第3態様によれば、破損しているメモリ領域の範囲を第1プロセッサに通知することができる、という効果を有する。
【0018】
第4態様によれば、使用される可能性のあるメモリ領域を外して代替メモリ領域を確保することができる、という効果を有する。
【0019】
第5態様によれば、第1プロセッサは、第2プロセッサが代替メモリ領域を確保したことを確認したうえで命令を指示することができる、という効果を有する。
【図面の簡単な説明】
【0020】
【
図2】制御部と画像処理部におけるデータの送受信例を示す図である。
【
図3】正常時におけるCPU間のデータの流れの一例を示すシーケンス図である。
【
図5】例外検知タスクによって実行される例外処理の流れの一例を示すフローチャートである。
【
図6】復旧することができない例外が発生した場合におけるCPU間のデータの流れの一例を示すシーケンス図である。
【
図7】復旧タスクによって実行される例外処理の流れの一例を示すフローチャートである。
【
図8】例外診断タスクによって実行される例外処理の流れの一例を示すフローチャートである。
【
図9】復旧することができない例外が発生した場合のレスポンスの構成例を示す図である。
【
図10】制御部によって実行される制御処理の流れの一例を示すフローチャートである。
【発明を実施するための形態】
【0021】
以下、開示の実施形態について図面を参照しながら説明する。なお、同じ構成要素及び同じ処理には全図面を通して同じ符号を付与し、重複する説明を省略する。
【0022】
図1は、ユーザによって指示された画像処理を行う画像形成装置1の構成例を示す図である。画像形成装置1は、例えばコンピュータ10によって構成される。
【0023】
画像形成装置1は、ユーザからの指示を受け付け、指示された処理を実行するように画像形成装置1全体の制御を行う制御部11と、制御部11からの指示に従って画像処理を行う画像処理部12とを備える。
【0024】
制御部11は、第1プロセッサの一例であるCPU(Central Processing Unit)11A、CPU11Aの一時的な作業領域として使用されるRAM(Random Access Memory)11B、及びコンピュータ10を制御部11として機能させる制御プログラムを記憶する不揮発性メモリ11Cを備える。CPU11A、RAM11B、及び不揮発性メモリ11Cはバス11Dを介して各々接続されている。
【0025】
一方、画像処理部12も、第2プロセッサの一例であるCPU12A、CPU12Aの一時的な作業領域として使用されるRAM12B、及びコンピュータ10を画像処理部12として機能させる画像処理プログラムと例外プログラムを記憶する不揮発性メモリ12Cを備える。CPU12A、RAM12B、及び不揮発性メモリ12Cはバス12Dを介して各々接続されている。
【0026】
このように、制御部11と画像処理部12には、それぞれの処理を実行する専用のプロセッサ及びメモリが割り当てられている。CPU11Aは、不揮発性メモリ11Cから制御プログラムを読み込んで、制御部11が担う画像形成装置1全体の制御を実行する。CPU12Aは、指示された処理に対応した画像処理プログラムを不揮発性メモリ12Cから読み込んで、画像処理部12が担う画像処理を実行する。すなわち、画像処理プログラムは、CPU11Aによって指示された処理に対応したプログラムの一例である。不揮発性メモリ12Cには、制御部11によって指示された処理毎に処理の内容を規定した複数の画像処理プログラムが記憶されている。
【0027】
また、CPU12Aは、後ほど説明するように、不揮発性メモリ12Cから例外プログラムを読み込んで、画像処理プログラムを実行している途中に例外が発生した場合でも、制御部11から指示された処理の継続を図る例外処理を実行する。「例外」とは、例えば無効なメモリアドレスにアクセスした場合や、“0”で除算した場合等のように、CPU12Aが想定していない事象を認識した場合に発生する通知である。
【0028】
不揮発性メモリ11C及び不揮発性メモリ12Cは、各々に供給される電力が遮断されても記憶した情報が維持される記憶装置の一例であり、例えば半導体メモリが用いられるがハードディスクを用いてもよい。
【0029】
また、コンピュータ10はRAM13及び入出力インターフェース(I/O)14を備える。制御部11のCPU11A、画像処理部12のCPU12A、RAM13、及びI/O14とはバス15を介して各々接続されている。
【0030】
I/O14には、通信ユニット16、入力ユニット17、表示ユニット18、画像形成ユニット19、及びスキャナユニット20が接続される。
【0031】
通信ユニット16は通信回線に接続され、同じ通信回線に接続されている外部装置(図示省略)とデータを送受信する通信プロトコルを備える。通信ユニット16は、制御部11におけるCPU11Aの指示に従って外部装置とデータ通信を行う。
【0032】
入力ユニット17はユーザの指示を受け付け、受け付けた指示を制御部11のCPU11Aに通知する装置であり、例えばボタン、タッチパネル、及びポインティングデバイス等が用いられる。
【0033】
表示ユニット18は、画像形成装置1によって処理された情報を表示する表示装置の一例であり、例えば液晶ディスプレイ又は有機EL(Electro Luminescence)ディスプレイ等が用いられる。表示ユニット18は、制御部11におけるCPU11Aの指示に従って情報を表示する。
【0034】
画像形成ユニット19は、画像処理部12におけるCPU12Aの指示に従って、画像を用紙等の記録媒体に形成するユニットである。画像形成ユニット19における画像形成方式はどのような方式であってもよく、例えば電子写真方式、インクジェット方式、及びオフセット印刷方式等の何れであってもよい。
【0035】
スキャナユニット20は、画像処理部12におけるCPU12Aの指示に従って、例えばプラテンガラスに置かれた原稿の内容を光学的に読み取り、読み取った原稿の内容を画像に変換するユニットである。
【0036】
なお、I/O14に接続される各ユニットは一例であり、画像形成装置1の機能に応じたユニットが接続される。なお、ユニットとは、CPU11A及びCPU12Aといったプロセッサの制御に従って処理を実行する実行単位を表す。
【0037】
次に、こうした構成を有する画像形成装置1での制御部11と画像処理部12におけるデータの送受信方法について説明する。
【0038】
図2は、制御部11と画像処理部12におけるデータの送受信例を示す図である。
図2に示すように、制御部11と画像処理部12は、CPU11A及びCPU12Aからそれぞれ読み書き可能なRAM13を介してデータの送受信を行う。具体的には、制御部11と画像処理部12は、制御部11と画像処理部12におけるデータの送受信用の領域としてRAM13上に予め確保されているコマンド領域2を介して、データの送受信を行う。すなわち、RAM13は、CPU11A及びCPU12Bが共にアクセス可能な共有メモリの一例である。
【0039】
画像処理に関する何らかの処理の実行を指示する命令(以降、「コマンド」という)をCPU11Aから受け付けたCPU12Aは実行タスク6を生成し、実行タスク6を通じて指示された処理を実行する。CPU12Aはコマンドを受け付ける毎に実行タスク6を生成するため、実行タスク6を識別するタスクIDを各々の実行タスク6に割り当てる。
【0040】
RAM12Bでは、用途毎に使用できるメモリ領域を規定したメモリマップが設定されている。したがって、CPU12Aは指示された処理の実行にあたり、指示された処理を実行するためにRAM12Bに予め確保されている指定メモリ領域3を使用して処理を実行する。
【0041】
既に説明したように、CPU12Aは画像処理に特化したプロセッサであるため、CPU12AはRAM12Bのメモリ管理を行っておらず、CPU11Aが用途毎に使用できるメモリ領域をCPU12Aに通知することによってRAM12Bのメモリ管理を行う。すなわち、指定メモリ領域3を含むRAM12Bのメモリマップの設定はCPU11Aによって行われる。CPU12Aは、CPU11Aによって設定されたメモリマップに従って、指示された処理を実行する。なお、CPU12Aは、実行タスク6が指定メモリ領域3を使用する場合、使用する指定メモリ領域3に実行タスク6のタスクIDを対応付けておく。
【0042】
また、CPU12Aは、実行タスク6が指示に対応した画像処理プログラムに従って指示された処理を実行している途中に例外を検知した場合に備え、例外検知タスク7、復旧タスク8、及び例外診断タスク9を生成する。例外が発生した場合、実行タスク6での処理が中断される。
【0043】
例外検知タスク7は、実行タスク6において発生した例外を検知し、例外に付加されているタスクIDを参照して、例外が発生した実行タスク6を特定する。以降では、例外が発生した実行タスク6を「例外発生タスク6A」と表す。
【0044】
復旧タスク8は、例外発生タスク6Aを生成し直せば例外を発生させないようにすることができる場合に例外発生タスク6Aの再生成を行う。例外発生タスク6Aの再生成により、例外発生タスク6Aにおいて実行していた画像処理プログラムの再実行が行われる。このように、例外が発生した実行タスク6を再生成することによって例外の発生原因を除去し、指示された処理をやり直す行為を「例外を復旧させる」という。一方、例外発生タスク6Aを生成し直しても例外の発生原因を除去できそうにない場合には、例外の発生原因が物理的な問題、例えば指定メモリ領域3の破損に起因することが多い。この場合、復旧タスク8は、指定メモリ領域3のメモリ診断を例外診断タスク9に依頼する。指定メモリ領域3の破損とは、指定メモリ領域3を構成するRAM12Bの範囲に異常が発生している状態をいう。
【0045】
例外診断タスク9は、復旧タスク8からの依頼によって、指定メモリ領域3の破損状態を診断し、診断結果を制御部11のCPU11Aに通知する。
【0046】
図3は、実行タスク6において例外が発生しなかった場合、すなわち、正常時におけるCPU11AとCPU12Aとの間のデータの流れの一例を示すシーケンス図である。
【0047】
CPU11Aは、ユーザから受け付けた処理の実行を指示するコマンドをRAM13のコマンド領域2に書き込む(
図3のシーケンスF1参照)。この時点では、まだコマンドによって指示した処理が終了していないため、CPU11Aは、コマンドによって指示した処理の実行状況を表すコマンドステータスを「レスポンス待ち」に設定する。
【0048】
CPU12Aは、RAM13のコマンド領域2に書き込まれたコマンドを参照して、実行する処理を把握する(
図3のシーケンスF2参照)。
【0049】
CPU12Aは指示された処理を実行した後、例外識別子を付加したレスポンスをRAM13のコマンド領域2に書き込む(
図3のシーケンスF3参照)。例外識別子とは、コマンドによって指示された処理を画像処理部12が正常に実行したか否かを表す識別子である。画像処理部12がコマンドによって指示された処理を正常に実行した場合には例外識別子に“0”が設定され、例外が発生して処理を中断した場合には例外識別子に“1”が設定される。実行タスク6において例外が発生したとしても、実行タスク6の再生成によって指示された処理を正常に実行することができた場合には例外識別子に“0”が設定される。なお、例外識別子の値は一例であり、画像処理部12において例外が発生したか否かをCPU11Aが認識できればどのような値が設定されてもよい。
【0050】
CPU11Aは、RAM13のコマンド領域2に書き込まれたレスポンスを参照して、コマンドに対する画像処理部12での処理の実行状況を把握する(
図3のシーケンスF4参照)。指示した処理が正常に終了した場合、CPU11Aは、コマンドステータスを「完了」に設定する。なお、画像処理部12において例外が発生している場合、CPU11Aは、指示した処理が画像処理部12によって継続して実行されるように指定メモリ領域3の変更を行う。
【0051】
図4は、レスポンスの構成例を示す図である。
図4に示すレスポンスはリターン及び例外識別子を含む。リターンとは、RAM13を介したCPU12AからCPU11Aへのレスポンスの送信が正常に行われたことを表す識別子である。レスポンスの送信が正常に行われた場合にはリターンに例えば“1”が設定され、レスポンスの送信が正常に行われなかった場合にはリターンに例えば“0”が設定される。
【0052】
次に、画像処理部12の実行タスク6において例外が発生した場合に、制御部11及び画像処理部12で実行される処理について詳細に説明する。
【0053】
図5は、実行タスク6が実行中の処理において例外が発生した場合に、例外検知タスク7によって実行される例外処理の流れの一例を示すフローチャートである。画像処理部12のCPU12Aは、不揮発性メモリ12Cに記憶される例外プログラムを読み込み、例外処理を実行する。
【0054】
また、
図6は、復旧できない例外が実行タスク6において発生した場合におけるCPU11AとCPU12Aとの間のデータの流れの一例を示すシーケンス図である。
【0055】
一例として、制御部11のCPU11Aは、コピー処理を行わせるコマンドを画像処理部12のCPU12Aに通知したものとする(
図6のシーケンスF1、F2参照)。コピー処理とは、スキャナユニット20によって原稿の内容を光学的に読み取って原稿の内容を画像に変換し、原稿の画像を画像形成ユニット19によって記録媒体に形成する処理である。この場合、実行タスク6は、コピー処理を規定した画像処理プログラムに従って、コピー処理を実行する。
【0056】
コピー処理を実行する実行タスク6において例外が発生すると、CPU12Aに備えられた割り込み機能によって例外割り込みが発生し、例外検知タスク7に例外発生通知が通知される。
【0057】
図5のステップS10において、例外検知タスク7は、例外発生通知に付加されている例外発生タスク6AのタスクIDを参照して、実行中の実行タスク6の中から例外発生タスク6Aを特定する。
【0058】
また、例外発生通知には、例外が発生した画像処理プログラムのプログラム名と、画像処理プログラム内における例外が発生した関数名、及び例外が発生した位置における画像処理プログラムの行番号の少なくとも一方も付加される。したがって、ステップS20において、例外検知タスク7は例外発生通知を参照して、例外が発生したコピー処理に対応した画像処理プログラムのプログラム名を特定すると共に、コピー処理に対応した画像処理プログラムにおいて例外が発生した位置を関数名及び行番号の少なくとも一方を用いて特定する。
【0059】
ステップS30において、例外検知タスク7は、ステップS10によって特定した例外発生タスク6AのタスクIDと、ステップS20によって特定した、例外が発生した画像処理プログラムのプログラム名、及び例外が発生した画像処理プログラムの位置とを付加した例外検知通知を復旧タスク8に通知する。以上により、例外検知タスク7によって実行される
図5に示す例外処理を終了する。
【0060】
図7は、例外検知タスク7から例外検知通知を受け付けた場合に、復旧タスク8によって実行される例外処理の流れの一例を示すフローチャートである。
【0061】
ステップS50において、復旧タスク8は、例外検知通知に付加されている、例外が発生した画像処理プログラムのプログラム名と例外が発生した画像処理プログラムの位置を用いて、発生した例外が復旧可能な例外であるか否かを診断する。具体的には、復旧タスク8は、例外が発生した画像処理プログラムのプログラム名と、当該プログラム名によって表される画像処理プログラムでの例外が発生した位置と、例外発生タスク6Aの再生成により例外が復旧したか否かを記録した復旧記録とを対応付けた例外履歴情報を参照して、発生した例外が復旧可能な例外であるか否かを診断する。すなわち、復旧タスク8は、例外が発生する毎に、例外の復旧状況を不揮発性メモリ12Cに記憶される例外履歴情報に記録し、過去の例外の復旧状況を参考にして、新たに発生した例外が復旧可能な例外であるか否かを診断する。
【0062】
例えば新たに例外が発生した画像処理プログラムと同じ画像処理プログラムにおいて、過去に同じ位置で例外を発生しており、当該例外が例外発生タスク6Aの再生成によって復旧したとの情報が例外履歴情報に記録されていたとする。この場合、復旧タスク8は、発生した例外が復旧可能な例外であると診断する。一方、例えば例外が発生した画像処理プログラムのプログラム名及び位置と同じプログラム名及び位置を有する情報が例外履歴情報に記録されていない場合、復旧タスク8は、発生した例外が復旧可能な例外ではないと診断する。
【0063】
なお、発生した例外が復旧可能な例外であるか否かの診断結果は、過去に発生した例外の復旧状況のみに影響されるわけではない。例えば復旧タスク8は、例外が発生したとしても復旧可能な画像処理プログラムのプログラム名と、当該プログラム名によって表される画像処理プログラムの位置との組み合わせを規定した例外復旧情報を参照して、発生した例外が復旧可能な例外であるか否かを診断してもよい。発生した例外が例外履歴情報に復旧可能な例外として記録されていない場合であっても、例外復旧情報に復旧可能な例外として記録されていれば、復旧タスク8は、発生した例外が復旧可能な例外であると診断する。例外復旧情報は、画像形成装置1の製造元が画像形成装置1の工場出荷時に予め不揮発性メモリ12Cに記憶しておけばよい。
【0064】
ステップS60において、復旧タスク8は、ステップS50によって診断した診断結果を用いて、発生した例外が復旧可能な例外であるか否かを判定する。発生した例外が復旧可能な例外ではない場合、ステップS70に移行する。
【0065】
この場合、例外発生タスク6Aが使用している指定メモリ領域3の破損が例外発生の原因として考えられるため、復旧タスク8は、例外発生タスク6Aが使用している指定メモリ領域3の破損状態の診断を要求する診断要求を例外診断タスク9に通知する。この場合、復旧タスク8は、例外発生タスク6AのタスクIDを診断要求に付加する。以上により、復旧タスク8によって実行される
図7に示す例外処理を終了する。
【0066】
一方、ステップS60の判定処理によって発生した例外が復旧可能であると判定された場合、ステップS80に移行する。
【0067】
ステップS80において、復旧タスク8は、例外発生タスク6Aを削除してからコピー処理を実行する実行タスク6を再生成して、復旧タスク8によって実行される
図7に示す例外処理を終了する。これにより、再生成された実行タスク6では例外を発生することなくコピー処理を継続して実行する。
【0068】
図8は、復旧タスク8から診断要求を受け付けた場合に、例外診断タスク9によって実行される例外処理の流れの一例を示すフローチャートである。
【0069】
ステップS100において、例外診断タスク9は、診断要求に付加されているタスクIDを参照して、例外発生タスク6Aが使用した指定メモリ領域3を特定する。
【0070】
ステップS110において、例外診断タスク9は、ステップS100によって特定した指定メモリ領域3に対するメモリ診断を行う。具体的には、例外診断タスク9は、指定メモリ領域3の全域に対して予め定めた値を書き込み、その後、指定メモリ領域3の全域から値を読み出す。読み出した値が書き込んだ値と同じであれば、書き込み先のメモリは正常と診断される。これに対して、読み出した値が書き込んだ値と異なる場合、書き込み先のメモリは破損していると診断される。したがって、例外診断タスク9は、読み出した値が書き込んだ値と異なる指定メモリ領域3の範囲をメモリが破損しているメモリ領域の範囲として特定する。なお、メモリが破損しているメモリ領域の範囲を「破損メモリ領域」という。破損メモリ領域はメモリアドレスによって表される。
【0071】
なお、例外診断タスク9は、指定メモリ領域3の全域に予め定めた値を書き込んで読み出す処理を複数回行い、1回でも読み出した値が書き込んだ値と異なる場合にメモリが破損していると診断してもよい。
【0072】
ステップS120において、例外診断タスク9は、例外発生タスク6Aが使用している指定メモリ領域3の診断結果を復旧タスク8に通知する。診断結果には、例外発生タスク6Aが使用した指定メモリ領域3における破損の有無、及び、指定メモリ領域3が破損している場合には破損メモリ領域を表すメモリアドレスが含まれる。以上により、例外診断タスク9によって実行される
図8に示す例外処理を終了する。
【0073】
例外診断タスク9から診断結果を受け付けた復旧タスク8は、制御部11からのコマンドに対するレスポンスに診断結果を付加して、制御部11のCPU11Aに通知する(
図6のシーケンスF3、F4参照)。
【0074】
なお、復旧タスク8は、例外診断タスク9から通知された各々の破損メモリ領域のメモリ容量を計算し、RAM12Bの全メモリ容量に対する各々の破損メモリ領域の合計メモリ容量の割合が予め定めた割合以上となった場合に、制御部11に対してRAM12Bに異常が認められることを、レスポンスとは別に通知してもよい。また、復旧タスク8は、各々の破損メモリ領域におけるメモリ容量の合計が予め定めたメモリ容量以上となった場合に、制御部11に対してRAM12Bに異常が認められることを、レスポンスとは別に通知してもよい。復旧タスク8からRAM12Bの異常発生を受け付けた制御部11は表示ユニット18を制御して、RAM12Bの交換を促す警告を表示する。更に、制御部11は通信ユニット16を制御して、画像形成装置1の保守を担当する会社に設置された外部装置に、RAM12Bの交換依頼を通信回線経由で行ってもよい。
【0075】
図9は、画像処理部12での処理だけでは復旧させることができない例外が発生した場合にCPU11に通知するレスポンスの一例を示す図である。
図9に示すように、この場合のレスポンスの例外識別子には、例外が発生してコピー処理を中断したことを表す“1”が設定され、例外診断タスク9が生成した診断結果が付加される。
【0076】
例外が発生したとしても、実行タスク6を再生成することによってコピー処理が正常に終了した場合、復旧タスク8は例外が発生しなかったものとして取り扱う。この場合、復旧タスク8は、リターンを“1”に設定し、例外識別子を“0”に設定したレスポンス(
図4参照)を制御部11のCPU11Aに通知する。
【0077】
図10は、診断結果に指定メモリ領域3が破損しているとの情報が含まれるレスポンスを受け付けた場合に、制御部11によって実行される制御処理の流れの一例を示すフローチャートである。制御部11のCPU11Aは、不揮発性メモリ11Cに記憶される制御プログラムを読み込み、制御処理を実行する。
【0078】
ステップS200において、制御部11は、RAM12Bから破損メモリ領域を含まない新たな指定メモリ領域3、すなわち、代替メモリ領域5を確保する。
【0079】
この場合、制御部11は、コマンドによって指示した処理に対して使用するメモリ領域を避けて代替メモリ領域5を確保する。例えば画像処理部12は、スキャナユニット20が読み取った原稿の画像を受け取り、RAM12Bに予め確保されたスキャナ用メモリ領域22Aに記憶する。また、画像処理部12は、RAM12Bに予め確保された画像形成用メモリ領域22Bを用いて、画像形成ユニット19に転送するための画像をラスタ形式又はベクタ形式に変換して画像を記録媒体に形成する。したがって、制御部11は、画像処理部12に対してコピー処理の実行を指示した場合、コピー処理で使用するスキャナ用メモリ領域22A及び画像形成用メモリ領域22Bを避けて代替メモリ領域5を確保する。
【0080】
図11は、制御部11による代替メモリ領域5の確保例を示す図である。
図11に示すように、制御部11は、例えば破損メモリ領域を含んだ指定メモリ領域3、スキャナ用メモリ領域22A、及び画像形成用メモリ領域22Bを避けて、RAM12Bから代替メモリ領域5を確保する。
【0081】
図10のステップS210において、制御部11は、ステップS200によって確保した代替メモリ領域5のメモリアドレスをRAM13のコマンド領域2に書き込んで(
図6のシーケンスF5参照)、CPU12Aに通知する(
図6のシーケンスF6参照)。
【0082】
制御部11から代替メモリ領域5のメモリアドレスを通知された画像処理部12のCPU12Aは、RAM12Bの指定された範囲に、コピー処理に用いる代替メモリ領域5を割り当てる。CPU12Aは、代替メモリ領域5の割り当てに対するレスポンスをRAM13のコマンド領域2に書き込んで(
図6のシーケンスF7参照)、CPU11Aに通知する(
図6のシーケンスF8参照)。
【0083】
したがって、ステップS220において、制御部11は、代替メモリ領域5の通知に対して画像処理部12からレスポンスを受け付けたか否かを判定する。
【0084】
まだレスポンスを受け付けていない場合、制御部11は、ステップS220の判定処理を繰り返し実行して、画像処理部12からレスポンスを受け付けるまで待機する。レスポンスを受け付けた場合、ステップS230に移行する。
【0085】
ステップS230において、制御部11は、受け付けたレスポンスの例外識別子が“0”であるか否かを判定する。受け付けたレスポンスの例外識別子が“0”ではない場合、何らかの理由により画像処理部12においてRAM12Bへの代替メモリ領域5の割り当てが行われなかったことを意味する。したがって、ステップS200に移行し、制御部11は新たな代替メモリ領域5を確保する。
【0086】
一方、受け付けたレスポンスの例外識別子が“0”の場合、画像処理部12においてRAM12Bへの代替メモリ領域5の割り当てが正常に行われたことになるため、ステップS240に移行する。
【0087】
ステップS240において、制御部11は、
図6のシーケンスF1で表されるコマンドと同じコマンド、すなわち、コピー処理を実行するように指示するコマンドをRAM13のコマンド領域2に書き込んで(
図6のシーケンスF9参照)、CPU12Aに再通知する(
図6のシーケンスF10参照)。
【0088】
制御部11から、コピー処理を実行するように指示するコマンドを再通知された画像処理部12のCPU12Aは、実行タスク6を通じてコピー処理を再実行する。CPU12Aは、コピー処理に対するレスポンスをRAM13のコマンド領域2に書き込んで(
図6のシーケンスF11参照)、CPU11Aに通知する(
図6のシーケンスF12参照)。
【0089】
したがって、ステップS250において、制御部11は、コマンドの再通知に対して画像処理部12からレスポンスを受け付けたか否かを判定する。
【0090】
まだレスポンスを受け付けていない場合、制御部11は、ステップS250の判定処理を繰り返し実行して、画像処理部12からレスポンスを受け付けるまで待機する。レスポンスを受け付けた場合、ステップS260に移行する。
【0091】
ステップS260において、制御部11は、受け付けたレスポンスの例外識別子が“0”であるか否かを判定する。受け付けたレスポンスの例外識別子が“0”ではない場合、コピー処理の実行中に例外が再度発生したことになる。したがって、ステップS200に移行し、制御部11は新たな代替メモリ領域5を確保する。
【0092】
一方、受け付けたレスポンスの例外識別子が“0”の場合、画像処理部12においてコピー処理が正常に行われたことになるため、ステップS270に移行する。
【0093】
ステップS270において、制御部11は、画像処理部12へのコマンドの通知に伴い「レスポンス待ち」に設定されていたコマンドステータスを、「完了」に設定して、
図10に示す制御処理を終了する。
【0094】
なお、
図10に示す制御処理では一例として、画像処理部12への代替メモリ領域5の通知とコマンドの再通知を個別に行ったが、コマンドと一緒に代替メモリ領域5を画像処理部12に通知してもよい。
【0095】
このように、本開示の画像形成装置1によれば、画像処理部12が制御部11によって指示された処理を実行中に例外が発生した場合、画像処理部12は復旧可能な例外であるか否かを判定する。復旧可能な例外であれば、画像処理部12は、実行タスク6を再生成して制御部11によって指示された処理を継続する。一方、画像処理部12だけの処理では復旧させることができない例外が発生した場合、画像処理部12は、指定メモリ領域3の中から破損メモリ領域を特定して制御部11に通知する。これにより、制御部11から代替メモリ領域5が通知されるため、指定メモリ領域3の破損に伴う例外が発生した場合であっても、画像処理部12は、代替メモリ領域5を用いて制御部11によって指示された処理を継続する。
【0096】
なお、複数のプロセッサによって機能が実現される画像形成装置1は、本実施形態に係る情報処理システムの一例である。情報処理システムは、CPU11Aが処理の実行指示を行い、CPU12AがCPU11Aから指示された処理を実行するというように、異なる役割が割り当てられた複数のプロセッサを有する装置である。したがって、
図5、
図7、及び
図8に示した例外処理、並びに、
図10に示した制御処理は、それぞれ画像形成装置1とは異なった情報処理システムを構成するCPU11A及びCPU12Aに適用される。
【0097】
また、情報処理システムのCPU11A及びCPU12Aは、必ずしも同じ筐体内に存在する必要はなく、それぞれ異なる筐体に分離してもよい。この場合、CPU11A及びCPU12Aをバス15の代わりにLAN(Local Area Network)、ブルートゥース(登録商標)、及びWi-Fi(登録商標)等の通信回線によって接続してもよい。
【0098】
以上、実施形態を用いて本開示に係る画像形成装置1の一形態について説明したが、開示した画像形成装置1の形態は一例であり、画像形成装置1の形態は実施形態に記載の範囲に限定されない。本開示の要旨を逸脱しない範囲で実施形態に多様な変更又は改良を加えることができ、当該変更又は改良を加えた形態も開示の技術的範囲に含まれる。
【0099】
また、実施形態では、一例として例外処理及び制御処理をソフトウェアで実現する形態について説明した。しかしながら
図5、
図7、及び
図8に示した例外処理のフローチャート、並びに、
図10に示した制御処理のフローチャートと同等の処理をハードウェアで処理させるようにしてもよい。この場合、各処理をソフトウェアで実現した場合と比較して処理の高速化が図られる。
【0100】
上記の実施形態において、プロセッサとは広義的なプロセッサを指し、汎用的なプロセッサ(例えばCPU11A及びCPU12A)や、専用のプロセッサ(例えば GPU:Graphics Processing Unit、ASIC:Application Specific Integrated Circuit、FPGA:Field Programmable Gate Array、プログラマブル論理デバイス、等)を含むものである。
【0101】
また、上記の実施形態におけるプロセッサの動作は、1つのプロセッサによって成すのみでなく、物理的に離れた位置に存在する複数のプロセッサが協働して成すものであってもよい。また、プロセッサの各動作の順序は上記の実施形態において記載した順序のみに限定されるものではなく、適宜変更してもよい。本実施形態における「情報処理システム」は、一例として、画像形成装置1という単一の装置によって構成されたものとして記載したが、複数の装置によって構成されたものであってもよい。
【0102】
上記の実施形態では、不揮発性メモリ11Cに制御プログラムが記憶され、不揮発性メモリ12Cに例外プログラムが記憶されている例について説明した。しかしながら、制御プログラム及び例外プログラムの記憶先は不揮発性メモリ11C及び不揮発性メモリ12Cに限定されない。本開示の制御プログラム及び例外プログラムは、コンピュータ10で読み取り可能な記憶媒体に記録された形態で提供することも可能である。例えば制御プログラム及び例外プログラムをCD-ROM(Compact Disk Read Only Memory)、DVD-ROM(Digital Versatile Disk Read Only Memory)、及びブルーレイディスクのような光ディスクに記録した形態で提供してもよい。また、制御プログラム及び例外プログラムを、USB(Universal Serial Bus)メモリ及びメモリカードのような可搬型の半導体メモリに記録した形態で提供してもよい。不揮発性メモリ11C、不揮発性メモリ12C、CD-ROM、DVD-ROM、ブルーレイディスク、USB、及びメモリカードは非一時的(non-transitory)記憶媒体の一例である。
【0103】
更に、情報処理システムの一例である画像形成装置1は、通信ユニット16を通じて通信回線に接続された外部装置から制御プログラム及び例外プログラムをダウンロードし、ダウンロードした制御プログラム及び例外プログラムを記憶装置に記憶してもよい。この場合、画像形成装置1のCPU11Aは、外部装置からダウンロードした制御プログラムを読み込んで制御処理を行い、画像形成装置1のCPU12Aは、外部装置からダウンロードした例外プログラムを読み込んで例外処理を行う。
【0104】
以下に本実施形態に係る付記を示す。
【0105】
(((1)))
第1プロセッサと第2プロセッサを備え、
前記第2プロセッサが、前記第1プロセッサからの命令によって指示された処理を実行するために使用するメモリ領域の破損により、前記第1プロセッサから指示された処理を実行することができない場合、前記第2プロセッサは、破損しているメモリ領域の範囲を前記第1プロセッサに通知し、
前記第1プロセッサは、破損しているメモリ領域の範囲とは異なるメモリ領域である代替メモリ領域を前記第2プロセッサに通知すると共に、前記命令を前記第2プロセッサに再通知し、
前記第2プロセッサは、前記代替メモリ領域を用いて前記命令によって指示された処理を実行する
情報処理システム。
【0106】
(((2)))
前記第2プロセッサは、前記第1プロセッサによって指示された処理に対応したプログラムを読み込んで指示され処理を実行している途中に、前記第2プロセッサが想定していない現象を認識した場合に発生する例外を検知した場合、前記例外が発生した前記プログラムの位置を特定し、
前記例外が発生した前記プログラムの位置から前記プログラムの再実行を行うか、又は、使用しているメモリ領域の破損状態を診断するかを選択する
(((1)))に記載の情報処理システム。
【0107】
(((3)))
前記第2プロセッサは、メモリ領域の診断において、使用しているメモリ領域が破損していると診断した場合、破損しているメモリ領域の範囲を特定する
(((2)))に記載の情報処理システム。
【0108】
(((4)))
前記第2プロセッサは、破損している各々のメモリ領域におけるメモリ容量の合計が予め定めたメモリ容量以上である場合、又は、破損している各々のメモリ領域を含むメモリの全メモリ容量に対する、破損している各々のメモリ領域におけるメモリ容量の合計の割合が予め定めた割合以上である場合、前記第1プロセッサに、破損しているメモリ領域を含むメモリに異常が認められることを通知する
(((1)))~(((3)))の何れか1つに記載の情報処理システム。
【0109】
(((5)))
前記第1プロセッサは、前記命令によって指示した処理に対して使用するメモリ領域を避けて前記代替メモリ領域を確保する
(((1)))~(((4)))の何れか1項に記載の情報処理システム。
【0110】
(((6)))
前記第1プロセッサは、前記代替メモリ領域を前記第2プロセッサに通知した後に、前記命令の再通知を行う
(((1)))~(((5)))の何れか1項に記載の情報処理システム。
【0111】
(((7)))
コンピュータに、
指示した処理を実行させるために通信相手のプロセッサに通知した命令の応答として、前記プロセッサから、前記命令によって指示された処理の実行に伴って検出した、破損しているメモリ領域の範囲が通知された場合、
前記プロセッサから破損していると通知されたメモリ領域の範囲とは異なるメモリ領域を代替メモリ領域として前記プロセッサに通知すると共に、前記命令を前記プロセッサに再通知する処理を実行させるための
制御プログラム。
【0112】
(((8)))
コンピュータに、
通信相手のプロセッサからの命令によって指示された処理を実行するために使用するメモリ領域の破損により、前記プロセッサから指示された処理を実行することができない場合、破損しているメモリ領域の範囲をプロセッサに通知して、前記プロセッサから指示された処理に対して、破損しているメモリ領域の範囲とは異なる新たなメモリ領域を割り当てるように前記プロセッサに要求する処理を実行させるための
例外プログラム。
【0113】
(((1)))、(((7)))、及び(((8)))によれば、第2プロセッサによる第1プロセッサから指示された処理の実行中に、第2プロセッサに対してメモリ領域の破損に伴う例外が発生した場合であっても、第2プロセッサが指示された動作を継続して行うことができる、という効果を有する。
【0114】
(((2)))によれば、第2プロセッサは自身で復旧可能な例外であるか否かを切り分けることができる、という効果を有する。
【0115】
(((3)))によれば、破損しているメモリ領域の範囲を第1プロセッサに通知することができる、という効果を有する。
【0116】
(((4)))によれば、第2プロセッサはメモリ交換のタイミングを第1プロセッサに通知することができる、という効果を有する。
【0117】
(((5)))によれば、使用される可能性のあるメモリ領域を外して代替メモリ領域を確保することができる、という効果を有する。
【0118】
(((6)))によれば、第1プロセッサは、第2プロセッサが代替メモリ領域を確保したことを確認したうえで命令を指示することができる、という効果を有する。
【符号の説明】
【0119】
1 画像形成装置
2 コマンド領域
3 指定メモリ領域
5 代替メモリ領域
6 実行タスク
6A 例外発生タスク
7 例外検知タスク
8 復旧タスク
9 例外診断タスク
10 コンピュータ
11 制御部
11A (制御部の)CPU
11B (制御部の)RAM
11C (制御部の)不揮発性メモリ
11D (制御部の)バス
12 画像処理部
12A (画像処理部の)CPU
12B (画像処理部の)RAM
12C 不揮発性メモリ
12D (画像処理部の)バス
15 バス
16 通信ユニット
17 入力ユニット
18 表示ユニット
19 画像形成ユニット
20 スキャナユニット
22A スキャナ用メモリ領域
22B 画像形成用メモリ領域
F1~F12 シーケンス