(57)【要約】【課題】メモリー領域不足に起因するデットロックを確実に回避すること。【解決手段】ＭＦＰ１００側のシステム制御部２１３（第１のシステム制御部）により、デットロック検出部２１０が画像処理部２０９によるＲＡＭ２０６（第１のメモリー）を使用する際のデットロックを検出した際、共有資源管理部２１１（第１の共有資源管理部）が管理する管理テーブル２３０を参照し、ＲＡＭ２０６（第１のメモリー）に記憶させたデータの一部をＲＡＭ２０６（第１のメモリー）とユーザー端末側（端末側）のＲＡＭ（第２のメモリー）との間で移動させる。これにより、ＲＡＭ２０６（第１のメモリー）に空き領域を増やすことができる。【選択図】図２
2017079003.tif 000002
【特許請求の範囲】
【請求項１】
第１のメモリーを有する画像形成装置と、
第２のメモリーを有し、ネットワークを介して前記画像形成装置にデータの送信が可能な端末とを備え、
前記画像形成装置は、
前記第１のメモリーに記憶された前記データに対する画像処理を行う画像処理部と、
前記端末に関する情報に紐付けた前記データに関する情報を管理テーブルを用いて管理する第１の共有資源管理部と、
前記画像処理部が前記第１のメモリーを使用する際のデットロックを検出するデットロック検出部と、
前記デットロック検出部が前記デットロックを検出した際、前記管理テーブルを参照し、前記データの一部を前記第１のメモリーと前記第２のメモリーとの間で移動させる第１のシステム制御部とを有し、
前記端末は、
前記第２のメモリーの空き領域を示す情報と前記データの一部に関する情報とを管理する第２の共有資源管理部と、
前記第１のシステム制御部からの要求に対し、前記第２の共有資源管理部が管理する情報を参照して応答する第２のシステム制御部とを有する
ことを特徴とするメモリー共有システム。
【請求項２】
前記第１のシステム制御部は、前記デットロック検出部が前記デットロックを検出すると、前記第２のシステム制御部に救援要求を送り、
前記第２のシステム制御部は、前記第１のシステム制御部に前記第２のメモリーの空き領域を示す情報を送る
ことを特徴とする請求項１に記載のメモリー共有システム。
【請求項３】
前記第１のシステム制御部は、前記第２のメモリーの空き領域を示す情報を参照し、前記データの一部の移動が可能であれば、前記データの一部を前記端末に送り、さらに前記第１の共有資源管理部に対し、前記管理テーブルに前記データの一部のメモリーアドレスを書き込ませ、
前記第２のシステム制御部は、前記第２の共有資源管理部に対し、前記データの一部を記憶している前記第１のメモリーのメモリーアドレスと、前記データの一部を記憶させた前記第２のメモリーのメモリーアドレスとを管理させる
ことを特徴とする請求項２に記載のメモリー共有システム。
【請求項４】
前記第１のシステム制御部は、
前記データの一部を前記端末に送った後、前記第１のメモリーに記憶されている前記データの一部を削除し、
前記画像処理部による処理の進行に応じて前記第１のメモリーに空き領域が生じると、前記第２のメモリーに移動させた前記データの一部を前記端末から受け取り、前記管理テーブルを参照し、前記第１のメモリーの元のメモリーアドレスの領域に書き込む
ことを特徴とする請求項３に記載のメモリー共有システム。
【請求項５】
第１のメモリーを有する画像形成装置と、
前記画像形成装置を管理する管理端末と、
第２のメモリーを有し、ネットワークを介して前記画像形成装置にデータの送信が可能な端末とを備え、
前記画像形成装置は、
前記第１のメモリーに記憶された前記データに対する画像処理を行う画像処理部と、
前記画像処理部が前記第１のメモリーを使用する際のデットロックを検出するデットロック検出部と、
前記データの一部を前記第１のメモリーと前記第２のメモリーとの間で移動させる第１のシステム制御部とを有し、
前記管理端末は、
前記端末に関する情報に紐付けて前記データに関する情報を管理テーブルを用いて管理する第３の共有資源管理部と、
前記デットロック検出部が前記デットロックを検出した際、前記管理テーブルを参照し、前記第１のシステム制御部に対し、前記データの一部の移動を指示する第３のシステム制御部とを有し、
前記端末は、
前記第２のメモリーの空き領域を示す情報と前記データの一部に関する情報とを管理する第２の共有資源管理部と、
前記第１のシステム制御部からの要求に対し、前記第２の共有資源管理部が管理する情報を参照して応答する第２のシステム制御部とを有する
ことを特徴とするメモリー共有システム。
【請求項６】
画像処理部により、第１のメモリーに記憶された端末からのデータに対する画像処理を行う工程と、
第１の共有資源管理部により、前記端末に関する情報に紐付けた前記データに関する情報を管理テーブルを用いて管理する工程と、
デットロック検出部により、前記画像処理部が前記第１のメモリーを使用する際のデットロックを検出する工程と、
第１のシステム制御部により、前記デットロック検出部が前記デットロックを検出した際、前記管理テーブルを参照し、前記データの一部を前記第１のメモリーと第２のメモリーとの間で移動させる工程とを、画像形成装置を制御するコンピューターに実行させる
ことを特徴とするメモリー共有プログラム。
【請求項７】
第３の共有資源管理部により、端末に関する情報に紐付けて端末からのデータに関する情報を管理テーブルを用いて管理する工程と、
第３のシステム制御部により、画像形成装置側のデットロック検出部がデットロックを検出した際、前記管理テーブルを参照し、画像形成装置側の第１のシステム制御部に対し、前記データの一部の移動を指示する工程とを、管理端末を制御するコンピューターに実行させる
ことを特徴とするメモリー共有プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ネットワークに接続されている機器間でのメモリーリソースを共有するメモリー共有システム及びメモリー共有プログラムに関する。
【背景技術】
【０００２】
たとえば、プリンター、多機能プリンター、複合機などのＭＦＰ（Ｍｕｌｔｉｆｕｎｃｔｉｏｎ  Ｐｅｒｉｐｈｅｒａｌ）であるメモリー共有システムにおいては、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）などのネットワークを介し、ＰＣなどのユーザー端末から受信した印刷データに対し、ユーザー設定に応じた印刷処理などを実行する。
【０００３】
ちなみに、印刷データは、ポストスクリプト（登録商標）やＰＣＬ（Ｐｒｉｎｔｅｒ  Ｃｏｎｔｒｏｌ  Ｌａｎｇｕａｇｅ）に代表されるページ記述言語（ＰＤＬ：Ｐａｇｅ  Ｄｅｓｃｒｉｐｔｉｏｎ  Ｌａｎｇｕａｇｅ）形式のデータ（以下、ＰＤＬデータという）である。
【０００４】
また、メモリー共有システムでの印刷処理に際しては、受信した印刷データを、一旦中間形式のデータ（以下、中間データという）に変換してメモリー上に保持し、このメモリー上に保持した中間データを順次読み出してビットマップ形式のデータ（以下、ビットマップデータという）に変換する。また、メモリー上に保持した中間データをビットマップデータに変換する際、同一のメモリー領域内にワークエリアが展開される。
【０００５】
ところで、たとえばそれぞれ別タスクとして動作する複数のＰＤＬインタプリターを備えたメモリー共有システムでは、共有資源となるメモリー領域を共有で使用する。このため、一方のインタプリターがメモリー領域を使用しているとき、他方のインタプリターに対するメモリー領域が不足することがある。この場合、メモリー領域不足に起因するデットロックを生じることがある。
【０００６】
このような不具合を解消するものとして、特許文献１に示されているデッドロック検知方法が知られている。このデッドロック検知方法は、複数のタスクが共有資源を共有し合うことによるデッドロック状態を検出するための管理テーブルと、共有資源の獲得待ち状態に遷移したタスクの情報と、タスクの獲得待ち状態の原因となる共有資源を獲得中であるタスクの情報とを、デッドロック状態を検出するための情報として管理テーブルに記録する管理情報作成部とを備え、複数のタスク間で複数の共有資源の排他制御を実行するものである。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００４−３４１８７８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
上述した特許文献１のデッドロック検知方法では、アプリケーションプログラムに影響することなく、デッドロック状態を容易に且つ正確に検知することで、複数の共有資源の排他制御を実行することができる。
【０００９】
ところが、このデッドロック検知方法では、デッドロック状態が検知されると、デットロックが発生したタスクの再実行を試みるなどの処理が必要となる。この場合の処理は、タスクの実行を最初から行うことになる。ところが、メモリー領域が不足している状態では、メモリー領域不足に起因するデットロックを回避することができないおそれがあるという問題があった。
【００１０】
本発明は、このような状況に鑑みてなされたものであり、上記問題点を解消することができるメモリー共有システム及びメモリー共有プログラムを提供することを目的とする。
【課題を解決するための手段】
【００１１】
本発明のモリー共有システムは、第１のメモリーを有する画像形成装置と、第２のメモリーを有し、ネットワークを介して前記画像形成装置にデータの送信が可能な端末とを備え、前記画像形成装置は、前記第１のメモリーに記憶された前記データに対する画像処理を行う画像処理部と、前記端末に関する情報に紐付けた前記データに関する情報を管理テーブルを用いて管理する第１の共有資源管理部と、前記画像処理部が前記第１のメモリーを使用する際のデットロックを検出するデットロック検出部と、前記デットロック検出部が前記デットロックを検出した際、前記管理テーブルを参照し、前記データの一部を前記第１のメモリーと前記第２のメモリーとの間で移動させる第１のシステム制御部とを有し、前記端末は、前記第２のメモリーの空き領域を示す情報と前記データの一部に関する情報とを管理する第２の共有資源管理部と、前記第１のシステム制御部からの要求に対し、前記第２の共有資源管理部が管理する情報を参照して応答する第２のシステム制御部とを有することを特徴とする。
また、前記第１のシステム制御部は、前記デットロック検出部が前記デットロックを検出すると、前記第２のシステム制御部に救援要求を送り、前記第２のシステム制御部は、前記第１のシステム制御部に前記第２のメモリーの空き領域を示す情報を送ることを特徴とする。
また、前記第１のシステム制御部は、前記第２のメモリーの空き領域を示す情報を参照し、前記データの一部の移動が可能であれば、前記データの一部を前記端末に送り、さらに前記第１の共有資源管理部に対し、前記管理テーブルに前記データの一部のメモリーアドレスを書き込ませ、前記第２のシステム制御部は、前記第２の共有資源管理部に対し、前記データの一部を記憶している前記第１のメモリーのメモリーアドレスと、前記データの一部を記憶させた前記第２のメモリーのメモリーアドレスとを管理させることを特徴とする。
また、前記第１のシステム制御部は、前記データの一部を前記端末に送った後、前記第１のメモリーに記憶されている前記データの一部を削除し、前記画像処理部による処理の進行に応じて前記第１のメモリーに空き領域が生じると、前記第２のメモリーに移動させた前記データの一部を前記端末から受け取り、前記管理テーブルを参照し、前記第１のメモリーの元のメモリーアドレスの領域に書き込むことを特徴とする。
本発明のメモリー共有システムは、第１のメモリーを有する画像形成装置と、前記画像形成装置を管理する管理端末と、第２のメモリーを有し、ネットワークを介して前記画像形成装置にデータの送信が可能な端末とを備え、前記画像形成装置は、前記第１のメモリーに記憶された前記データに対する画像処理を行う画像処理部と、前記画像処理部が前記第１のメモリーを使用する際のデットロックを検出するデットロック検出部と、前記データの一部を前記第１のメモリーと前記第２のメモリーとの間で移動させる第１のシステム制御部とを有し、前記管理端末は、前記端末に関する情報に紐付けて前記データに関する情報を管理テーブルを用いて管理する第３の共有資源管理部と、前記デットロック検出部が前記デットロックを検出した際、前記管理テーブルを参照し、前記第１のシステム制御部に対し、前記データの一部の移動を指示する第３のシステム制御部とを有し、前記端末は、前記第２のメモリーの空き領域を示す情報と前記データの一部に関する情報とを管理する第２の共有資源管理部と、前記第１のシステム制御部からの要求に対し、前記第２の共有資源管理部が管理する情報を参照して応答する第２のシステム制御部とを有することを特徴とする。
本発明のメモリー共有プログラムは、画像処理部により、第１のメモリーに記憶された端末からのデータに対する画像処理を行う工程と、第１の共有資源管理部により、前記端末に関する情報に紐付けた前記データに関する情報を管理テーブルを用いて管理する工程と、デットロック検出部により、前記画像処理部が前記第１のメモリーを使用する際のデットロックを検出する工程と、第１のシステム制御部により、前記デットロック検出部が前記デットロックを検出した際、前記管理テーブルを参照し、前記データの一部を前記第１のメモリーと第２のメモリーとの間で移動させる工程とを、画像形成装置を制御するコンピューターに実行させることを特徴とする。
本発明のメモリー共有プログラムは、第３の共有資源管理部により、端末に関する情報に紐付けて端末からのデータに関する情報を管理テーブルを用いて管理する工程と、第３のシステム制御部により、画像形成装置側のデットロック検出部がデットロックを検出した際、前記管理テーブルを参照し、画像形成装置側の第１のシステム制御部に対し、前記データの一部の移動を指示する工程とを、管理端末を制御するコンピューターに実行させることを特徴とする。
本発明のメモリー共有システム及びメモリー共有プログラムでは、第１のシステム制御部により、デットロック検出部が画像処理部による第１のメモリーを使用する際のデットロックを検出した際、第１の共有資源管理部が管理する管理テーブルを参照し、第１のメモリーに記憶させたデータの一部を第１のメモリーと端末側の第２のメモリーとの間で移動させる。これにより、第１のメモリーに空き領域を増やすことができる。
【発明の効果】
【００１２】
本発明のメモリー共有システムによれば、デットロック検出部がデットロックを検出した際、第１のシステム制御部が第１のメモリーに記憶させたデータの一部を第１のメモリーと端末側の第２のメモリーとの間で移動させるので、第１のメモリーに空き領域を増やすことができ、メモリー領域不足に起因するデットロックを確実に回避することができる。
【図面の簡単な説明】
【００１３】
【図１】本発明のメモリー共有システムの一実施形態を示す図である。
【図２】図１のＭＦＰの構成を示す図である。
【図３】図１のユーザー端末の構成を示す図である。
【図４】図２のＲＡＭのメモリー領域について説明するものであって、同図（ａ）は中間データがＲＡＭのメモリー領域に記憶されている状態を示す図であり、同図（ｂ）は移動させたタスクＣが受け持つ中間データが削除されている状態を示す図である。
【図５】図２のＲＡＭのメモリー領域の他の例について説明するものであって、同図（ａ）は中間データがＲＡＭのメモリー領域に記憶されている状態を示す図であり、同図（ｂ）は移動させた中間データの一部が削除されている状態を示す図である。
【図６】図２の共有資源管理部が管理する管理テーブルを示す図である。
【図７】図１のメモリー共有システムにおける、メモリー共有の処理について説明するためのフローチャートである。
【図８】図１のメモリー共有システムにおける、メモリー共有の処理について説明するためのフローチャートである。
【図９】図１のメモリー共有システムの構成を変えた場合の他の例を説明するための図である。
【図１０】図９の管理端末の構成を示す図である。
【発明を実施するための形態】
【００１４】
以下、本発明のメモリー共有システムの一実施形態を、図１〜図８を参照しながら説明する。なお、以下の説明においての画像形成装置の一例としては、たとえば印刷機能、コピー機能、ＦＡＸ機能、ネットワーク経由でのデータ送受信機能などを搭載した複合的な周辺機器であるＭＦＰ（Ｍｕｌｔｉｆｕｎｃｔｉｏｎ  Ｐｅｒｉｐｈｅｒａｌ）であるものとする。
【００１５】
まず、図１に示すように、メモリー共有システムは、画像形成装置であるＭＦＰ１００、ＰＣ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ）などのユーザー端末３００を備えている。ＭＦＰ１００及びユーザー端末３００は、社内ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）４００を介して接続されている。なお、図示はしていないが、メモリー共有システムには文書管理サーバーなども含めることができる。
【００１６】
また、本実施形態におけるＭＦＰ１００及びユーザー端末３００のそれぞれに搭載されているメモリーである、後述のＲＡＭ２０６、３１３は、共有設定が行われているものとする。そして、ＭＦＰ１００側で、メモリー領域不足に起因するデットロックを回避する場合、社内ＬＡＮ４００を介して全てのユーザー端末３００に対し後述の救援要求を送る。また、いずれかのユーザー端末３００からの応答があると、ＭＦＰ１００側で処理するデータの一部を応答の有ったいずれかのユーザー端末３００のメモリーに移動させる。また、ＭＦＰ１００側で処理の進行状況に応じてメモリーに空き領域が生じると、移動させたデータを受け取り、処理を続行する。
【００１７】
次に、図２を参照し、ＭＦＰ１００の内部構成の一例について説明する。ＭＦＰ１００は、制御部２００、スキャナー部２２０、プリンター部２２１、ＦＡＸ部２２２、パネル部２２３、ＨＤＤ２２４を備えている。
【００１８】
スキャナー部２２０は、イメージセンサ（図示省略）によって読み取られる、図示しない原稿の画像信号をデジタルの画像データに変換し、制御部２００に入力するデバイスである。プリンター部２２１は、制御部２００から出力される画像データに基づき、用紙上に画像を印刷するデバイスである。ＦＡＸ部２２２は、制御部２００から出力される画像データを、電話回線を通じ相手方となるファクシミリへと送信し、また、相手方ファクシミリからの画像データを受信して制御部２００に入力するデバイスである。
【００１９】
パネル部２２３は、ＭＦＰ１００の印刷機能、コピー機能、ＦＡＸ機能、ネットワーク経由でのデータ送受信機能や、各種設定のための表示を行うデバイスである。ＨＤＤ２２４は、ＭＦＰ１００の種々の機能を提供するためのアプリケーションプログラムなどを記憶している記憶デバイスである。
【００２０】
制御部２００は、画像形成プログラムや制御プログラムなどを実行してＭＦＰ１００全体の動作を制御するプロセッサーである。制御部２００は、スキャナー制御部２０１、プリンター制御部２０２、ＦＡＸ（Ｆａｃｓｉｍｉｌｅ）制御部２０３、社内ＬＡＮネットワークＩ／Ｆ（インターフェース）２０４、ネットワーク制御部２０５、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）２０６、ＥＥＰＲＯＭ（Ｅｌｅｃｔｒｉｃａｌｌｙ  Ｅｒａｓａｂｌｅ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｒｅａｄ−Ｏｎｌｙ  Ｍｅｍｏｒｙ）２０７、パネル操作制御部２０８、画像処理部２０９、デットロック検出部２１０、共有資源管理部２１１、ＨＤＤ制御部２１２、システム制御部２１３を備えている。また、これらは、データバス２１４に接続されている。
【００２１】
スキャナー制御部２０１は、スキャナー部２２０の読み取り動作を制御する。プリンター制御部２０２は、プリンター部２２１の印刷動作を制御する。ＦＡＸ制御部２０３は、ＦＡＸ部２２２による画像データの送受信動作を制御する。ネットワーク制御部２０５は、社内ＬＡＮネットワークＩ／Ｆ２０４を介し、社内ＬＡＮ４００経由でのデータなどの送受信の制御を行う。
【００２２】
ＲＡＭ２０６（第２のメモリー）は、プログラムを実行するためのワークメモリーである。ＥＥＰＲＯＭ２０７には、各部の動作チェックなどを行う制御プログラムが記憶されている。また、ＥＥＰＲＯＭ２０７には、アプリケーションプログラムにより実行した動作についてのログ情報なども記憶されている。
【００２３】
パネル操作制御部２０８は、パネル部２２３の表示動作を制御する。画像処理部２０９は、画像データに対する画像処理（ラスタライズ）を行う。デットロック検出部２１０は、メモリー領域不足に起因するデットロックを検出する。この場合、デットロック検出部２１０は、後述のたとえばタスクＡ〜Ｃの処理が停止したことを検出する。なお、デットロック検出部２１０は、たとえば後述のＲＡＭ２０６のワーク領域の空き領域が特定領域以下となったとき、デットロックを検出してもよい。共有資源管理部２１１は、詳細は後述するが、後述の管理テーブル２３０を有し、ＲＡＭ２０６のメモリー領域の管理などを行う。
【００２４】
ＨＤＤ制御部２１２は、ＨＤＤ２２４に対するデータの読み出し及び書き込みなどを制御する。システム制御部２１３（第２のシステム制御部）は、各部の連携動作などを制御する。また、システム制御部２１３は、デットロック検出部２１０がデットロックを検出すると、ネットワーク制御部２０５を介し、それぞれのユーザー端末３００に対し、救援要求を送信する。また、システム制御部２１３は、いずれかのユーザー端末３００からの応答に従い、共有資源管理部２１１が管理する後述の管理テーブル２３０を参照し、ＲＡＭ２０６に記憶されたデータの一部を応答の有ったいずれかのユーザー端末３００のメモリー（後述のＲＡＭ３１３）に移動させる。このとき、データの一部を記憶しているＲＡＭ２０６のメモリーアドレスも通知する。また、システム制御部２１３は、画像処理部２０９での処理の進行状況に応じてＲＡＭ２０６に空き領域が生じると、移動させたデータを受け取り、ＲＡＭ２０６に記憶させる。これにより、画像処理部２０９は、いずれかのユーザー端末３００に移動させたデータに対する画像処理を続行させることができる。これにより、メモリー領域不足に起因するデットロックが回避される。
【００２５】
次に、図３を参照し、ユーザー端末３００の内部構成の概要について説明する。ユーザー端末３００は、制御プログラムを実行してユーザー端末３００全体の動作を制御する制御部３１０を備えている。
【００２６】
制御部３１０は、社内ＬＡＮネットワークＩ／Ｆ３１１、ネットワーク制御部３１２、ＲＡＭ３１３、ＥＥＰＲＯＭ３１４、共有資源管理部３１５、システム制御部３１６を備えている。また、これらは、データバス３１７に接続されている。
【００２７】
ネットワーク制御部３１２は、社内ＬＡＮネットワークＩ／Ｆ３１１を介し、社内ＬＡＮ４００経由でのデータなどの送受信の制御を行う。ＲＡＭ３１３は、プログラムを実行するためのワークメモリーである。ＥＥＰＲＯＭ３１４には、各部の動作チェックなどを行う制御プログラムが記憶されている。また、ＥＥＰＲＯＭ３１４には、アプリケーションプログラムにより実行した動作についてのログ情報なども記憶されている。
【００２８】
共有資源管理部３１５（第２の共有資源管理部）は、ＲＡＭ３１３の空き領域を管理する。また、共有資源管理部３１５は、ＭＦＰ１００から受け取ったデータが記憶されるＲＡＭ３１３のメモリーアドレスなども管理する。システム制御部３１６は、各部の連携動作などを制御する。また、システム制御部３１６は、ネットワーク制御部３１２を介し、ＭＦＰ１００からの救援要求に対する応答を送信する。なお、応答には、端末ＩＤ、ＲＡＭ３１３の空き容量などが含まれる。また、システム制御部３１６は、ＭＦＰ１００からのデータを受け取ると、ＲＡＭ３１３の空き領域に受け取ったデータを記憶させる。このとき、システム制御部３１６は、共有資源管理部３１５に対し、ＭＦＰ１００側のＲＡＭ２０６のデータの一部を記憶しているメモリーアドレスと、データの一部を記憶させたＲＡＭ３１３のメモリーアドレスとを管理させる。
【００２９】
次に、図４を参照し、ＭＦＰ１００側のＲＡＭ２０６のメモリー領域について説明する。まず、ＭＦＰ１００がたとえばユーザー端末３００から受信した印刷データに対する印刷処理を行う場合、画像処理部２０９が受信した印刷データを、一旦中間形式のデータ（以下、中間データという）に変換する。そして、システム制御部２１３が変換した中間データをＲＡＭ２０６のメモリー領域に記憶させる。
【００３０】
ここで、図４（ａ）は、中間データがＲＡＭ２０６のメモリー領域のメモリーアドレスであるたとえばａ０番地〜ａ５番地に記憶されている状態を示している。また、ａ６番地〜ａｎ番地までがワーク領域となっている状態を示している。また、図４（ａ）は、説明の都合上、ａ０番地〜ａ１番地までの中間データをタスクＡが受け持ち、ａ２番地〜ａ３番地までの中間データをタスクＢが受け持ち、ａ４番地〜ａ５番地までの中間データをタスクＣが受け持つ状態を示している。
【００３１】
そして、通常では、排他制御により、タスクＡ〜Ｃのいずれかがワーク領域を占有しているとき、他のタスクＡ〜Ｃがワーク領域の開放を待つという処理が繰り返される。ここで、たとえばタスクＡの処理中にワーク領域が不足すると、タスクＡの処理が中断し、デットロックが生じる。このとき、デットロック検出部２１０がデットロックを検出する。なお、デットロック検出部２１０は、たとえばタスクＡの処理中にＲＡＭ２０６のワーク領域の空き領域が特定領域以下となった時点で、デットロックを検出してもよい。
【００３２】
また、システム制御部２１３は、デットロック検出部２１０がデットロックを検出すると、社内ＬＡＮ４００経由で全てのユーザー端末３００に、メモリー領域不足に起因するデットロックを回避するために、救援要求を送る。そして、ユーザー端末３００からの応答が有ると、応答に含まれるＲＡＭ３１３の空き容量を確認し、中間データの一部をユーザー端末３００のＲＡＭ３１３に移動させる。
【００３３】
図４（ｂ）は、たとえばタスクＡの処理中にメモリー領域不足に起因するデットロックを回避するために、たとえばタスクＣが受け持つ中間データをいずれかのユーザー端末３００に移動させた状態を示している。つまり、タスクＣが受け持つ中間データをいずれかのユーザー端末３００に移動させた場合、タスクＣが受け持つａ４番地〜ａ５番地までの中間データを削除することで、ワーク領域をａ４番地〜ａ５番地までの分だけ開放（増やす）することができる。これにより、たとえばタスクＡの処理中でのワーク領域の不足が解消され、メモリー領域不足に起因するデットロックが回避される。
【００３４】
なお、図４（ｂ）は、タスクＣが受け持つａ４番地〜ａ５番地までの中間データを移動させた状態を示しているが、タスクＢが受け持つａ２番地〜ａ３番地までの中間データを移動させてもよい。また、タスクＣが受け持つａ４番地〜ａ５番地までの中間データの一部を移動させてもよいし、タスクＢが受け持つａ２番地〜ａ３番地までの中間データの一部を移動させてもよい。いずれにしても、処理中である、たとえばタスクＡのメモリー領域不足に起因するデットロックを回避できるだけのワーク領域が確保されればよい。
【００３５】
なお、図４では、ＲＡＭ２０６のメモリー領域に記憶された中間データに対し、複数のタスクＡ〜Ｃが処理を受け持つ場合として示しているが、たとえば図５（ａ）に示すように、ＲＡＭ２０６のメモリー領域に記憶された中間データに対し、タスクＡのみが処理を受け持つ場合も考えられる。
【００３６】
この場合、図５（ｂ）に示すように、中間データの一部である、たとえばａ４番地〜ａ５番地までの中間データを、いずれかのユーザー端末３００に移動させることで、メモリー領域不足に起因するデットロックを回避することができる。
【００３７】
次に、図６を参照し、共有資源管理部２１１が管理する管理テーブルについて説明する。まず、共有資源管理部２１１が管理する管理テーブル２３０は、たとえば端末ＩＤ（ｉｄｅｎｔｉｆｉｃａｔｉｏｎ）の項目２３１、応答の有無の項目２３２、空き容量の項目２３３、移動させた中間データのメモリーアドレスの項目２３４を有している。なお、共有資源管理部２１１は、端末ＩＤに紐付けして応答の有無、空き容量、移動させた中間データのメモリーアドレスを管理している。
【００３８】
ここで、共有資源管理部２１１は、端末ＩＤの項目２３１に、それぞれのユーザー端末３００を識別するための識別子を書き込む。また、共有資源管理部２１１は、応答の有無の項目２３２に、ＭＦＰ１００からの救援要求に対する有無を書き込む。また、共有資源管理部２１１は、空き容量の項目２３３に、応答の有ったユーザー端末３００側のＲＡＭ３１３の空き容量を書き込む。また、共有資源管理部２１１は、移動させた中間データのメモリーアドレスの項目２３４に、ＭＦＰ１００側のＲＡＭ２０６から移動させた中間データのメモリーアドレスを書き込む。
【００３９】
また、共有資源管理部２１１は、ＭＦＰ１００からの救援要求に対するユーザー端末３００からの応答が有ったときと、いずれかのユーザー端末３００に移動させた中間データを受け取ったとき、管理テーブル２３０の内容を更新する。この場合、共有資源管理部２１１は、応答の有無の項目２３２、空き容量の項目２３３、移動させた中間データのメモリーアドレスの項目２３４のそれぞれに書き込んだ内容を削除する。
【００４０】
ちなみに、図６は、端末ＩＤがＡ００１、Ａ００２、Ａ００ｎの場合、応答の有無の項目２３２に、応答が有ったことを示す「有り」が書き込まれていることを示している。また、空き容量の項目２３３に、応答が有ったＡ００１、Ａ００２、Ａ００ｎの端末ＩＤに対応させ、それぞれ７０ＭＢ、８００ＭＢ、５０ＭＢの空き容量が書き込まれていることを示している。また、移動させた中間データのメモリーアドレスの項目２３４に、ＲＡＭ２０６から移動させた中間データのメモリーアドレスである、たとえばａ４番地〜ａ５番地が書き込まれていることを示している。そして、システム制御部２１３が移動させた中間データのメモリーアドレスの項目２３４に、ＲＡＭ２０６から移動させたデータのメモリーアドレスが書き込まれていることを確認することで、中間データが移動していることを識別できる。
【００４１】
ここで、システム制御部２１３は、タスクＢが受け持つデータ量がたとえば１００ＭＢで、タスクＣが受け持つデータ量がたとえば６０ＭＢであると判断したとする。この場合、システム制御部２１３は、タスクＢのデータ量（１００ＭＢ）については、端末ＩＤ（Ａ００２）のユーザー端末３００の空き容量が８００ＭＢであるため、移動可能と判断する。また、システム制御部２１３は、タスクＣのデータ量（６０ＭＢ）については、端末ＩＤ（Ａ００１、Ａ００２）のユーザー端末３００の空き容量がそれぞれ７０ＭＢ、８００ＭＢであるため、移動可能と判断する。
【００４２】
この場合、タスクＢの中間データとタスクＣの中間データとは、共に移動可能ということになるが、データの移動に関わる処理時間などを考慮すると、データ量（６０ＭＢ）の少ないタスクＣの中間データを移動させてもよい。また、タスクＣの中間データの移動先は、空き容量が７０ＭＢである端末ＩＤ（Ａ００１）、又は８００ＭＢである端末ＩＤ（Ａ００２）のどちらかのユーザー端末３００であればよいことになるが、上記同様に、中間データの移動に関わる処理時間などを考慮すると、先に応答の有ったユーザー端末３００にタスクＣの中間データを移動させてもよい。
【００４３】
さらには、上述したように、処理中である、たとえばタスクＡのメモリー領域不足に起因するデットロックを回避できるだけのワーク領域が確保されればよいため、タスクＣの中間データの一部、又はタスクＢの中間データの一部を移動させてもよい。
【００４４】
なお、システム制御部２１３は、ユーザー端末３００に中間データを移動させる際、ＲＡＭ２０６のメモリーアドレスも併せて送る。すなわち、たとえばタスクＣの中間データをユーザー端末３００に移動させる際、タスクＣの中間データのメモリーアドレス（ａ４番地からａ５番地）も併せて送る。
【００４５】
これにより、タスクＣの中間データを受け取ったユーザー端末３００側では、ＲＡＭ３１３に記憶させたメモリーアドレスと、タスクＣの中間データのメモリーアドレス（ａ４番地からａ５番地）とを紐付けて管理することができる。これにより、ＭＦＰ１００側から中間データの返信要求があった場合、ＲＡＭ３１３に記憶させたタスクＣの中間データを確実に送り返すことができる。
【００４６】
また、システム制御部２１３は、タスクＣの中間データを送った後、図４（ｂ）に示したように、ａ４番地からａ５番地のタスクＣの中間データを削除し、開放する。また、システム制御部２１３は、ユーザー端末３００から受け取った中間データを、移動させた中間データのメモリーアドレスの項目２３４のメモリーアドレスを参照することで、ＲＡＭ２０６の元のアドレスに書き込むことができる。
【００４７】
次に、図７及び図８を参照し、メモリー共有の処理について説明する。なお、以下の説明では、画像処理部２０９のタスクＡが処理を行っているものとする。
【００４８】
（ステップＳ１０１）
まず、システム制御部２１３は、デットロック検出部２１０がデットロックを検出したかどうかを判断する。なお、デットロック検出部２１０は、図４（ａ）で説明したように、タスクＡがａ０番地〜ａ１番地までの中間データを受け持ち、タスクＢがａ２番地〜ａ３番地までの中間データを受け持ち、タスクＣがａ４番地〜ａ５番地までの中間データを受け持っているとする。また、デットロック検出部２１０が、画像処理部２０９のタスクＡが処理中に、ＲＡＭ２０６のワーク領域の空き領域が無くなり、タスクＡの処理が停止したとき、デットロックを検出するものとする。なお、デットロック検出部２１０は、上述したように、画像処理部２０９のタスクＡが処理中に、ＲＡＭ２０６のワーク領域の空き領域が特定領域以下となったとき、デットロックを検出してもよい。
そして、システム制御部２１３は、デットロックでないと判断すると（ステップＳ１０１：Ｎｏ）、ステップＳ１０２に移行する。これに対し、システム制御部２１３は、デットロックであると判断すると（ステップＳ１０１：Ｙｅｓ）、ステップＳ１０５に移行する。
【００４９】
（ステップＳ１０２）
システム制御部２１３は、データ（中間データ）を他の端末（ユーザー端末３００）に移動させているかどうかを判断する。この場合、システム制御部２１３は、共有資源管理部２１１が管理している、図６に示した管理テーブル２３０を参照する。システム制御部２１３は、移動させたデータ（中間データ）のメモリーアドレスの項目２３４にメモリーアドレスが書き込まれていなければ、データ（中間データ）を他の端末（ユーザー端末３００）に移動させていないと判断し（ステップＳ１０２：Ｎｏ）、ステップＳ１０３に移行する。
これに対し、システム制御部２１３は、管理テーブル２３０の移動させたデータ（中間データ）のメモリーアドレスの項目２３４にメモリーアドレスが書き込まれていれば、データ（中間データ）を他の端末（ユーザー端末３００）に移動させていると判断し（ステップＳ１０２：Ｙｅｓ）、図８のステップＳ１１１に移行する。
すなわち、図６のように、移動させたデータ（中間データ）のメモリーアドレスの項目２３４に、メモリーアドレスである、ａ４番地〜ａ５番地が書き込まれている場合、システム制御部２１３はデータ（中間データ）を他の端末（ユーザー端末３００）に移動させていると判断する。また、システム制御部２１３は、メモリーアドレスが書き込まれている端末ＩＤ（Ａ００２）を確認することで、データ（中間データ）を移動させたユーザー端末３００を識別する。
【００５０】
（ステップＳ１０３）
画像処理部２０９のタスクＡが処理を続行する。
【００５１】
（ステップＳ１０４）
システム制御部２１３は、画像処理部２０９による処理が終了したかどうかを判断する。この場合、システム制御部２１３は、画像処理部２０９からのタスクＡ〜Ｃによる処理の終了の通知があると、画像処理部２０９による処理が終了したと判断する（ステップＳ１０４：Ｙｅｓ）。これに対し、システム制御部２１３は、画像処理部２０９からのタスクＡ〜Ｃによる処理の終了の通知がなければ、画像処理部２０９による処理が終了していないと判断し（ステップＳ１０４：Ｎｏ）、ステップＳ１０１に移行する。
【００５２】
（ステップＳ１０５）
システム制御部２１３は、デットロック検出部２１０がデットロックを検出すると、社内ＬＡＮ４００を介して全てのユーザー端末３００に対し救援要求を送る。
【００５３】
（ステップＳ１０６）
システム制御部２１３は、ユーザー端末３００からの応答を待ち（ステップＳ１０６：Ｎｏ）、ユーザー端末３００からの応答があると（ステップＳ１０６：Ｙｅｓ）、ステップＳ１０７に移行する。
【００５４】
（ステップＳ１０７）
システム制御部２１３は、ユーザー端末３００からの応答があると、共有資源管理部２１１に対し、図６に示した管理テーブル２３０の内容を更新させる。
この場合、共有資源管理部２１１は、端末ＩＤがＡ００１、Ａ００２、Ａ００ｎのユーザー端末３００からの応答が有ると、それぞれの端末ＩＤに対応した応答の有無の項目２３２に「有り」を書き込む。共有資源管理部２１１は、応答が無かった端末ＩＤがＡ００３については、応答の有無の項目２３２に「無し」を書き込む。
また、共有資源管理部２１１は、空き容量の項目２３３に、応答に含まれるユーザー端末３００側のＲＡＭ３１３の空き容量を書き込む。ちなみに、図６では、端末ＩＤがＡ００１、Ａ００２、Ａ００ｎの場合、それぞれ７０ＭＢ、８００ＭＢ、５０ＭＢの空き容量が応答に含まれていることを示している。
【００５５】
（ステップＳ１０８）
システム制御部２１３は、図４（ａ）に示したＲＡＭ２０６のメモリー領域において、処理中のタスクＡを除く、タスクＢが受け持つデータ量と、タスクＣが受け持つデータ量とを判断する。
ここで、システム制御部２１３は、タスクＢが受け持つデータ量がたとえば１００ＭＢで、タスクＣが受け持つデータ量がたとえば６０ＭＢであると判断したとする。この場合、システム制御部２１３は、タスクＢのデータ量（１００ＭＢ）については、端末ＩＤ（Ａ００２）のユーザー端末３００の空き容量が８００ＭＢであるため、移動可能と判断する。また、システム制御部２１３は、タスクＣのデータ量（６０ＭＢ）については、端末ＩＤ（Ａ００１、Ａ００２）のユーザー端末３００の空き容量がそれぞれ７０ＭＢ、８００ＭＢであるため、移動可能と判断する。
この場合、タスクＢのデータ（中間データ）とタスクＣのデータ（中間データ）とは、共に移動可能ということになるが、データ（中間データ）の移動に関わる処理時間などを考慮すると、データ量（６０ＭＢ）の少ないタスクＣのデータ（中間データ）を移動させてもよい。また、タスクＣのデータ（中間データ）の移動先は、空き容量がそれぞれ７０ＭＢ、８００ＭＢである端末ＩＤ（Ａ００１）又は、端末ＩＤ（Ａ００２）のどちらかのユーザー端末３００であればよいことになるが、上記同様に、データ（中間データ）の移動に関わる処理時間などを考慮すると、先に応答の有ったユーザー端末３００にタスクＣのデータ（中間データ）を移動させてもよい。
そして、システム制御部２１３は、たとえば端末ＩＤ（Ａ００２）のユーザー端末３００の応答が先である場合、端末ＩＤ（Ａ００２）のユーザー端末３００にたとえばタスクＣのデータ（中間データ）を送る。
【００５６】
（ステップＳ１０９）
システム制御部２１３は、図４（ｂ）に示したように、ＲＡＭ２０６の移動させたタスクＣが受け持つａ４番地〜ａ５番地までのデータ（中間データ）を削除する。これにより、ワーク領域をａ４番地〜ａ５番地までの分だけ開放（増やす）することができる。
【００５７】
（ステップＳ１１０）
画像処理部２０９は、開放されたメモリー領域を使用し、タスクＡの処理を続行する。これにより、タスクＡの処理中でのワーク領域の不足が解消され、メモリー領域不足に起因するデットロックが回避される。
【００５８】
（ステップＳ１１１）
図８のステップＳ１１１においては、システム制御部２１３がＲＡＭ２０６に空き領域が生じたかどうかを判断する。すなわち、システム制御部２１３は、たとえばタスクＡの処理が終了すると、ワーク領域を開放する。このため、システム制御部２１３は、たとえばタスクＡの処理が終了するまで待ち（ステップＳ１１１：Ｎｏ）、たとえばタスクＡの処理が終了し、ワーク領域を開放すると、ＲＡＭ２０６に空き領域が生じたと判断する（ステップＳ１１１：Ｙｅｓ）し、ステップＳ１１２に移行する。
【００５９】
（ステップＳ１１２）
システム制御部２１３は、共有資源管理部２１１が管理する管理テーブル２３０を参照し、データ（中間データ）を移動させた端末ＩＤがＡ００２のユーザー端末３００に、データ（中間データ）の返信要求を送る。
この場合、返信要求には、メモリーアドレスである、ａ４番地〜ａ５番地までのデータ（中間データ）であることを示す情報を含ませる。
これにより、返信要求を受け取ったユーザー端末３００側では、ＲＡＭ３１３に記憶させたメモリーアドレスと、タスクＣのデータ（中間データ）のメモリーアドレス（ａ４番地からａ５番地）とを紐付けて管理しているので、ＲＡＭ３１３に記憶させたタスクＣのデータ（中間データ）を確実に送り返すことができる。
【００６０】
（ステップＳ１１３）
システム制御部２１３は、データ（中間データ）を受け取るまで待ち（ステップＳ１１３：Ｎｏ）、データ（中間データ）を受け取った場合（ステップＳ１１３：Ｙｅｓ）、ステップＳ１１４に移行する。
【００６１】
（ステップＳ１１４）
システム制御部２１３は、データ（中間データ）を受け取ると、共有資源管理部２１１に対し、図６に示した管理テーブル２３０の内容を更新させる。
この場合、共有資源管理部２１１は、管理テーブル２３０の応答の有無の項目２３２、空き容量の項目２３３、移動させたデータ（中間データ）のメモリーアドレスの項目２３４のそれぞれに書き込んだ内容を削除する。
【００６２】
（ステップＳ１１５）
システム制御部２１３は、受け取ったデータ（中間データ）を、メモリー領域に書き込む。この場合、システム制御部２１３は、受け取ったデータ（中間データ）を、ＲＡＭ２６０の元のメモリーアドレスである、ａ４番地〜ａ５番地に書き込み、ステップＳ１０３に移行する。
これにより、画像処理部２０９は、タスクＢ及びタスクＣによる処理を続行することができる。
【００６３】
このように、本実施形態では、ＭＦＰ１００側のシステム制御部２１３（第１のシステム制御部）により、デットロック検出部２１０が画像処理部２０９によるＲＡＭ２０６（第１のメモリー）を使用する際のデットロックを検出した際、共有資源管理部２１１（第１の共有資源管理部）が管理する管理テーブル２３０を参照し、ＲＡＭ２０６（第１のメモリー）に記憶させたデータ（中間データ）の一部をＲＡＭ２０６（第１のメモリー）とユーザー端末３００側（端末側）のＲＡＭ３１３（第２のメモリー）との間で移動させる。これにより、ＲＡＭ２０６（第１のメモリー）に空き領域を増やすことができ、メモリー領域不足に起因するデットロックを確実に回避することができる。
【００６４】
なお、本実施形態では、図１に示したように、メモリー共有システムが、画像形成装置であるＭＦＰ１００、とユーザー端末３００とを備えている場合として説明したが、この例に限らず、図９に示すように、ＭＦＰ１００を管理する管理端末５００を備えてもよい。
【００６５】
この場合、図１０に示すように、管理端末５００は、制御プログラムを実行して管理端末５００全体の動作を制御する制御部５１０を備える。制御部５１０は、社内ＬＡＮネットワークＩ／Ｆ５１１、ネットワーク制御部５１２、ＲＡＭ５１３、ＥＥＰＲＯＭ５１４、共有資源管理部５１５、システム制御部５１６を備える。また、これらは、データバス５１７に接続される。なお、これらの動作は、図２で説明したＭＦＰ１００の制御部２００での各部の動作とほぼ同じであるため、説明を省略する。
【００６６】
すなわち、管理端末５００側に図２に示した共有資源管理部２１１と同等の共有資源管理部５１５（第３の共有資源管理部）を配置することで、システム制御部５１６（第３のシステム制御部）によりＭＦＰ１００を管理するが可能となる。この場合、図２に示した共有資源管理部２１１を省くことができる。また、管理端末５００側に、図２に示したデットロック検出部２１０を配置することも可能である。この場合、管理端末５００側でＭＦＰ１００のデットロックを検出することができ、ＭＦＰ１００側でのデットロック検出に関わる処理を省くことができる。
【００６７】
また、図１に示したように、メモリー共有システムが、画像形成装置であるＭＦＰ１００、とユーザー端末３００とを備えている場合として説明したが、社内ＬＡＮ４００を介してデータの送受信ができる他の端末を備えてもよい。他の端末としては、たとえばスマートホンなどの携帯端末、プリンター、サーバーなどであってもよい。
【符号の説明】
【００６８】
１００  ＭＦＰ
２００、３１０、５１０  制御部
２０１  スキャナー制御部
２０２  プリンター制御部
２０３  ＦＡＸ制御部
２０４、３１１、５１１  社内ＬＡＮネットワークＩ／Ｆ
２０５、３１２、５１２  ネットワーク制御部
２０６、３１３、５１３  ＲＡＭ
２０７、３１４、５１４  ＥＥＰＲＯＭ
２０８  パネル操作制御部
２０９  画像処理部
２１０  デットロック検出部
２１１、３１５、５１５  共有資源管理部
２１２  ＨＤＤ制御部
２１３、３１６、５１６  システム制御部
２１４、３１７、５１７  データバス
２２０  スキャナー部
２２１  プリンター部
２２２  ＦＡＸ部
２２３  パネル部
２２４  ＨＤＤ
２３０  管理テーブル
２３１〜２３４  項目
３００  ユーザー端末
４００  社内ＬＡＮ
５００  管理端末
【図１】
2017079003.tif 000003
【図２】
2017079003.tif 000004
【図３】
2017079003.tif 000005
【図４】
2017079003.tif 000006
【図５】
2017079003.tif 000007
【図６】
2017079003.tif 000008
【図７】
2017079003.tif 000009
【図８】
2017079003.tif 000010
【図９】
2017079003.tif 000011
【図１０】
2017079003.tif 000012