(57)【要約】【課題】階層化された文書を処理する情報処理装置において文書処理を高速化する技術を提供する。【解決手段】本発明の情報処理装置は、階層化された文書に対して所定の処理を実施する複数の文書処理部を有する情報処理装置であって、それぞれの文書処理部が、前記文書を読み込む文書読込手段と、前記文書読込手段が読み込んだ前記文書に対して所定の処理を実施する処理実施手段と、前記文書の階層の特徴に基づいて、前記文書の一部に対する処理を他の文書処理部に投機的に開始させ、前記文書の一部に対する処理が他の文書処理部に実施されているときに、前記文書の階層の特徴に基づいて、該他の文書処理部に該他の文書処理部が実施した処理を無効にさせる制御手段を有する。【選択図】図２
2011028616.tif 000002
【特許請求の範囲】
【請求項１】
階層化された文書に対して所定の処理を実施する複数の文書処理部を有する情報処理装置であって、
それぞれの文書処理部が、
前記文書を読み込む文書読込手段と、
前記文書読込手段が読み込んだ前記文書に対して所定の処理を実施する処理実施手段と、
前記文書の階層の特徴に基づいて、前記文書の一部に対する処理を他の文書処理部に投機的に開始させ、前記文書の一部に対する処理が他の文書処理部に実施されているときに、前記文書の階層の特徴に基づいて、該他の文書処理部に該他の文書処理部が実施した処理を無効にさせる制御手段と、
を有する情報処理装置。
【請求項２】
前記制御手段は、自身に対して前記文書の一部に対する処理を実施させた文書処理部から自身の処理を無効にすることを指示されると、それまでに該文書についての処理結果を破棄し、自身の処理を終了する、
請求項１に記載の情報処理装置。
【請求項３】
前記制御手段は、前記文書の一部に対する処理が他の文書処理部に投機的に実施されているとき、自身が処理している文書の階層が該文書の一部に対する処理を該他の文書処理部に投機的に開始させた時点の階層より上位に遷移した場合、該他の文書処理部に該他の文書処理部が実施した処理を無効にすることを指示する、
請求項１または２に記載の情報処理装置。
【請求項４】
前記制御手段は、前記文書の一部に対する処理が他の文書処理部に投機的に実施されているとき、自身の処理が完了した時点で自身が処理している文書の階層が該文書の一部に対する処理を該他の文書処理部に投機的に開始させた時点の階層より下位である場合、該他の文書処理部に該他の文書処理部が実施した処理を無効にすることを指示する、
請求項１から３のいずれか１項に記載の情報処理装置。
【請求項５】
前記制御手段は、前記文書の一部に対する処理が他の文書処理部に投機的に実施されているとき、自身に対して前記文書の一部に対する処理を実施させた文書処理部から自身の処理を無効にすることを指示されると、該他の文書処理部に該他の文書処理部が実施した処理を無効にすることを指示する、
請求項１から４のいずれか１項に記載の情報処理装置。
【請求項６】
前記制御手段は、処理している文書の階層に任意の要素が所定数以上連続して存在するとき、該文書の一部に対する処理を他の文書処理部に投機的に開始させる、
請求項１から５のいずれか１項に記載の情報処理装置。
【請求項７】
前記制御手段は、処理している文書の階層に同一の要素が所定数以上連続して存在するとき、該文書の一部に対する処理を他の文書処理部に投機的に開始させる、
請求項１から６のいずれか１項に記載の情報処理装置。
【請求項８】
前記制御手段は、処理している文書の階層に所定の要素が存在するとき、該文書の一部に対する処理を他の文書処理部に投機的に開始させる、
請求項１から７のいずれか１項に記載の情報処理装置。
【請求項９】
前記制御手段は、前記文書の所定の階層を処理するとき、該文書の一部に対する処理を他の文書処理部に投機的に開始させる、
請求項１から８のいずれか１項に記載の情報処理装置。
【請求項１０】
前記制御手段は、前記文書の一部に対する処理を他の文書処理部に投機的に開始させるとき、該他の文書処理部に処理させる文書の開始位置を、自身が現在処理している文書の位置より所定量だけ先の位置とする、
請求項１から９のいずれか１項に記載の情報処理装置。
【請求項１１】
前記制御手段は、前記文書の一部に対する処理を他の文書処理部に投機的に開始させるとき、該他の文書処理部に処理させる文書の開始位置を、過去に全ての文書処理部が実施した処理が無効になった頻度に応じて動的に変更する、
請求項１から９のいずれか１項に記載の情報処理装置。
【請求項１２】
前記制御手段は、前記文書の一部に対する処理を他の文書処理部に投機的に開始させるとき、該他の文書処理部に処理させる文書の開始位置を、自身が現在処理している文書の階層における処理すべき残り量に基づいて決定する、
請求項１から９のいずれか１項に記載の情報処理装置。
【請求項１３】
前記制御手段は、前記文書の一部に対する処理が他の文書処理部に投機的に実施されているとき、自身が分担する処理を完了すると、それまでに前記文書についての処理結果を出力し、自身の処理を終了する、
請求項１０から１２のいずれか１項に記載の情報処理装置。
【請求項１４】
前記制御手段は、前記文書の終端まで処理を完了すると、それまでに前記文書についての処理結果を出力し、自身の処理を終了する、
請求項１０から１３のいずれか１項に記載の情報処理装置。
【請求項１５】
前記制御手段は、他の文書処理部が処理する文書の一部に対する処理を投機的に実施しているとき、自身の処理により外部装置に影響が発生する場合、該他の文書処理部の処理が完了するまで自身の処理を一時停止する、
請求項１から１４のいずれか１項に記載の情報処理装置。
【請求項１６】
前記制御手段は、他の文書処理部が処理する文書の一部に対する処理を投機的に実施しているとき、自身の処理している文書に異常を検出した場合、該他の文書処理部の処理が完了するまで自身の処理を一時停止する、
請求項１から１５のいずれか１項に記載の情報処理装置。
【請求項１７】
前記文書は、ＸＭＬ文書である、
請求項１から１６のいずれか１項に記載の情報処理装置。
【請求項１８】
前記文書は、ＸＭＬ文書であり、
前記異常は、ＸＭＬ文書が整形式なＸＭＬ文書でないことであること、あるいは、妥当なＸＭＬ文書でないことであることの少なくともいずれか一方である、
請求項１６に記載の情報処理装置。
【請求項１９】
階層化された文書に対して所定の処理を実施する複数の文書処理部を有する情報処理装置の文書処理方法であって、
前記文書処理部が、
前記文書を読み込み、
前記文書に対して所定の処理を実施し、
前記文書の階層の特徴に基づいて、前記文書の一部に対する処理を他の文書処理部に投機的に開始させ、
前記文書の一部に対する処理が他の文書処理部に実施されているときに、前記文書の階層の特徴に基づいて、該他の文書処理部に該他の文書処理部が実施した処理を無効にさせる、文書処理方法。
【請求項２０】
階層化された文書に対して所定の処理を実施する複数の文書処理部を有する情報処理装置に処理を実行させるためのプログラムであって、
前記文書処理部が、
前記文書を読み込む手順と、
前記文書に対して所定の処理を実施する手順と、
前記文書の階層の特徴に基づいて、投機的に、他の文書処理部が前記文書の一部に対する処理を実施するためのスレッドを生成し、該他の文書処理部に該スレッドを実行させる手順と、
前記文書の一部に対する処理が他の文書処理部に実施されているときに、前記文書の階層の特徴に基づいて、前記スレッドを無効化する手順と、を実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、階層化された文書を処理する情報処理装置において投機並列処理を用いて文書を処理する方法に関する。
【背景技術】
【０００２】
文書やデータの意味や構造を記述するための言語として、ＸＭＬ（Extensible Markup Language）が、Ｗ３Ｃ（World Wide Web Consortium）によって規定されている。
【０００３】
ＸＭＬ文書について以下に説明する。
【０００４】
ＸＭＬ文書は、タグを用いて階層化された文書である。ＸＭＬ文書は、要素と属性により構成される。各要素は開始タグと終了タグで内容を挟むことで表現される。開始タグは「<要素名>」、終了タグは「</要素名>」というように記述される。また、開始タグを「<要素名 属性="値">」、終了タグを「</要素名>」というように記述してもよい。ＸＭＬ文書のタグは、ＸＭＬ文書の作成者が自由に定義できる。ＸＭＬ文書上、タグはあくまで文書構造を決定するためのものであり、各タグは特定の意味を有さない。ＸＭＬ文書を扱う人やアプリケーションが各タグの意味を理解して、各ＸＭＬ文書に対して所定の処理を実施する。
【０００５】
図１８にＸＭＬ文書の例を示す。
【０００６】
図１８に示すＸＭＬ文書では、「document」、「chapter」及び「title」の３つの要素並びに属性「number」が使用されている。
【０００７】
また、ＸＭＬ文書では、データの階層は、パスで表現される。例えば、「title」タグは、「/document/chapter/title」のパスで表される。
【０００８】
また、ＸＭＬの文法規則に従ったＸＭＬ文書を整形式（well-formed）ＸＭＬ文書という。例えば、開始タグに対応する終了タグがないようなＸＭＬ文書は、整形式でないＸＭＬ文書となる。
【０００９】
また、ＸＭＬ文書の構造を一意に定義付けるためにスキーマが用いられる。スキーマにより、例えば、「document」タグの範囲内では「chapter」タグのみ記述を許す、等の文書構造の制約が規定される。スキーマに則っていることが検証されたＸＭＬ文書を妥当な（valid）ＸＭＬ文書という。
【００１０】
ＸＭＬ文書はテキストで記述されるため、作成者は、階層化された文書やデータを容易に取り扱うことができる。しかしながら、ＸＭＬ文書の処理では、整形式ＸＭＬ文書のチェックやスキーマに則っていることの検証等、処理負荷の大きいテキスト処理が行われる。ネットワーク技術の発達や記憶媒体の大容量化に伴い、取り扱われるデータのサイズは、急速に大きくなってきており、ＸＭＬ文書を処理するために長時間を要することが課題となっている。
【００１１】
一般に、複数のプロセッサを有する情報処理装置や情報処理システムでは、各プロセッサで並列処理を行うことにより処理の高速化が図られる。
【００１２】
逐次処理と並列処理の違いについて以下に説明する。
【００１３】
図１９に逐次処理の例を示す。
【００１４】
図１９に示す例では、情報処理装置は、処理Ａ、処理ａ、処理Ｂ及び処理ｂを実施するものとする。処理Ａは、処理Ａ−１及び処理Ａ−２からなり、処理ａは、処理ａ−１及び処理ａ−２からなり、処理Ｂは、処理Ｂ−１及び処理Ｂ−２からなり、処理ｂは、処理ｂ−１及び処理ｂ−２からなる。処理Ａ−１は、処理ａ−２に影響を及ぼし、処理Ａ−２は、他の処理に影響を及ぼさない。また、処理ａ−１は、単独で処理可能であり、処理ａ−２は、処理Ａ−１の結果に影響される。同様に、処理Ｂ−１は、処理ｂ−２に影響を及ぼし、処理Ｂ−２は、他の処理に影響を及ぼさない。また、処理ｂ−１は、単独で処理可能であり、処理ｂ−２は、処理Ｂ−１の結果に影響される。
【００１５】
また、図１９に示す例では、１つの処理部を有する情報処理装置が想定されており、その処理部が処理Ａ、処理ａ、処理Ｂおよび処理ｂをシリアルに実施する。逐次処理では、各処理が順次実施されるため、処理部は、処理Ａ−１の結果を踏まえて処理ａ−２を実施できるし、処理Ｂ−１の結果を踏まえて処理ｂ−２を実施できる。
【００１６】
図２０に並列処理の例を示す。
【００１７】
図２０に示す例では、情報処理装置は、図１９に示した例と同じ処理を実施するものとする。
【００１８】
また、図２０に示す例では、３つの処理部α、β、γを有する情報処理装置が想定されており、処理部αが処理Ａを実施し、処理部βが処理ａ及び処理Ｂを実施し、処理部γが処理ｂを実施する。
【００１９】
処理部αは、処理Ａ−１が完了すると、処理Ａ−１の結果を処理部βに提供する。
【００２０】
処理部βは、処理ａ−１が完了した後、処理Ａ−１の結果を受信するまで、待ち状態となる。処理部βは、処理Ａ−１の結果を受信すると、その結果を踏まえて処理ａ−２を実施する。その後、処理部βは、処理Ｂ−１を実施し、処理Ｂ−１が完了すると、処理Ｂ−１の結果を処理部γに提供する。
【００２１】
処理部γは、処理ｂ−１が完了した後、処理Ｂ−１の結果を受信するまで、待ち状態となる。処理部γは、処理Ｂ−１の結果を受信すると、その結果を踏まえて処理ｂ−２を実施する。
【００２２】
並列処理は、複数の処理部で処理を分担することにより、逐次処理より短時間に全ての処理を完了することができるが、各処理の間に依存関係がある場合、依存関係が解消するまで待ち時間が発生する。
【００２３】
並列処理の高速化を図るための技術として、投機並列処理がある。投機並列処理では、各処理の間に依存関係があっても、各処理部は、依存関係が解消する前に依存関係を有する処理の結果を予測して処理を開始する。
【００２４】
図２１に投機並列処理の例を示す。
【００２５】
図２１に示す例では、情報処理装置は、図１９に示した例と同じ処理を実施するものとする。
【００２６】
また、図２１に示す例では、図２０に示した並列処理の例と同様、３つの処理部α、β、γを有する情報処理装置が想定されており、処理部αが処理Ａを実施し、処理部βが処理ａ及び処理Ｂを実施し、処理部γが処理ｂを実施する。
【００２７】
処理部βは、処理ａ−１が完了した後、処理Ａ−１の結果を受信していなくても処理Ａ−１の結果を予測して処理ａ−２を実施する。その後、処理部βは、処理Ｂ−１を実施する。
【００２８】
処理部αは、処理Ａ−１が完了すると、処理Ａ−１の結果を処理部βに提供する。処理Ａ−１の結果が処理部βの予測した結果と同じであれば、処理部βは、そのまま処理をすすめる。
【００２９】
処理部γは、処理ｂ−１が完了した後、処理Ｂ−１の結果を受信していなくても処理Ｂ−１の結果を予測して処理ｂ−２を実施する。
【００３０】
処理部βは、処理Ｂ−１が完了すると、処理Ｂ−１の結果を処理部γに提供する。処理Ｂ−１の結果が処理部γの予測した結果と同じであれば、処理部γは、そのまま処理をすすめる。
【００３１】
図２２に、投機並列処理において依存関係を有する処理の結果の予測が誤っていた場合の処理を説明するための図を示す。
【００３２】
図２２に示すように、処理Ｂ−１の結果が処理部γの予測した結果と異なる場合、処理部γは、処理Ｂ−１の結果を受信した時点で処理ｂ−２を再実行する。
【００３３】
このように投機並列処理では、依存関係を有する処理の結果の予測が正しくなければ、処理を高速化することはできないが、依存関係を有する処理の結果の予測が正しければ、処理を高速化することができる。
【００３４】
例えば、特許文献１には、複数のスレッドを並列に実行するシステムにおいて投機並列処理を用いた技術が提案されている。特許文献１では、親スレッドの処理が確定する前に、投機的に子スレッドを生成し、その後の親スレッドの処理の進み方によって、投機的に生成した子スレッドを確定したり、取り消したりする。
【先行技術文献】
【特許文献】
【００３５】
【特許文献１】特開平１０−２７１０８公報
【発明の概要】
【発明が解決しようとする課題】
【００３６】
上述した特許文献１には、投機並列処理において、子スレッドを投機的に生成するための条件や、投機的に生成した子スレッドを取り消すための条件が具体的に規定されていない。そのため階層化された文書を高速処理するのに適した条件設定や処理方法を実現するものとは必ずしも言えるものではなかった。
【００３７】
このような状況において、階層化された文書を高速処理する方法を確立することが近年ますます望まれている。
【００３８】
本発明の目的は、階層化された文書を処理する情報処理装置において文書処理を高速化する技術を提供することである。
【課題を解決するための手段】
【００３９】
上記目的を達成するために、本発明の情報処理装置は、階層化された文書に対して所定の処理を実施する複数の文書処理部を有する情報処理装置であって、それぞれの文書処理部が、前記文書を読み込む文書読込手段と、前記文書読込手段が読み込んだ前記文書に対して所定の処理を実施する処理実施手段と、前記文書の階層の特徴に基づいて、前記文書の一部に対する処理を他の文書処理部に投機的に開始させ、前記文書の一部に対する処理が他の文書処理部に実施されているときに、前記文書の階層の特徴に基づいて、該他の文書処理部に該他の文書処理部が実施した処理を無効にさせる制御手段を有する。
【００４０】
また、上記目的を達成するために、本発明の文書処理方法は、階層化された文書に対して所定の処理を実施する複数の文書処理部を有する情報処理装置の文書処理方法であって、前記文書処理部が、前記文書を読み込み、前記文書に対して所定の処理を実施し、前記文書の階層の特徴に基づいて、前記文書の一部に対する処理を他の文書処理部に投機的に開始させ、前記文書の一部に対する処理が他の文書処理部に実施されているときに、前記文書の階層の特徴に基づいて、該他の文書処理部に該他の文書処理部が実施した処理を無効にさせる。
【００４１】
また、上記目的を達成するために、本発明のプログラムは、階層化された文書に対して所定の処理を実施する複数の文書処理部を有する情報処理装置に処理を実行させるためのプログラムであって、前記文書処理部が、前記文書を読み込む手順と、前記文書に対して所定の処理を実施する手順と、前記文書の階層の特徴に基づいて、投機的に、他の文書処理部が前記文書の一部に対する処理を実施するためのスレッドを生成し、該他の文書処理部に該スレッドを実行させる手順と、前記文書の一部に対する処理が他の文書処理部に実施されているときに、前記文書の階層の特徴に基づいて、前記スレッドを無効化する手順と、を実行させるためのプログラム。
【発明の効果】
【００４２】
本発明によれば、階層化された文書を処理する情報処理装置において文書処理を高速化することができる。
【図面の簡単な説明】
【００４３】
【図１】ＸＭＬ文書に対して所定の処理を実施する文書処理部の基本構成を示すブロック図である。
【図２】第１の実施の形態の情報処理装置の構成を示すブロック図である。
【図３】図２に示した文書処理部１０ａのＸＭＬ文書の処理を示すフローチャートである。
【図４】投機並列処理の無効化判断の処理を示すフローチャートである。
【図５】終了判断の処理を示すフローチャートである。
【図６】投機並列処理の実施判断の処理を示すフローチャートである。
【図７】一時停止判断の処理を示すフローチャートである。
【図８】情報処理装置が処理するＸＭＬ文書の例を示す図である。
【図９】図８に示したＸＭＬ文書をツリー構造に展開した図である。
【図１０】図８に示したＸＭＬ文書から所定の人物を抽出した結果のテーブルを示す図である。
【図１１】ＸＭＬ文書の各文書処理部の処理分担を示す図である。
【図１２】各文書処理部の処理分担をツリー構造で示した図である。
【図１３】ＸＭＬ文書の各文書処理部の処理分担を示す図である。
【図１４】各文書処理部の処理分担をツリー構造で示した図である。
【図１５】ＸＭＬ文書の各文書処理部の処理分担を示す図である。
【図１６】各文書処理部の処理分担をツリー構造で示した図である。
【図１７】第２の実施の形態の情報処理装置の構成を示すブロック図である。
【図１８】ＸＭＬ文書の例を示す図である。
【図１９】逐次処理の例を示す図である。
【図２０】並列処理の例を示す図である。
【図２１】投機並列処理の例を示す図である。
【図２２】投機並列処理において依存関係を有する処理の結果の予測が誤っていた場合の処理を説明するための図である。
【発明を実施するための形態】
【００４４】
次に本発明について図面を参照して詳細に説明する。
【００４５】
本実施形態では、ＸＭＬ文書のような階層化された文書を処理する情報処理装置において、投機並列処理を用いることにより文書処理の高速化を図る方法を示す。
【００４６】
本実施形態の情報処理装置は、階層化された文書に対して所定の処理を実施する文書処理部を複数有する。文書処理部は、階層化された文書の階層構造等の特徴に基づいて、その文書の一部に対する処理を他の文書処理部に投機的に実施させたり、投機的に実施させた処理を無効にさせたりする。
【００４７】
（第１の実施の形態）
図１はＸＭＬ文書に対して所定の処理を実施する文書処理部の基本構成を示すブロック図である。
【００４８】
図１に示すように、文書処理部１０は、文書読込部１１、制御部１２、処理実施部１３及び処理結果一時格納用記憶装置１４を有する。
【００４９】
文書読込部１１は、処理対象のＸＭＬ文書とそのＸＭＬ文書の構造を定義付けるスキーマとを取得し、制御部１２及び処理実施部１３に送信する。尚、文書読込部１１が一度に取得するＸＭＬ文書の単位は、情報処理装置の運用や用途に応じて異なるが、本実施形態では、文書読込部１１は、ＸＭＬ文書を一行ずつ読み込み、処理するものとする。
【００５０】
制御部１２は、文書読込部１１から受信したＸＭＬ文書を解析し、そのＸＭＬ文書の階層構造等の特徴に基づいて、そのＸＭＬ文書の一部に対する処理を他の文書処理部に実施させる。以降、ＸＭＬ文書の一部に対する処理を他の文書処理部に実施させる側の文書処理部を要求側文書処理部と称し、ＸＭＬ文書の一部に対する処理の実施を要求される側の文書処理部を被要求側文書処理部と称する。また、他の文書処理部に実施させるＸＭＬ文書の一部に対する処理を投機並列処理と称する。
【００５１】
尚、制御部１２は、投機並列処理を実施するとき、被要求側文書処理部に対して処理を実施すべきＸＭＬ文書の範囲を指定する。
【００５２】
また、制御部１２は、投機並列処理を実施しているときに、自身が処理しているＸＭＬ文書の階層に所定の変化が生じると、被要求側文書処理部に実施させている処理の無効化を要求する。尚、処理の無効化とは、その文書処理部の処理結果が最終的な処理結果として出力されないようにして処理を終了することを示す。
【００５３】
また、制御部１２は、処理実施部１３がＸＭＬ文書の終端まで処理を実施し終えると、処理結果一時格納用記憶装置１４に格納された処理結果のデータを読み出し、出力する。
【００５４】
処理実施部１３は、文書読込部１１から受信したＸＭＬ文書に対して所定の処理を実施し、処理結果のデータを処理結果一時格納用記憶装置１４に出力する。
【００５５】
処理結果一時格納用記憶装置１４は、処理実施部１３によって出力された処理結果のデータが一時的に格納される記憶装置である。
【００５６】
図２は第１の実施の形態の情報処理装置の構成を示すブロック図である。
【００５７】
図２に示すように、第１の実施の形態の情報処理装置は、複数の文書処理部１０ａ、１０ｂ、１０ｃ、通信制御部２０、文書格納用記憶装置３０および処理結果格納用記憶装置４０を有する。
【００５８】
文書処理部１０ａ、１０ｂ、１０ｃの構成及び動作はそれぞれ同じであるため、以下、代表して文書処理部１０ａの構成および動作について説明する。
【００５９】
文書処理部１０ａは、文書読込部１１ａ、制御部１２ａ、処理実施部１３ａ及び処理結果一時格納用記憶装置１４ａを有する。文書読込部１１ａ、制御部１２ａ、処理実施部１３ａ及び処理結果一時格納用記憶装置１４ａの構成及び動作は、それぞれ、図１で示した文書処理部１０の文書読込部１１、制御部１２、処理実施部１３及び処理結果一時格納用記憶装置１４と同じである。
【００６０】
尚、文書読込部１１ａは、文書格納用記憶装置３０からＸＭＬ文書及びスキーマを読み込み、制御部１２ａ及び処理実施部１３ａに送信する。
【００６１】
制御部１２ａは、他の文書処理部から自身の処理の無効化を要求されると、処理実施部１３ａに処理を終了するように指示する。そして、制御部１２ａは、処理結果一時格納用記憶装置１４ａに格納された現在までの処理結果のデータを破棄し、処理を終了する。
【００６２】
また、制御部１２ａは、処理実施部１３ａがＸＭＬ文書の終端まで処理を実施し終えると、処理結果一時格納用記憶装置１４ａに格納された処理結果のデータを読み出し、処理結果格納用記憶装置４０に格納されている処理結果のデータにマージする。
【００６３】
また、制御部１２ａは、投機並列処理を実施しているとき、被要求側文書処理部に処理させている文書の範囲の手前まで処理実施部１３ａが処理を完了すると、処理結果一時格納用記憶装置１４ａに格納された処理結果のデータを読み出し、処理結果格納用記憶装置４０に格納されている処理結果のデータにマージする。
【００６４】
また、制御部１２ａは、他の文書処理部から要求を受けて処理を実施しているとき、自身の処理により外部装置に影響を及ぼす場合、当該他の文書処理部の処理が完了するまで自身の処理を一時停止する。制御部１２ａは、他の文書処理部から要求を受けて処理を実施しているとき、自身の処理している文書の範囲に所定の異常を検出した場合にも、当該他の文書処理部の処理が完了するまで自身の処理を一時停止する。
【００６５】
通信制御部２０は、複数の文書処理部１０ａ、１０ｂ、１０ｃの間の通信を制御する。各文書処理部は、通信制御部２０を介して他の文書処理部に処理の実施及び無効化を要求する。
【００６６】
文書格納用記憶装置３０は、処理されるＸＭＬ文書が格納される記憶装置である。
【００６７】
処理結果格納用記憶装置４０は、各文書処理部が処理結果一時格納用記憶装置に格納した処理結果のデータがマージされる記憶装置である。
【００６８】
次に図２に示した文書処理部１０ａのＸＭＬ文書の処理について説明する。
【００６９】
図３は図２に示した文書処理部１０ａのＸＭＬ文書の処理を示すフローチャートである。
【００７０】
まず、文書読込部１１ａは、文書格納用記憶装置３０からＸＭＬ文書を１行分取得する（ステップＳ１）。文書読込部１１ａは、文書格納用記憶装置３０からＸＭＬ文書を１行分取得すると、取得したＸＭＬ文書を制御部１２ａ及び処理実施部１３ａに送信する。
【００７１】
文書読込部１１ａからＸＭＬ文書を受信すると、制御部１２ａは、受信したＸＭＬ文書を解析し、そのＸＭＬ文書の階層の条件に基づいて、他の文書処理部（被要求側文書処理部）に実施させている処理の無効化を要求するか否かを判別する（ステップＳ２）。制御部１２ａは、判別した結果に応じて、被要求側文書処理部に実施させている処理の無効化を要求する。
【００７２】
各文書処理部は、自身の処理の無効化を要求されると、各処理結果一時格納用記憶装置に格納された処理結果のデータを、処理結果格納用記憶装置４０に出力せずに破棄する。
【００７３】
また、制御部１２ａは、自身に対して処理を実施させた文書処理部から処理の無効化を要求されているか否かを判別し、判別した結果に応じて、被要求側文書処理部に実施させている処理を無効化し、自身の処理も無効化する。
【００７４】
次に、制御部１２ａは、自身の処理について終了条件を満たしているか否かを判別し、判別した結果に応じて、自身の処理を終了する（ステップＳ３）。
【００７５】
次に、制御部１２ａは、自身が処理しているＸＭＬ文書の階層の条件に基づいて、投機並列処理を実施するか否かを判別する（ステップＳ４）。制御部１２ａは、判別した結果に応じて、被要求側文書処理部に処理を実施させる。
【００７６】
次に、制御部１２ａは、自身の処理について一時停止する必要があるか否かを判別し、判別した結果に応じて、自身の処理を一時停止する（ステップＳ５）。
【００７７】
次に、処理実施部１３ａは、文書読込部１１ａから受信したＸＭＬ文書に対して所定の処理を実施し、処理結果のデータを処理結果一時格納用記憶装置１４ａに出力する（ステップＳ６）。処理実施部１３ａが、処理結果のデータを処理結果一時格納用記憶装置１４ａに出力すると、文書処理部１０ａは、ステップＳ１に移行し、２行目以降の処理を実施する。
【００７８】
次に図３で示した各処理について、さらに詳細に説明する。
【００７９】
まず、制御部１２ａが他の文書処理部に実施させている処理を無効化するか否かを判別する、図３のステップＳ２の処理について詳細に説明する。
【００８０】
図４は制御部１２ａが他の文書処理部に実施させている処理を無効化するか否かを判別する、投機並列処理の無効化判断の処理を示すフローチャートである。
【００８１】
制御部１２ａは、まず、投機並列処理を実施しているか否かを判別する（ステップＳ２−１）。
【００８２】
投機並列処理を実施していない場合、制御部１２ａは、ステップＳ２−４へ移行する。
【００８３】
一方、投機並列処理を実施している場合、制御部１２ａは、その投機並列処理を無効化する必要があるか否かを判別する（ステップＳ２−２）。
【００８４】
投機並列処理を無効化するか否かは、以下のいずれかの条件が満たされているか否かによって判別される。
【００８５】
第１の条件は、要求側文書処理部が現在処理している文書の階層が、被要求側文書処理部に投機並列処理を要求したときの階層より上位に遷移することである。
【００８６】
要求側文書処理部が処理している文書の階層が、被要求側文書処理部に処理を要求したときの階層より上位に遷移した場合、被要求側文書処理部に通知していた階層情報は、実際の情報と異なっていたこととなる。このため、制御部１２ａは、現在処理している文書の階層が、被要求側文書処理部に処理を要求したときの階層より上位に遷移すると、被要求側文書処理部に要求した処理の無効化が必要と判別する。
【００８７】
尚、要求側文書処理部が現在処理している文書の階層が、被要求側文書処理部に処理を要求したときの階層より下位に遷移しても、再度、元の階層に遷移すれば、被要求側文書処理部に通知していた階層情報は、正しい情報となる。このため、要求側文書処理部が現在処理している文書の階層が、被要求側文書処理部に処理を要求したときの階層より下位に遷移しても、制御部１２ａは、まだ、被要求側文書処理部に要求した処理を無効化する必要はない。
【００８８】
第２の条件は、要求側文書処理部が自身の処理を完了したときの文書の階層が、被要求側文書処理部に処理を要求したときの階層より下位であることである。
【００８９】
要求側文書処理部の処理の終了位置は、被要求側文書処理部の処理の開始位置となる。従って、要求側文書処理部が自身の処理を完了したときの文書の階層が、被要求側文書処理部に処理を要求したときの階層より下位である場合、被要求側文書処理部に通知していた階層情報は、実際の情報と異なっていたこととなる。このため、制御部１２ａは、自身の処理を完了したときの文書の階層が、被要求側文書処理部に処理を要求したときの階層より下位である場合、被要求側文書処理部に要求した処理の無効化が必要と判別する。
【００９０】
尚、要求側文書処理部が自身の処理を完了したときの文書の階層が、被要求側文書処理部に処理を要求したときの階層より上位であるパターンは、第１の条件に含まれるため、考慮する必要はない。
【００９１】
第３の条件は、要求側文書処理部が自身に対して処理を要求した文書処理部から処理の無効化を要求されることである。
【００９２】
要求側文書処理部が処理の無効化を要求されるということは、その要求側文書処理部が取得していた階層情報が正しくなかったということであり、その要求側文書処理部が被要求側文書処理部に通知した階層情報も正しくなかったということになる。このため、制御部１２ａは、自身の処理の無効化を要求されると、被要求側文書処理部に要求している処理の無効化が必要と判別する。
【００９３】
投機並列処理を無効化する必要がないと判別すると、制御部１２ａは、ステップＳ２−４へ移行する。
【００９４】
一方、投機並列処理を無効化する必要があると判別すると、制御部１２ａは、被要求側文書処理部に対して実施している処理を無効化するように要求する（ステップＳ２−３）。
【００９５】
次に、制御部１２ａは、自らの処理についての無効化が必要であるか否かを判別する（ステップＳ２−４）。
【００９６】
上記の第３の条件に該当しない場合、制御部１２ａは、投機並列処理の無効化判断の処理を終了する。
【００９７】
一方、上記の第３の条件に該当する場合、制御部１２ａは、自らの処理の無効化を実施する（ステップＳ２−５）。制御部１２ａは、自らの処理を無効化するため、処理結果一時格納用記憶装置１４ａに格納された処理結果のデータを、処理結果格納用記憶装置４０に出力せずに破棄し、自らの処理を終了する。
【００９８】
尚、各文書処理部は、処理の無効化を要求されているか否かについて、通常の処理と同期して判別するのではなく、割り込み信号等により通常の処理とは非同期に判別するようにしてもよい。
【００９９】
次に、制御部１２ａが自身の処理について終了条件を満たしているか否かを判別する図３のステップＳ３の処理について詳細に説明する。
【０１００】
図５は制御部１２ａが自身の処理について終了条件を満たしているか否かを判別する、終了判断の処理を示すフローチャートである。
【０１０１】
制御部１２ａは、自身の処理について終了条件を満たしているか否かを判別する（ステップＳ３−１）。
【０１０２】
処理の終了条件を満たしているか否かは、以下のいずれかの条件が満たされているか否かによって判別される。
【０１０３】
第１の条件は、ＸＭＬ文書の終端まで処理を完了した場合である。
【０１０４】
第２の条件は、被要求側文書処理部の処理の開始位置まで処理を完了した場合である。この場合、以降の処理は、被要求側文書処理部が実施するため、制御部１２ａは、自身の処理を終了させるべきであると判別する。
【０１０５】
自身の処理について終了条件を満たしていないと判別すると、制御部１２ａは、終了判断の処理を終了する。
【０１０６】
一方、自身の処理について終了条件を満たしていると判別すると、制御部１２ａは、自身に対して処理を要求した文書処理部が存在するか否か、及び、その文書処理部が既に処理を終了しているか否かを判別する。自身に対して処理を要求した文書処理部が存在する場合、制御部１２ａは、その文書処理部が処理を終了するまで待機する（ステップＳ３−２）。
【０１０７】
投機並列処理を実施するとき、要求側文書処理部は、被要求側文書処理部に各処理を投機的に実施させるため、被要求側文書処理部に各処理を実施させた後に、その処理が正しい処理結果を出力しないものであると認識する場合がある。この場合、要求側文書処理部は、被要求側文書処理部に実施させた処理を無効化するように要求する。そのため、要求側文書処理部が処理を完了し、被要求側文書処理部が投機的に実施した処理が正しい処理結果を出力するものであることが確定するまで、被要求側文書処理部は処理結果を出力すべきではない。
【０１０８】
各文書処理部は、自身の処理を完了すると、処理結果一時格納用記憶装置に格納された処理結果のデータを処理結果格納用記憶装置４０に出力する。そのため、被要求側文書処理部は、要求側文書処理部の処理が完了するまで、処理結果一時格納用記憶装置に格納された処理結果のデータを処理結果格納用記憶装置４０に出力せずに待機しておかなければならない。
【０１０９】
自身に対して処理を要求した文書処理部が終了していることを確認すると、制御部１２ａは、処理結果一時格納用記憶装置１４ａに格納された処理結果のデータを読み出す。そして、制御部１２ａは、読み出した処理結果のデータを処理結果格納用記憶装置４０に格納されている処理結果のデータにマージし、自身の処理を終了する（ステップＳ３−３）。
【０１１０】
次に、制御部１２ａが投機並列処理を実施するか否かを判別する、図３のステップＳ４の処理について詳細に説明する。
【０１１１】
図６は制御部１２ａが投機並列処理を実施するか否かを判別する、投機並列処理の実施判断の処理を示すフローチャートである。
【０１１２】
制御部１２ａは、まず、ＸＭＬ文書を解析し、そのＸＭＬ文書の階層の条件に基づいて、投機並列処理を実施するか否かを判別する（ステップＳ４−１）。
【０１１３】
投機並列処理を実施するか否かは、以下のいずれかの条件が満たされているか否かによって判別される。
【０１１４】
第１の条件は、制御部１２ａが処理している文書の階層に任意の要素が所定数以上連続して存在することである。
【０１１５】
例えば、所定数が２の場合、制御部１２ａは、処理中の階層について任意のタグが検出された回数を記憶しておき、同一階層に任意のタグを連続して２つ検出すると、投機並列処理を実施する。
【０１１６】
第２の条件は、制御部１２ａが処理している文書の階層に同一の要素が所定数以上連続して存在することである。
【０１１７】
例えば、所定数が２の場合、制御部１２ａは、処理中の階層についてタグが検出された回数をタグの要素名毎に記憶しておき、同一階層に同一の要素名のタグを連続して２つ検出すると、投機並列処理を実施する。
【０１１８】
第３の条件は、制御部１２ａが処理している文書の階層に所定の要素が存在することである。
【０１１９】
例えば、所定の要素が「name」である場合、制御部１２ａは、要素名が「name」であるタグを検出すると、投機並列処理を実施する。
【０１２０】
第４の条件は、制御部１２ａが所定の階層の処理を実施することである。
【０１２１】
例えば、所定の階層が「country」である場合、制御部１２ａは、「country」の階層の処理を実施すると、投機並列処理を実施する。
【０１２２】
尚、制御部１２ａは、投機並列処理を実施するか否かを、上記第１から第４の条件のうち２つ以上の条件を任意に組み合わせて判別するようにしてもよい。
【０１２３】
投機並列処理を実施すべきでないと判別すると、制御部１２ａは、投機並列処理の実施判断の処理を終了する。
【０１２４】
一方、投機並列処理を実施すべきであると判別すると、制御部１２ａは、自身が既に投機並列処理を実施しているか否かを判別する（ステップＳ４−２）。
【０１２５】
尚、投機並列処理を実施するとき、要求側文書処理部は、被要求側文書処理部に各処理を投機的に実施させるため、被要求側文書処理部に各処理を実施させた後に、その処理が正しい処理結果を出力しないものであると認識する場合がある。この場合、要求側文書処理部は、被要求側文書処理部に実施させた処理を無効化させる必要がある。
【０１２６】
このため、要求側文書処理部は、投機並列処理を実施するとき、処理を実施させた被要求側文書処理部を管理しておく必要がある。本実施形態では、要求側文書管理部の管理を簡素化するために、要求側文書処理部は、同時に１つの文書処理部に対してのみ投機並列処理を実施できるようにする。従って、要求側文書処理部は、既に所定の文書処理部に対して投機並列処理を実施している場合、別の文書処理部に対して投機並列処理を実施できない。
【０１２７】
自身が既に投機並列処理を実施している場合、制御部１２ａは、投機並列処理の実施判断の処理を終了する。
【０１２８】
一方、自身がまだ投機並列処理を実施していない場合、制御部１２ａは、ＸＭＬ文書の分割処理を実施する（ステップＳ４−３）。
【０１２９】
本実施形態では、要求側文書処理部は、現在自身が処理している位置から所定の位置までを継続して処理し、残りの範囲を被要求側文書処理部に処理させる。そのため、制御部１２ａは、自身が処理する範囲と被要求側文書処理部に処理させる範囲との境界、つまり、被要求側文書処理部に処理させる開始位置を決定する。被要求側文書処理部は、ＸＭＬ文書について、決定された開始位置以降の全ての範囲の処理を分担することになる。
【０１３０】
ＸＭＬ文書のうち、被要求側文書処理部に処理させる開始位置は、以下のいずれかの方法によって決定される。
【０１３１】
第１の方法は、制御部１２ａが現在処理している位置から所定量だけ先の位置を被要求側文書処理部に処理させる開始位置とする方法である。尚、所定量の単位は、データサイズ、文字数、行数あるいは要素数等、どのようなものでもよい。所定量は、予め情報処理装置に定められている。
【０１３２】
第２の方法は、過去に情報処理装置の各文書処理部が実施した投機並列処理が無効化された頻度に応じて被要求側文書処理部に処理させる開始位置を動的に変更する方法である。情報処理装置では、投機並列処理が無効化されない程、処理の高速化が図れる。そして、各文書処理部が処理する量が少ない程、その処理が無効化される確率は低くなる。しかしながら、各文書処理部が処理する量が少ない程、並列処理の処理分割等によるオーバーヘッドが大きくなる。そこで、第２の方法では、過去に情報処理装置の各文書処理部が実施した投機並列処理が無効化された頻度に応じて各文書処理部が処理する量を調整する。情報処理装置は、無効化の発生頻度が高い場合、各文書処理部が処理する量を小さくし、無効化の発生頻度が低い場合、各文書処理部が処理する量を大きくする。尚、被要求側文書処理部に処理させる開始位置の初期値は、予め情報処理装置に定められている。
【０１３３】
第３の方法は、要求側文書処理部が現在処理している文書の階層における処理すべき残り量に基づいて被要求側文書処理部に処理させる開始位置を決定する方法である。要求側文書処理部は、被要求側文書処理部に処理を実施させる前に、自身が現在処理している文書の階層を解析し、その階層におけるデータサイズ、文字数、行数あるいは要素数等により、被要求側文書処理部に処理させる開始位置を決定する。
【０１３４】
尚、制御部１２ａは、被要求側文書処理部に処理させる開始位置を、上記第１から第３の方法のうち２つ以上の方法を任意に組み合わせて決定するようにしてもよい。
【０１３５】
ＸＭＬ文書のうち、被要求側文書処理部に処理させる開始位置を決定すると、制御部１２ａは、決定した開始位置以降の処理を被要求側文書処理部に実施させる（ステップＳ４−４）。制御部１２ａは、被要求側文書処理部にＸＭＬ文書を処理させるとき、被要求側文書処理部が処理すべき文書の開始位置と、被要求側文書処理部が文書処理するために必要な階層情報とを、通信制御部２０を介して、被要求側文書処理部の制御部に通知する。
【０１３６】
被要求側文書処理部は、通知された開始位置と階層情報とに基づいてＸＭＬ文書を処理する。
【０１３７】
尚、階層情報は、ＸＭＬ文書の階層のパスの情報及びその階層のタグの属性の情報を含む。各処理実施部は、スキーマを参照する場合等、ＸＭＬ文書を処理するときに階層情報が必要となる。
【０１３８】
要求側文書処理部は、被要求側文書処理部に処理を要求した開始位置における階層情報は自身が現在処理している位置における階層情報と同じであると仮定して、自身が現在処理している階層のパスの情報及びその階層のタグの属性の情報を階層情報として通知する。
【０１３９】
次に、制御部１２ａが自身の処理について一時停止する必要があるか否かを判別する図４のステップＳ５の処理について詳細に説明する。
【０１４０】
図７は制御部１２ａが自身の処理について一時停止する必要があるか否かを判別する、一時停止判断の処理を示すフローチャートである。
【０１４１】
制御部１２ａは、自身の処理について一時停止する必要があるか否かを判別する（ステップＳ５−１）。
【０１４２】
一時停止する必要があるか否かは、以下のいずれかの条件が満たされているか否かによって判別される。
【０１４３】
第１の条件は、自身に対して処理を要求した文書処理部がまだ処理を終了していない状態で、自身の処理により外部装置に影響が発生する場合である。
【０１４４】
要求側文書処理部がまだ処理を終了していない場合、被要求側文書処理部は、自身の処理の無効化を要求されるおそれがある。例えば、ＸＭＬ文書についての処理の過程で、ＦＩＦＯ（First-In First-Out）バッファを有する、情報処理装置の周辺機器にデータを出力するような場合、一旦、出力したデータがＦＩＦＯバッファに格納されると、そのデータを削除することはできなくなる。このため、被要求側文書処理部の制御部１２ａは、外部装置にアクセスする必要がある場合、要求側文書処理部が処理を終了するまで一時停止しておく必要がある。
【０１４５】
第２の条件は、要求側文書処理部がまだ処理を終了していない状態で、自身が処理しているＸＭＬ文書が整形式なＸＭＬ文書でないことが判明した場合である。
【０１４６】
通常、情報処理装置は、処理しているＸＭＬ文書が整形式でないことが判明すると、利用者や上位のシステム等に対してエラー通知等の処理を行う。しかしながら、要求側文書処理部がまだ処理を終了していなければ、被要求側文書処理装置は、自身の処理の無効化を要求される可能性があり、ＸＭＬ文書が整形式でないという判定自体が無効になることもあり得る。このため、被要求側文書処理部の制御部１２ａは、ＸＭＬ文書が整形式でないと判断した場合、即時にエラー通知等の処理を行わず、要求側文書処理部が処理を終了するまで、一時停止しておく必要がある。
【０１４７】
第３の条件は、要求側文書処理部がまだ処理を終了していない状態で、自身が処理しているＸＭＬ文書が妥当なＸＭＬ文書でないことが判明した場合である。
【０１４８】
第２の条件と同様に、要求側文書処理部がまだ処理を終了していなければ、被要求側文書処理装置は、自身の処理の無効化を要求される可能性があり、ＸＭＬ文書が妥当でないという判定自体が無効になることもあり得る。このため、被要求側文書処理部の制御部１２ａは、ＸＭＬ文書が妥当でないと判断した場合、即時にエラー通知等の処理を行わず、要求側文書処理部が処理を終了するまで、一時停止しておく必要がある。
【０１４９】
自身の処理について一時停止する必要がないと判別すると、制御部１２ａは、一時停止判断の処理を終了する。
【０１５０】
一方、自身の処理について一時停止する必要があると判別すると、制御部１２ａは、処理再開の条件を満たすまで、待機する（ステップＳ５−２）。
【０１５１】
尚、処理再開の条件は、要求側文書処理部が処理を終了することである。要求側文書処理部が処理を終了すると、制御部１２ａは、一時停止判別処理を終了し、再度、文書処理を続行する。
【０１５２】
以下に、本実施形態の情報処理装置が実施する処理を具体的なＸＭＬ文書を用いて説明する。
【０１５３】
情報処理装置が処理するＸＭＬ文書の例を図８に示す。
【０１５４】
図８に示したＸＭＬ文書における各タグについて説明する。
【０１５５】
「person」タグは、人物を表すタグである。「person id」は、各人物に割り当てられた通し番号である。
【０１５６】
「name」タグは、人物の名前を表すタグである。
【０１５７】
「money」タグは、人物の所持金を表すタグである。
【０１５８】
「country」タグは、人物の属する所属国を表すタグである。
【０１５９】
「countries」タグは、全ての所属国を束ねるタグである。
【０１６０】
図８に示したＸＭＬ文書をツリー構造に展開した図を図９に示す。
【０１６１】
図９に示す通り、図８に示したＸＭＬ文書には、所属国「America」に人物「ＡＡＡ」及び「ＢＢＢ」が所属し、所属国「Japan」に人物「○○○」、「△△△」、「□□□」及び「×××」が所属している。
【０１６２】
本実施形態では、図８に示したＸＭＬ文書から、所属国「America」に属する所持金「$1000」以上の人物を抽出する処理について説明する。図８に示したＸＭＬ文書から、所属国「America」に所属する所持金「$1000」以上の人物を抽出した結果は、図１０に示すテーブルに出力される。図１０に示すように、出力されるテーブルには、人物の名前とその人物の所持金の一覧が示される。
【０１６３】
尚、本実施形態に示す例では、簡単のため、スキーマは用意しない。また、ＸＭＬ文書の処理で、情報処理装置の周辺機器へのアクセスは発生しないものとする。
【０１６４】
また、本実施形態に示す例では、図６のステップＳ４−１における、要求側文書処理部が投機並列処理を実施する条件は、処理している文書の階層に所定の要素「person」が存在することであるとする。
【０１６５】
また、要求側文書処理部は、被要求側文書処理部に処理させる文書の開始位置を、自身が現在処理している位置から「person」タグ１０００個分だけ先の位置とするものとする。
【０１６６】
まず、文書処理部１０ａの文書読込部１１ａは、ＸＭＬ文書の１行目を読み込む（ステップＳ１）。文書読込部１１ａは、１行目の内容を制御部１２ａ及び処理実施部１３ａに送信する。
【０１６７】
文書読込部１１ａからＸＭＬ文書を受信すると、制御部１２ａは、文書読込部１１ａから受信したＸＭＬ文書の階層の変化に基づいて、被要求側文書処理部に実施させている処理の無効化を要求するか否かを判別する（ステップＳ２）。
【０１６８】
ここでは、まだ、投機並列処理を実施していず（ステップＳ２―１）、自らの処理についての無効化も必要でないため（ステップＳ２―４）、制御部１２ａは、無効化判断の処理を終了する。
【０１６９】
次に、制御部１２ａは、自身の処理について終了条件を満たしているか否かを判別する（ステップＳ３）。
【０１７０】
ここでは、自身の処理について終了条件を満たしてないため（ステップＳ３−１）、制御部１２ａは、終了判断の処理を終了する。
【０１７１】
次に、制御部１２ａは、文書読込部１１ａから受信したＸＭＬ文書を解析し、投機並列処理を実施するか否かを判別する（ステップＳ４）。
【０１７２】
ここでは、文書読込部１１ａから受信したＸＭＬ文書には「person」タグが存在しないため（ステップＳ４−１）、制御部１２ａは、投機並列処理の実施判断の処理を終了する。
【０１７３】
次に、制御部１２ａは、自身の処理について一時停止する必要があるか否かを判別する（ステップＳ５）。
【０１７４】
ここでは、自身の処理について一時停止するための条件を満たしてないため（ステップＳ５−１）、制御部１２ａは、一時停止判断の処理を終了する。
【０１７５】
次に、処理実施部１３ａは、文書読込部１１ａから受信したＸＭＬ文書に対して所持金「$1000」以上の人物のテーブルへの出力処理を実施する（ステップＳ６）。ＸＭＬ文書の１行目は、処理結果を出力すべき文書ではないため、文書処理部１０ａは、処理結果を出力せず、ステップＳ１に移行し、２行目の処理を実施する。
【０１７６】
ＸＭＬ文書の２行目及び３行目についての処理における動作は、ＸＭＬ文書の１行目のときと同じであるため、説明を省略する。
【０１７７】
次に、ＸＭＬ文書の４行目の<person id="0">の行についての処理を説明する。
【０１７８】
まず、文書処理部１０ａの文書読込部１１ａは、ＸＭＬ文書の４行目を読み込む（ステップＳ１）。文書読込部１１ａは、４行目の内容を制御部１２ａ及び処理実施部１３ａに送信する。
【０１７９】
続いて、文書処理部１０ａの制御部１２ａは、ステップＳ２からステップＳ３までの処理を実施するが、これらの処理における動作は、ＸＭＬ文書の１行目のときと同じであるため、説明を省略する。
【０１８０】
次に、制御部１２ａは、文書読込部１１ａから受信したＸＭＬ文書を解析し、投機並列処理を実施するか否かを判別する（ステップＳ４）。
【０１８１】
ここでは、文書読込部１１ａから受信したＸＭＬ文書には「person」タグが存在するため（ステップＳ４−１）、制御部１２ａは、自身が既に投機並列処理を実施しているか否かを判別する（ステップＳ４−２）。ここでは、自身がまだ投機並列処理を実施していないため、制御部１２ａは、ＸＭＬ文書の分割処理を実施する（ステップＳ４−３）。制御部１２ａは、ＸＭＬ文書のうち、現在処理している<person id="0">から「person」タグ１０００個分だけ先の<person id="1000">を示す１４行目以降を他の文書処理部に処理させる部分と決定する。
【０１８２】
制御部１２ａは、<person id="1000">を示す１４行目以降を文書処理部１０ｂに実施させる（ステップＳ４−４）。このとき、制御部１２ａは、文書処理部１０ｂが処理するＸＭＬ文書の開始位置として１４行目という情報と、階層情報としてパスの情報である「/countries/country」及び「country」タグの属性の情報である「name="America"」とを、通信制御部２０を介して、文書処理部１０ｂの制御部１２ｂに通知する。
【０１８３】
尚、文書処理部１０ｂの制御部１２ｂは、自身が処理すべきＸＭＬ文書の開始位置の情報と、階層情報とを受信すると、受信した情報を文書読込部１１ｂ及び処理実施部１３ｂへ送信する。そして、文書処理部１０ｂは、ＸＭＬ文書の１４行目から文書の処理を実施する。
【０１８４】
この時点でのＸＭＬ文書の各文書処理部の処理分担を示す図を図１１に示す。
【０１８５】
図１１に示す通り、ＸＭＬ文書の１４行目以降の処理は、文書処理部１０ｂが分担することになる。
【０１８６】
また、各文書処理部の処理分担をツリー構造で示した図を図１２に示す。
【０１８７】
図１２に示す通り、所属国「America」の人物「ＢＢＢ」及び所属国「Japan」の全ての人物についての処理は、文書処理部１０ｂが分担することになる。
【０１８８】
続いて、文書処理部１０ａの制御部１２ａは、ステップＳ５からステップＳ６までの処理を実施するが、これらの処理における動作は、ＸＭＬ文書の１行目のときと同じであるため、説明を省略する。
【０１８９】
また、ＸＭＬ文書の５行目についての処理における動作は、ＸＭＬ文書の１行目のときと同じであるため、説明を省略する。
【０１９０】
次に、ＸＭＬ文書の６行目の<money>$10000</money>の行についての処理を説明する。
【０１９１】
まず、文書処理部１０ａの制御部１２ａは、ステップＳ１からステップＳ５までの処理を実施するが、これらの処理における動作は、ＸＭＬ文書の１行目のときと同じであるため、説明を省略する。
【０１９２】
ステップＳ６において、処理実施部１３ａは、文書読込部１１ａから受信したＸＭＬ文書に対して所持金「$1000」以上の人物のテーブルへの出力処理を実施する。処理実施部１３ａは、ＸＭＬ文書の６行目を解析することにより、この人物の所持金が「$1000」以上であることを認識し、処理結果一時格納用記憶装置１４ａに人物名「ＡＡＡ」及び所持金「$10000」を出力する。
【０１９３】
続いて、文書処理部１０ａは、ＸＭＬ文書に対する処理を各行ごとに実施する。
【０１９４】
次に、ＸＭＬ文書の１４行目の<person id="1000">の行についての処理を説明する。
【０１９５】
まず、文書処理部１０ａの制御部１２ａは、ステップＳ１からステップＳ２までの処理を実施するが、これらの処理における動作は、ＸＭＬ文書の１行目のときと同じであるため、説明を省略する。
【０１９６】
ステップＳ３において、制御部１２ａは、自身の処理について終了条件を満たしているか否かを判別する。
【０１９７】
ここでは、ＸＭＬ文書の１４行目以降は、文書処理部１０ｂに処理を要求しているため、制御部１２ａは、自身の処理を終了すべきであると判別する（ステップＳ３−１）。
【０１９８】
制御部１２ａは、自身に対して処理を要求した文書処理部が存在しないため、ステップＳ３−２で待機せず、ステップＳ３−３へ移行する。
【０１９９】
制御部１２ａは、処理結果一時格納用記憶装置１４ａに格納された処理結果のデータを読み出す。そして、制御部１２ａは、処理結果のデータである人物名「ＡＡＡ」及び所持金「$10000」を処理結果格納用記憶装置４０に格納されている図１０に示すテーブルにマージし、自身の処理を終了する（ステップＳ３−３）。
【０２００】
次に、文書処理部１０ｂの処理について説明する。
【０２０１】
文書処理部１０ｂは、ＸＭＬ文書の１４行目の<person id="1000">の行から文書の処理を実施する。
【０２０２】
まず、文書処理部１０ｂの文書読込部１１ｂは、ＸＭＬ文書の１４行目を読み込む（ステップＳ１）。文書読込部１１ｂは、１４行目の内容を制御部１２ｂ及び処理実施部１３ｂに送信する。
【０２０３】
次に、文書処理部１０ｂの制御部１２ｂは、ステップＳ２からステップＳ３までの処理を実施するが、これらの処理における動作は、ＸＭＬ文書の１行目のときの文書処理部１０ａの動作と同じであるため、説明を省略する。
【０２０４】
次に、制御部１２ａは、文書読込部１１ｂから受信したＸＭＬ文書を解析し、投機並列処理を実施するか否かを判別する（ステップＳ４）。
【０２０５】
ここでは、文書読込部１１ｂから受信したＸＭＬ文書には「person」タグが存在するため（ステップＳ４−１）、制御部１２ｂは、自身が既に投機並列処理を実施しているか否かを判別する（ステップＳ４−２）。ここでは、自身がまだ投機並列処理を実施していないため、制御部１２ｂは、ＸＭＬ文書の分割処理を実施する（ステップＳ４−３）。制御部１２ｂは、ＸＭＬ文書のうち、現在処理している<person id="1000">から「person」タグ１０００個分だけ先の<person id="2000">を示す２８行目以降を他の文書処理部に処理させる部分と決定する。
【０２０６】
制御部１２ｂは、<person id="2000">を示す２８行目以降を文書処理部１０ｃに実施させる（ステップＳ４−４）。このとき、制御部１２ｂは、文書処理部１０ｃが処理すするＸＭＬ文書の開始位置として２８行目という情報と、階層情報としてパスの情報である「/countries/country」及び「country」タグの属性の情報である「name="America"」とを、通信制御部２０を介して、文書処理部１０ｃの制御部１２ｃに通知する。
【０２０７】
尚、文書処理部１０ｃの制御部１２ｃは、自身が処理すべきＸＭＬ文書の開始位置の情報と、階層情報とを受信すると、受信した情報を文書読込部１１ｃ及び処理実施部１３ｃへ送信する。そして、文書処理部１０ｃは、ＸＭＬ文書の２８行目から文書の処理を実施する。
【０２０８】
この時点でのＸＭＬ文書の各文書処理部の処理分担を示す図を図１３に示す。
【０２０９】
図１３に示す通り、ＸＭＬ文書の２８行目以降の処理は、文書処理部１０ｃが分担することになる。
【０２１０】
また、各文書処理部の処理分担をツリー構造で示した図を図１４に示す。
【０２１１】
図１４に示す通り、所属国「Japan」の人物「△△△」、「□□□」及び「×××」についての処理は、文書処理部１０ｃが分担することになる。
【０２１２】
次に、文書処理部１０ｂの制御部１２ｂは、ステップＳ５からステップＳ６までの処理を実施するが、これらの処理における動作は、ＸＭＬ文書の１行目のときの文書処理部１０ａの動作と同じであるため、説明を省略する。
【０２１３】
続いて、文書処理部１０ｂは、ＸＭＬ文書に対する処理を各行ごとに実施する。
【０２１４】
次に、ＸＭＬ文書の２０行目の</country>の行についての処理を説明する。
【０２１５】
まず、文書処理部１０ｂの制御部１２ｂは、ステップＳ１の処理を実施するが、この処理における動作は、ＸＭＬ文書の１行目のときと同じであるため、説明を省略する。
【０２１６】
ステップＳ２において、制御部１２ｂは、文書処理部１０ｃに実施させている処理の無効化を要求するか否かを判別する。
【０２１７】
制御部１２ｂは、まず、投機並列処理を実施しているか否かを判別する（ステップＳ２−１）。
【０２１８】
ここでは、ＸＭＬ文書の２８行目以降の処理を文書処理部１０ｃに実施させているので、制御部１２ｂは、文書処理部１０ｃに実施させている処理を無効化する必要があるか否かを判別する（ステップＳ２−２）。
【０２１９】
</country>は、終了タグであり、<country>タグが閉じられるため、タグ階層は、上位の<countries>タグに遷移する。つまり、文書処理部１０ｂが処理している文書の階層は、文書処理部１０ｃに処理を要求したときより上位に遷移している。
【０２２０】
このため、文書処理部１０ｃに通知したタグ階層の情報のうち、パスの情報である「/countries/country」及び「country」タグの属性の情報である「name="America"」が実際の情報と異なっていることになる。文書処理部１０ｃが処理しようとしている、あるいは、既に処理してしまった、ＸＭＬ文書の２８行目以降の処理は、妥当でないため、ここでは、制御部１２ｂは、文書処理部１０ｃに要求している処理の無効化を要求すべきと判別する。
【０２２１】
尚、ＸＭＬ文書の２８行目から３２行目までに示される人物「△△△」は、本来「Japan」に所属する。しかし、文書処理部１０ｃは、人物「△△△」が「America」に所属すると誤認識しているため、処理の無効化をしなければ、人物「△△△」についての情報を図１０に示すテーブルに出力することになる。
【０２２２】
よって、制御部１２ｂは、文書処理部１０ｃに対してその処理を無効化するように要求する（ステップＳ２−３）。
【０２２３】
次に、制御部１２ｂは、自らの処理についての無効化が必要であるか否かを判別する（ステップＳ２−４）。
【０２２４】
ここでは、自らの処理についての無効化は必要でないため、制御部１２ｂは、無効化判断の処理を終了する。
【０２２５】
この時点での各文書処理部の処理分担は、図１１及び図１２に示した処理分担に戻ることになる。
【０２２６】
図１１に示す通り、ＸＭＬ文書の１４行目以降の処理は、文書処理部１０ｂが分担し、図１２に示す通り、所属国「America」の人物「ＢＢＢ」及び所属国「Japan」の全ての人物についての処理は、文書処理部１０ｂが分担することになる。
【０２２７】
続いて、文書処理部１０ｂの制御部１２ｂは、ステップＳ３からステップＳ６までの処理を実施するが、これらの処理における動作は、ＸＭＬ文書の１行目のときと同じであるため、説明を省略する。
【０２２８】
次に、文書処理部１０ｂから無効化するように要求された文書処理部１０ｃの処理について説明する。
【０２２９】
以下の例では、文書処理部１０ｃは、文書処理部１０ｂから無効化するように要求されたとき、ＸＭＬ文書の３２行目</person>を処理するところであるとする。
【０２３０】
まず、文書処理部１０ｃの制御部１２ｃは、ステップＳ１の処理を実施するが、この処理における動作は、ＸＭＬ文書の１行目のときと同じであるため、説明を省略する。
【０２３１】
ステップＳ２において、制御部１２ｃは、自身の処理を無効化するか否かを判別する。
【０２３２】
制御部１２ｃは、まず、投機並列処理を実施しているか否かを判別する（ステップＳ２−１）。
【０２３３】
ここでは、投機並列処理を実施していないので、制御部１２ｃは、ステップＳ２−４へ移行する。尚、文書処理部１０ｃが、投機並列処理を実施している場合、ステップＳ２−３で、被要求側文書処理部に対して実施している処理を無効化するように要求する。
【０２３４】
次に、制御部１２ｃは、自らの処理についての無効化が必要であるか否かを判別する（ステップＳ２−４）。
【０２３５】
ここでは、文書処理部１０ｂから処理を無効化するように要求されているため、制御部１２ｃは、自らの処理の無効化を実施する（ステップＳ２−５）。制御部１２ｃは、自らの処理を無効化するため、処理結果一時格納用記憶装置１４ｃに格納された処理結果のデータを、処理結果格納用記憶装置４０に出力せずに破棄し、自らの処理を終了する。
【０２３６】
一方、文書処理部１０ｂは、文書処理部１０ｃに処理の無効化を要求した後、ＸＭＬ文書の２２行目の<person id="1500">の行の処理において、再度、文書処理部１０ｃにＸＭＬ文書の一部に対する処理を要求する。
【０２３７】
ＸＭＬ文書の２２行目の<person id="1500">の行についての文書処理部１０ｂの処理を説明する。
【０２３８】
まず、文書処理部１０ｂの文書読込部１１ｂは、ＸＭＬ文書の２２行目を読み込む（ステップＳ１）。文書読込部１１ｂは、２２行目の内容を制御部１２ｂ及び処理実施部１３ｂに送信する。
【０２３９】
続いて、文書処理部１０ｂの制御部１２ｂは、ステップＳ２からステップＳ３までの処理を実施するが、これらの処理における動作は、ＸＭＬ文書の１行目のときの文書処理部１０ａの動作と同じであるため、説明を省略する。
【０２４０】
次に、制御部１２ｂは、文書読込部１１ｂから受信したＸＭＬ文書を解析し、投機並列処理を実施するか否かを判別する（ステップＳ４）。
【０２４１】
ここでは、文書読込部１１ｂから受信したＸＭＬ文書には「person」タグが存在するため（ステップＳ４−１）、制御部１２ｂは、自身が既に投機並列処理を実施しているか否かを判別する（ステップＳ４−２）。ここでは、文書処理部１０ｃに要求した処理は無効化しているため、制御部１２ｂは、新たに投機並列処理を実施できると判断し、ＸＭＬ文書の分割処理を実施する（ステップＳ４−３）。制御部１２ｂは、ＸＭＬ文書のうち、現在処理している<person id="1500">から「person」タグ１０００個分だけ先の箇所である<person id="2500">を示す３４行目以降を他の文書処理部に処理を実施させる部分と決定する。
【０２４２】
制御部１２ｂは、<person id="2500">を示す３４行目以降を文書処理部１０ｃに実施させる（ステップＳ４−４）。このとき、制御部１２ｂは、文書処理部１０ｃが処理すべきＸＭＬ文書の開始位置として３４行目という情報と、階層情報として、パスの情報である「/countries/country」及び「country」タグの属性の情報である「name="Japan"」とを、通信制御部２０を介して、文書処理部１０ｃの制御部１２ｃに通知する。
【０２４３】
この時点でのＸＭＬ文書の各文書処理部の処理分担を示す図を図１５に示す。
【０２４４】
図１５に示す通り、ＸＭＬ文書の３４行目以降の処理は、文書処理部１０ｃが分担することになる。
【０２４５】
また、各文書処理部の処理分担をツリー構造で示した図を図１６に示す。
【０２４６】
図１６に示す通り、所属国「Japan」の人物「□□□」及び「×××」についての処理は、文書処理部１０ｃが分担することになる。
【０２４７】
尚、上記の例では、制御部１２ｂは、処理の無効化を要求した文書処理部に対して処理を要求しなおすとき、改めて開始位置を計算しているが、最初に処理を要求したときと同じ開始位置からその文書処理部に処理させるようにしてもよい。その場合、制御部１２ｂは、ＸＭＬ文書の開始位置として<person id="2000">を示す２８行目という情報を、制御部１２ｃに通知する。
【０２４８】
次に、ＸＭＬ文書の最終行の</countries>の行の処理について説明する。
【０２４９】
以下の例では、文書処理部１０ｃが、ＸＭＬ文書の最終行の処理を実施し、そのとき、文書処理部１０ｂは、処理を終了していないものとする。
【０２５０】
まず、文書処理部１０ｃの制御部１２ｃは、ステップＳ１からステップＳ２までの処理を実施するが、これらの処理における動作は、ＸＭＬ文書の１行目のときと同じであるため、説明を省略する。
【０２５１】
ステップＳ３において、制御部１２ｃは、自身の処理について終了条件を満たしているか否かを判別する。
【０２５２】
ここでは、ＸＭＬ文書の終端まで処理を完了したため、制御部１２ｃは、自身の処理を終了すべきであると判別する（ステップＳ３−１）。
【０２５３】
自身に対して処理を要求した文書処理部１２ｂがまだ終了していないため、制御部１２ｃは、文書処理部１２ｂが終了するまで待機する（ステップＳ３−２）。
【０２５４】
文書処理部１２ｂが終了したことを確認すると、制御部１２ｃは、処理結果一時格納用記憶装置１４ｃに格納された処理結果のデータを読み出す。そして、制御部１２ｃは、読み出した処理結果のデータを処理結果格納用記憶装置４０に格納されている処理結果のデータにマージし、自身の処理を終了する（ステップＳ３−３）。
【０２５５】
以上説明したように、本実施形態によれば、情報処理装置は、階層化された文書に対して所定の処理を実施する文書処理部を複数個有する。文書処理部は、階層化された文書の階層の特徴に基づいて、その文書の一部に対する処理を他の文書処理部に投機的に実施させる。これにより、情報処理装置は、階層化された文書に対して適切に投機並列処理を実施でき、文書処理を高速化することができる。
【０２５６】
また、文書処理部は、投機並列処理を実施しているとき、階層化された文書の階層の特徴に基づいて、他の文書処理部に投機的に実施させた処理の無効にすることを指示し、当該他の文書処理部は、その指示に従って自身の処理を無効にする。これにより、情報処理装置は、投機並列処理の無効化判断のために特殊なハードウェアを必要とせず、汎用的なハードウェア構成により投機並列処理を実現できる。
【０２５７】
また、被要求側文書処理部は、要求側文書処理部から自身の処理を無効にすることを指示されると、それまでの処理結果を破棄し、自身の処理を終了する。これにより、情報処理装置は、投機的に実施した処理が妥当な処理ではなかった場合でも、誤った処理結果を出力することはない。
【０２５８】
また、要求側文書処理部は、自身が処理している文書の階層が被要求側文書処理部に処理を開始させた時点の階層より上位に遷移すると、被要求側文書処理部の処理を無効にすることを指示する。これにより、情報処理装置は、投機的に実施した処理が妥当な処理ではなかった場合、その処理を速やかに停止することができる。
【０２５９】
また、要求側文書処理部は、自身の処理が完了した時点で自身が処理している文書の階層が該文書の一部に対する処理を該他の文書処理部に実施させた時点の階層より下位である場合に、被要求側文書処理部の処理を無効にすることを指示する。これにより、情報処理装置は、投機的に実施した処理の妥当性を適切に判断し、妥当でない処理を停止することができる。
【０２６０】
また、文書処理部は、自身に対して処理を実施させた文書処理部から自身の処理を無効にすることを指示されると、自身が処理を実施させている文書処理部の処理を無効にすることを指示する。これにより、情報処理装置は、投機的に実施した処理の妥当性を適切に判断し、妥当でない処理を停止することができる。
【０２６１】
また、文書処理部は、処理している文書の階層に任意の要素が所定数以上連続して存在すること、処理している文書の階層に同一の要素が所定数以上連続して存在すること、処理している文書の階層に所定の要素が存在すること、あるいは、所定の階層を処理することのうちのいずれか、あるいは、２つ以上の条件が満たされた場合に投機並列処理を実施する。これにより、情報処理装置は、特別なハードウェアあるいはソフトウェアを用いることなく、汎用的に、階層化された文書に対して投機並列処理を実施できる。
【０２６２】
また、文書処理部は、投機並列処理を実施するとき、他の文書処理部に処理させる文書の開始位置を、自身が現在処理している文書の位置より所定量だけ先の位置とする。これにより、情報処理装置は、文書を適切に分割して効率よく並列処理を実施できる。
【０２６３】
また、文書処理部は、投機並列処理を実施するとき、他の文書処理部に処理させる文書の開始位置を、過去の投機並列処理が無効になった頻度に応じて動的に変更する。これにより、情報処理装置は、文書を適切に分割して効率よく並列処理を実施できる。
【０２６４】
また、文書処理部は、投機並列処理を実施するとき、他の文書処理部に処理させる文書の開始位置を、自身が現在処理している文書の階層における処理すべき残り量に基づいて決定する。これにより、情報処理装置は、文書を適切に分割して効率よく並列処理を実施できる。
【０２６５】
また、文書処理部は、投機並列処理を実施しているとき、自身が分担する処理を完了した場合、あるいは、文書の終端まで処理を完了した場合、それまでの処理結果を出力し、自身の処理を終了する。これにより、情報処理装置は、階層化された文書に対する投機並列処理の処理結果を正しく出力することができる。
【０２６６】
また、文書処理部は、他の文書処理部から処理を投機的に実施させられているとき、自身の処理により外部装置に影響が発生する場合、当該他の文書処理部の処理が完了するまで自身の処理を一時停止する。これにより、情報処理装置は、投機的に実施した処理が妥当な処理ではなかった場合でも、外部装置に誤った出力をすることはない。
【０２６７】
また、文書処理部は、他の文書処理部から処理を投機的に実施させられているとき、自身の処理している文書に異常を検出した場合、当該他の文書処理部の処理が完了するまで自身の処理を一時停止する。これにより、情報処理装置は、文書中に異常がある場合、適切なタイミングで利用者や上位のシステム等に対してエラー通知等の処理を行うことができる。
【０２６８】
また、本実施形態の情報処理装置は、階層化された文書としてＸＭＬ文書を処理できる。
【０２６９】
また、文書処理部は、情報処理装置は、文書中に整形式でないＸＭＬ文書を検出した場合、適切なタイミングで利用者や上位のシステム等に対してエラー通知等の処理を行うことができる。
【０２７０】
また、文書処理部は、情報処理装置は、文書中に妥当でないＸＭＬ文書を検出した場合、適切なタイミングで利用者や上位のシステム等に対してエラー通知等の処理を行うことができる。
【０２７１】
（第２の実施の形態）
第１の実施の形態の文書処理部１０ａ、１０ｂ、１０ｃおよび通信制御部２０の処理はプログラムによって実現されても良い。
【０２７２】
図１７は第２の実施の形態の情報処理装置の構成を示すブロック図である。
【０２７３】
図１７に示すように、第２の実施の形態の情報処理装置１は、複数のＣＰＵ１００ａ、１００ｂ、１００ｃと、主記憶装置１０１と、補助記憶装置１０２と、文書格納用記憶装置３０と、処理結果格納用記憶装置４０とを備え、それらが内部バス１０３を介して接続される。
【０２７４】
補助記憶装置１０２には、各文書処理部の機能を実現するためのスレッドが記録される。各ＣＰＵは、補助記憶装置１０２に記録されたスレッドを主記憶装置１０１に読み込む。ＣＰＵ１００ａ、１００ｂ、１００ｃは、主記憶装置１０１に読み込んだスレッドに従って処理を実行することにより、それぞれ、文書処理部１０ａ、１０ｂ、１０ｃの機能を実現する。
【０２７５】
各ＣＰＵは、文書格納用記憶装置３０から処理対象のＸＭＬ文書を取得し、そのＸＭＬ文書に対して所定の処理を実施し、処理結果を処理結果格納用記憶装置４０に出力する。
【０２７６】
各ＣＰＵは、ＸＭＬ文書の一部に対する処理を他のＣＰＵに実施させるとき、当該他のＣＰＵに文書の処理を実施させるためのスレッドを生成する。そして、各ＣＰＵは、当該他のＣＰＵが処理すべき文書の開始位置と、当該他のＣＰＵが文書処理するために必要な階層情報とを提供し、当該他のＣＰＵに生成したスレッドを実行するように要求する。
【０２７７】
また、各ＣＰＵは、他のＣＰＵにＸＭＬ文書の一部に対する処理を実施させるためのスレッドを実行させているときに、自身が処理しているＸＭＬ文書の階層に所定の変化が生じると、他のＣＰＵに実行させているスレッドを無効化し、当該他のＣＰＵが実施している処理を無効にさせる。当該他のＣＰＵは、実行しているスレッドが無効化され、使用しているメモリリソース等も解放される。
【０２７８】
以上説明したように、本実施形態によれば、情報処理装置は、特別なハードウェアを必要としないため、汎用的な構成で実現可能である。また、情報処理装置は、幅広い用途に適用することができる。
【符号の説明】
【０２７９】
１  情報処理装置
１０  文書処理部
１１  文書読込部
１２  制御部
１３  処理実施部
１４  処理結果一時格納用記憶装置
２０  通信制御部
３０  文書格納用記憶装置
４０  処理結果格納用記憶装置
１００  ＣＰＵ
１０１  主記憶装置
１０２  補助記憶装置
１０３  内部バス
【図１】
2011028616.tif 000003
【図２】
2011028616.tif 000004
【図３】
2011028616.tif 000005
【図４】
2011028616.tif 000006
【図５】
2011028616.tif 000007
【図６】
2011028616.tif 000008
【図７】
2011028616.tif 000009
【図８】
2011028616.tif 000010
【図９】
2011028616.tif 000011
【図１０】
2011028616.tif 000012
【図１１】
2011028616.tif 000013
【図１２】
2011028616.tif 000014
【図１３】
2011028616.tif 000015
【図１４】
2011028616.tif 000016
【図１５】
2011028616.tif 000017
【図１６】
2011028616.tif 000018
【図１７】
2011028616.tif 000019
【図１８】
2011028616.tif 000020
【図１９】
2011028616.tif 000021
【図２０】
2011028616.tif 000022
【図２１】
2011028616.tif 000023
【図２２】
2011028616.tif 000024