(57)【特許請求の範囲】
【請求項１】
プロセッサと、互いに並列処理が可能な第１プログラム及び第２プログラムが格納される主記憶装置と、補助記憶装置とを備えた情報処理装置において、
前記第１プログラムは、画像形成装置からネットワークを介しデータを受信して格納したことに応答して、前記補助記憶装置にファイルを格納するファイル書込プログラムであり、
前記第２プログラムは、前記ファイルのデータを変数に代入した後、内部のフォルダへ又はネットワークを介して外部コンピュータ内のフォルダへ配信するファイル配信プログラムであり、
前記第１プログラム及び前記第２プログラムは共有ライブラリ上のプログラムであり、いずれも同一クラスインスタンスの互いに異なるメソッドであって、前記共有ライブラリは共通のパブリックフィールドでプロセス間通信を行うことが可能であり、
前記第１プログラムは、前記プロセッサに対し、
（１）書込ファイル名及びファイルバッファサイズを前記パブリックフィールドに設定し、前記書込ファイル名及び前記ファイルバッファサイズを指定して、ファイルを書込状態でオープンさせて前記主記憶装置上に第１ファイルバッファを作成させ、
（２）前記主記憶装置上のデータをブロック単位で前記第１ファイルバッファに書き込ませる操作を行わせる毎に、前記第１ファイルバッファをフラッシュさせるとともに読出可能イベントを発生させ、
前記第２プログラムは、前記プロセッサに対し、
（Ａ）前記パブリックフィールドから前記書込ファイル名及びバッファサイズを取得して、前記バッファサイズのｎ倍のサイズのバッファを指定して、前記ファイルをリード状態でオープンさせて前記主記憶装置上に第２ファイルバッファを作成させ、
（Ｂ）前記読出可能イベントの発生に応答して、所定発生回数毎に、前記ファイルから前記第２ファイルバッファに前記データを読み出させて前記変数に代入する処理を行わせ、前記ファイルがメタデータファイルであれば、配信先をその内容に基づいて決定し、画像ファイルであれば、前記配信先へ前記画像ファイルを送信し、
前記ｎの値は、前記ブロックのサイズに反比例する、ことを特徴とする情報処理装置。
【請求項２】
プロセッサと、互いに並列処理が可能な第１プログラム及び第２プログラムが格納される主記憶装置と、補助記憶装置とを備えた情報処理装置において、
前記第１プログラムは、画像形成装置からネットワークを介しデータを受信して格納したことに応答して、前記補助記憶装置にファイルを格納するファイル書込プログラムであり、
前記第２プログラムは、前記ファイルのデータを変数に代入した後、内部のフォルダへ又はネットワークを介して外部コンピュータ内のフォルダへ配信するファイル配信プログラムであり、
前記第１プログラム及び前記第２プログラムは共有ライブラリ上のプログラムであり、いずれも同一クラスインスタンスの互いに異なるメソッドであって、前記共有ライブラリは共通のパブリックフィールドでプロセス間通信を行うことが可能であり、
前記第１プログラムは、前記プロセッサに対し、
（１）ファイルを書込状態でオープンさせて前記主記憶装置上に第１ファイルバッファを作成させ、
（２）書込ファイル名及びファイルバッファサイズを前記パブリックフィールドに設定し、前記書込ファイル名及び前記ファイルバッファサイズを指定して、前記主記憶装置上のデータをブロック単位で前記第１ファイルバッファに書き込ませる操作を行わせ、前記操作を所定回数行わせる毎に、前記第１ファイルバッファをフラッシュさせるとともに読出可能イベントを発生させ、
前記第２プログラムは、前記プロセッサに対し、
（Ａ）前記パブリックフィールドから前記書込ファイル名及びバッファサイズを取得して、前記バッファサイズのｎ倍のサイズのバッファを指定して、前記ファイルをリード状態でオープンさせて前記主記憶装置上に第２ファイルバッファを作成させ、
（Ｂ）前記読出可能イベントの発生に応答して、前記ファイルから前記第２ファイルバッファに前記データを読み出させて前記変数に代入する処理を行わせ、前記ファイルがメタデータファイルであれば、配信先をその内容に基づいて決定し、画像ファイルであれば、前記配信先へ前記画像ファイルを送信し、
前記ｎの値は、前記ブロックのサイズに反比例する、ことを特徴とする情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、互いに並列処理が可能な２つのプログラムの一方でファイルへの書き込み処理をしながら他方でこのファイルの内容を読み出して処理する情報処理装置に関する。
【背景技術】
【０００２】
例えば、第１のプロセスで受信バッファ上のデータをファイルに書き込んだ後に、第２のプロセスでそのファイルの内容を読み出し変数に代入してこれを送信することが行われる。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００２−２６８９３３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、従来では、第１のプロセスがファイルへの書き込みを完了してファイルをクローズするまで、第２のプロセスはこのファイルの内容の読み出しを開始することができなかったので、特にフルカラー画像ファイルのようにファイルサイズが比較的大きい場合、第２のプロセスでファイル送信処理等が遅延するという問題があった。すなわち、第１のプロセスで受信バッファのデータをファイルに書き込みながら第２のプロセスでこのデータを送信等するという動作を行うことができなかった。この問題は、同一プロセス内でのスレッド間においても同様である。
【０００５】
本発明の目的は、このような問題点に鑑み、第１のプログラムがプロセッサに対しデータをファイルに書き込ませる動作と、第２のプログラムが該プロセッサに対しこのファイルの内容を読み出して処理する動作とを、並列して行うことが可能な情報処理装置を提供することにある。
【課題を解決するための手段】
【０００６】
本発明の第１態様では、プロセッサと、互いに並列処理が可能な第１プログラム及び第２プログラムが格納される主記憶装置と、補助記憶装置とを備えた情報処理装置において、前記第１プログラムは、画像形成装置からネットワークを介しデータを受信して格納したことに応答して、前記補助記憶装置にファイルを格納するファイル書込プログラムであり、前記第２プログラムは、前記ファイルのデータを変数に代入した後、内部のフォルダへ又はネットワークを介して外部コンピュータ内のフォルダへ配信するファイル配信プログラムであり、前記第１プログラム及び前記第２プログラムは共有ライブラリ上のプログラムであり、いずれも同一クラスインスタンスの互いに異なるメソッドであって、前記共有ライブラリは共通のパブリックフィールドでプロセス間通信を行うことが可能であり、前記第１プログラムは、前記プロセッサに対し、（１）書込ファイル名及びファイルバッファサイズを前記パブリックフィールドに設定し、前記書込ファイル名及び前記ファイルバッファサイズを指定して、ファイルを書込状態でオープンさせて前記主記憶装置上に第１ファイルバッファを作成させ、（２）前記主記憶装置上のデータをブロック単位で前記第１ファイルバッファに書き込ませる操作を行わせる毎に、前記第１ファイルバッファをフラッシュさせるとともに読出可能イベントを発生させ、前記第２プログラムは、前記プロセッサに対し、（Ａ）前記パブリックフィールドから前記書込ファイル名及びバッファサイズを取得して、前記バッファサイズのｎ倍のサイズのバッファを指定して、前記ファイルをリード状態でオープンさせて前記主記憶装置上に第２ファイルバッファを作成させ、（Ｂ）前記読出可能イベントの発生に応答して、所定発生回数毎に、前記ファイルから前記第２ファイルバッファに前記データを読み出させて前記変数に代入する処理を行わせ、前記ファイルがメタデータファイルであれば、配信先をその内容に基づいて決定し、画像ファイルであれば、前記配信先へ前記画像ファイルを送信し、前記ｎの値は、前記ブロックのサイズに反比例する。
【０００７】
本発明の第２態様では、プロセッサと、互いに並列処理が可能な第１プログラム及び第２プログラムが格納される主記憶装置と、補助記憶装置とを備えた情報処理装置において、前記第１プログラムは、画像形成装置からネットワークを介しデータを受信して格納したことに応答して、前記補助記憶装置にファイルを格納するファイル書込プログラムであり、前記第２プログラムは、前記ファイルのデータを変数に代入した後、内部のフォルダへ又はネットワークを介して外部コンピュータ内のフォルダへ配信するファイル配信プログラムであり、前記第１プログラム及び前記第２プログラムは共有ライブラリ上のプログラムであり、いずれも同一クラスインスタンスの互いに異なるメソッドであって、前記共有ライブラリは共通のパブリックフィールドでプロセス間通信を行うことが可能であり、前記第１プログラムは、前記プロセッサに対し、（１）ファイルを書込状態でオープンさせて前記主記憶装置上に第１ファイルバッファを作成させ、（２）書込ファイル名及びファイルバッファサイズを前記パブリックフィールドに設定し、前記書込ファイル名及び前記ファイルバッファサイズを指定して、前記主記憶装置上のデータをブロック単位で前記第１ファイルバッファに書き込ませる操作を行わせ、前記操作を所定回数行わせる毎に、前記第１ファイルバッファをフラッシュさせるとともに読出可能イベントを発生させ、前記第２プログラムは、前記プロセッサに対し、（Ａ）前記パブリックフィールドから前記書込ファイル名及びバッファサイズを取得して、前記バッファサイズのｎ倍のサイズのバッファを指定して、前記ファイルをリード状態でオープンさせて前記主記憶装置上に第２ファイルバッファを作成させ、（Ｂ）前記読出可能イベントの発生に応答して、前記ファイルから前記第２ファイルバッファに前記データを読み出させて前記変数に代入する処理を行わせ、前記ファイルがメタデータファイルであれば、配信先をその内容に基づいて決定し、画像ファイルであれば、前記配信先へ前記画像ファイルを送信し、前記ｎの値は、前記ブロックのサイズに反比例する。
【発明の効果】
【００１０】
上記第１態様の構成によれば、一方では、主記憶装置上のデータをブロック単位で第１ファイルバッファに書き込ませる操作を行わせる毎に、該第１ファイルバッファをフラッシュさせるとともに読出可能イベントを発生させ、他方では、該読出可能イベントの発生に応答して、所定発生回数毎に、該ファイルから第２ファイルバッファにデータを読み出させて特定処理を行わせるので、データをファイルに書き込ませる動作と、このファイルの内容を読み出して処理する動作とを、並列して行うことができ、これにより該特定処理が遅延するのを抑制することができ、換言すれば、より安価な構成を採用することが可能になるという効果を奏する。
【００１１】
上記第２態様の構成によれば、上記第１態様よりもオーバヘッドを低減できるという効果を奏する。
【００１２】
また、上記第１及び第２態様の構成によれば、第１プログラム及び第２プログラムが共有ライブラリ上のプログラムで、いずれも同一クラスインスタンスの互いに異なるメソッドであるので、これらプログラム間の通信を高速に行うことができるとともに、主記憶装置上の領域使用の無駄を省くことができるという効果を奏する。
【００１４】
本発明の他の目的、特徴的な構成及び効果は、以下の説明を特許請求の範囲及び図面の記載と関係づけて読むことにより明らかになる。 
【図面の簡単な説明】
【００１５】
【図１】本発明の実施例１に係る画像形成システムの概略構成図である。
【図２】図１中のファイル配信装置のハードウェア構成を示す概略ブロック図である。
【図３】図２の補助記憶装置に格納された２つのアプリケーションプログラムがＯＳにより起動されて構成された仮想メモリ空間及び実メモリ空間を示す概略説明図である。
【図４】ファイル書込プログラムの処理手順を示す概略フローチャートである。
【図５】ファイル配信プログラムの処理手順を示す概略フローチャートである。
【実施例１】
【００１６】
図１は、本発明の実施例１に係る画像形成システムの概略構成図である。
【００１７】
このシステムでは、ファイル配信装置１０と、画像形成装置２０と、ＰＣ（Personal Computer）３０〜３Ｎとが、ネットワーク４０で結合されている。
【００１８】
ユーザは、画像形成装置２０を操作して原稿をスキャンさせ、その画像ファイルを画像形成装置２０内に生成させる。また、画像形成装置２０を操作して、メタデータを入力し、そのファイルを画像形成装置２０内に生成させ、これら画像ファイル及びメタデータファイルを、ネットワーク４０を介してファイル配信装置１０へ送信させる。ファイル配信装置１０は、メタデータファイルの内容に基づき配信先を決定し、この画像ファイルを画像形成装置２０内又はＰＣ３０〜３Ｎのうちの１つ以上のフォルダ内に配信する。
【００１９】
図２は、ファイル配信装置１０のハードウェア構成を示す概略ブロック図である。
【００２０】
このハードウェア構成は、通常のパーソナルコンピュータであり、ＣＰＵ（Central Processing Unit）〜１１がインターフェイス１２を介してＰＲＯＭ（Programmable Read Only Memory）ＰＲＯＭ１３、ＤＲＡＭ（Dynamic Random Access Memory）ＤＲＡＭ１４、補助記憶装置１５及びネットワークインターフェイス１６に結合されている。図１では、簡単化の為に、複数種のインターフェイスを１つのブロック１２で表している。
【００２１】
ＰＲＯＭ１３は、例えばフラッシュメモリであり、ＢＩＯＳ（Basic Input/Output System）が格納されている。ＤＲＡＭ１４は、主記憶装置として用いられる。ネットワークインターフェイス１６には、ファイル配信装置として機能させるためのＯＳ（Operating System）、各種ドライバ及びアプリケーションが格納されている。
【００２２】
図３は、図２の補助記憶装置１５に格納された２つのアプリケーションプログラムがＯＳにより起動されて構成された仮想メモリ空間仮想メモリ空間５０５０５０、５１及び実メモリ空間５２を示す。
【００２３】
仮想メモリ空間仮想メモリ空間５０５０５０のプロセスＡ及び仮想メモリ空間５１のプロセスＢは、共有ライブラリ５３を用いており、実メモリ空間５２上に配置されてプロセスＡ及びプロセスＢで共用される。共有ライブラリ５３は、クラスインスタンス（シングルトン）であり、共通のパブリックフィールドでプロセス間通信を行うことが可能である。
【００２４】
共有ライブラリ５３は例えば、画像形成装置２０からネットワーク４０及びネットワークインターフェイス１６を介しＤＲＡＭ１４上の受信バッファにデータが格納されたことに応答して、図４に示す処理を行い補助記憶装置１５上にファイルを生成するファイル書込プログラムと、これと並列して図５に示す処理を行うことにより、このファイルの内容を変数に代入した後、内部のフォルダへ又はネットワークインターフェイス１６を介して外部コンピュータ内のフォルダへ配信するファイル配信プログラムとを備えている。
【００２５】
図４は、上記ファイル書込プログラムの処理手順を示す概略フローチャートである。以下、括弧内は図中のステップ識別符号である。
【００２６】
（Ｓ０）新規書込ファイルをオープンしているか否かを示すフラグＦがリセットされていればステップＳ１へ進み、そうでなければステップＳ４へ進む。フラグＦは最初、リセットされている。
【００２７】
（Ｓ１）書込ファイル名及びファイルバッファサイズを上記パブリックフィールドに設定する。
【００２８】
（Ｓ２）このファイル名及びバッファサイズを指定して、ＯＳを介し書込ファイルをオープンする。ファイルバッファは、ＯＳの領域内に生成される。
【００２９】
（Ｓ３）フラグＦをセットする。
【００３０】
（Ｓ４）このファイルバッファに、受信バッファ内のデータを１ブロック分、例えば１ページ＝４ｋバイトだけ書き込む。
【００３１】
（Ｓ５）ファイルバッファをフラッシュする。すなわち、ＯＳを介しファイルバッファ内のデータを補助記憶装置１５内のファイルに吐き出して、プロセスＢ側でこのファイルの内容を読出可能にさせる。
【００３２】
（Ｓ６）書込終了（受信終了）でなければステップＳ７へ進み、終了であればステップＳ８へ進む。
【００３３】
（Ｓ７）イベント情報としてのオブジェクトのプロパティeventArgs.EOFに、ｆａｌｓｅ（書込終了でない）を設定し、ステップＳ９へ進む。
【００３４】
（Ｓ８）eventArgs.EOFに、ｔｒｕｅ（書込終了）を設定し、また、フラグＦをリセットする。
【００３５】
（Ｓ９）eventArgsを引数とする、ファイル読出可能であることを通知するイベントを発生させる。
【００３６】
図５は、上記ファイル配信プログラムの処理手順を示す概略フローチャートである。この処理は、上記イベントの発生により開始されるイベントハンドラである。
【００３７】
（Ｓ１０）新規ファイルに対するイベント発生回数を示すカウンタＣＮＴの値が０であればステップＳ１１へ進み、そうでなければステップＳ１３へ進む。カウンタＣＮＴの初期値は０である。
【００３８】
（Ｓ１１）上記パブリックフィールドから、ファイル名及びバッファサイズを取得する。
【００３９】
（Ｓ１２）このサイズのｎ倍のサイズのファイルバッファを指定して、ＯＳを介し読出ファイルをオープンする。このファイルバッファもＯＳの領域内に生成される。ｎの値は、図５の処理でのオーバヘッドを少なくするとともに、１つのファイルに対する最後の回のステップＳ１５での処理遅延が許容範囲内になるように定められ、上記ブロックのサイズに反比例する。
【００４０】
（Ｓ１３）カウンタＣＮＴを１だけインクリメントする。カウンタＣＮＴをｎで除算したときの余りが０であれば、すなわちｎ回イベントが発生する毎に、ステップＳ１５へ進み、そうでなければ図５の処理を終了する。
【００４１】
（Ｓ１５）ファイルの内容を上記バッファを介し読み出して変数ｆに追加する。
【００４２】
（Ｓ１６）eventArgs.EOF=trueであればステップＳ１７へ進み、そうでなければ図５の処理を終了する。
【００４３】
（Ｓ１７）上記読出ファイルをクローズする。
【００４４】
（Ｓ１８）変数ｆに対する特別処理を行う。本実施例１の場合、このファイルがメタデータファイルであれば、上述のように配信先をその内容に基づいて決定し、画像ファイルであれば、この配信先へ画像ファイルを送信する。
【００４５】
本実施例１によれば、一方では、ＤＲＡＭ１４上のバッファデータをブロック単位でファイルファイルバッファに書き込ませる操作を行わせる毎に（Ｓ２）、このファイルバッファをフラッシュさせる（Ｓ３）とともに読出可能イベントを発生させ（Ｓ７）、他方では、この読出可能イベントの発生に応答して、所定発生回数毎に（Ｓ１４）、そのファイルからデータを読み出させて変数に追加代入させる（Ｓ１５）ので、データをファイルに書き込ませる図４の動作と、このファイルの内容を読み出して変数に追加代入する図５の動作とを、並列して行うことができ、これにより後者の動作が遅延するのを抑制することができ、換言すれば、より安価な構成を採用することが可能になるという効果を奏する。
【００４６】
また、図４及び図５の処理が、共有ライブラリ上の同一クラスインスタンスの互いに異なるメソッドを実行することにより行われるので、両処理間の通信を高速に行うことができるとともに、ＤＲＡＭ１４上の領域使用の無駄を省くことができるという効果を奏する。
【００４７】
また、図５のステップＳ１１及びＳ１２の処理が、新たなファイルに関する読出可能イベントの第１回目の発生に応答して開始されるので、これら処理のための特別なイベント処理を行う必要が無く、ソフトウェア構成が簡単になるという効果を奏する。
【００４８】
以上において、本発明の好適な実施例を説明したが、本発明には他にも種々の変形例が含まれ、上記実施例で述べた各構成要素の機能を実現する他の構成を用いたもの、当業者であればこれらの構成又は機能から想到するであろう他の構成も、本発明に含まれる。
【００４９】
例えば、上記実施例１ではファイル書込プログラムとファイル配信プログラムとが共有ライブラリを用いて構成された場合を示したが、共有ライブラリを用いずにプロセス間でイベント及びこれに関連する情報を通知する構成であってもよい。
【００５０】
また、上記プロセス間の並列処理の替わりに、スレッド間のそれに本願発明を適用した場合であってもよい。
【００５１】
また、図４のステップＳ７において、ｎ回に１回のみイベントを発生させ、図５のステップＳ１４を省略してステップＳ１３からステップＳ１５へ進む構成であってもよい。この場合、上記実施例１よりもオーバヘッドを低減できるという効果を奏する。
【００５２】
さらに、図５のステップＳ１５において、変数ｆの内容を処理する構成であったり、プロセスＢにおいてイベントの識別子をキューに入れておき、キューからこの識別子を取り出す毎に図５の処理（これもイベントの発生に応答した処理）を行ってもよい。
【００５３】
また、複数コア型プロセッサの異なるコアで第１のプログラムと第２のプログラムを実行したり、補助記憶装置としてＲＡＩＤ構成のハードディスクドライブを用いたりした構成であってもよい。
【符号の説明】
【００５４】
１０  ファイル配信装置
１１  ＣＰＵ
１２  インターフェイス
１３  ＰＲＯＭ
１４  ＤＲＡＭ
１５  補助記憶装置
１６  ネットワークインターフェイス
２０  画像形成装置
３０  ＰＣ
４０  ネットワーク
５０、５１  仮想メモリ空間
５２  実メモリ空間
５３  共有ライブラリ
ＣＮＴ  カウンタ
【図１】
0005718283.tif 000002
【図２】
0005718283.tif 000003
【図３】
0005718283.tif 000004
【図４】
0005718283.tif 000005
【図５】
0005718283.tif 000006