(57)【要約】【課題】情報処理装置のリソースを有効に利用する。【解決手段】情報処理装置１０は、タスク実行部１１０と制御部１２０とを備える。タスク実行部１１０は、タスクの実行によって新たに生じたタスクを実行する。制御部１２０は、情報処理装置１０のリソースが使用されている程度を表す使用度に基づいて、並列に実行されるタスクの数を調整するように、タスク実行部１１０を制御する。【選択図】図２
2015094976.tif 000002
【特許請求の範囲】
【請求項１】
情報処理装置であって、
タスクの実行によって新たに生じたタスクを実行するタスク実行部と、
前記情報処理装置のリソースが使用されている程度を表す使用度に基づいて、並列に実行されるタスクの数を調整するように、前記タスク実行部を制御する制御部と、
を備える、情報処理装置。
【請求項２】
請求項１に記載の情報処理装置であって、
前記タスク実行部は、タスク毎に生成されるプロセスによって当該タスクを実行するとともに、当該タスクの実行によって生じたタスクを実行するためのプロセスを生成し、
前記制御部は、前記使用度に基づいて、前記生成されるプロセスの数を調整するように、前記タスク実行部を制御する、情報処理装置。
【請求項３】
請求項２に記載の情報処理装置であって、
前記制御部は、前記使用度が第１閾値よりも大きいとき、前記生成されるプロセスの数を１つに制限するように前記タスク実行部を制御する、情報処理装置。
【請求項４】
請求項２又は請求項３に記載の情報処理装置であって、
前記制御部は、前記使用度が前記第１閾値よりも小さいとき、プロセスを複数生成するように前記タスク実行部を制御する、情報処理装置。
【請求項５】
請求項２乃至請求項４のいずれか一項に記載の情報処理装置であって、
前記制御部は、前記使用度が前記第１閾値よりも大きい第２閾値よりも大きいとき、プロセスを生成しないように前記タスク実行部を制御する、情報処理装置。
【請求項６】
請求項２乃至請求項５のいずれか一項に記載の情報処理装置であって、
前記生成されるプロセスの数の上限値である上限生成数を保持し、
前記タスク実行部は、前記保持されている上限生成数以下の数のプロセスを生成し、
前記制御部は、前記使用度に基づいて、前記保持されている上限生成数を調整する、情報処理装置。
【請求項７】
請求項２乃至請求項６のいずれか一項に記載の情報処理装置であって、
前記タスク実行部は、
前記プロセスが、
当該プロセスを生成したプロセスから受け付けた少なくとも１つの未実行タスク情報を保持し、ここで、前記未実行タスク情報は、未だ実行されていないタスクである未実行タスクを実行するための情報であり、
前記保持されている未実行タスク情報から１つの未実行タスク情報を取得し、
前記取得された未実行タスク情報の保持を終了し、
前記取得された未実行タスク情報が表すタスクを実行し、
前記タスクの実行によって新たにタスクが生じた場合に、当該生じたタスクを表す未実行タスク情報を新たに保持し、
前記タスクの実行が完了する際に、前記保持されている未実行タスク情報が存在するとき、当該未実行タスク情報が表すタスクを実行するためのプロセスを生成するとともに、当該生成されたプロセスへ、当該保持されている未実行タスク情報を送り、自身を消滅させる、情報処理装置。
【請求項８】
請求項７に記載の情報処理装置であって、
前記タスク実行部は、前記プロセスが、前記保持されている未実行タスク情報が表すタスクを実行するためのプロセスを１つ生成する場合、当該保持されている未実行タスク情報のすべてを、当該生成されたプロセスへ送る、情報処理装置。
【請求項９】
請求項７又は請求項８に記載の情報処理装置であって、
前記タスク実行部は、
前記プロセスが、前記保持されている未実行タスク情報が表すタスクを実行するためのプロセスを複数生成する場合、当該保持されている未実行タスク情報を、当該生成された複数のプロセスに分配するように、当該未実行タスク情報を当該複数のプロセスへ送る、情報処理装置。
【請求項１０】
請求項７乃至請求項９のいずれか一項に記載の情報処理装置であって、
前記タスク実行部は、前記プロセスが、前記保持されている未実行タスク情報が表すタスクを実行するためのプロセスを生成しない場合、当該保持されている未実行タスク情報を、他のプロセスによって生成されたプロセスへ送る、情報処理装置。
【請求項１１】
請求項２乃至請求項１０のいずれか一項に記載の情報処理装置であって、
前記タスク実行部は、タスクを最初に実行する際、当該タスクを実行するためのプロセスを１つ生成する、情報処理装置。
【請求項１２】
情報処理装置に適用される情報処理方法であって、
タスクの実行によって新たに生じたタスクを実行し、
前記情報処理装置のリソースが使用されている程度を表す使用度に基づいて、並列に実行されるタスクの数を調整する、情報処理方法。
【請求項１３】
請求項１２に記載の情報処理方法であって、
タスク毎に生成されるプロセスによって当該タスクを実行し、
前記タスクの実行によって生じたタスクを実行するためのプロセスを生成し、
前記プロセスを生成する際に、前記使用度に基づいて、前記生成されるプロセスの数を調整する、情報処理方法。
【請求項１４】
コンピュータに、
タスクを実行する他のコンピュータから並列に実行可能なタスクの数の上限数要求を受信し、
前記他のコンピュータのリソースが使用されている程度を表す使用度に基づいて、前記並列に実行されるタスクの数を調整して応答する、
処理を実行させるためのプログラム。
【請求項１５】
請求項１４に記載のプログラムであって、
前記処理において、
前記他のコンピュータが、タスク毎に生成されるプロセスによって当該タスクを実行するとともに、当該タスクの実行によって生じたタスクを実行するためのプロセスを生成する場合、前記生成されるプロセスの数を調整することにより、前記並列に実行されるタスクの数を調整する、プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、情報処理方法、及び、プログラムに関する。
【背景技術】
【０００２】
複数のタスクを並列に実行可能な情報処理装置が知られている（例えば、特許文献１及び特許文献２を参照）。
この種の情報処理装置の一例としての情報処理装置は、処理対象データを、処理のアルゴリズムを基準として複数に分割することにより、複数の第１の分割処理対象データを生成する。更に、情報処理装置は、複数の第１の分割処理対象データのうち、所定の処理負荷が要求される第１の分割処理対象データを、データ数を基準として複数に分割することにより、第２の分割処理対象データを生成する。そして、情報処理装置は、分割されなかった第１の分割処理対象データ、及び、第２の分割処理対象データを並列に処理する。
【０００３】
また、この種の情報処理装置の他の例としての情報処理装置は、ホストとデバイスとの間で最適な転送速度を維持できるように分割数を決定し、決定された分割数に基づいてデータを分割し、分割されたデータをホストからデバイスへ転送する。デバイスは、ホストから転送されたデータを、指定されたデータ量ずつ順次読み出して並列に処理する。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００１−１０１１５０号公報
【特許文献２】特開２０１０−２４４０９６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ところで、タスクを実行することによって、新たにタスクが生じる場合がある。例えば、ウェブページと、そのウェブページから参照されているウェブページと、を再帰的に取得し、取得されたすべてのウェブページを評価するジョブを想定する。更に、このジョブにおいて、あるウェブページを評価するために、当該ウェブページが参照されているウェブページ（即ち、参照元のウェブページ）に対する評価結果を用いる場合を想定する。
【０００６】
この場合、タスクは、あるウェブページ（対象ページ）を、参照元のウェブページに対する評価結果に基づいて評価し、対象ページから参照されているウェブページを取得する処理を含む。即ち、ジョブは、すべてのタスクの実行が完了した場合に完了する。
【０００７】
ところで、上記特許文献１及び２のいずれにも、このようなジョブを、情報処理装置のリソースを有効に利用しながら実行するための方法は提示されていない。即ち、上記特許文献１及び２に記載の情報処理装置においては、情報処理装置のリソースを有効に利用することができない場合がある。
【０００８】
そこで、本発明の目的の一つは、情報処理装置のリソースを有効に利用することにある。
【課題を解決するための手段】
【０００９】
一つの側面では、情報処理装置は、タスク実行部と制御部とを備える。タスク実行部は、タスクの実行によって新たに生じたタスクを実行する。制御部は、上記情報処理装置のリソースが使用されている程度を表す使用度に基づいて、並列に実行されるタスクの数を調整するように、上記タスク実行部を制御する。
【発明の効果】
【００１０】
情報処理装置のリソースを有効に利用することができる。
【図面の簡単な説明】
【００１１】
【図１】第１実施形態の一例としての情報処理装置の構成を表す図である。
【図２】第１実施形態の一例としての情報処理装置の機能を表すブロック図である。
【図３】第１実施形態の一例としてのジョブにおける参照元のウェブページと参照先のウェブページとの関係を概念的に示す説明図である。
【図４】第１実施形態の一例としてのジョブを構成する複数のタスクを概念的に示す説明図である。
【図５】第１実施形態の一例としてのタスクプロセスが実行する処理を表すフローチャートである。
【図６】第１実施形態の一例としての制御プロセスが実行する処理を表すフローチャートである。
【図７】第１実施形態の一例としてのタスクプロセスの変化、及び、タスクプロセスが保持する情報の変化を概念的に示す説明図である。
【図８】第１実施形態の第１変形例の一例としての制御プロセスが実行する処理を表すフローチャートである。
【図９】第２実施形態の一例としての情報処理装置の機能を表すブロック図である。
【図１０】第２実施形態の一例としてのタスクプロセスが実行する処理を表すフローチャートである。
【図１１】第２実施形態の一例としての制御プロセスが実行する処理を表すフローチャートである。
【図１２】第２実施形態の一例としてのタスクプロセスの変化、及び、タスクプロセスが保持する情報の変化を概念的に示す説明図である。
【図１３】第２実施形態の一例としての制御プロセスが保持する情報を示すテーブルである。
【発明を実施するための形態】
【００１２】
＜関連技術の課題の一例＞
先ず、関連技術に係る情報処理装置における課題の一例について説明する。
ところで、タスクを実行することによって、新たにタスクが生じる場合がある。例えば、ウェブページと、そのウェブページから参照されているウェブページと、を再帰的に取得し、取得されたすべてのウェブページを評価するジョブを想定する。更に、このジョブにおいて、あるウェブページを評価するために、当該ウェブページが参照されているウェブページ（即ち、参照元のウェブページ）に対する評価結果を用いる場合を想定する。
【００１３】
この場合、タスクは、あるウェブページ（対象ページ）を、参照元のウェブページに対する評価結果に基づいて評価し、対象ページから参照されているウェブページを取得する処理を含む。即ち、ジョブは、すべてのタスクの実行が完了した場合に完了する。
【００１４】
関連技術に係る情報処理装置は、タスクを実行し、当該実行によって新たにタスクが生じたときに当該生じたタスクを実行する処理を繰り返し実行する。
このとき、情報処理装置は、並列処理を行なうためのモデル（例えば、アクターモデル等）に従って複数のタスクを並列に実行する。情報処理装置は、タスク毎に当該タスクを実行するためのプロセスを生成する。なお、プロセスは、アクターモデルにおいては、アクターとも呼ばれる。
これにより、ジョブを完了するまでに要する時間を短縮することができる。
【００１５】
上記ジョブにおいては、タスクの実行によって複数のタスクが新たに生じた場合、当該新たに生じた複数のタスク間の依存関係が存在しない。換言すると、新たに生じた複数のタスクの任意の１つを実行するために、当該複数のタスクのうちの他のタスクの実行結果が要求されない。従って、情報処理装置は、新たに生じた複数のタスクを並列に実行することができる。このため、情報処理装置は、タスクの実行によって複数のタスクが新たに生じた場合に当該新たに生じた複数のタスクを並列に実行するように、当該新たに生じたタスクと同数のプロセスを生成する。
【００１６】
上記のようなジョブにおいては、タスクの実行によって新たに生じるタスクの数を予め取得することができない。従って、上記の情報処理装置では、新たに生じたタスクの数が急激に増加することにより、生成されるプロセスの数が過大となることがある。その結果、情報処理装置のリソース（例えば、記憶装置が有する記憶領域、及び／又は、処理装置が処理を実行可能な時間等）が枯渇する場合があった。即ち、情報処理装置のリソースを有効に利用することができないという課題があった。
【００１７】
以下、情報処理装置、情報処理方法、及び、プログラムの実施形態について図１乃至図１３を参照しながら説明する。
【００１８】
＜第１実施形態＞
（概要）
第１実施形態に係る情報処理装置は、タスク実行部と制御部とを備える。タスク実行部は、タスクの実行によって新たに生じたタスクを実行する。制御部は、上記情報処理装置のリソースが使用されている程度を表す使用度に基づいて、並列に実行されるタスクの数を調整するように、上記タスク実行部を制御する。
【００１９】
これによれば、使用度に基づいて、並列に実行されるタスクの数が調整される。これにより、情報処理装置が並列に実行するタスクの数が過大となることを回避することができる。この結果、情報処理装置のリソースを有効に利用することができる。
【００２０】
以下、第１実施形態に係る情報処理装置について詳細に説明する。
（構成）
図１に示すように、第１実施形態に係る情報処理装置１０は、処理装置１１と、記憶装置１２と、通信装置１３と、媒体読取装置１４と、を備える。処理装置１１、記憶装置１２、通信装置１３、及び、媒体読取装置１４は、バスＢＳを介して、互いに情報を伝達可能に接続されている。
【００２１】
例えば、情報処理装置１０は、コンピュータ（例えば、サーバ、又は、クライアント端末）である。情報処理装置１０は、複数のコンピュータであってもよい。また、情報処理装置１０は、複数の処理装置１１を備えていてもよい。また、情報処理装置１０は、複数の記憶装置１２を備えていてもよい。例えば、情報処理装置１０は、ラックマウント型サーバ、又は、ブレードサーバであってもよい。また、情報処理装置１０は、複数のサーバが通信可能に接続されることにより実現されていてもよい。
【００２２】
処理装置１１は、記憶装置１２に記憶（格納）されたプログラムを実行することにより、情報を処理するとともに、情報処理装置１０が備える各装置を制御する。これにより、情報処理装置１０は、後述する機能を実現する。例えば、処理装置１１は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）である。なお、処理装置１１は、ＬＳＩ（Ｌａｒｇｅ  Ｓｃａｌｅ  Ｉｎｔｅｇｒａｔｉｏｎ）、又は、プログラム可能な論理回路装置（ＰＬＤ；Ｐｒｏｇｒａｍｍａｂｌｅ  Ｌｏｇｉｃ  Ｄｅｖｉｃｅ）であってもよい。
【００２３】
記憶装置１２は、情報を読み書き可能に記憶する。例えば、記憶装置１２は、ＲＡＭ、ＲＯＭ、ＨＤＤ、ＳＳＤ、半導体メモリ、及び、有機メモリの少なくとも１つを備える。ＲＡＭは、Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙの略記である。ＲＯＭは、Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙの略記である。ＨＤＤは、Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅの略記である。ＳＳＤは、Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅの略記である。本例では、記憶装置１２は、ＲＡＭとＨＤＤとを備える。
【００２４】
通信装置１３は、図示しない通信網（本例では、ＩＰ（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）網）に接続されている。通信装置１３は、通信網を介して、他の装置と通信可能である。
【００２５】
媒体読取装置１４には、記録媒体ＲＭが装着可能である。媒体読取装置１４は、記録媒体ＲＭが装着された状態において、記録媒体ＲＭに記録されている情報を読み取り可能である。本例では、記録媒体ＲＭは、可搬性を有する。例えば、記録媒体ＲＭは、フレキシブルディスク、光ディスク、磁気ディスク、光磁気ディスク、又は、半導体メモリ等である。本例では、プログラムは、記憶装置１２に予め記憶されている。なお、プログラムは、記録媒体ＲＭに記録されていてもよい。
【００２６】
（機能）
図２は、情報処理装置１０の機能を表すブロック図である。情報処理装置１０は、機能的に、タスク実行部１１０と、制御部１２０と、を含む。なお、タスク実行部１１０及び制御部１２０は、複数の異なる処理装置１１によってそれぞれ実現されていてもよい。また、タスク実行部１１０及び制御部１２０は、複数の異なるコンピュータによってそれぞれ実現されていてもよい。
【００２７】
本例では、ジョブは、ウェブページと、そのウェブページから参照されているウェブページ（参照先のウェブページ）と、を再帰的に取得し、取得されたすべてのウェブページを評価するジョブである。更に、このジョブにおいて、あるウェブページを評価するために、当該ウェブページが参照されているウェブページ（即ち、参照元のウェブページ）に対する評価結果が用いられる。即ち、タスクは、あるウェブページ（対象ページ）を取得し、取得された対象ページを、参照元のウェブページに対する評価結果に基づいて評価し、対象ページから参照されているウェブページ（参照先のウェブページ）を特定する処理を含む。従って、ジョブは、タスクが実行されることによって、新たなタスクを生じ得る。
【００２８】
例えば、ジョブは、図３に示すように、あるウェブページＰ＃０と、そのウェブページから参照されているウェブページ（参照先のウェブページ）Ｐ＃１〜Ｐ＃７と、を再帰的に取得し、取得されたすべてのウェブページＰ＃０〜Ｐ＃７を評価するジョブである。図３における矢印は、参照元のウェブページと参照先のウェブページとの関係を示す。例えば、ウェブページＰ＃０からウェブページＰ＃１へ向かう矢印は、ウェブページＰ＃１が、ウェブページＰ＃０から参照されていることを示す。
【００２９】
図４に示すように、このジョブは、１７個のタスクＴ＃１〜Ｔ＃１７を含む。最初のタスク（第１のタスク）は、ウェブページ（対象ページ）Ｐ＃０を取得し、取得された対象ページＰ＃０を評価し、対象ページＰ＃０から参照されている参照先のウェブページＰ＃１，Ｐ＃２を特定する処理を含む。第１のタスクが実行されることにより、新たに２つのタスク（第２のタスク及び第３のタスク）が生じる。
【００３０】
第２のタスクは、ウェブページ（対象ページ）Ｐ＃１を取得し、取得された対象ページＰ＃１を、参照元のウェブページＰ＃０に対する評価結果に基づいて評価し、対象ページＰ＃１から参照されている参照先のウェブページＰ＃３を特定する処理を含む。第３のタスクは、ウェブページ（対象ページ）Ｐ＃２を取得し、取得された対象ページＰ＃２を、参照元のウェブページＰ＃０に対する評価結果に基づいて評価する処理を含む。更に、第３のタスクは、対象ページＰ＃２から参照されている参照先のウェブページＰ＃１，Ｐ＃４，Ｐ＃５を特定する処理を含む。
【００３１】
更に、第２のタスクが実行されることにより、新たに１つのタスク（第４のタスク）が生じる。第４のタスクは、ウェブページ（対象ページ）Ｐ＃３を取得し、取得された対象ページＰ＃３を、参照元のウェブページＰ＃１に対する評価結果に基づいて評価し、対象ページＰ＃３から参照されている参照先のウェブページＰ＃６を特定する処理を含む。
【００３２】
また、第３のタスクが実行されることにより、新たに３つのタスク（第５のタスク、第６のタスク及び第７のタスク）が生じる。第５のタスクは、ウェブページ（対象ページ）Ｐ＃１を取得し、取得された対象ページＰ＃１を、参照元のウェブページＰ＃２に対する評価結果に基づいて評価し、対象ページＰ＃１から参照されている参照先のウェブページＰ＃３を特定する処理を含む。
【００３３】
第６のタスクは、ウェブページ（対象ページ）Ｐ＃４を取得し、取得された対象ページＰ＃４を、参照元のウェブページＰ＃２に対する評価結果に基づいて評価する処理を含む。更に、第６のタスクは、対象ページＰ＃４から参照されている参照先のウェブページＰ＃１，Ｐ＃５，Ｐ＃７，Ｐ＃６を特定する処理を含む。第７のタスクは、ウェブページ（対象ページ）Ｐ＃５を取得し、取得された対象ページＰ＃５を、参照元のウェブページＰ＃２に対する評価結果に基づいて評価し、対象ページＰ＃５から参照されている参照先のウェブページＰ＃７を特定する処理を含む。
【００３４】
上記ジョブにおいては、タスクの実行によって複数のタスクが新たに生じた場合、当該新たに生じた複数のタスク間の依存関係が存在しない。換言すると、新たに生じた複数のタスクの任意の１つを実行するために、当該複数のタスクのうちの他のタスクの実行結果（本例では、評価結果）が要求されない。具体的には、第２のタスク及び第３のタスク間では、依存関係が存在しない。同様に、第５のタスク〜第７のタスク間では、依存関係が存在しない。
【００３５】
タスク実行部１１０は、タスクを実行し、当該実行によって新たにタスクが生じたときに当該生じたタスクを実行する処理を繰り返し実行することにより、ジョブを構成する複数のタスクを実行する。ジョブは、すべてのタスクが完了した場合に完了する。
【００３６】
上述したように、上記ジョブにおいては、タスクの実行によって複数のタスクが新たに生じた場合、当該新たに生じた複数のタスク間の依存関係が存在しない。従って、新たに生じた複数のタスクは、並列に実行され得る。このため、タスク実行部１１０は、複数のタスクを並列に実行可能に構成される。
本例では、タスク実行部１１０は、後述する処理を実行するプロセス（タスクプロセス）を生成することにより機能を実現する。
【００３７】
プロセスは、他のプロセスから独立して処理を実行可能である。更に、プロセスは、他のプロセスとの間で情報を授受可能である。即ち、プロセスは、プロセス間通信（本例では、メッセージパッシング）を実行可能である。プロセスは、自身（自プロセス）に固有の（本例では、自プロセスに対応付けられた）記憶領域（バッファ領域）を有する。プロセスが生成される場合、当該プロセスに対応付けられたバッファ領域は、記憶装置１２の記憶領域内に確保される。プロセスが消滅する場合、当該プロセスに対応付けられたバッファ領域は、解放される。
本例では、プロセスは、アクターモデルにおけるアクターとして機能する。
【００３８】
タスク実行部１１０は、情報処理装置１０がジョブ実行指示を受け付けた場合に、タスクプロセスを１つ生成する。タスクプロセスは、タスクを実行するためのプロセスである。後述するように、タスクプロセスは、１つのタスクのみを実行する。従って、タスク実行部１１０は、ジョブを構成する複数のタスクを、タスク毎に生成されるタスクプロセスによって当該タスクを実行することにより実行する。
【００３９】
なお、情報処理装置１０がジョブ実行指示を受け付けた場合に生成されたタスクプロセスによって実行されるタスクは、上記ジョブ実行指示に係るジョブにおいて最初に実行されるタスクの一例である。
【００４０】
ジョブ実行指示は、ジョブの実行を指示する情報である。ジョブ実行指示は、１つのタスクを表す未実行タスク情報を含む。未実行タスク情報は、未だ実行されていないタスクである未実行タスクを実行するための情報である。
【００４１】
本例では、ジョブ実行指示に含まれる未実行タスク情報は、あるウェブページ（対象ページ）を特定するための情報（例えば、ＵＲＩ（Ｕｎｉｆｏｒｍ  Ｒｅｓｏｕｒｃｅ  Ｉｄｅｎｔｉｆｉｅｒ）を表す情報）と、評価プログラムを表す情報と、を含む。評価プログラムは、対象ページを取得し、取得された対象ページを、参照元のウェブページに対する評価結果に基づいて評価し、対象ページから参照されている参照先のウェブページを特定する処理を実行するためのプログラムである。
【００４２】
例えば、ジョブ実行指示は、情報処理装置１０のユーザによって情報処理装置１０に入力されてもよい。また、ジョブ実行指示は、情報処理装置１０と通信可能に接続された、情報処理装置１０と異なる装置から情報処理装置１０へ送信されてもよい。
【００４３】
タスク実行部１１０は、生成されたタスクプロセスへ、ジョブ実行指示に含まれる未実行タスク情報を送る。
タスクプロセスは、自身（自プロセス）へ送られた未実行タスク情報を保持する。本例では、タスクプロセスは、未実行タスク情報をバッファ領域に記憶させることにより未実行タスク情報を保持する。本例では、未実行タスク情報は、後入れ先出し方式（ＬＩＦＯ又はＦＩＬＯ）に従って保持される。ＬＩＦＯは、Ｌａｓｔ  Ｉｎ  Ｆｉｒｓｔ  Ｏｕｔの略記である。ＦＩＬＯは、Ｆｉｒｓｔ  Ｉｎ  Ｌａｓｔ  Ｏｕｔの略記である。例えば、未実行タスク情報を管理するデータ構造は、スタック構造である。
【００４４】
タスクプロセスは、保持されている未実行タスク情報から１つの未実行タスク情報を取得する。これにより、タスクプロセスは、取得された未実行タスク情報の保持を終了する（本例では、バッファ領域から消去する）。タスクプロセスは、取得された未実行タスク情報が表すタスクを実行する。
【００４５】
タスクプロセスは、タスクの実行によって新たにタスクが生じた場合に、当該生じたタスクを表す未実行タスク情報を新たに保持する。本例では、新たに保持される未実行タスク情報は、参照先のウェブページを特定するための情報と、評価プログラムを表す情報と、参照元のウェブページに対する評価結果を表す情報と、を含む。
【００４６】
なお、保持されている未実行タスク情報が表すタスクは、未実行タスク群に含まれるタスクの一例である。また、未実行タスク情報が新たに保持されることは、タスクの実行によって新たに生じたタスクが未実行タスク群に追加されることの一例である。
【００４７】
タスクプロセスは、タスクの実行が完了する際に、保持されている未実行タスク情報の数が１つ以上であるとき、上限生成数要求を後述する制御プロセスへ送る。上限生成数要求は、上限生成数の送信を要求する旨を表す情報である。上限生成数は、１つのタスクプロセスによって新たに生成されるタスクプロセスの数の上限値である。なお、上限生成数が調整されることは、並列に実行されるタスクの数が調整されることの一例である。従って、上限生成数要求は、並列に実行可能なタスクの数の要求（例えば、上限数要求と呼ばれる）であると捉えられてもよい。
【００４８】
タスクプロセスは、後述するように制御プロセスから上限生成数を受け付ける。タスクプロセスは、保持されている未実行タスク情報の数（未実行タスク数）と、受け付けた上限生成数と、の小さい方の数の、未実行タスク情報が表すタスクを実行するためのタスクプロセスを新たに生成する。
【００４９】
タスクプロセスは、タスクプロセスを１つ生成した場合、保持されている未実行タスク情報のすべてを、当該生成されたタスクプロセスへ送る。一方、タスクプロセスは、タスクプロセスを複数生成した場合、保持されている未実行タスク情報を、当該生成された複数のタスクプロセスに分配するように、未実行タスク情報を複数のタスクプロセスへ送る。
タスクプロセスは、タスクの実行が完了した場合、自身（自プロセス）を消滅させる。
【００５０】
なお、タスク実行部１１０が１つのタスクプロセスのみによって１つのタスクのみを実行することは、情報処理装置１０が逐次実行方式に従ってタスクを実行していることの一例である。また、タスク実行部１１０が複数のタスクプロセスによって複数のタスクを並列に実行することは、情報処理装置１０が並列実行方式に従ってタスクを実行していることの一例である。
【００５１】
制御部１２０は、情報処理装置１０のリソースが使用されている程度を表す使用度に基づいて、生成されるタスクプロセスの数を調整するように、タスク実行部１１０を制御する。
例えば、情報処理装置１０のリソースは、記憶装置１２が有する記憶領域、及び／又は、処理装置１１が処理を実行可能な時間等である。本例では、使用度は、記憶装置１２が備えるＲＡＭが有する記憶領域の使用率（メモリ使用率）である。メモリ使用率は、ＲＡＭが有するすべての記憶領域の容量に対する、既に使用されている（又は、使用されるために確保されている）記憶領域の容量の比である。
【００５２】
なお、使用度は、ＲＡＭが有する記憶領域のうちの、未だ使用されていない（新たに使用可能な）記憶領域の容量（空き容量）を表すパラメータであってもよい。例えば、パラメータは、空き容量が大きくなるほど小さくなる値である。また、使用度は、処理装置１１の使用率（ＣＰＵ使用率）であってもよい。ＣＰＵ使用率は、単位時間に対する、当該単位時間において処理装置１１が使用される時間の比である。また、使用度は、メモリ使用率、空き容量を表すパラメータ、及び、ＣＰＵ使用率の任意の２つ又はすべてに基づく値（例えば、重み付け平均した値等）であってもよい。
【００５３】
制御部１２０は、後述する処理を実行するプロセス（制御プロセス）を生成することにより機能を実現する。
制御部１２０は、情報処理装置１０がジョブ実行指示を受け付けた場合に、制御プロセスを生成する。
【００５４】
制御プロセスは、上限生成数を保持する。本例では、制御プロセスは、上限生成数を、自プロセスに対応付けられたバッファ領域に記憶させることにより上限生成数を保持する。また、制御プロセスは、上限生成数の初期値として「１」を保持する。
【００５５】
制御プロセスは、予め設定された取得周期が経過する毎に、使用度を取得する。なお、制御プロセスは、タスクプロセスから上限生成数要求を受け付けた場合に、使用度を取得してもよい。
【００５６】
制御プロセスは、タスクプロセスから上限生成数要求を受け付ける。制御プロセスは、上限生成数要求を受け付けた場合、取得された使用度の最新の値に基づいて、保持されている上限生成数を調整する。
【００５７】
本例では、制御プロセスは、使用度（本例では、メモリ使用率）が所定の第１閾値（本例では、「６０％」）以上である場合、上限生成数を減少させる。本例では、この場合、制御プロセスは、保持されている上限生成数を、当該上限生成数を所定の増減係数（本例では、「２」）により除した値に更新する。
【００５８】
一方、制御プロセスは、使用度が上記第１閾値よりも小さい場合、上限生成数を増加させる。本例では、この場合、制御プロセスは、保持されている上限生成数を、当該上限生成数に上記増減係数を乗じた値に更新する。
【００５９】
更に、制御プロセスは、更新された上限生成数が下限閾値である「１」よりも小さい場合、保持されている上限生成数を「１」に設定（更新）する。また、制御プロセスは、更新された上限生成数が所定の上限閾値（本例では、「１２８」）よりも大きい場合、保持されている上限生成数を上限閾値に設定する。
【００６０】
制御プロセスは、上限生成数要求を送ってきたタスクプロセスへ、保持されている上限生成数を送る。
【００６１】
（動作）
次に、上述した情報処理装置１０の動作について、図５乃至図７を参照しながら説明する。
先ず、情報処理装置１０は、ジョブ実行指示を受け付ける。これにより、情報処理装置１０は、制御プロセス及びタスクプロセスＴＰ＃１を１つずつ生成する。従って、制御プロセスに対応付けられたバッファ領域、及び、タスクプロセスＴＰ＃１に対応付けられたバッファ領域が確保される。
【００６２】
更に、情報処理装置１０は、生成されたタスクプロセスＴＰ＃１へ、ジョブ実行指示に含まれる未実行タスク情報（第１の未実行タスク情報）を送る。第１の未実行タスク情報は、タスク（第１のタスク）Ｔ＃１を表す情報である。本例では、第１の未実行タスク情報は、ウェブページ（対象ページ）Ｐ＃０を特定するための情報と、評価プログラムを表す情報と、を含む。
【００６３】
タスクプロセスＴＰ＃１は、図５にフローチャートにより示す処理を実行する。具体的には、タスクプロセスＴＰ＃１は、未実行タスク情報を受け付けるまで待機する（図５のステップＳ１０１の「Ｎｏ」ルート）。上記仮定に従えば、タスクプロセスＴＰ＃１は、第１の未実行タスク情報を受け付ける。これにより、タスクプロセスＴＰ＃１は、「Ｙｅｓ」と判定して、受け付けられた第１の未実行タスク情報を新たに保持する（図５のステップＳ１０２）。
【００６４】
次いで、タスクプロセスＴＰ＃１は、保持されている未実行タスク情報から１つの未実行タスク情報（第１の未実行タスク情報）を取得する（図５のステップＳ１０３）。これにより、タスクプロセスＴＰ＃１は、取得された第１の未実行タスク情報の保持を終了する。そして、タスクプロセスＴＰ＃１は、取得された第１の未実行タスク情報が表すタスクＴ＃１を実行する（図５のステップＳ１０４）。
【００６５】
本例では、タスクプロセスＴＰ＃１は、タスクＴ＃１を実行することにより、ウェブページ（対象ページ）Ｐ＃０を取得し、取得された対象ページＰ＃０を評価し、対象ページＰ＃０から参照されている参照先のウェブページＰ＃１，Ｐ＃２を特定する。これにより、タスクＴ＃２（第２のタスク）及びタスクＴ＃３（第３のタスク）が新たに生じる。
【００６６】
そして、タスクプロセスＴＰ＃１は、タスクの実行によって新たにタスクが生じたか否かを判定する（図５のステップＳ１０５）。次いで、タスクプロセスＴＰ＃１は、「Ｙｅｓ」と判定して、新たに生じたタスクＴ＃２を表す第２の未実行タスク情報と、新たに生じたタスクＴ＃３を表す第３の未実行タスク情報と、を新たに保持する（図５のステップＳ１０６）。
【００６７】
本例では、第２の未実行タスク情報は、参照先のウェブページＰ＃１を特定するための情報と、評価プログラムを表す情報と、参照元のウェブページＰ＃０に対する評価結果を表す情報と、を含む。同様に、第３の未実行タスク情報は、参照先のウェブページＰ＃２を特定するための情報と、評価プログラムを表す情報と、参照元のウェブページＰ＃０に対する評価結果を表す情報と、を含む。
【００６８】
なお、タスクの実行によって新たにタスクが生じなかった場合、タスクプロセスＴＰ＃１は、ステップＳ１０６の処理を実行することなく、ステップＳ１０７へ進む。
【００６９】
次いで、タスクプロセスＴＰ＃１は、未実行タスクが存在するか否かを判定する（図５のステップＳ１０７）。タスクプロセスＴＰ＃１は、保持されている未実行タスク情報の数が１以上である場合、未実行タスクが存在すると判定する。この時点では、保持されている未実行タスク情報の数は、「２」である。従って、タスクプロセスＴＰ＃１は、「Ｙｅｓ」と判定して、上限生成数要求を制御プロセスへ送る（図５のステップＳ１０８）。
【００７０】
その後、タスクプロセスＴＰ＃１は、制御プロセスから上限生成数を受け付けるまで待機する（図５のステップＳ１０９の「Ｎｏ」ルート）。
【００７１】
一方、制御プロセスは、図６にフローチャートにより示す処理を実行する。具体的には、制御プロセスは、上限生成数要求を受け付けるまで待機する（図６のステップＳ２０１の「Ｎｏ」ルート）。上記仮定に従えば、制御プロセスは、タスクプロセスＴＰ＃１から上限生成数要求を受け付ける。これにより、制御プロセスは、「Ｙｅｓ」と判定して、取得周期が経過する毎に取得された使用度のうちの、最新の値を取得する（図６のステップＳ２０２）。
【００７２】
次いで、制御プロセスは、取得された使用度が第１閾値以上であるか否かを判定する（図６のステップＳ２０３）。ここでは、使用度が第１閾値以上である場合を想定する。この場合、制御プロセスは、「Ｙｅｓ」と判定して、上限生成数を減少させる（図６のステップＳ２０４）。本例では、制御プロセスは、保持されている上限生成数（この時点では、「１」）を、当該上限生成数を上記増減係数（本例では、「２」）により除した値（即ち、「０．５」）に更新する。
【００７３】
次いで、制御プロセスは、保持されている上限生成数が「１」よりも小さいか否かを判定する（図６のステップＳ２０５）。この時点では、上限生成数は、「０．５」である。従って、制御プロセスは、「Ｙｅｓ」と判定して、上限生成数を「１」に設定する（図６のステップＳ２０６）。なお、上限生成数が「１」以上である場合、制御プロセスは、ステップＳ２０６の処理を実行することなくステップＳ２０７へ進む。
【００７４】
そして、制御プロセスは、保持されている上限生成数を、ステップＳ２０１にて上限生成数要求を送ってきたタスクプロセス（ここでは、タスクプロセスＴＰ＃１）へ送る。その後、制御プロセスは、ステップＳ２０１へ戻り、ステップＳ２０１〜ステップＳ２１０の処理を繰り返し実行する。なお、ステップＳ２０８〜ステップＳ２１０の処理については後述する。
【００７５】
一方、タスクプロセスＴＰ＃１は、制御プロセスから上限生成数を受け付ける。これにより、タスクプロセスＴＰ＃１は、図５のステップＳ１０９にて「Ｙｅｓ」と判定して、未実行タスク数が上限生成数以上であるか否かを判定する（図５のステップＳ１１０）。ここで、未実行タスク数は、保持されている未実行タスク情報の数である。
【００７６】
この時点では、未実行タスク数は、「２」であり、上限生成数は、「１」である。従って、タスクプロセスＴＰ＃１は、「Ｙｅｓ」と判定して、上限生成数のタスクプロセスを生成する（図５のステップＳ１１１）。即ち、この時点では、タスクプロセスＴＰ＃１は、１つのタスクプロセスを生成する。
【００７７】
図７に示すように、この時点ｔ１では、タスクプロセスＴＰ＃１は、第２の未実行タスク情報及び第３の未実行タスク情報を保持している。
【００７８】
なお、本例では、各未実行タスク情報は、個別情報と共通情報とからなる。個別情報は、各未実行タスクに固有の情報である。本例では、個別情報は、参照先のウェブページを特定するための情報である。また、共通情報は、未実行タスク間で共通する情報である。本例では、共通情報は、評価プログラムを表す情報と、参照元のウェブページに対する評価結果を表す情報と、からなる。
【００７９】
本例では、複数の未実行タスク情報が、同一の共通情報を有する場合、タスクプロセスは、当該共通情報を１つ保持する。例えば、第２の未実行タスク情報は、個別情報ＩＩ＃０−１と共通情報ＣＩ＃１とからなる。また、第３の未実行タスク情報は、個別情報ＩＩ＃０−２と共通情報ＣＩ＃１とからなる。即ち、複数の未実行タスク情報（ここでは、第２の未実行タスク情報及び第３の未実行タスク情報）は、同一の共通情報ＣＩ＃１を有している。従って、タスクプロセスＴＰ＃１は、第２の未実行タスク情報の個別情報ＩＩ＃０−１と、第３の未実行タスク情報の個別情報ＩＩ＃０−２と、共通情報ＣＩ＃１と、を保持する。
【００８０】
なお、未実行タスク数が上限生成数よりも少ない場合、タスクプロセスＴＰ＃１は、ステップＳ１１０にて「Ｎｏ」と判定して、未実行タスク数のタスクプロセスを生成する（図５のステップＳ１１３）。
【００８１】
次いで、タスクプロセスＴＰ＃１は、生成されたタスクプロセスＴＰ＃２へ、保持されている未実行タスク情報のすべて（ここでは、第２の未実行タスク情報及び第３の未実行タスク情報）を送る（図５のステップＳ１１２）。本例では、タスクプロセスＴＰ＃１は、個別情報ＩＩ＃０−１，ＩＩ＃０−２と共通情報ＣＩ＃１とをタスクプロセスＴＰ＃２へ送る。
【００８２】
そして、タスクプロセスＴＰ＃１は、図５に示す処理を終了する。これにより、タスクプロセスＴＰ＃１は、自身（自プロセスＴＰ＃１）を消滅させる。従って、タスクプロセスＴＰ＃１に対応付けられたバッファ領域が解放される。
【００８３】
なお、タスクプロセスＴＰ＃１は、ステップＳ１０７に進んだ時点にて、未実行タスクが存在しない場合、ステップＳ１０８〜ステップＳ１１３の処理を実行することなく、図５に示す処理を終了する。
【００８４】
タスクプロセスＴＰ＃２も、タスクプロセスＴＰ＃１と同様に、図５に示す処理を実行する。従って、タスクプロセスＴＰ＃２は、タスクプロセスＴＰ＃１から受け付けた未実行タスク情報（ここでは、第２の未実行タスク情報及び第３の未実行タスク情報）を保持する（図５のステップＳ１０２）。そして、タスクプロセスＴＰ＃２は、保持されている未実行タスク情報から１つの未実行タスク情報（ここでは、第３の未実行タスク情報）を取得する（図５のステップＳ１０３）。これにより、タスクプロセスＴＰ＃２は、取得された第３の未実行タスク情報の保持を終了する。即ち、図７に示すように、この時点ｔ２では、タスクプロセスＴＰ＃２は、個別情報ＩＩ＃０−１と共通情報ＣＩ＃１とを保持する。
【００８５】
そして、タスクプロセスＴＰ＃２は、取得された第３の未実行タスク情報が表すタスクＴ＃３を実行する（図５のステップＳ１０４）。
本例では、タスクプロセスＴＰ＃２は、タスクＴ＃３を実行することにより、ウェブページ（対象ページ）Ｐ＃２を取得し、取得された対象ページＰ＃２を評価し、対象ページＰ＃２から参照されている参照先のウェブページＰ＃１，Ｐ＃４，Ｐ＃５を特定する。これにより、タスクＴ＃５（第５のタスク）、タスクＴ＃６（第６のタスク）、及び、タスクＴ＃７（第７のタスク）が新たに生じる。
【００８６】
そして、タスクプロセスＴＰ＃２は、新たに生じたタスクＴ＃５，Ｔ＃６，Ｔ＃７を表す未実行タスク情報（ここでは、第５の未実行タスク情報、第６の未実行タスク情報及び第７の未実行タスク情報）を新たに保持する（図５のステップＳ１０６）。本例では、第５の未実行タスク情報は、個別情報ＩＩ＃２−１と共通情報ＣＩ＃２とからなる。また、第６の未実行タスク情報は、個別情報ＩＩ＃２−４と共通情報ＣＩ＃２とからなる。また、第７の未実行タスク情報は、個別情報ＩＩ＃２−５と共通情報ＣＩ＃２とからなる。
【００８７】
そして、タスクプロセスＴＰ＃２は、上限生成数要求を制御プロセスへ送る（図５のステップＳ１０８）。
【００８８】
制御プロセスは、タスクプロセスＴＰ＃２から上限生成数要求を受け付けると、取得された使用度が第１閾値以上であるか否かを判定する（図６のステップＳ２０３）。ここでは、使用度が第１閾値よりも小さい場合を想定する。この場合、制御プロセスは、「Ｎｏ」と判定して、上限生成数を増加させる（図６のステップＳ２０８）。本例では、制御プロセスは、保持されている上限生成数（この時点では、「１」）を、当該上限生成数に上記増減係数（本例では、「２」）を乗じた値（即ち、「２」）に更新する。
【００８９】
次いで、制御プロセスは、保持されている上限生成数が上限閾値（本例では、「１２８」）よりも大きいか否かを判定する（図６のステップＳ２０９）。この時点では、上限生成数は、「２」である。従って、制御プロセスは、「Ｎｏ」と判定して、保持されている上限生成数を、ステップＳ２０１にて上限生成数要求を送ってきたタスクプロセス（ここでは、タスクプロセスＴＰ＃２）へ送る。
【００９０】
その後、制御プロセスは、ステップＳ２０１へ戻り、ステップＳ２０１〜ステップＳ２１０の処理を繰り返し実行する。
なお、ステップＳ２０８にて更新された上限生成数が上限閾値よりも大きい場合、制御プロセスは、保持されている上限生成数を上限閾値に設定した（図６のステップＳ２１０）後、ステップＳ２０７へ進む。
【００９１】
一方、タスクプロセスＴＰ＃２は、制御プロセスから上限生成数を受け付ける。この時点では、未実行タスク数は、「４」であり、上限生成数は、「２」である。従って、タスクプロセスＴＰ＃２は、「Ｙｅｓ」と判定して、上限生成数のタスクプロセスを生成する（図５のステップＳ１１１）。即ち、この時点では、タスクプロセスＴＰ＃２は、２つのタスクプロセスＴＰ＃３，ＴＰ＃４を生成する。
【００９２】
図７に示すように、この時点ｔ３では、タスクプロセスＴＰ＃２は、未実行タスク情報（ここでは、第２の未実行タスク情報、第５の未実行タスク情報、第６の未実行タスク情報及び第７の未実行タスク情報）を保持している。
次いで、タスクプロセスＴＰ＃２は、保持されている未実行タスク情報を、生成された複数のタスクプロセスＴＰ＃３，ＴＰ＃４に分配するように、複数のタスクプロセスＴＰ＃３，ＴＰ＃４へ送る。
【００９３】
本例では、タスクプロセスは、所定の分配数（本例では、「３」）の未実行タスク情報を１つのタスクプロセスへ送り、残余の未実行タスク情報を他のタスクプロセスへ送る。具体的には、タスクプロセスＴＰ＃２は、第２の未実行タスク情報、第５の未実行タスク情報及び第６の未実行タスク情報をタスクプロセスＴＰ＃４へ送るとともに、第７の未実行タスク情報をタスクプロセスＴＰ＃３へ送る。
【００９４】
より具体的に述べると、タスクプロセスＴＰ＃２は、個別情報ＩＩ＃０−１，ＩＩ＃２−１，ＩＩ＃２−４と共通情報ＣＩ＃１，ＣＩ＃２とをタスクプロセスＴＰ＃４へ送る。更に、タスクプロセスＴＰ＃２は、個別情報ＩＩ＃２−５と共通情報ＣＩ＃２とをタスクプロセスＴＰ＃３へ送る。
【００９５】
なお、タスクプロセスは、各タスクプロセスに送られる未実行タスク情報の数を等しくするように、未実行タスク情報を複数のタスクプロセスへ送ってもよい。
【００９６】
そして、タスクプロセスＴＰ＃２は、図５に示す処理を終了する。これにより、タスクプロセスＴＰ＃２は、自身（自プロセスＴＰ＃２）を消滅させる。従って、タスクプロセスＴＰ＃２に対応付けられたバッファ領域が解放される。
【００９７】
タスクプロセスＴＰ＃３及びタスクプロセスＴＰ＃４のそれぞれも、タスクプロセスＴＰ＃１，ＴＰ＃２と同様に、図５に示す処理を実行する。
【００９８】
タスクプロセスＴＰ＃３は、保持されている未実行タスク情報から１つの未実行タスク情報（ここでは、第７の未実行タスク情報）を取得する（図５のステップＳ１０３）。これにより、タスクプロセスＴＰ＃３は、取得された第７の未実行タスク情報の保持を終了する。即ち、図７に示すように、この時点ｔ４では、タスクプロセスＴＰ＃３は、未実行タスク情報を保持していない。
【００９９】
同様に、タスクプロセスＴＰ＃４は、保持されている未実行タスク情報から１つの未実行タスク情報（ここでは、第６の未実行タスク情報）を取得する（図５のステップＳ１０３）。これにより、タスクプロセスＴＰ＃４は、取得された第６の未実行タスク情報の保持を終了する。即ち、図７に示すように、この時点ｔ５では、タスクプロセスＴＰ＃４は、個別情報ＩＩ＃０−１，ＩＩ＃２−１と共通情報ＣＩ＃１，ＣＩ＃２とを保持する。
【０１００】
そして、タスクプロセスＴＰ＃３は、取得された第７の未実行タスク情報が表すタスクＴ＃７を実行する（図５のステップＳ１０４）。同様に、タスクプロセスＴＰ＃４は、取得された第６の未実行タスク情報が表すタスクＴ＃６を実行する（図５のステップＳ１０４）。即ち、情報処理装置１０は、２つのタスクを並列に実行する。
【０１０１】
その後、上述した場合と同様に、各タスクプロセスＴＰ＃３，ＴＰ＃４は、上限生成数要求を制御プロセスへ送る（図５のステップＳ１０８）。
そして、制御プロセスは、使用度に基づいて上限生成数を調整した後、上限生成数を各タスクプロセスＴＰ＃３，ＴＰ＃４へ送る（図６のステップＳ２０７）。
【０１０２】
そして、各タスクプロセスＴＰ＃３，ＴＰ＃４は、制御プロセスから上限生成数を受け付け、上述した場合と同様に、図５のステップＳ１１０以降の処理を実行する。
【０１０３】
このようにして、情報処理装置１０は、ジョブを構成するすべてのタスクを実行する。そして、情報処理装置１０は、すべてのタスクを完了した場合、制御プロセスを消滅させる。これにより、制御プロセスに対応付けられたバッファ領域が解放される。そして、情報処理装置１０は、ジョブを完了する。
【０１０４】
以上、説明したように、第１実施形態に係る情報処理装置１０は、タスク毎に生成されるタスクプロセスによって当該タスクを実行し、当該タスクの実行によって生じたタスクを実行するためのタスクプロセスを生成する。このとき、情報処理装置１０は、当該実行が完了するタスクを実行するためのタスクプロセスを消滅させる。
更に、情報処理装置１０は、使用度に基づいて、生成されるタスクプロセスの数を調整する。
【０１０５】
これによれば、使用度に基づいて、生成されるタスクプロセスの数が調整される。これにより、情報処理装置１０が並列に実行するタスクの数が調整される。従って、並列に実行されるタスクの数が過大となることを回避することができる。この結果、情報処理装置１０のリソースを有効に利用することができる。
【０１０６】
また、第１実施形態に係る情報処理装置１０は、タスクの実行が完了する際に、未実行タスク群に含まれるタスクが存在する場合において、使用度が所定の第１閾値よりも大きいとき、生成されるタスクプロセスの数を１つに制限する。
【０１０７】
これによれば、使用度が比較的大きい場合において、未実行タスク群に含まれるタスクの数と同数のタスクプロセスが生成される場合と比較して、生成されるタスクプロセスの数が急激に増加することを防止することができる。この結果、使用度が過大となることを回避することができる。
【０１０８】
また、第１実施形態に係る情報処理装置１０は、タスクの実行が完了する際に、未実行タスク群に含まれるタスクの数が２以上である場合において、使用度が第１閾値よりも小さいとき、タスクプロセスを複数生成する。
【０１０９】
これによれば、使用度が第１閾値よりも小さい場合、タスクプロセスが少なくとも２つ生成される。従って、使用度が比較的小さい場合には、２つ以上のタスクプロセスによって複数のタスクを並列に実行することができる。この結果、使用度が過大になることを回避しながら、単位時間あたりに実行が完了するタスクの数を増加させることができる。
【０１１０】
また、第１実施形態に係る情報処理装置１０により生成されるタスクプロセスは、当該タスクプロセスを生成したタスクプロセスから受け付けた少なくとも１つの未実行タスク情報を保持する。更に、タスクプロセスは、保持されている未実行タスク情報から１つの未実行タスク情報を取得する。加えて、タスクプロセスは、取得された未実行タスク情報の保持を終了する。更に、タスクプロセスは、取得された未実行タスク情報が表すタスクを実行する。加えて、タスクプロセスは、タスクの実行によって新たにタスクが生じた場合に、当該生じたタスクを表す未実行タスク情報を新たに保持する。
【０１１１】
更に、タスクプロセスは、タスクの実行が完了する際に、保持されている未実行タスク情報の数が１つ以上であるとき、当該未実行タスク情報が表すタスクを実行するためのタスクプロセスを生成する。加えて、このとき、タスクプロセスは、生成されたタスクプロセスへ、保持されている未実行タスク情報を送る。更に、このとき、タスクプロセスは、自身を消滅させる。
【０１１２】
ところで、複数のタスクが生じた場合、当該複数のタスクをそれぞれ表す複数の未実行タスク情報には、当該複数のタスクに共通する（即ち、同一の）情報（共通情報）と、タスクに個別の情報（個別情報）と、が含まれることが多い。
【０１１３】
従って、仮に、情報処理装置が、新たに生じた複数のタスクと同数のタスクプロセスを生成した場合、当該複数のタスクプロセスのそれぞれに共通情報が送られることになる。その結果、各タスクプロセスが、共通情報を保持するので、情報処理装置において使用される記憶領域が過大となる。
【０１１４】
これに対し、上記構成によれば、使用度に基づいて、生成されるタスクプロセスの数が調整される。これにより、情報処理装置１０において使用される記憶領域が過大となることを回避することができる。
【０１１５】
また、第１実施形態に係る情報処理装置１０は、タスクプロセスが、保持されている未実行タスク情報が表すタスクを実行するためのタスクプロセスを１つ生成する場合、保持されている未実行タスク情報のすべてを、生成されたタスクプロセスへ送る。
これによれば、未だ実行されていないタスクを確実に実行することができる。
【０１１６】
また、第１実施形態に係る情報処理装置１０は、タスクプロセスが、複数のタスクプロセスを生成する場合、保持されている未実行タスク情報を、生成された複数のタスクプロセスに分配するように、未実行タスク情報を当該複数のタスクプロセスへ送る。
これによれば、未だ実行されていないタスクを確実に実行することができる。
【０１１７】
また、第１実施形態に係る情報処理装置１０は、タスクを最初に実行する際、当該タスクを実行するためのタスクプロセスを１つ生成する。
これによれば、使用度が比較的小さい場合にのみ、複数のタスクが並列に実行され得る。従って、使用度が過大となることをより一層確実に回避することができる。この結果、情報処理装置１０のリソースを有効に利用することができる。
【０１１８】
なお、第１実施形態に係る情報処理装置１０は、所定の加算量を加算することにより、上限生成数を増加させてもよい。
また、第１実施形態に係る情報処理装置１０は、所定の減算量を減算することにより、上限生成数を減少させてもよい。
【０１１９】
また、第１実施形態に係る情報処理装置１０は、所定の維持条件が成立する場合に、上限生成数を維持してもよい。例えば、上記維持条件は、取得された使用度が第１閾値よりも小さく且つ第３閾値以上である、という条件である。ここで、第３閾値は、第１閾値よりも小さい。この場合、情報処理装置１０は、取得された使用度が第３閾値よりも小さい場合に、上限生成数を増加させる。
【０１２０】
なお、第１実施形態において、ジョブは、タスクと呼ばれ、タスクは、サブタスクと呼ばれてもよい。
【０１２１】
＜第１実施形態の第１変形例＞
次に、本発明の第１実施形態の第１変形例に係る情報処理装置について説明する。第１実施形態の第１変形例に係る情報処理装置は、第１実施形態に係る情報処理装置に対して、上限生成数を使用度に基づく所定の値に設定する点において相違している。以下、かかる相違点を中心として説明する。なお、第１実施形態の第１変形例の説明において、第１実施形態にて使用した符号と同じ符号を付したものは、同一又はほぼ同様のものである。
【０１２２】
第１変形例に係る制御プロセスは、所定の第１上限生成数、及び、所定の第２上限生成数を保持する。第２上限生成数は、第１上限生成数よりも大きい。本例では、第１上限生成数は、「１」である。また、例えば、第２上限生成数は、「４」である。
【０１２３】
制御プロセスは、使用度が上記第１閾値よりも小さい場合、上限生成数を第２上限生成数に設定する。一方、制御プロセスは、使用度が上記第１閾値以上である場合、上限生成数を第１上限生成数に設定する。
【０１２４】
制御プロセスは、第１実施形態に係る図６に示す処理に代えて、図８にフローチャートにより示す処理を実行する。図８に示す処理は、図６に示す処理のステップＳ２０４〜ステップＳ２０６をステップＳ３０１に置換し、且つ、図６に示す処理のステップＳ２０８〜ステップＳ２１０をステップＳ３０２に置換した処理である。
【０１２５】
具体的には、制御プロセスは、ステップＳ２０２にて取得された使用度が第１閾値以上である場合、ステップＳ３０１へ進み、上限生成数を第１上限生成数に設定する。そして、制御プロセスは、設定された上限生成数を、ステップＳ２０１にて受け付けられた上限生成数要求を送ってきたタスクプロセスへ送る（図８のステップＳ２０７）。
【０１２６】
一方、制御プロセスは、ステップＳ２０２にて取得された使用度が第１閾値よりも小さい場合、ステップＳ３０２へ進み、上限生成数を第２上限生成数に設定する。そして、制御プロセスは、設定された上限生成数を、ステップＳ２０１にて受け付けられた上限生成数要求を送ってきたタスクプロセスへ送る（図８のステップＳ２０７）。
【０１２７】
以上、説明したように、第１実施形態の第１変形例に係る情報処理装置１０によれば、第１実施形態に係る情報処理装置１０と同様に、使用度に基づいて、生成されるタスクプロセスの数を調整するので、同様の効果を奏することができる。
【０１２８】
＜第２実施形態＞
次に、本発明の第２実施形態に係る情報処理装置について説明する。第２実施形態に係る情報処理装置は、第１実施形態に係る情報処理装置に対して、使用度が過大である場合に並列に実行されるタスクの数を減少させるように構成される点において相違している。以下、かかる相違点を中心として説明する。なお、第２実施形態の説明において、上記第１実施形態にて使用した符号と同じ符号を付したものは、同一又はほぼ同様のものである。
【０１２９】
（機能）
図９に示すように、第２実施形態に係る情報処理装置１０Ａの機能は、第１実施形態に係るタスク実行部１１０をタスク実行部１１０Ａに置換するとともに、第１実施形態に係る制御部１２０を制御部１２０Ａに置換した機能である。
【０１３０】
制御部１２０Ａは、第１実施形態に係る制御部１２０と同様の機能を有する。
更に、制御部１２０Ａにより生成される制御プロセスは、下記の処理を実行する。
【０１３１】
制御プロセスは、使用度（本例では、メモリ使用率）が所定の第２閾値（本例では、「９０％」）以上である場合、上限生成数要求を送ってきたタスクプロセスへ統合指示を送る。第２閾値は、第１閾値よりも大きい値に設定される。統合指示は、統合先となるタスクプロセス（統合先プロセス）を特定するための情報を含む。
【０１３２】
後述するように、制御プロセスが統合指示を送ることは、未実行タスク群に含まれるタスクを実行するためのタスクプロセスを生成しないようにタスク実行部１１０Ａを制御することの一例である。
【０１３３】
タスク実行部１１０Ａは、第１実施形態に係るタスク実行部１１０と同様の機能を有する。
更に、タスク実行部１１０Ａにより生成されるタスクプロセスは、下記の処理を実行する。
【０１３４】
タスクプロセスは、上限生成数要求を制御プロセスへ送った場合において、上限生成数を受け付けることなく、統合指示を受け付けた場合、タスクプロセスを生成しない。更に、この場合、タスクプロセスは、保持されている未実行タスク情報のすべてを、統合指示により特定される統合先プロセスへ送る。なお、統合指示により特定される統合先プロセスは、他のプロセスによって生成されたプロセスの一例である。
【０１３５】
（動作）
タスクプロセスＴＰは、第１実施形態に係る図５に示す処理に代えて、図１０にフローチャートにより示す処理を実行する。図１０に示す処理は、図５に示す処理のステップＳ１０９をステップＳ４０１〜ステップＳ４０３に置換した処理である。
【０１３６】
また、制御プロセスは、第１実施形態に係る図６に示す処理に代えて、図１１にフローチャートにより示す処理を実行する。図１１に示す処理は、図６に示す処理のステップＳ２０２とステップＳ２０２との間に、ステップＳ５０１〜ステップＳ５０２に追加した処理である。
【０１３７】
ここで、図１２に示すように、情報処理装置１０Ａが、第１実施形態に係る情報処理装置１０と同様に動作し、時点ｔ４及び時点ｔ５に到達した場合を想定する。
【０１３８】
この場合、時点ｔ４では、タスクプロセスＴＰ＃３は、未実行タスク情報を保持していない。同様に、時点ｔ５では、タスクプロセスＴＰ＃４は、個別情報ＩＩ＃０−１，ＩＩ＃２−１と共通情報ＣＩ＃１，ＣＩ＃２とを保持する。
【０１３９】
そして、タスクプロセスＴＰ＃３は、取得された第７の未実行タスク情報が表すタスクＴ＃７を実行する（図５のステップＳ１０４）。同様に、タスクプロセスＴＰ＃４は、取得された第６の未実行タスク情報が表すタスクＴ＃６を実行する（図５のステップＳ１０４）。即ち、情報処理装置１０Ａは、２つのタスクを並列に実行する。
【０１４０】
本例では、タスクプロセスＴＰ＃３は、タスクＴ＃７を実行することにより、ウェブページ（対象ページ）Ｐ＃５を取得し、取得された対象ページＰ＃５を評価し、対象ページＰ＃５から参照されている参照先のウェブページＰ＃７を特定する。これにより、タスクＴ＃１４（第１４のタスク）が新たに生じる。
【０１４１】
そして、タスクプロセスＴＰ＃３は、新たに生じたタスクＴ＃１４を表す第１４の未実行タスク情報を新たに保持する（図５のステップＳ１０６）。本例では、第１４の未実行タスク情報は、個別情報ＩＩ＃５−７と共通情報ＣＩ＃３とからなる。
即ち、図１２に示すように、この時点ｔ６では、タスクプロセスＴＰ＃３は、個別情報ＩＩ＃５−７と共通情報ＣＩ＃３とを保持している。
【０１４２】
そして、タスクプロセスＴＰ＃３は、上限生成数要求を制御プロセスへ送る（図５のステップＳ１０８）。次いで、タスクプロセスＴＰ＃３は、制御プロセスから上限生成数又は統合指示を受け付けるまで待機する（図１０のステップＳ４０１の「Ｎｏ」ルート）。
【０１４３】
制御プロセスは、タスクプロセスＴＰ＃３から上限生成数要求を受け付けると、取得周期が経過する毎に取得された使用度のうちの、最新の値を取得する（図１１のステップＳ２０２）。
【０１４４】
次いで、制御プロセスは、取得された使用度が第２閾値以上であるか否かを判定する（図１１のステップＳ５０１）。ここでは、使用度が第２閾値よりも小さい場合を想定する。この場合、制御プロセスは、「Ｎｏ」と判定して、ステップＳ２０３へ進み、第１実施形態と同様に、ステップＳ２０３〜ステップＳ２１０の処理を実行する。
【０１４５】
ここでは、使用度が第１閾値以上である場合を想定する。この場合、制御プロセスは、保持されている上限生成数を「１」に更新する（図１１のステップＳ２０４）。そして、制御プロセスは、保持されている上限生成数を、ステップＳ２０１にて上限生成数要求を送ってきたタスクプロセス（ここでは、タスクプロセスＴＰ＃３）へ送る。その後、制御プロセスは、ステップＳ２０１へ戻る。
【０１４６】
一方、タスクプロセスＴＰ＃３は、制御プロセスから上限生成数を受け付ける。これにより、タスクプロセスＴＰ＃３は、ステップＳ４０１にて「Ｙｅｓ」と判定して、上限生成数を受け付けたか否かを判定する（図１０のステップＳ４０２）。この時点では、タスクプロセスＴＰ＃３は、「Ｙｅｓ」と判定して、上限生成数のタスクプロセスを生成する（図１０のステップＳ１１１）。即ち、この時点では、タスクプロセスＴＰ＃３は、１つのタスクプロセスを生成する。
【０１４７】
次いで、タスクプロセスＴＰ＃３は、生成されたタスクプロセスＴＰ＃５へ、保持されている未実行タスク情報のすべて（ここでは、第１４の未実行タスク情報）を送る（図１０のステップＳ１１２）。本例では、タスクプロセスＴＰ＃３は、個別情報ＩＩ＃５−７と共通情報ＣＩ＃３とをタスクプロセスＴＰ＃５へ送る。
【０１４８】
そして、タスクプロセスＴＰ＃３は、図１０に示す処理を終了する。これにより、タスクプロセスＴＰ＃３は、自身（自プロセスＴＰ＃３）を消滅させる。従って、タスクプロセスＴＰ＃３に対応付けられたバッファ領域が解放される。
【０１４９】
一方、タスクプロセスＴＰ＃４は、タスクＴ＃６を実行することにより、ウェブページ（対象ページ）Ｐ＃４を取得し、取得された対象ページＰ＃４を評価する。更に、タスクプロセスＴＰ＃４は、対象ページＰ＃４から参照されている参照先のウェブページＰ＃１，Ｐ＃５，Ｐ＃７，Ｐ＃６を特定する。これにより、タスクＴ＃１０（第１０のタスク）、タスクＴ＃１１（第１１のタスク）、タスクＴ＃１２（第１２のタスク）及びタスクＴ＃１３（第１３のタスク）が新たに生じる。
【０１５０】
そして、タスクプロセスＴＰ＃４は、新たに生じたタスクＴ＃１０〜Ｔ＃１３を表す未実行タスク情報（ここでは、第１０の未実行タスク情報〜第１３の未実行タスク情報）を新たに保持する（図５のステップＳ１０６）。本例では、第１０の未実行タスク情報は、個別情報ＩＩ＃４−１と共通情報ＣＩ＃４とからなる。第１１の未実行タスク情報は、個別情報ＩＩ＃４−５と共通情報ＣＩ＃４とからなる。第１２の未実行タスク情報は、個別情報ＩＩ＃４−７と共通情報ＣＩ＃４とからなる。第１３の未実行タスク情報は、個別情報ＩＩ＃４−６と共通情報ＣＩ＃４とからなる。
【０１５１】
即ち、図１２に示すように、この時点ｔ７では、タスクプロセスＴＰ＃４は、個別情報ＩＩ＃０−１，ＩＩ＃２−１，ＩＩ＃４−１，ＩＩ＃４−５，ＩＩ＃４−７，ＩＩ＃４−６と、共通情報ＣＩ＃１，ＣＩ＃２，ＣＩ＃４と、を保持している。
【０１５２】
そして、タスクプロセスＴＰ＃４は、上限生成数要求を制御プロセスへ送る（図５のステップＳ１０８）。次いで、タスクプロセスＴＰ＃４は、制御プロセスから上限生成数又は統合指示を受け付けるまで待機する（図１０のステップＳ４０１の「Ｎｏ」ルート）。
【０１５３】
制御プロセスは、タスクプロセスＴＰ＃４から上限生成数要求を受け付けると、取得周期が経過する毎に取得された使用度のうちの、最新の値を取得する（図１１のステップＳ２０２）。
【０１５４】
次いで、制御プロセスは、取得された使用度が第２閾値以上であるか否かを判定する（図１１のステップＳ５０１）。ここでは、使用度が第２閾値以上である場合を想定する。この場合、制御プロセスは、「Ｙｅｓ」と判定して、統合指示を、ステップＳ２０１にて上限生成数要求を送ってきたタスクプロセスＴＰ＃４へ送る（図１１のステップＳ５０２）。
【０１５５】
本例では、制御プロセスは、タスクプロセスが生成された場合、生成されたタスクプロセスを識別するためのプロセス識別子（プロセスＩＤ）を保持する。更に、制御プロセスは、タスクプロセスが消滅した場合、消滅したタスクプロセスを識別するためのプロセス識別子の保持を終了する。
【０１５６】
制御プロセスは、保持されているプロセスＩＤのうちの１つを選択し、選択されたプロセスＩＤを含む統合指示を送る。本例では、制御プロセスは、タスクプロセスＴＰ＃５を識別するためのプロセスＩＤを含む統合指示をタスクプロセスＴＰ＃４へ送る。
その後、制御プロセスは、ステップＳ２０１へ戻る。
【０１５７】
一方、タスクプロセスＴＰ＃４は、制御プロセスから統合指示を受け付ける。これにより、タスクプロセスＴＰ＃４は、図１０のステップＳ４０１にて「Ｙｅｓ」と判定して、上限生成数を受け付けたか否かを判定する（図１０のステップＳ４０２）。この時点では、タスクプロセスＴＰ＃４は、「Ｎｏ」と判定して、統合先プロセスへ、保持されている未実行タスク情報のすべてを送る（図１０のステップＳ４０３）。
【０１５８】
統合先プロセスは、統合指示に含まれるプロセスＩＤにより識別されるタスクプロセスである。ここでは、統合先プロセスは、タスクプロセスＴＰ＃５である。即ち、タスクプロセスＴＰ＃４は、個別情報ＩＩ＃０−１，ＩＩ＃２−１，ＩＩ＃４−１，ＩＩ＃４−５，ＩＩ＃４−７，ＩＩ＃４−６と、共通情報ＣＩ＃１，ＣＩ＃２，ＣＩ＃４と、をタスクプロセスＴＰ＃５へ送る。
【０１５９】
これにより、タスクプロセスＴＰ＃５は、タスクプロセスＴＰ＃４から未実行タスク情報を受け付け、受け付けられた未実行タスク情報を新たに保持する（図５のステップＳ１０２）。その後、タスクプロセスＴＰ＃５は、上述した場合と同様に、図１０に示す処理を実行する。
【０１６０】
即ち、図１２に示すように、時点ｔ８では、タスクプロセスＴＰ＃５は、個別情報ＩＩ＃５−７，ＩＩ＃０−１，ＩＩ＃２−１，ＩＩ＃４−１，ＩＩ＃４−５，ＩＩ＃４−７と、共通情報ＣＩ＃３，ＣＩ＃１，ＣＩ＃２，ＣＩ＃４と、を保持している。時点ｔ８は、タスクプロセスＴＰ＃５が未実行タスク情報を１つ取得した後に、タスクＴ＃１３の実行を開始する時点である。
【０１６１】
以上、説明したように、第２実施形態に係る情報処理装置１０Ａによれば、第１実施形態に係る情報処理装置１０と同様の作用及び効果を奏することができる。
【０１６２】
更に、第２実施形態に係る情報処理装置１０Ａは、タスクの実行が完了する際に、未実行タスク群に含まれるタスクの数が１以上である場合において、情報処理装置１０Ａの使用度が第２閾値よりも大きいとき、タスクプロセスを生成しない。ここで、第２閾値は、第１閾値よりも大きい。
【０１６３】
これによれば、使用度が過度に大きい場合、タスクプロセスが生成されない。従って、タスクプロセスが生成される場合と比較して、情報処理装置１０Ａの負荷を低減することができる。
【０１６４】
更に、第２実施形態に係る情報処理装置１０Ａは、タスクプロセスが、タスクプロセスを新たに生成しない場合、保持されている未実行タスク情報を、他のタスクプロセスによって生成されたタスクプロセスへ送る。
これによれば、未だ実行されていないタスクを確実に実行することができる。
【０１６５】
なお、情報処理装置１０Ａは、複数のジョブを実行するように構成されていてもよい。この場合、図１３に示すように、制御プロセスは、ジョブを識別するためのジョブ識別子（ジョブＩＤ）と、プロセスＩＤと、を対応付けて保持することが好適である。更に、制御プロセスは、上限生成数要求を送ってきたタスクプロセスと対応付けられたジョブＩＤと同一のジョブＩＤと対応付けられたプロセスＩＤの中から、統合指示に含ませるプロセスＩＤを選択することが好適である。
【０１６６】
以上、上記実施形態を参照して本願発明を説明したが、本願発明は、上述した実施形態に限定されるものではない。本願発明の構成及び詳細に、本願発明の範囲内において当業者が理解し得る様々な変更をすることができる。
【０１６７】
なお、情報処理装置により実行されるジョブは、実施形態において例示されたジョブと異なるジョブであってもよい。この場合、情報処理装置により実行されるジョブは、タスクが実行されることによって、新たなタスクを生じ得るジョブである。更に、この場合、ジョブは、タスクの実行によって複数のタスクが新たに生じた場合、当該新たに生じた複数のタスク間の依存関係が存在しないジョブであってもよい。
【０１６８】
また、本発明の趣旨を逸脱しない範囲内において、上記実施形態の他の変形例として、上述した実施形態及び変形例の任意の組み合わせが採用されてもよい。
【０１６９】
＜付記＞
上記実施形態の一部又は全部は、以下の付記のように記載され得るが、以下には限られない。
【０１７０】
（付記１）
情報処理装置であって、
タスクの実行によって新たに生じたタスクを実行するタスク実行部と、
前記情報処理装置のリソースが使用されている程度を表す使用度に基づいて、並列に実行されるタスクの数を調整するように、前記タスク実行部を制御する制御部と、
を備える、情報処理装置。
【０１７１】
（付記２）
付記１に記載の情報処理装置であって、
前記タスク実行部は、タスク毎に生成されるプロセスによって当該タスクを実行するとともに、当該タスクの実行によって生じたタスクを実行するためのプロセスを生成し、
前記制御部は、前記使用度に基づいて、前記生成されるプロセスの数を調整するように、前記タスク実行部を制御する、情報処理装置。
【０１７２】
（付記３）
付記２に記載の情報処理装置であって、
前記制御部は、前記使用度が第１閾値よりも大きいとき、前記生成されるプロセスの数を１つに制限するように前記タスク実行部を制御する、情報処理装置。
【０１７３】
（付記４）
付記２又は付記３に記載の情報処理装置であって、
前記制御部は、前記使用度が前記第１閾値よりも小さいとき、プロセスを複数生成するように前記タスク実行部を制御する、情報処理装置。
【０１７４】
（付記５）
付記２乃至付記４のいずれか一項に記載の情報処理装置であって、
前記制御部は、前記使用度が前記第１閾値よりも大きい第２閾値よりも大きいとき、プロセスを生成しないように前記タスク実行部を制御する、情報処理装置。
【０１７５】
（付記６）
付記２乃至付記５のいずれか一項に記載の情報処理装置であって、
前記生成されるプロセスの数の上限値である上限生成数を保持し、
前記タスク実行部は、前記保持されている上限生成数以下の数のプロセスを生成し、
前記制御部は、前記使用度に基づいて、前記保持されている上限生成数を調整する、情報処理装置。
【０１７６】
（付記７）
付記２乃至付記６のいずれか一項に記載の情報処理装置であって、
前記タスク実行部は、
前記プロセスが、
当該プロセスを生成したプロセスから受け付けた少なくとも１つの未実行タスク情報を保持し、ここで、前記未実行タスク情報は、未だ実行されていないタスクである未実行タスクを実行するための情報であり、
前記保持されている未実行タスク情報から１つの未実行タスク情報を取得し、
前記取得された未実行タスク情報の保持を終了し、
前記取得された未実行タスク情報が表すタスクを実行し、
前記タスクの実行によって新たにタスクが生じた場合に、当該生じたタスクを表す未実行タスク情報を新たに保持し、
前記タスクの実行が完了する際に、前記保持されている未実行タスク情報が存在するとき、当該未実行タスク情報が表すタスクを実行するためのプロセスを生成するとともに、当該生成されたプロセスへ、当該保持されている未実行タスク情報を送り、自身を消滅させる、情報処理装置。
【０１７７】
（付記８）
付記７に記載の情報処理装置であって、
前記タスク実行部は、前記プロセスが、前記保持されている未実行タスク情報が表すタスクを実行するためのプロセスを１つ生成する場合、当該保持されている未実行タスク情報のすべてを、当該生成されたプロセスへ送る、情報処理装置。
【０１７８】
（付記９）
付記７又は付記８に記載の情報処理装置であって、
前記タスク実行部は、
前記プロセスが、前記保持されている未実行タスク情報が表すタスクを実行するためのプロセスを複数生成する場合、当該保持されている未実行タスク情報を、当該生成された複数のプロセスに分配するように、当該未実行タスク情報を当該複数のプロセスへ送る、情報処理装置。
【０１７９】
（付記１０）
付記７乃至付記９のいずれか一項に記載の情報処理装置であって、
前記タスク実行部は、前記プロセスが、前記保持されている未実行タスク情報が表すタスクを実行するためのプロセスを生成しない場合、当該保持されている未実行タスク情報を、他のプロセスによって生成されたプロセスへ送る、情報処理装置。
【０１８０】
（付記１１）
付記２乃至付記１０のいずれか一項に記載の情報処理装置であって、
前記タスク実行部は、タスクを最初に実行する際、当該タスクを実行するためのプロセスを１つ生成する、情報処理装置。
【０１８１】
（付記１２）
情報処理装置に適用される情報処理方法であって、
タスクの実行によって新たに生じたタスクを実行し、
前記情報処理装置のリソースが使用されている程度を表す使用度に基づいて、並列に実行されるタスクの数を調整する、情報処理方法。
【０１８２】
（付記１３）
付記１２に記載の情報処理方法であって、
タスク毎に生成されるプロセスによって当該タスクを実行し、
前記タスクの実行によって生じたタスクを実行するためのプロセスを生成し、
前記プロセスを生成する際に、前記使用度に基づいて、前記生成されるプロセスの数を調整する、情報処理方法。
【０１８３】
（付記１４）
付記１３に記載の情報処理方法であって、
前記プロセスを生成する際に、前記使用度が第１閾値よりも大きいとき、前記生成されるプロセスの数を１つに制限する、情報処理方法。
【０１８４】
（付記１５）
付記１３又は付記１４に記載の情報処理方法であって、
前記プロセスを生成する際に、前記使用度が前記第１閾値よりも小さいとき、プロセスを複数生成する、情報処理方法。
【０１８５】
（付記１６）
付記１３乃至付記１５のいずれか一項に記載の情報処理方法であって、
前記プロセスを生成する際に、前記使用度が前記第１閾値よりも大きい第２閾値よりも大きいとき、プロセスを生成しない、情報処理方法。
【０１８６】
（付記１７）
コンピュータに、
タスクを実行する他のコンピュータから並列に実行可能なタスクの数の上限数要求を受信し、
前記他のコンピュータのリソースが使用されている程度を表す使用度に基づいて、前記並列に実行されるタスクの数を調整して応答する、
処理を実行させるためのプログラム。
【０１８７】
（付記１８）
付記１７に記載のプログラムであって、
前記処理において、
前記他のコンピュータが、タスク毎に生成されるプロセスによって当該タスクを実行するとともに、当該タスクの実行によって生じたタスクを実行するためのプロセスを生成する場合、前記生成されるプロセスの数を調整することにより、前記並列に実行されるタスクの数を調整する、プログラム。
【０１８８】
（付記１９）
付記１８に記載のプログラムであって、
前記処理において、
前記使用度が第１閾値よりも大きいとき、前記生成されるプロセスの数を１つに制限する、プログラム。
【０１８９】
（付記２０）
付記１８又は付記１９に記載のプログラムであって、
前記処理において、
前記使用度が前記第１閾値よりも小さいとき、前記生成されるプロセスの数を２以上の値に決定する、プログラム。
【０１９０】
（付記２１）
付記１８乃至付記２０のいずれか一項に記載のプログラムであって、
前記処理において、
前記使用度が前記第１閾値よりも大きい第２閾値よりも大きいとき、前記生成されるプロセスの数を０に決定する、プログラム。
【符号の説明】
【０１９１】
１０，１０Ａ  情報処理装置
１１    処理装置
１２    記憶装置
１３    通信装置
１４    媒体読取装置
１１０，１１０Ａ  タスク実行部
１２０，１２０Ａ  制御部
ＢＳ    バス
ＲＭ    記録媒体
【図１】
2015094976.tif 000003
【図２】
2015094976.tif 000004
【図３】
2015094976.tif 000005
【図４】
2015094976.tif 000006
【図５】
2015094976.tif 000007
【図６】
2015094976.tif 000008
【図７】
2015094976.tif 000009
【図８】
2015094976.tif 000010
【図９】
2015094976.tif 000011
【図１０】
2015094976.tif 000012
【図１１】
2015094976.tif 000013
【図１２】
2015094976.tif 000014
【図１３】
2015094976.tif 000015