(57)【要約】【課題】パイプライン方法を適用したプロセス実行環境で、パイプライン実行制御プロセスを必要としない、高信頼なプロセス実行環境を提供する。【解決手段】パイプライン方法によるプロセス間データ引き継ぎのためのパイプライン管理情報に付随するパイプライン状態情報１１７を有する。さらに、プロセス制御部１１１で、プロセスが終了するときにパイプライン状態情報１１７を更新するステップを有する。さらに、プロセス制御部１１１とパイプライン制御部１１２で、パイプライン状態情報１１７をチェックするステップを有する。【選択図】図１
2008097094.tif 000002
【特許請求の範囲】
【請求項１】
一つ以上のプロセスが生成するデータを、他の一つ以上のプロセスが引き継いで処理することにより、処理が行われるコンピュータシステムにおけるデータ引き継ぎ方法であって、
データを生成して書き込むプロセス、および、データを読み出すプロセスを並行に実行し、主記憶または補助記憶装置上に用意したバッファ領域を介し、全てのデータが生成されることを待つことなくデータの受け渡し処理を実行する機能を有するコンピュータシステムにおいて、
前記バッファ領域を管理するための管理情報に、データを生成して書き込む前記プロセスおよびデータを読み出す前記プロセスを異常終了させるかどうかを判定する情報を持ち、
データを生成して書き込む前記プロセスおよびデータを読み出す前記プロセスが異常状態で終了するときに、前記異常終了させるかどうかを判定する情報を更新する第１のステップを有することを特徴とするデータ引き継ぎ方法。
【請求項２】
請求項１記載のデータ引き継ぎ方法において、
前記異常終了させるかどうかを判定する情報は、データを生成して書き込む前記プロセスおよびデータを読み出す前記プロセスのうち、いずれかのプロセスの終了状態の情報であることを特徴とするデータ引き継ぎ方法。
【請求項３】
請求項２記載のデータ引き継ぎ方法において、
前記異常終了させるかどうかを判定する情報は、データを生成して書き込む前記プロセスおよびデータを読み出す前記プロセスのうち、いずれかのデータを生成して書き込む前記プロセスの終了状態の情報であることを特徴とするデータ引き継ぎ方法。
【請求項４】
請求項１記載のデータ引き継ぎ方法において、
前記異常終了させるかどうかを判定する情報は、データを生成して書き込む前記プロセスの総書き込み量と、データを読み出す前記プロセスの総読み出し量とであることを特徴とするデータ引き継ぎ方法。
【請求項５】
請求項１記載のデータ引き継ぎ方法において、
データを生成して書き込む前記プロセスがデータを書き込むとき、または、データを読み出す前記プロセスがデータを読み出すときに、前記異常終了させるかどうかを判定する情報を確認する第２のステップと、
前記異常終了させるかどうかを判定する情報が異常終了を示すときに、プロセスを異常終了させる第３のステップと、を有することを特徴とするデータ引き継ぎ方法。
【請求項６】
請求項１記載のデータ引き継ぎ方法において、
データを生成して書き込む前記プロセスおよびデータを読み出す前記プロセスのそれぞれが終了するときに、前記異常終了させるかどうかを判定する情報を確認する第４のステップと、
前記異常終了させるかどうかを判定する情報が異常終了を示すときに、プロセスを異常終了させる第５のステップと、を有することを特徴とするデータ引き継ぎ方法。
【請求項７】
請求項５記載のデータ引き継ぎ方法において、
データを生成して書き込む前記プロセスおよびデータを読み出す前記プロセスのそれぞれが終了するときに、前記異常終了させるかどうかを判定する情報を確認する第６のステップを有することを特徴とするデータ引き継ぎ方法。
【請求項８】
請求項６記載のデータ引き継ぎ方法において、
データを生成して書き込む前記プロセスおよびデータを読み出す前記プロセスのそれぞれが終了するときに、前記異常終了させるかどうかを判定する情報を確認する第６のステップを有することを特徴とするデータ引き継ぎ方法。
【請求項９】
請求項１記載のデータ引き継ぎ方法において、
前記コンピュータシステムは、前記異常終了させるかどうかを判定する情報を設定するためのプログラムインタフェースを有することを特徴とするデータ引き継ぎ方法。
【請求項１０】
請求項９記載のデータ引き継ぎ方法において、
データを生成して書き込む前記プロセスがデータを書き込むとき、または、データを読み出す前記プロセスがデータを読み出すときに、前記異常終了させるかどうかを判定する情報を確認する第７のステップと、
前記異常終了させるかどうかを判定する情報が異常終了を示すときに、プロセスを異常終了させる第８のステップと、を有することを特徴とするデータ引き継ぎ方法。
【請求項１１】
請求項９記載のデータ引き継ぎ方法において、
データを生成して書き込む前記プロセスおよびデータを読み出す前記プロセスのそれぞれが終了するときに、前記異常終了させるかどうかを判定する情報を確認する第９のステップと、
前記異常終了させるかどうかを判定する情報が異常終了を示すときに、プロセスを異常終了させる第１０のステップと、を有することを特徴とするデータ引き継ぎ方法。
【請求項１２】
請求項１０記載のデータ引き継ぎ方法において、
データを生成して書き込む前記プロセスおよびデータを読み出す前記プロセスのそれぞれが終了するときに、前記異常終了させるかどうかを判定する情報を確認する第１１のステップを有することを特徴とするデータ引き継ぎ方法。
【請求項１３】
請求項１１記載のデータ引き継ぎ方法において、
データを生成して書き込む前記プロセスおよびデータを読み出す前記プロセスのそれぞれが終了するときに、前記異常終了させるかどうかを判定する情報を確認する第１１のステップを有することを特徴とするデータ引き継ぎ方法。
【請求項１４】
一つ以上のプロセスが生成するデータを、他の一つ以上のプロセスが引き継いで処理することにより、処理が行われるコンピュータシステムにおけるデータ引き継ぎ方法であって、
データを生成して書き込むプロセス、および、データを読み出すプロセスを並行に実行し、主記憶または補助記憶装置上に用意したバッファ領域を介し、全てのデータが生成されることを待つことなくデータの受け渡し処理を実行する機能を有するコンピュータシステムにおいて、
前記バッファ領域を管理するための管理情報に、データを生成して書き込む前記プロセスおよびデータを読み出す前記プロセスの状態を持ち、
前記バッファ領域を管理するための管理情報に保持されている、データを生成して書き込む前記プロセスおよびデータを読み出す前記プロセスの前記状態を見て、規定の条件を満たしたときに規定の処理を行うことを特徴とするデータ引き継ぎ方法。
【請求項１５】
請求項１４記載のデータ引き継ぎ方法において、
前記規定の処理は、データを生成して書き込む前記プロセスおよびデータを読み出す前記プロセスを異常終了することであることを特徴とするデータ引き継ぎ方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータにおけるプロセス間のデータ引き継ぎ方法に関し、特に、データ引き継ぎを行うプロセスのいずれかに異常が発生した場合の対応方法およびプログラムに関する。
【背景技術】
【０００２】
本発明者が検討した技術として、コンピュータにおけるプロセス間のデータ引き継ぎ方法においては、以下の技術が考えられる。
【０００３】
コンピュータシステムにおけるバッチ処理等は、複数のジョブあるいはプロセスが、それぞれ他のジョブあるいはプロセスの処理の結果として出力したデータを引き継いで処理を進めることにより実現される。簡単のため、以降、データ引き継ぎ処理において、データを生成するプロセスを先行プロセス（または書き込みプロセス）、引き継ぎデータを受け取る側のプロセスを後続プロセス（または読み出しプロセス）と呼ぶ。
【０００４】
従来、このような処理においては、プロセス間のデータ引き継ぎは、磁気ディスク装置などの二次記憶装置を介して行われていた。すなわち、先行プロセスは、処理の実行結果を二次記憶装置に出力する。その実行結果のデータを使用する後続プロセスは、先行するプロセスの処理が終了してから、二次記憶装置よりデータを入力して、処理を行う。つまり、このときのプロセス間のデータの受け渡しは、外部の二次記憶装置を介してファイル単位で行われ、先行プロセスと、その処理結果を使用する後続プロセスは、逐次的に実行されていた。
【０００５】
このような従来技術に対して、例えば特許文献１には、データの引き継ぎを行う複数のプロセスを並行して実行することにより、トータルの処理時間を短縮することができるデータ引き継ぎ方法が開示されている。すなわち、この技術では、プロセス間でデータを受け渡す際、データの引き継ぎを、二次記憶装置を介さずに主記憶内に用意したバッファを介して行う。二次記憶装置と比較してデータを高速に転送できる主記憶や補助記憶を利用することにより、引き継ぎ処理時間の短縮を図っている。さらに、この技術では、ファイル単位のデータ引き継ぎではなく、ファイルを構成する要素であるレコード単位でのデータ引き継ぎを保障する。すなわち、先行プロセスが一つのレコードを生成した後、後続プロセスより当該レコードに対する読み出し要求が行われたとき、当該レコードを後続プロセスに転送し、引き続き、以降のレコードも同様にプロセス間で受け渡していく。これにより、データが全て生成されるまで後続プロセスの処理開始が待たされることを防止し、データ引き継ぎを行う全てのプロセスを同時に実行できるため、トータルの引き継ぎ処理全体の処理時間を短縮することが可能となる。
【０００６】
ＵＮＩＸ（登録商標）およびそれに類するオペレーティングシステム（ＯＳ）では、この発明と同様の機能として、パイプ機能が用意されている。パイプ機能については、例えば非特許文献１に詳しい説明が記載されている。パイプは、主に、パイプを管理するための管理構造体と、その構成要素からポイントされるパイプバッファから構成される。先行する書き込みプロセスと後続の読み出しプロセスは、パイプバッファを介してデータを引き継ぐことができる。なお、通常、ＵＮＩＸ（登録商標）のファイルシステムでは、ファイルは構造を持たないバイトストリームとして扱われ、プログラムではレコードを意識する必要がない。ＵＮＩＸ（登録商標）におけるパイプの読み書きは、ファイルの読み出しおよび書き込みインタフェースを利用しており、レコードを意識しない。ＵＮＩＸ（登録商標）のパイプ機能と特許文献１の違いは、レコードの概念の有無である。その点を除けば、主記憶上にバッファを確保し、そのバッファを介して先行プロセスと後続プロセスが同期してデータの引き継ぎを行うという点で両者は同様の技術とみなすことができる。このような技術を、以下、パイプライン方法と呼ぶ。
【０００７】
パイプ機能を利用したプロセス間データ引き継ぎでは、互いに通信するプロセスが同じパイプを共有して、データ引き継ぎを行う必要がある。しかし、通常のパイプには、プロセスが既に存在するパイプをオープンする方法がない。複数のプロセスで同じパイプを共有することは、それらのプロセスに共通の先祖のプロセスが、そのパイプを作成した場合を除いて不可能である。この共通の先祖のプロセスがパイプを作成したときのみ、プロセス間でのパイプの共有が可能という制限は、多くのアプリケーションプログラムにとって、問題となる場合がある。
【０００８】
この問題に対処するために、ＵＮＩＸ（登録商標）およびそれに類するＯＳでは、名前付きパイプ、または、ＦＩＦＯ（Ｆｉｒｓｔ  Ｉｎ  Ｆｉｒｓｔ  Ｏｕｔ）と呼ばれる特殊ファイル型を導入している。名前付きパイプは、名前付きパイプを使用しようとするプロセスから見ると、ファイルシステム上の通常ファイルと同様に見える。これにより、互いに通信しようとする複数のプロセスは、通常ファイルと同様に名前付きパイプを指定してオープンすることにより、名前付きパイプを共有することを可能にしている。通常のパイプと名前付きパイプは、ＯＳの内部処理的にはほとんど同じ性質であり、同じ管理構造体を使って管理される。以降、単にパイプまたはパイプラインと呼ぶときは、通常のパイプと名前付きパイプを総称するものとする。
【０００９】
パイプライン方法を適用する場合、適用中のいずれかのプロセスが異常終了した際の対応が問題となる。比較のため、パイプライン方法を適用せず、二次記憶装置に用意したファイルを介してデータの引き継ぎを行う場合を考える。このとき、後続プロセスは、全てのデータが生成されるまでは実行されない。すなわち、先行プロセスの終了を待ってから、後続プロセスが実行される。このため、先行プロセスが異常終了した場合は、後続プロセスを実行せず、先行プロセスを再実行するなどの制御が可能になる。
【００１０】
これに対して、パイプライン方法を適用した場合、先行の書き込みプロセスと後続の読み出しプロセスは、並行に実行される。先行プロセスが異常終了した場合、引き継いだデータの正当性が不明であるため、後続プロセスも異常終了する必要がある。特許文献２には、プロセスの実行状況を監視し、いずれかのプロセスがデータ引き継ぎ処理中に異常終了した場合には、他の全てのプロセスを異常終了させるとの記載がある。特許文献３には、パイプライン方法によるデータ引き継ぎ処理中のいずれかのプロセスが異常終了した場合の処理として、異常処理を局所化し、異常回復に要する利用者の手間を軽減する対応方法が開示されている。
【００１１】
一方、ＵＮＩＸ（登録商標）およびそれに類するＯＳのパイプ機能では、非特許文献１などで開示されているように、読み出しプロセスが異常終了した場合に書き込みプロセスがそれを検知できる。すなわち、書き込みプロセスからの書き込み要求を受けてＯＳが書き込み処理を実行する際、パイプの管理構造体で管理する読み出しプロセスの数を検査し、それが０であった場合、書き込みプロセスに対してＳＩＧＰＩＰＥシグナルを送り、書き込み要求に対してエラーを返す。これを受けた書き込みプロセスはエラー終了する。
【特許文献１】特開平３‐４６０３３号公報
【特許文献２】特開平７‐２６２０２４号公報
【特許文献３】特開平９‐１４６７８２号公報
【非特許文献１】ダニエル・ピー・ボベット（Ｄａｎｉｅｌ  Ｐ．  Ｂｏｖｅｔ）、マルコ・セサティ（Ｍａｒｃｏ  Ｃｅｓａｔｉ）著、高橋浩和監訳「詳解Ｌｉｎｕｘカーネル」、第２版、２００３年
【発明の開示】
【発明が解決しようとする課題】
【００１２】
ところで、前記のようなコンピュータにおけるプロセス間のデータ引き継ぎの技術について、本発明者が検討した結果、以下のようなことが明らかとなった。
【００１３】
例えば、上述したように、パイプライン方法の適用には、相互に通信を行っているプロセスの終了状態を監視して、一方のプロセスが異常終了した場合、他方のプロセスを異常終了させる必要がある。
【００１４】
従って、まず、プロセスの実行を監視して、異常状態の判定を行う仕組みが不可欠である。次に、いずれかのプロセスが異常終了した場合に、パイプライン利用中の他のプロセスを異常終了させる仕組みが必要である。
【００１５】
このため、特許文献３には、プロセスの実行監視部が一定の間隔ごとにデータ引き継ぎ処理中の各プロセスの実行状態を監視し、正常実行中であるか、異常終了したかを認識することが開示されている。認識の方法は、任意のプロセスに対して発行した命令が正常に動作しないこと、もしくは、当該プロセスから異常を示す応答が返されることによる。さらに、異常終了したときに、異常対応制御部を呼び出すことが開示されている。読み出された異常対応制御部では、発生した異常に対して、とるべき対応を決め、それに応じた処理を行うことが開示されている。その処理には、異常終了させることも含まれる。
【００１６】
すなわち、この方法では、プロセスの実行状況を監視し、かつ、パイプライン方法を利用してデータ引き継ぎを行う複数のプロセスの関係を管理し、かつ、監視していたプロセスが異常終了した場合に関係する他のプロセスにそれを通知することを実現する、プロセスおよびパイプライン管理のためのプロセスが必要である。以降、簡単のため、このパイプライン方法利用プロセスを管理するためのプロセスをパイプライン実行制御プロセスと呼ぶことにする。
【００１７】
また、ＵＮＩＸ（登録商標）およびそれに類するＯＳのパイプ機能では、前述の通り、読み出しプロセスが異常終了した場合に書き込みプロセスがそれを検知できる。しかし、書き込みプロセスが異常終了した場合に、読み出しプロセスが異常終了することができない。読み出しプロセスからの読み出し要求を受けて、ＯＳが読み出し処理を実行する際、書き込みプロセスの数が０であり、かつ、パイプバッファに未読み出しのデータがない場合は、書き込みプロセスが書き込みを終えて終了したと判断するためである。このとき、書き込みプロセスが異常終了している可能性があるが、パイプ機能ではそれを判断することができない。
【００１８】
このようなケースで書き込みプロセスの終了状態（正常または異常）を判断するためには、ＵＮＩＸ（登録商標）およびそれに類するＯＳではプロセスの親子関係を使う方法が考えられる。親プロセスは、互いに通信する複数の子プロセスを生成し、その終了を待つ。親プロセスは、子プロセスの終了時に終了状態を取得できるため、互いに通信しあっていた子プロセスのいずれかが異常終了した場合、その通信相手の子プロセスを異常終了させればよい。
【００１９】
ただし、この方法でも親プロセスは、どの子プロセスがどの子プロセスと通信するかを管理する必要がある。つまり、この親プロセスも、前述のパイプライン実行制御プロセスと同様に、プロセスの監視、パイプライン利用プロセスの関係の管理、プロセスへの異常状態の通知を行う機能が必要である。
【００２０】
つまり、従来、パイプライン方法を適用するプロセス実行環境を高信頼にするためには、パイプライン実行制御プロセスの機能を実現する必要があり、その機能がない場合は、新たにその機能を実装する必要があった。
【００２１】
また、その環境で実行するプロセスは、パイプライン実行制御プロセスの仕様に従い、実行される必要があり、その仕様からはずれて実行されるプロセスでは、パイプライン方法を適用する高信頼なプロセス実行環境を享受することができなかった。
【００２２】
そこで、本発明の目的は、このような問題点を改善し、パイプライン方法を適用したプロセス実行環境で、パイプライン実行制御プロセスを必要としない、高信頼なプロセス実行環境を提供することにある。
【００２３】
本発明の前記並びにその他の目的と新規な特徴は、本明細書の記述及び添付図面から明らかになるであろう。
【課題を解決するための手段】
【００２４】
本願において開示される発明のうち、代表的なものの概要を簡単に説明すれば、次のとおりである。
【００２５】
上述した課題を解決するために、本発明では、パイプライン方法によるプロセス間データ引き継ぎのためのパイプライン管理情報に付随するパイプライン状態情報を有することを特徴とする。さらに、プロセス制御部で、プロセスが終了するときにパイプライン状態情報を更新するステップを有することを特徴とする。さらに、プロセス制御部とパイプライン制御部で、パイプライン状態情報をチェックするステップを有することを特徴とする。
【００２６】
また、本発明では、パイプライン状態情報を設定するアプリケーションプログラムインタフェース（ＡＰＩ）を提供することを特徴とする。さらにそのＡＰＩを使って指定された値に基づいて、パイプライン状態情報に値を設定するステップを有することを特徴とする。
【００２７】
また、本発明では、パイプライン制御部で、パイプライン状態情報に複数のプロセスの状態を保持できるようにするステップを有することを特徴とする。さらにプロセス制御部で、プロセスの状態が更新されるたびに、パイプライン状態情報を更新するステップを有することを特徴とする。
【発明の効果】
【００２８】
本願において開示される発明のうち、代表的なものによって得られる効果を簡単に説明すれば、以下のとおりである。
【００２９】
（１）パイプライン方法を利用するプロセス実行環境において、特別なパイプライン実行制御プロセスを必要とすることなく、パイプライン方法を利用したデータ引き継ぎを行う複数のプロセスのうち、少なくとも一つが異常な状態で終了した場合に、他のプロセスも異常終了させることができるコンピュータシステムを実現できる。
【００３０】
（２）パイプライン方法を利用するプロセス実行環境において、特別なパイプライン実行制御プロセスを必要とすることなく、パイプライン方法を利用したデータ引き継ぎを行う複数のプロセスのうち、少なくとも一つのプロセスの実行状態が異常であった場合に、それを検知して、全てのプロセスを終了させることができるコンピュータシステムを実現できる。
【発明を実施するための最良の形態】
【００３１】
以下、本発明の実施の形態を図面に基づいて詳細に説明する。なお、実施の形態を説明するための全図において、同一部材には原則として同一の符号を付し、その繰り返しの説明は省略する。
【００３２】
（実施の形態１）
以下、本発明に係る高信頼なパイプライン方法の実施の形態１を図面に示し、さらに詳細に説明する。
【００３３】
図１は、本発明の実施の形態１による高信頼なパイプライン方法を実行するファイルシステムの概略構成図を示している。
【００３４】
コンピュータ１０１では、オペレーティングシステムやミドルウェアなどのシステム制御ソフトウェア１０２が動作している。また、システム制御ソフトウェア１０２が提供するプロセス実行環境において、複数のプロセスが動作する。ここでのプロセスは、パイプライン方法によるプロセス間のデータ引き継ぎを行うプロセスを対象とする。プロセス間のデータ引き継ぎを行うプロセスには、実行に伴って生成されるデータを書き込む、書き込みプロセス１０３（先行プロセス）と、書き込みプロセスが書き込んだデータを読み出す、読み出しプロセス１０４（後続プロセス）がある。書き込みプロセス１０３と読み出しプロセス１０４は、それぞれ、パイプライン方法により、書き込むデータを保持するバッファ１０５と、読み出すデータを保持するバッファ１０６を有する。なお、本実施の形態、および、他の実施の形態で、書き込みプロセスを複数、読み出しプロセスを一つとして図示しているが、本実施の形態および他の実施の形態がこの形に限定されるものではない。パイプライン方法毎に決まるセマンティクスに従う形で読み出しおよび書き込みが可能であれば、書き込みプロセスが一つであったり、読み出しプロセスが複数あったりすることは、発明とは関係ない。
【００３５】
システム制御ソフトウェア１０２は、プロセス実行を制御するためのプロセス制御部１１１と、パイプライン方法を用いたプロセス間のデータ引き継ぎを実行するためのパイプライン制御部１１２を有する。なお、本実施の形態、および、他の実施の形態で、プロセス制御部１１１とパイプライン制御部１１２が、いずれも同じシステム制御ソフトウェア１０２の中に含まれるように図示しているが、本実施の形態および他の実施の形態がこの形に限定されるものではない。プロセス制御部１１１とパイプライン制御部１１２がソフトウェア階層的に別の階層に存在してもかまわない。
【００３６】
本実施の形態では、プロセス制御部１１１に、パイプライン状態情報更新機構１２３と、パイプライン状態情報チェック機構１２４を、パイプライン制御部１１２に、パイプライン管理情報１１６からポイントされるパイプライン状態情報１１７と、パイプライン状態情報チェック機構１２４を追加することにより、パイプライン方法を用いたデータ引き継ぎを行うプロセス間で、一方のプロセスが異常終了した場合に、他方のプロセスも異常終了させるプロセスの実行環境を提供する。
【００３７】
基本的なプロセス制御部１１１の動作は、非特許文献１などに記された公知の技術である。そのため、ここでは基本的な動作を簡単に記すのみにとどめる。図示していないが、プロセス制御部１１１では、プロセスの生成・実行・消滅を管理する。
【００３８】
プロセスの生成では、生成するプロセスの情報を管理する情報（「プロセスの管理情報」と記載）を作成し、プロセスの実行優先度の決定や、資源（記憶領域など）の割り当てなどを行う。プロセスの実行では、プロセスの状態を基本的に「実行状態」、「実行可能状態」、「待機状態」の三つに分けて管理する。プロセスの状態変化については、後の実施の形態３の説明で詳述する。プロセスの消滅では、使用中の資源を解放し、消滅させる。
【００３９】
基本的なパイプライン制御部１１２の動作は、特許文献１や非特許文献１などに記された公知の技術である。そのため、ここでは、基本的な動作のみを簡単に記すのみにとどめる。図示していないが、パイプライン制御部１１２は、パイプラインのオープンまたは作成、クローズまたは削除、読み出し、書き込みを管理する。作成するパイプラインの種類（通常のパイプ、または、名前付きパイプ）や、読み出し／書き込みのモードの違い（ブロッキング、ノンブロッキング）により、細かい点で動作は異なるが、パイプラインのオープンまたは作成処理では、パイプライン管理情報１１６と、パイプラインバッファ１１５を割り当てる。パイプラインのクローズまたは削除処理では、最後にパイプラインを参照するプロセスからの参照がなくなる時点で、パイプライン管理情報１１６と、パイプラインバッファ１１５を削除または無効化する。パイプラインが作成されると、データ引き継ぎを行う複数のプロセスは、各々のプロセスの管理情報から、使用するパイプライン管理情報に対する参照が可能な状態になっている。
【００４０】
このときの参照の詳細例を図１６に示す。なお、ＵＮＩＸ（登録商標）およびそれに類するＯＳでは、ファイルの管理に、共通ファイルモデルが導入されている。さまざまな種類の物理的なファイルシステムを統一的な操作で扱うため、システム制御ソフトウェア内部で物理構造を共通ファイルモデルに変換してオブジェクト指向の管理が行われる。例えば、本発明のパイプライン方法でフォーカスしている通常のパイプや名前付きパイプも、特殊なファイルシステム上のファイル、または、特殊なファイルとみなして、共通ファイルモデルで統一的に扱えるようになっている。
【００４１】
図１６では、共通ファイルモデルに基づく関係を示している。まず、プロセス管理情報１６１０は、プロセスを管理するための構造体であり、プロセス状態１６１１や、プロセス毎のファイル管理情報へのポインタ１６１２を要素として持つ。プロセスのオープンファイル管理情報１６２０は、プロセス毎に現在オープンしているファイルを示すために使用される。その要素の一つには、ファイル記述子表へのポインタ１６２１がある。
【００４２】
ファイル記述子表１６３０は、システムのオープンファイル管理情報１６４０へのポインタの配列である。配列のインデックス（０、１、２、…）は、プロセスがファイルを識別するために使用するファイル記述子と一致する。なお、配列の先頭要素（インデックスが０）は標準入力、二番目の要素（インデックスが１）は標準出力、三番目の要素（インデックスが２）は標準エラー出力に対応する。
【００４３】
システムのオープンファイル管理情報１６４０は、プロセスとプロセスによってオープンされたファイルが、どのようなやり取りを行うかを管理する。例えば、フラグ１６４１は、オープン時に指定されたフラグを示す。このフラグでは、読み出しのみ、書き込みのみ、読み書き両用などのモードを保持する。現在のファイルオフセット１６４２は、使用中のファイルのファイル内における現在の読み書き位置を表す。また、ディレクトリエントリへのポインタ１６４３を要素として持つ。
【００４４】
ディレクトリエントリ１６５０は、ファイルシステムにおけるディレクトリ上のエントリと、対応するファイルとのリンクについての情報を管理する。その要素としては、ファイルを示すｉノードへのポインタ１６５１を持つ。
【００４５】
ｉノード１６６０は、ファイルの実体である。より正確に言うと、ファイルを管理するためのメタデータである。共通ファイルモデルに沿って管理されるパイプラインの管理も、このｉノードを利用している。通常のファイルと共通に扱える管理情報はｉノードの共通部分を利用し、パイプラインに特化する管理情報はパイプライン管理情報１６６１を利用する。
【００４６】
なお、図１６に示したプロセス管理情報１６１０とパイプライン管理情報１６６１の参照の関係は、論理的な構造であり、物理的な構造がこの通りである必要はない。また、図１６はＵＮＩＸ（登録商標）およびそれに類するＯＳでの例を示しているが、本発明をＯＳでの実施に限定するものではない。
【００４７】
図２は、パイプライン管理情報１１６の構成例を示す図である。
【００４８】
パイプライン管理情報１１６は、パイプラインのウェイトキュー２０１、パイプラインバッファへのポインタ２０２、まだ読まれていないデータ量２０３、パイプラインバッファへの読み出し位置２０４、読み出しプロセス数２０５、書き込みプロセス数２０６などを要素として持つ。本実施の形態ではパイプライン管理情報１１６にパイプライン状態情報１１７を持つことが特徴である。なお、当然ながら、パイプライン状態情報１１７は、図２のようにパイプライン管理情報１１６の要素の一つとしなくても、図１のようにパイプライン管理情報１１６からポイントする形にしてもよい。
【００４９】
図３は、パイプライン状態情報１１７の構成例を示す図である。パイプライン方法を利用してデータ転送を行うプロセスが異常終了したか否かを示す、プロセス終了情報３０１を例として用いている。プロセス終了情報３０１としては、例えば、プロセスの終了コードや、異常終了を示すフラグなどでよい。また、ＵＮＩＸ（登録商標）およびそれに類するＯＳを前提とすれば、前述のように読み出しプロセスが異常終了したときには、書き込みプロセスにそれが通知されるため、プロセス終了情報３０１としては、書き込みプロセスの異常終了情報のみを対象としてもよい。
【００５０】
図４は、パイプライン状態情報更新機構１２３の動作を示すフローチャートである。なお、本実施の形態では、プロセス制御部１１１において、プロセスの終了に伴う処理として、オープンしているパイプラインをクローズに行く処理を想定している。図示していないが、本処理は、プロセス制御部１１１におけるプロセスの終了処理で、実行される。
【００５１】
まず、ステップＳ４０１で、終了しようとしているプロセスがパイプラインを使用中かどうかについて判定する。これは、書き込みプロセスの管理情報１１３または読み出しプロセスの管理情報１１４からたどれるパイプライン管理情報１１６を参照することにより可能である。より正確に述べると、図示していないが、使用中のファイルに対して、図１６におけるｉノードの要素を調べる。なお、それ以外にも、図１６で例示した各種情報のいずれかに、パイプラインを使用中であることがわかる情報を付加してもよい。
【００５２】
図４に戻り、パイプラインを使用していない場合は、そのまま終了する。パイプラインを使用している場合は、ステップＳ４０２で、正常終了か否かを判定する。この判定には、プロセスの終了に伴い、書き込みプロセスの管理情報１１３または読み出しプロセスの管理情報１１４にセットする終了コード（図示していない）の値を見て判断しても良いし、他の手段により通知しても良い。
【００５３】
正常終了の場合は、そのまま終了する。異常終了の場合は、ステップＳ４０３でパイプライン状態情報１１７のプロセス終了情報３０１の値を、プロセスの終了コードなどの異常終了を示す値に更新する。異常終了を示す値としては、何らかのフラグをセットするだけでも良い。
【００５４】
図５は、パイプライン状態情報チェック機構１２４の動作を示すフローチャートである。図示していないが、本処理は、プロセス制御部１１１におけるプロセスの終了処理と、パイプライン制御部１１２における読み出しまたは書き込み処理と、パイプライン制御部１１２におけるクローズまたは削除処理で、実行される。
【００５５】
まず、ステップＳ５０１で、パイプラインを使用中かどうかについて判定する。この判定は図４の説明で述べた方法と同様にすればよい。
【００５６】
パイプラインを使用していない場合は、そのまま終了する。パイプラインを使用している場合は、ステップＳ５０２で、パイプライン状態情報１１７に異常があるか否かを判定する。判定は、図４の説明で述べた異常終了を示す値か否かにより行う。
【００５７】
異常がない場合はそのまま終了する。異常がある場合は、ステップＳ５０３で、エラーを返す、または、異常発生を通知する。この後は図示しないが、例えば、読み出しまたは書き込み処理でエラーが返ると、プロセス制御部１１１において、読み出しまたは書き込み要求を行ったプロセスに対して、シグナルが送られ、強制終了させることができる。
【００５８】
本実施の形態１によれば、パイプライン方法を利用したデータ引き継ぎを行う複数のプロセスで、一つのプロセスが異常終了した場合に、他のプロセスも異常終了することが可能となる。これにより、より高信頼なパイプライン方法の実行環境を提供することができる。また、明示的なプロセス実行監視部を別途用意しなくても、より高信頼なパイプライン方法の実行環境を提供することができる。
【００５９】
本実施の形態１では、パイプライン状態情報１１７として、プロセス終了情報３０１を用いる方法を示したが、それ以外の情報を利用することも考えられる。例えば、図６には、図３で例示したプロセス終了情報３０１に、総書き込みデータ量６０１と、総読み出しデータ量６０２を付加する形のパイプライン状態情報１１７の例を示している。この付加情報はパイプラインに対する読み出しまたは書き込みが実施されるたびに更新する。従って、特に図示しないが、この情報の更新は、図３および図４で説明したプロセス制御部１１１ではなく、パイプライン制御部１１２で実行される。
【００６０】
この付加情報により、データ引き継ぎを行った全プロセスがパイプラインの使用を終えて、最後にパイプラインのクローズまたは削除処理をするときに（パイプライン管理情報１１６が解放されるときに）、図５のステップＳ５０２における異常発生の有無の判定において、データの読み出し量および書き込み量に不整合があった場合に異常として検知することができる。なお、書き込みデータ量と読み出しデータ量の不整合の判定に使う情報としては、図２で説明したパイプライン管理情報１１６のまだ読み出されていないデータ量２０３を利用してもよい。
【００６１】
本実施例の説明の最後に示した、パイプライン方法における書き込みデータ量と読み出しデータ量の不整合の検知は、原理上、最後にパイプラインをクローズするプロセスに対してのみ、異常を通知できる。しかし、図３から図５で例示した方法と併用することで、より高信頼なパイプライン方法の実行環境を提供することができる。
【００６２】
（実施の形態２）
以下、本発明に係る高信頼なパイプライン方法の実施の形態２を図面に示し、さらに詳細に説明する。
【００６３】
図７は、本発明の実施の形態２による高信頼なパイプライン方法を実行するファイルシステムの概略構成図を示している。前記実施の形態１の図１との違いは、プロセス制御部１１１のパイプライン状態情報更新機構１２３の代わりに、パイプライン制御部１１２にパイプライン状態情報設定機構７０１があることである。
【００６４】
前記実施の形態１では、プロセスの終了処理に伴い、プロセスの終了状態をパイプライン状態情報１１７に反映していた。いわば、プロセスの終了に伴い、暗黙的にパイプラインがクローズされる処理の延長で、パイプライン状態情報１１７を更新していた。これに対して本実施の形態２では、パイプライン状態情報１１７を設定するインタフェースをプロセスに対して提供し、プロセスが明示的に設定できるようにしたことがもっとも異なる点である。
【００６５】
図８は、本実施の形態２における、パイプライン状態情報１１７の構成例を示す図である。ここでは、パイプライン状態情報１１７として、当該パイプラインを利用する他のプロセスへの通知情報（パイプライン利用プロセスへの通知情報８０１）を用いている。パイプライン利用プロセスへの通知情報８０１としては、例えば、プロセスの終了コードを元にしたフラグや、直前の関数の返り値などでよい。
【００６６】
図９は、パイプライン状態情報設定機構７０１の動作を示すフローチャートである。本実施の形態では、前述の通り、パイプライン状態情報１１７を設定するインタフェースをプロセスに対して提供し、プロセスが明示的にパイプライン状態情報１１７を設定する要求を出す処理を想定している。図示していないが、本要求を受けたとき、パイプライン制御部１１２が実行する。
【００６７】
まず、ステップＳ９０１で、設定しようとしている対象がパイプラインかどうかを判定する。これは、前記実施の形態１の説明で示した、書き込みプロセスの管理情報１１３または読み出しプロセスの管理情報１１４からたどれるパイプライン状態情報１１７を参照することにより可能である。
【００６８】
パイプラインでない場合は、そのまま終了する。パイプラインである場合は、ステップＳ９０２でパイプライン状態情報１１７のパイプライン利用プロセスへの通知情報８０１の値を、プロセスに提供したインタフェースで指定された値に基づき設定する。
【００６９】
そのほかのパイプライン状態情報チェック機構１２４は、前記実施の形態１で説明したフローチャートと同様の処理を行えばよい。
【００７０】
前記実施の形態１と本実施の形態２の異なる点は、パイプライン状態情報１１７の更新または設定を、プロセスが知らないうちに暗黙的にシステム制御ソフトウェアが行うか、プロセスが明示的に行うかということである。この点についてここで詳細に説明しておく。
【００７１】
例えば、プロセスが実行した関数からエラーが返った場合を想定する。プロセスは返ってきたエラーに応じて、エラー処理を行う。そのエラー処理では、回復不可能と判断したものに対しては、エラー処理の一貫としてプロセスを異常終了させることが考えられる。このとき、プロセス終了前に、プロセスのエラー処理の一貫として、オープン中のファイルやパイプラインをクローズすることがある。
【００７２】
この場合、前記実施の形態１では、システム制御ソフトウェアのプロセス制御部１１１のプロセス終了処理では、既にパイプラインがクローズされてしまっている。つまり、図４に示した、プロセス終了処理から実行されるパイプライン状態情報更新機構１２３のステップＳ４０１の判定が「Ｎｏ」となり、異常終了にもかかわらず、パイプライン状態情報１１７が更新されずに終わってしまう。
【００７３】
これに対して、本実施の形態２では、プロセスのエラー処理におけるクローズ処理の前に、プロセスがパイプライン状態情報１１７を設定するインタフェースを使うことによって、明示的にパイプライン状態情報設定機構７０１を実行させることができる。これにより、エラー処理において、プロセスがパイプラインを明示的にクローズする場合でもパイプライン状態情報１１７を更新することができる。なお、このパイプライン状態情報１１７を設定するインタフェースは、独立した関数としてもよいし、クローズ処理のフラグとして提供する形にしてもよい。
【００７４】
本実施の形態２によれば、パイプライン方法を利用したデータ引き継ぎを行う複数のプロセスで、一つのプロセスが異常を検知し、明示的に終了処理をする場合に、他のプロセスに対して、その状況を通知することが可能となる。これにより、より高信頼なパイプライン方法の実行環境を提供することができる。また、明示的なプロセス実行監視部を別途用意しなくても、より高信頼なパイプライン方法の実行環境を提供することができる。
【００７５】
なお、ここでは、前記実施の形態１と本実施の形態２を別々の実施例として記したが、これらは互いに排他するものではなく、両方を備えていてもよい。両方を備えることにより、プロセスの異常終了に伴い、暗黙的にパイプライン状態情報を更新できることと、異常を検知したプロセスが、プロセスの終了前に明示的にパイプライン状態情報を更新することが可能になる。
【００７６】
（実施の形態３）
以下、本発明に係る高信頼なパイプライン方法の実施の形態３を図面に示し、さらに詳細に説明する。
【００７７】
図１０は、本発明の実施の形態３による高信頼なパイプライン方法を実行するファイルシステムの概略構成図を示している。前記実施の形態１の図１との主な違いは、パイプライン制御部１１２にパイプライン状態情報エントリ登録機構１０２８があることである。そのほか、パイプライン状態情報１０１７の形式が異なることや、パイプライン状態情報更新機構１０２３やパイプライン状態情報チェック機構１０２４の処理内容が異なる。
【００７８】
本実施の形態３では、パイプライン状態情報１０１７に、パイプライン方法を利用してデータ引き継ぎを行う全てのプロセスの状態を登録できるようにする。それにより、プロセスが異常終了したときだけでなく、何らかの異常な状態になったときに、それを検知してデータ引き継ぎ中の全てのプロセスを制御することが実現できる。
【００７９】
図１１は、本実施の形態３における、パイプライン状態情報１０１７の構成例を示す図である。
【００８０】
ここでは、パイプライン状態情報１０１７として、当該パイプラインを利用する全てのプロセスの状態をリスト形式で保持する形である。このときのパイプライン状態情報１０１７は、一つのヘッダと、複数のエントリから構成される。ヘッダには、書き込みプロセスのリストを管理する書き込みプロセス管理ヘッダ１１０１と、読み出しプロセスのリストを管理する読み出しプロセス管理ヘッダ１１０２が存在する。書き込みプロセス管理ヘッダ１１０１は、最初のエントリへのポインタ１１１１、および、最後のエントリへのポインタ１１１２から成る。同様に、読み出しプロセス管理ヘッダ１１０２は、最初のエントリへのポインタ１１２１、および、最後のエントリへのポインタ１１２２から成る。その他、ヘッダには、異常時対応情報１１０３を要素に持つ。異常時対応情報１１０３は、図１１の異常時対応情報１１０３の要素にそのまま埋め込まれても良いし、その要素が異常時対応情報１１０３を指すポインタを保持しても良い。
【００８１】
書き込みプロセス管理ヘッダ１１０１、および、読み出しプロセス管理ヘッダ１１０２からリンクされるエントリは共通で、次のエントリへのポインタ１１５１、前のエントリへのポインタ１１５２、プロセス識別情報１１５３、プロセス状態１１５４、プロセス終了情報１１５５、フラグ１１５６などを要素に持つ。これら要素の使い方については、後述の説明で必要に応じて行う。
【００８２】
図１２は、異常時対応情報１１０３の構成例である。異常時対応情報１１０３は、大きく分けて、異常条件１２０１と対応動作１２０２からなる。本実施例では、異常条件１２０１として、書き込みプロセスのプロセス状態１２１１、書き込みプロセスの終了情報１２１２、読み出しプロセスのプロセス状態１２１３、読み出しプロセスの終了情報１２１４の組み合わせで異常条件を定義している。プロセスの終了情報は、図３で説明したプロセス終了情報３０１と同様の情報で、プロセスの終了コードや、異常終了を示すフラグなどでよい。
【００８３】
プロセス状態については、図１７を使って説明する。前記実施の形態１における説明で、プロセスの状態を、基本的に「実行状態」、「実行可能状態」、「待機状態」の三つに分けて管理する、と述べた。しかし、実際のＯＳでは、プロセスの状態は、より多くの種類を管理する場合が多い。一つの例を図１７に示す。この例では、実行状態１７０２、実行可能状態１７０５、待機状態１７０４の他に、停止状態１７０１、ゾンビ状態１７０３と、いずれにも属さないＮＵＬＬの状態１７０６の間を、状態が遷移することを示している。各状態中のＴＡＳＫ＿＊＊で表される値が実際に、プロセス管理情報のプロセスの状態に格納される値を示している。全ての状態については、ここでは説明しないが、例えば、実行状態１７０２はプロセスがＣＰＵ上で実行中であることを示し、実行可能状態１７０５はＣＰＵが割り当てられておらず実行されるのを待っていることを示している。これらの時のプロセス状態は、区別する必要がないため、いずれもＴＡＳＫ＿ＲＵＮＮＩＮＧとなっている。また、待機状態１７０４は、プロセスがある条件が成り立つのを一時的に休止して待機している状態である。この場合、実際のプロセス管理情報には、待機の仕方により、ＴＡＳＫ＿ＩＮＴＥＲＲＵＰＴＡＢＬＥ、または、ＴＡＳＫ＿ＵＮＩＮＴＥＲＲＵＰＴＡＢＥのいずれかの状態が保持される。
【００８４】
本実施の形態３では、プロセスの終了情報だけでなく、図１７で示すような実行中のプロセスの状態も使って、異常を検知した場合に、パイプライン方法を利用してデータ引き継ぎを行う他のプロセスに、その異常を伝えることを可能としている。
【００８５】
説明を図１２に戻す。対応動作１２０２は、異常条件１２０１で記述された条件を満たすときにどのような処理を行うかを示している。異常条件によっては、異常条件が一定時間以上続いたときに処理を行うことに対応するため、規定時間１２２１のフィールドと処理１２２２のフィールドを持つ。
【００８６】
具体的な異常条件と対応動作の例を、図１２に書いた項目で示す。項番１（１２３１）のエントリは、書き込みプロセスの停止状態が１２０秒以上続いた場合は、異常状態とみなして、当該プロセスを強制終了させることを示している。項番２（１２３２）のエントリは、読み出しプロセスの停止状態が１２０秒以上続いた場合は、異常状態とみなして、当該プロセスを強制終了させることを示している。同様に項番３（１２３３）のエントリは、書き込みプロセスの終了情報が０以外のときには、エラーを返すことを示している。同様に、項番４（１２３４）は読み出しプロセスの終了情報が０以外のときには、エラーを返すことを示している。
【００８７】
図１３は、パイプライン状態情報エントリ登録機構１０２８の動作を示すフローチャートである。図示していないが、本処理はパイプライン制御部１１２におけるパイプラインのオープン処理で、当該パイプラインを使ったデータ引き継ぎを行うプロセスごとに実行される。
【００８８】
まず、ステップＳ１３０１で、パイプラインに対するオープンモードを検査する。なお、ここで対象とするオープンモードは、読み出し、書き込み、読み書き両用である。ステップＳ１３０１の説明に戻り、オープンモードが書き込み、または、読み書き両用の場合は、ステップＳ１３０２に進む。そうでない場合は、ステップＳ１３０３に進む。ステップＳ１３０２では、空のエントリを確保し、図１１のエントリの説明図で示したプロセス識別情報１１５３に、オープンしたプロセスを一意に識別できる情報を格納し、書き込みプロセス管理ヘッダ１１０１につなぐ。
【００８９】
次に、ステップＳ１３０３で、再び、パイプラインに対するオープンモードを検査する。オープンモードが読み出し、または、読み書き両用の場合は、ステップＳ１３０４に進む。そうでない場合は、そのまま終了する。ステップＳ１３０４では、ステップＳ１３０２と同様に、空のエントリを確保し、図１１のエントリの説明図で示したプロセス識別情報１１５３に、オープンしたプロセスを一意に識別できる情報を格納し、読み出しプロセス管理ヘッダ１１０２につなぐ。
【００９０】
図１３で説明したフローにより、読み書き両用モードでパイプラインがオープンされる場合、書き込みプロセス管理ヘッダ１１０１および、読み出しプロセス管理ヘッダ１１０２の両方に、同じプロセスのエントリがつながれることになる。これは、ＵＮＩＸ（登録商標）またはそれに類するＯＳにおける名前付きパイプの場合、読み出しのみ、または、書き込みのみの他に、読み書き両用でオープンでき、それに対応するためである。
【００９１】
図１４は、本実施の形態３における、パイプライン状態情報更新機構１０２３の動作を示すフローチャートである。図示していないが、本処理は、プロセス制御部１１１におけるプロセスの状態変更処理で実行される。
【００９２】
まず、ステップＳ１４０１で、プロセス状態を変更しようとしているプロセスがパイプラインを使用中かどうかについて判定する。これは、図４での説明と同様に、書き込みプロセスの管理情報１１３または読み出しプロセスの管理情報１１４からたどれるパイプライン状態情報１０１７を参照することにより可能である。
【００９３】
パイプラインを使用していない場合は、そのまま終了する。パイプラインを使用している場合は、ステップＳ１４０２で、パイプライン状態情報１０１７のリストから、当該プロセスのエントリを探す。探した結果、当該エントリのプロセス状態１１５４の値を、変更しようとしているプロセス状態の値に更新する。さらに、当該エントリのフラグ１１５６がセットされている場合、タイマを停止し、フラグ１１５６をクリアする。
【００９４】
次に、ステップＳ１４０３で、プロセス状態を変更しようとしているプロセスが終了処理中かどうかについて判定する。終了処理中でない場合は、そのまま終了する。終了処理中の場合は、ステップＳ１４０４で、当該エントリのプロセス終了情報１１５５に、当該プロセスの終了状態を表す値を設定する。
【００９５】
図１５は、パイプライン状態情報チェック機構１０２４の動作を示すフローチャートである。図示していないが、本処理は、プロセス制御部１１１におけるプロセスの終了処理と、パイプライン制御部１１２における読み出しまたは書き込み処理と、パイプライン制御部１１２におけるクローズまたは削除処理で、実行される。
【００９６】
まず、ステップＳ１５０１で、パイプラインを使用中かどうかについて判定する。この判定は図４の説明で述べた方法と同様にすればよい。
【００９７】
パイプラインを使用していない場合は、そのまま終了する。パイプラインを使用している場合は、ステップＳ１５０２で、異常時対応情報１１０３の異常条件１２０１の条件を満たすエントリがあるかどうかを判定する。
【００９８】
条件を満たすエントリがない場合はそのまま終了する。条件を満たすエントリがある場合は、ステップＳ１５０３で、その異常条件１２０１に対応する処理１２２２に記されている処理を実行する。この後は図示しないが、例えば、読み出しまたは書き込み処理でエラーが返ると、プロセス制御部１１１において、読み出しまたは書き込み要求を行ったプロセスに対して、シグナルが送られ、強制終了させることができる。
【００９９】
本実施の形態３によれば、パイプライン方法を利用したデータ引き継ぎを行う複数のプロセスで、一つのプロセスが異常終了した場合、または、一つのプロセスが実行中に異常な状態になった場合に、関連する全てのプロセスをも異常終了させるなど、適切な動作を行うことが可能となる。これにより、より高信頼なパイプライン方法の実行環境を提供することができる。また、明示的なプロセス実行監視部を別途用意しなくても、より高信頼なパイプライン方法の実行環境を提供することができる。
【０１００】
以上、本発明者によってなされた発明をその実施の形態に基づき具体的に説明したが、本発明は前記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。
【図面の簡単な説明】
【０１０１】
【図１】本発明の実施の形態１による高信頼なパイプライン方法を実行するファイルシステムの概略構成を示す図である。
【図２】本発明の実施の形態１において、パイプライン管理情報の構成例を示す図である。
【図３】本発明の実施の形態１において、パイプライン状態情報の構成例を示す図である。
【図４】本発明の実施の形態１において、パイプライン状態情報更新機構の動作を示すフローチャートである。
【図５】本発明の実施の形態１において、パイプライン状態情報チェック機構１２４の動作を示すフローチャートである。
【図６】本発明の実施の形態１において、パイプライン状態情報の構成例を示す図である。
【図７】本発明の実施の形態２による高信頼なパイプライン方法を実行するファイルシステムの概略構成を示す図である。
【図８】本発明の実施の形態２において、パイプライン状態情報の構成例を示す図である。
【図９】本発明の実施の形態２において、パイプライン状態情報設定機構の動作を示すフローチャートである。
【図１０】本発明の実施の形態３による高信頼なパイプライン方法を実行するファイルシステムの概略構成を示す図である。
【図１１】本発明の実施の形態３において、パイプライン状態情報の構成例を示す図である。
【図１２】本発明の実施の形態３において、異常時対応情報の構成例を示す図である。
【図１３】本発明の実施の形態３において、パイプライン状態情報エントリ登録機構の動作を示すフローチャートである。
【図１４】本発明の実施の形態３において、パイプライン状態情報更新機構の動作を示すフローチャートである。
【図１５】本発明の実施の形態３において、パイプライン状態情報チェック機構の動作を示すフローチャートである。
【図１６】プロセスの管理情報からパイプライン管理情報への参照の例を示す図である。
【図１７】プロセスの状態遷移の例を示す図である。
【符号の説明】
【０１０２】
１０１  コンピュータ
１０２  システム制御ソフトウェア
１０３  書き込みプロセス
１０４  読み出しプロセス
１０５，１０６  バッファ
１１１  プロセス制御部
１１２  パイプライン制御部
１１３  書き込みプロセスの管理情報
１１４  読み出しプロセスの管理情報
１１５  パイプラインバッファ
１１６，１６６１  パイプライン管理情報
１１７，１０１７  パイプライン状態情報
１２３，１０２３  パイプライン状態情報更新機構
１２４，１０２４  パイプライン状態情報チェック機構
２０１  パイプラインのウェイトキュー
２０２  パイプラインバッファへのポインタ
２０３  まだ読まれていないデータ量
２０４  パイプラインバッファへ読み出し位置
２０５  読み出しプロセス数
２０６  書き込みプロセス数
３０１，１１５５  プロセス終了情報
６０１  総書き込みデータ量
６０２  総読み出しデータ量
７０１  パイプライン状態情報設定機構
８０１  パイプライン利用プロセスへの通知情報
１０２８  パイプライン状態情報エントリ登録機構
１１０１  書き込みプロセス管理ヘッダ
１１０２  読み出しプロセス管理ヘッダ
１１０３  異常時対応情報
１１１１，１１２１  最初のエントリへのポインタ
１１１２，１１２２  最後のエントリへのポインタ
１１５１  次のエントリへのポインタ
１１５２  前のエントリへのポインタ
１１５３  プロセス識別情報
１１５４  プロセス状態
１１５６，１６４１  フラグ
１２０１  異常条件
１２０２  対応動作
１２１１，１２１３，１６１１  プロセス状態
１２１２，１２１４  終了情報
１２２１  規定時間
１２２２  処理
１６１０  プロセス管理情報
１６１２  オープンファイル情報へのポインタ
１６２０  プロセスのオープンファイル管理情報
１６２１  ファイル記述子表へのポインタ
１６３０  ファイル記述子表
１６４０  システムのオープンファイル管理情報
１６４２  現在のファイルオフセット
１６４３  ディレクトリエントリへのポインタ
１６５０  ディレクトリエントリ
１６５１  ｉノードへのポインタ
１６６０  ｉノード
１７０１  停止状態
１７０２  実行状態
１７０３  ゾンビ状態
１７０４  待機状態
１７０５  実行可能状態
１７０６  ＮＵＬＬ状態
【図１】
2008097094.tif 000003
【図２】
2008097094.tif 000004
【図３】
2008097094.tif 000005
【図４】
2008097094.tif 000006
【図５】
2008097094.tif 000007
【図６】
2008097094.tif 000008
【図７】
2008097094.tif 000009
【図８】
2008097094.tif 000010
【図９】
2008097094.tif 000011
【図１０】
2008097094.tif 000012
【図１１】
2008097094.tif 000013
【図１２】
2008097094.tif 000014
【図１３】
2008097094.tif 000015
【図１４】
2008097094.tif 000016
【図１５】
2008097094.tif 000017
【図１６】
2008097094.tif 000018
【図１７】
2008097094.tif 000019