(57)【要約】【課題】プロセッサにタスクを適切に割り当てることで、プロセッサの処理効率を向上させる。【解決手段】タスクを実行する複数のＣＰＵと、所定時間以内にＣＰＵに割り当てられる複数のタスクと当該複数タスク毎に割り当てられた時間的局所グループと対応付けて記憶するタスクテーブルと、複数のタスクのいずれか一つのタスクを、複数のＣＰＵのうちいずれか一つに対して割り当てる第１の割当部と、割り当てた後に、タスクが終了したＣＰＵに対して、割り当てたタスクに対応付けられた時間的局所グループと同じ時間的局所グループと対応付けられているタスクを、当該時間的局所グループに対応付けられていない他のタスクより先に割り当てる第２の割当部と、を備える。【選択図】        図１
2009020692.tif 000002
【特許請求の範囲】
【請求項１】
タスクを実行する複数のプロセッサと、
所定時間以内に前記プロセッサに割り当てられる複数のタスクと、当該複数タスク毎に割り当てられた時間的グループと、対応付けて記憶するタスク記憶部と、
複数の前記タスクのいずれか一つのタスクを、複数の前記プロセッサのうちいずれか一つに対して割り当てる第１の割当部と、
前記第１の割当部が割り当てた後に、タスクが終了したプロセッサに対して、割り当てられた前記タスクに対応付けられた前記時間的グループと同じ前記時間的グループに対応付けられている他のタスクを、当該時間的グループに対応付けられていないタスクより先に割り当てる第２の割当部と、
を備えることを特徴とするタスク管理装置。
【請求項２】
前記タスク記憶部は、さらに、同じプロセッサに割り当てられるタスクをグループ化した空間的グループを、対応付けて記憶し、
前記第２の割当部は、さらに前記第１の割当部が前記タスクを割り当てた前記プロセッサに対して、当該タスクに対応付けられた前記空間的グループと同じ前記空間的グループに対応付けられている他のタスクを割り当てること、
を特徴とする請求項１に記載のタスク管理装置。
【請求項３】
前記第２の割当部は、当該タスクに対応付けられた前記空間的グループと同じ前記空間的グループに対応付けられている他のタスクを、前記空間的グループと対応付けられていない前記タスクより先に前記プロセッサに割り当てること、
を特徴とする請求項２に記載のタスク管理装置。
【請求項４】
前記タスク記憶部は、所定時間以内に前記プロセッサに割り当てられると共に同じプロセッサに割り当てられる複数のタスクと、当該複数タスク毎に割り当てられた時間的グループと、を対応付けて記憶し、
前記第２の割当部は、前記第１の割当部が割り当てた前記タスクが終了した前記プロセッサに対して、当該タスクに対応付けられた前記時間的グループと同じ前記時間的グループと対応付けられている他のタスクを、当該時間的グループに対応付けられていないタスクより先に割り当てること、
を特徴とする請求項１に記載のタスク管理装置。
【請求項５】
任意の前記プロセッサが他の前記プロセッサより割り当てられた前記タスクの数が多い場合に、任意の当該プロセッサに対して割り当てられている前記タスクに対応付けられた前記空間的グループと同じ前記空間的グループと対応付けられている他のタスクを、他の前記プロセッサに再割り当てを行う再割当部をさらに備えることを特徴とする請求項２乃至４のいずれか一つに記載のタスク管理装置。
【請求項６】
プロセッサと、
所定時間以内に前記プロセッサに割り当てられる複数のタスクと、当該複数タスク毎に割り当てられた時間的グループと、対応付けて記憶するタスク記憶部と、
複数の前記タスクのいずれか一つのタスクを、前記プロセッサに対して割り当てる第１の割当部と、
割り当てられた前記タスクに対応付けられた前記時間的グループと同じ前記時間的グループに対応付けられている他のタスクを、当該時間的グループに対応付けられていないタスクより先に前記プロセッサに割り当てる第２の割当部と、
を備えることを特徴とするタスク管理装置。
【請求項７】
所定時間以内にプロセッサに割り当てられる時間的グループにグループ化された複数のタスクと、当該複数タスク毎に割り当てられた時間的グループと、対応付けてタスク記憶部に記憶するタスク記憶ステップと、
複数の前記タスクのいずれか一つのタスクを、複数の前記プロセッサのうちいずれか一つに対して割り当てる第１の割当ステップと、
前記第１の割当ステップが割り当てた後に、タスクが終了したプロセッサに対して、割り当てられた前記タスクに対応付けられた前記時間的グループと同じ前記時間的グループに対応付けられている他のタスクを、当該時間的グループに対応付けられていないタスクより先に割り当てる第２の割当ステップと、
を有することを特徴とするタスク管理方法。
【請求項８】
所定時間以内にプロセッサに割り当てられる複数のタスクと、当該複数タスク毎に割り当てられた時間的グループと、対応付けてタスク記憶部に記憶するタスク記憶ステップと、
複数の前記タスクのいずれか一つのタスクを、複数の前記プロセッサのうちいずれか一つに対して割り当てる第１の割当ステップと、
前記第１の割当ステップが割り当てた後に、タスクが終了したプロセッサに対して、割り当てられた前記タスクに対応付けられた前記時間的グループと同じ前記時間的グループに対応付けられている他のタスクを、当該時間的グループに対応付けられていないタスクより先に割り当てる第２の割当ステップと、
をコンピュータに実行させることを特徴とするタスク管理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、タスクのスケジューリングを行うタスク管理装置、タスク管理方法及びタスク管理プログラムに関するものである。
【背景技術】
【０００２】
従来から、ＯＳのマルチタスク化に伴い、プロセッサに対してタスクを割り当てる様々な手法が提案されている。例えば、Ｌｉｎｕｘ（登録商標）など汎用ＯＳでは、実行可能状態にあるタスクに対してその優先度の高いものから順々にプロセッサの使用権限を与えていくスケジューリング方式を採っている。
【０００３】
ところで、プロセッサでタスクを処理する際に、複数のタスクをほぼ同じ時間に実行したい場合が存在する。このような場合に、優先度で割り当てる手法では、タスクが多い場合に管理が難しくなり、スケジューラが遅延する。
【０００４】
そこで、特許文献１に記載されている技術が提案されている。当該特許文献１に記載されている技術では、タスクの実行が開始される前に、プロセッサに対してタスクの割り当て及び実行順序を静的に決定する手法が提案されている。これにより、複数のプロセッサにおいて互いに協働して動作させることを可能としている。
【０００５】
【特許文献１】特開２００５−１８５９０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら、特許文献１に記載された技術は、タスクを同じ時間に割り当てることができるがスタティックであり、前もってスケジューリングするためにタスク毎に正確に処理に必要な時間の長さの見積もりが必要という問題がある。
【０００７】
本発明は、上記に鑑みてなされたものであって、プロセッサにタスクを適切に割り当てることで、プロセッサの処理効率を向上させることを可能とするタスク管理装置、タスク管理方法及びタスク管理プログラムを提供する。
【課題を解決するための手段】
【０００８】
上述した課題を解決し、目的を達成するために、本発明にかかるタスク管理装置は、タスクを実行する複数のプロセッサと、所定時間以内に前記プロセッサに割り当てられる複数のタスクと、当該複数タスク毎に割り当てられた時間的グループと、対応付けて記憶するタスク記憶部と、複数の前記タスクのいずれか一つのタスクを、複数の前記プロセッサのうちいずれか一つに対して割り当てる第１の割当部と、前記第１の割当部が割り当てた後に、タスクが終了したプロセッサに対して、割り当てられた前記タスクに対応付けられた前記時間的グループと同じ前記時間的グループに対応付けられている他のタスクを、当該時間的グループに対応付けられていないタスクより先に割り当てる第２の割当部と、を備える。
【０００９】
また、本発明にかかるタスク管理装置は、プロセッサと、所定時間以内に前記プロセッサに割り当てられる複数のタスクと、当該複数タスク毎に割り当てられた時間的グループと、対応付けて記憶するタスク記憶部と、複数の前記タスクのいずれか一つのタスクを、前記プロセッサに対して割り当てる第１の割当部と、割り当てられた前記タスクに対応付けられた前記時間的グループと同じ前記時間的グループに対応付けられている他のタスクを、当該時間的グループに対応付けられていないタスクより先に前記プロセッサに割り当てる第２の割当部と、を備えることを特徴とする。
【００１０】
また、本発明にかかるタスク管理方法は、所定時間以内にプロセッサに割り当てられる時間的グループにグループ化された複数のタスクと、当該複数タスク毎に割り当てられた時間的グループと、対応付けてタスク記憶部に記憶するタスク記憶ステップと、複数の前記タスクのいずれか一つのタスクを、複数の前記プロセッサのうちいずれか一つに対して割り当てる第１の割当ステップと、前記第１の割当ステップが割り当てた後に、タスクが終了したプロセッサに対して、割り当てられた前記タスクに対応付けられた前記時間的グループと同じ前記時間的グループに対応付けられている他のタスクを、当該時間的グループに対応付けられていないタスクより先に割り当てる第２の割当ステップと、を有することを特徴とする。
【００１１】
また、本発明にかかるタスク管理プログラムは、所定時間以内にプロセッサに割り当てられる複数のタスクと、当該複数タスク毎に割り当てられた時間的グループと、対応付けてタスク記憶部に記憶するタスク記憶ステップと、複数の前記タスクのいずれか一つのタスクを、複数の前記プロセッサのうちいずれか一つに対して割り当てる第１の割当ステップと、前記第１の割当ステップが割り当てた後に、タスクが終了したプロセッサに対して、割り当てられた前記タスクに対応付けられた前記時間的グループと同じ前記時間的グループに対応付けられている他のタスクを、当該時間的グループに対応付けられていないタスクより先に割り当てる第２の割当ステップと、をコンピュータに実行させることを特徴とする。
【発明の効果】
【００１２】
本発明によれば、タスクを適切にプロセッサに割り当てることで、プロセッサの処理効率を向上させるという効果を奏する。
【発明を実施するための最良の形態】
【００１３】
以下に添付図面を参照して、この発明にかかるタスク管理装置、タスク管理方法及びタスク管理プログラムの最良な実施の形態を詳細に説明する。
【００１４】
（第１の実施の形態）
図１は、本発明の第１の実施の形態にかかるタスク管理装置１００の構成を示すブロック図である。本図に示すように、タスク管理装置１００は、ソフトウェア部にアプリケーション１５０ａ〜ｎと、ＯＳ１０１とを備え、ハードウェア部にキャッシュメモリ１１と、ＣＰＵ１２と、ＲＡＭ１３とを備える。
【００１５】
ＣＰＵ１２は、タスク管理装置１００の動作を制御するメインプロセッサであり、後述するＯＳ１０１により割り当てられたタスクを実行する。また、ＣＰＵ１２は、割り当てられたタスクを格納するタスクキューを有する。
【００１６】
キャッシュメモリ１１は、ＣＰＵ１２に対して設けられた記憶装置であり、ＣＰＵ１２において使用する確率の高いデータを蓄積する。なお、キャッシュメモリ１１は、後述するＲＡＭ１３より高速に読み書きを行うことができる。ＲＡＭ１３は、タスク管理装置１００に対して設けられた記憶装置であり、キャッシュメモリ１１に格納しきれないデータの退避先などに用いられる。
【００１７】
アプリケーション１５０ａ〜ｎは、タスク管理装置１００のＯＳ１０１上で動作するアプリケーションとする。そして、これらアプリケーション１５０ａ〜ｎが、ＯＳ１０１に対して、処理の実行を依頼する。
【００１８】
ＯＳ１０１は、タスク生成部１０２と、スケジューリング履歴記憶部１０３と、タスクテーブル１０４と、スケジューリング部１０５と、を備える。
【００１９】
タスク生成部１０２は、アプリケーション１５０ａ〜ｎからの処理の実行の依頼に応じて、タスクを生成する。そして、タスク生成部１０２により生成されたタスクは、既にグループ化が行われているものとする。
【００２０】
図２に示した各タスクを結ぶ直線はタスク間の依存関係を示している。この場合、タスクＡ１の後にＢ１及びＢ２が実行され、タスクＣ１の後にＤ１及びＤ２が実行される。このような依存関係が存在している場合に、タスクを処理する時間について特に設定を行わないと、処理に遅延が生じることがある。
【００２１】
処理に遅延が生じる例としては、図３に示すようにタスクＡ１の実行結果がキャッシュメモリ１１からＲＡＭ１３に退避された場合がある。つまり、キャッシュメモリ１１にタスクＡ１の実行結果が格納されていれば、ＣＰＵ１２はすぐにタスクＡ１の実行結果を取得して、当該実行結果を用いた次の処理を行うことができる。しかしながら、タスクＡ１を実行した後、タスクＡ１と関係のないタスクが実行された場合、タスクＡ１の実行結果が、ＲＡＭ１３に退避される。この場合、ＣＰＵ１２はタスクＡ１の実行結果を取得して、当該実行結果を用いた次の処理を行う際に、遅延が生じることになる。
【００２２】
なお、上述した例はタスクの実行で遅延等が生じる一例を示したものであり、他にもさまざまな要因で遅延等が生じることになる。
【００２３】
そこで、本実施の形態では、図４に示すように、近しい時間で実行すべき複数のタスクをグループ化することとした。つまり、図５に示すように、処理待ちのタスク群において、複数のグループに分けられたタスクが存在することになる。
【００２４】
そして、同一の処理結果を用いるタスクのグループ化や、優先的に実行すべきタスクのグループ化を行うことで、上述した問題点を解消することが可能となる。以下、複数のタスクが近い時間にＣＰＵに割り当てられることを示す概念を時間的局所性とする。そして当該概念に基づいてタスクを分けたグループを、時間的局所グループとする。
【００２５】
そして、この時間的局所グループに属する一つのタスクがＣＰＵに割り当てられた場合、所定時間以内に他のタスクについてもＣＰＵに割り当てられるように制御される。これにより当該時間的グループに属しているタスク群が近い時間で実行されることになる。なお、この所定時間は任意の時間で良く、当該グループに属するタスクの数やＣＰＵの数等に応じて変更されてもよい。
【００２６】
なお、タスクをグループ化する手法は、どのような手法を用いて良い。例えばアプリケーション１５０ａ〜ｎを設計する開発者が、当該アプリケーション１５０ａ〜ｎのプリグラムソース上で、タスクグループを明示的に記載する手法や、これらアプリケーション１５０ａ〜ｎをコンパイラが最適化を行う際に各アプリケーションが行う処理に対してグループ化する手法などが考えられる。
【００２７】
図１に戻り、タスクテーブル１０４は、タスク生成部１０２により生成されたタスクであって、ＣＰＵ１２による処理待ちのタスクを管理する。図６に示すように、タスクテーブル１０４は、タスクＩＤと、時間的局所グループＩＤとを対応付けて記憶する。また、タスクＩＤは、タスクを識別するＩＤを示し、時間的局所グループＩＤは、時間的局所グループを識別するＩＤとする。当該タスクテーブル１０４により、処理待ちのタスクの時間的局所グループを特定することができる。
【００２８】
スケジューリング履歴記憶部１０３は、アクティブグループ管理テーブルを保持する。図７に示すように、アクティブグループ管理テーブルは、ＣＰＵ１２が既に処理を行った又は現在処理を行っているタスクの属する時間的局所グループを識別するＩＤを保持している。以下、ＣＰＵ１２が既に処理を行った又は現在処理を行っているタスクが属する時間的局所グループを、アクティブな時間的局所グループと表現する。
【００２９】
図１に戻り、スケジューリング部１０５は、第１割当部１１１と、第２割当部１１２と、グループ判断部１１３と、アクティブ設定部１１４と、を備え、タスクテーブル１０４で管理しているタスクをＣＰＵ１２に対して割り当てる処理を行う。
【００３０】
また、スケジューリング部１０５は、第１割当部１１１又は第２割当部１１２でＣＰＵ１２に対して割り当てられたタスクを、システムバスを経由して、ＣＰＵ１２に対して出力する。
【００３１】
本実施の形態にかかるスケジューリング部１０５におけるスケジューリングとは“ＣＰＵ１２へ割り当てるタスクを決定”することである。なお、第２の実施形態以降においては、複数のＣＰＵのうち、任意のＣＰＵに対して割り当てるタスクを決定することとする。
【００３２】
グループ判断部１１３は、アクティブな時間的局所グループが存在するか否か判断する。
【００３３】
第１割当部１１１は、アクティブな時間的局所グループが存在しない場合に、ＣＰＵ１２に対して、タスクテーブル１０４で管理しているタスクの割当を行う。
【００３４】
第２割当部１１２は、アクティブな時間的局所グループが存在している場合に、当該時間的局所グループに属している他のタスクを、当該時間的局所グループに属していないタスクより先に、ＣＰＵ１２に対して割当を行う。つまり、ＣＰＵ１２に割り当てられたタスクが属する時間的局所グループと同じ時間的局所グループに属する他のタスクを、当該時間的局所グループに属していないタスクより先に割り当てることになる。なお、タスクが時間的局所グループに属しているか否かは、タスクテーブル１０４が保持する対応関係より把握できる。
【００３５】
アクティブ設定部１１４は、第１割当部１１１がＣＰＵ１２に対して割り当てたタスクが属している時間的局所グループをアクティブなタスクグループとして設定する。
【００３６】
次に、タスク管理装置１００のタスクの生成からＣＰＵ１２に対してタスクを割り当てるまでの処理手順について、図８を用いて説明する。
【００３７】
まず、タスク生成部１０２は、アプリケーション１５０ａ〜ｎからの依頼に従って、タスクを生成する（ステップＳ８０１）。
【００３８】
次に、タスク生成部１０２は、生成したタスクを、タスクテーブル１０４に格納する（ステップＳ８０２）。
【００３９】
そして、スケジューリング部１０５は、ＣＰＵ１２に対して、タスクテーブル１０４に格納されたタスクを割り当てる（ステップＳ８０３）。なお、割り当て手順の詳細については後述する。
【００４０】
次に、タスク管理装置１００におけるＣＰＵ１２に対するタスクの割り当て手順について、図９を用いて説明する。
【００４１】
まず、グループ判断部１１３は、アクティブグループ管理テーブルを参照して、アクティブな時間的局所タスクグループは存在するか否か判断する（ステップＳ９０１）。
【００４２】
そして、グループ判断部１１３は、アクティブな時間的局所グループが存在すると判断した場合（ステップＳ９０１：Ｙｅｓ）、第２割当部１１２が、タスクテーブル１０４から当該時間的局所グループに含まれるタスクを処理対象として選択する（ステップＳ９０２）。
【００４３】
次に、第２割当部１１２は、選択されたタスクを、ＣＰＵ１２に対して割り当てる（ステップＳ９０３）。
【００４４】
また、グループ判断部１１３がアクティブな時間的局所グループが存在しないと判断した場合（ステップＳ９０１：Ｎｏ）、タスクテーブル１０４を参照して、処理待ちのタスクが存在するか否か判断する（ステップＳ９０４）。そして、グループ判断部１１３が処理待ちのタスクが存在しないと判断した場合（ステップＳ９０４：Ｎｏ）、処理を終了する。
【００４５】
また、グループ判断部１１３が処理待ちのタスクが存在すると判断した場合（ステップＳ９０４：Ｙｅｓ）、第１割当部１１１がタスクテーブル１０４に格納されている処理待ちのタスクから、処理対象となるタスクを選択する（ステップＳ９０５）。
【００４６】
そして、第１割当部１１１は、選択したタスクをＣＰＵ１２に対して割り当てる（ステップＳ９０６）。
【００４７】
次に、アクティブ設定部１１４が、第１割当部１１１で選択されたタスクが、時間的局所グループに属しているか否か判断する（ステップＳ９０７）。そして、アクティブ設定部１１４が選択したタスクが時間的局所グループに属していないと判断した場合（ステップＳ９０７：Ｎｏ）、処理を終了する。
【００４８】
そして、アクティブ設定部１１４が選択したタスクが時間的局所グループに属していると判断した場合（ステップＳ９０７：Ｙｅｓ）、選択されたタスクが属している時間的局所グループを、アクティブに設定する（ステップＳ９０８）。本実施の形態では、アクティブ設定部１１４が、当該時間的局所グループを識別するＩＤをアクティブグループ管理テーブルに登録する。
【００４９】
上述した処理手順により、時間的局所グループに属しているタスクを近しい時間で処理することが可能となる。
【００５０】
図１０に示すように、本実施の形態のタスク管理装置１００は、ＣＰＵ１２と、キャッシュメモリ１１と、ＲＯＭ１４と、ＲＡＭ１３と、通信Ｉ／Ｆ１５とこれらを接続するバス１６とを備えており、通常のコンピュータを利用したハードウェア構成となっている。
【００５１】
なお、本実施形態のタスク管理装置１００で実行されるタスク管理プログラムは、ＲＯＭ１４等に予め組み込まれて提供される。
【００５２】
上述した実施の形態にかかるタスクテーブル１０４で、タスクＩＤと時間的局所グループＩＤとを対応付けて記憶している。つまり、タスク管理装置１００では、タスクテーブル１０４が管理している情報を用いて、スケジューリング部１０５が上述した処理を行うことで、時間的局所グループに属するタスク群を近しい時間に行うことを可能としている。これにより、タスク管理装置１００では、ＣＰＵ１２に対してタスクを効率的に割り当てることを可能としている。そして、タスク管理装置１００ではＣＰＵの処理効率を向上させることが可能となる。
【００５３】
また、本実施の形態にかかるタスク管理装置１００では、同一の時間的局所グループに属しているタスクを連続して実行されることで、他のタスクが共有キャッシュを使用することを抑止できる。これにより、タスク間で共有キャッシュ経由でデータの受け渡しが可能となり、迅速な処理を可能としている。
【００５４】
（第２の実施の形態）
第１の実施の形態では、タスク管理装置１００が１個のＣＰＵのみ備えている場合について説明した。次に第２の実施の形態ではタスク管理装置が複数のＣＰＵを備えている場合について説明する。
【００５５】
図１１に示すように、第２の実施の形態に係るタスク管理装置１１００は、上述した第１の実施の形態に係るタスク管理装置１００とは、ＯＳ１０１と処理が異なるＯＳ１１０１に変更され、ＣＰＵ及びキャッシュメモリが３個に変更された点が異なる。また、当該個数が変更されたＣＰＵ及びキャッシュメモリは、第１ＣＰＵ２２、第２ＣＰＵ２４、第３ＣＰＵ２６、第１キャッシュメモリ２１、第２キャッシュメモリ２３、第３キャッシュメモリ２５とする。また、ＯＳ１１０１は、第１の実施の形態にかかるＯＳ１０１とは、スケジューリング部１０５がスケジューリング部１１０２に変更されている点とする。なお、本実施の形態のタスク管理装置１１００の構成で、第１の実施の形態のタスク管理装置１００と共通な構成については説明を省略する。
【００５６】
本実施の形態にかかるタスク管理装置１１００では、マルチコアプロセッサシステムを採用し、３つのプロセッサ（第１ＣＰＵ２２、第２ＣＰＵ２４、第３ＣＰＵ２６）がシステムバスを介してＯＳ１１０１と相互接続している。
【００５７】
第１ＣＰＵ２２、第２ＣＰＵ２４、第３ＣＰＵ２６は、第１の実施の形態にかかるＣＰＵ１２と同様の構成のため説明を省略する。また、第１キャッシュメモリ２１、第２キャッシュメモリ２３、第３キャッシュメモリ２５も第１の実施の形態にかかるキャッシュメモリ１１と同様の構成のため説明を省略する。
【００５８】
スケジューリング部１１０２は、グループ判断部１１３と、第１割当部１１１１と、第２割当部１１１２と、アクティブ設定部１１４とを備えている。
【００５９】
第１割当部１１１１は、アクティブな時間的局所グループが存在しない場合に、第１ＣＰＵ２２、第２ＣＰＵ２４、又は第３ＣＰＵ２６のいずれか一つに対して、タスクテーブル１０４で管理しているタスクのうちいずれか一つのタスクを割り当てる。
【００６０】
第２割当部１１１２は、アクティブな時間的局所グループが存在している場合に、第１ＣＰＵ２２、第２ＣＰＵ２４、又は第３ＣＰＵ２６に対して、第１の割当部１１１１が割り当てたタスクの属する時間的局所グループと同じ時間的局所グループに属している他のタスクを、当該時間的局所グループに属していないタスクより先に割り当てる。
【００６１】
まずは、従来のタスクの割り当て手法について説明する。図１２に示すように、従来通りのタスクのスケジューリングでは、タスク毎に優先度が割り当てられているものとする。例えば、タスクＢ１、Ｂ２に対して優先度１が割り当てられ、タスクＣ１、Ｃ２に対して優先度２が割り当てられているものとする。
【００６２】
これにより、図１３に示すように、第１ＣＰＵ２２のタスクＡ１が第２ＣＰＵ２４のタスクＡ２より先に終了した場合に、優先度に基づいてタスクＢ１及びＢ２を近しい時間に実行することができる。
【００６３】
しかしながら、第２ＣＰＵ２４のタスクＡ２が第１ＣＰＵ２２のタスクＡ１より先に終了した場合に、図１４の符号１４０１に示されるように、第１ＣＰＵ２２のタスクＡ１が終了するまで、第２のＣＰＵ２４が処理を行わないことになり、処理効率が悪化する。
【００６４】
また、符号１４０２に示されるように、優先度を無視して各ＣＰＵに対してタスクを割り当てれば処理効率は悪化しないが、近しい時間に複数のタスク（例えばタスクＢ１及びＢ２）を行うという目的を達成することが困難になる。
【００６５】
つまり、従来技術ではＣＰＵのタスクの終了順序によっては、後続のタスクが待たされてしまい性能が低下していた。また、この性能低下を避けるために優先度を無視してスケジューリングすると、タスクを行う際の時間的局所性が損なわれていた。
【００６６】
これに対して、本実施の形態にかかるタスク管理装置１１００では、タスクに対して優先度を設定するのではなく、近しい時間に処理すべきタスクをグループ化することとした。このグループは、第１実施の形態と同様に、時間的局所グループとする。そして、図１５に示すように、タスクＢ１及びＢ２を同じタスクグループに設定し、タスクＣ１及びＣ２を同じタスクグループに設定した。なお、グループ化する際の処理は、第１実施の形態と同様とする。
【００６７】
これにより、図１６に示すように、第１ＣＰＵ２２のタスクＡ１の処理が終了した場合にタスクＢ１が割り当てられ、その後、第２ＣＰＵ２４のタスクＡ２の処理が終了した場合に、タスクＢ１と同一の時間的局所グループであるタスクＢ２が割り当てられることになる。これにより、タスクＢ１及びＢ２を近しい時間に実行することができる。
【００６８】
逆に、図１７に示すように、第２ＣＰＵ２４のタスクＡ２の処理が終了した場合にタスクＣ１が割り当てられ、その後、第１ＣＰＵ２２のタスクＡ１の処理が終了した場合に、タスクＣ１と同一の時間的局所グループであるタスクＣ２が割り当てられることになる。これにより、タスクＣ１及びＣ２を近しい時間に実行することができる。これにより、本実施の形態にかかるタスク管理装置１１００では、各ＣＰＵにおけるタスクの終了順序に依存せずに、性能確保と時間的局所性の両立が達成することができる。
【００６９】
本実施の形態にかかるタスク管理装置１１００では、時間的局所グループに含まれているタスクであれば、マルチコアプロセッサシステムの各ＣＰＵの処理の終了時間と関係なく、近しい時間に実行することができる。また、その際に、タスク管理装置１１００では、各ＣＰＵでタスクが割り当てられるために待機時間が発生することもない。これにより、タスク管理装置１１００では、各ＣＰＵ（第１ＣＰＵ２２、第２ＣＰＵ２４、第３ＣＰＵ２６）に対してタスクを効率的に割り当てることを可能としている。これにより、本実施の形態にかかるタスク管理装置１１００は、第１の実施の形態にかかるタスク管理装置１００と同様の効果を得ることができる。
【００７０】
また、図１８に示すように、本実施の形態のタスク管理装置１１００は、第１キャッシュメモリ２１と、第１ＣＰＵ２２と、第２キャッシュメモリ２３と、第２ＣＰＵ２４と、第３キャッシュメモリ２５と、第３ＣＰＵ２６と、ＲＯＭ１４と、ＲＡＭ１３と、通信Ｉ／Ｆ１５とこれらを接続するバス１６とを備えており、通常のコンピュータを利用したハードウェア構成となっている。
【００７１】
なお、本実施形態のタスク管理装置１１００で実行されるタスク管理プログラムは、ＲＯＭ１４等に予め組み込まれて提供される。なお、後述する実施の形態についても同様のハードウェア構成を備えているものとして説明を省略する。
【００７２】
（第３の実施の形態）
上述した第１及び第２の実施形態では、タスクを時間的局所グループでグループ化した。しかしながら、グループ化は時間的局所性の概念に制限するものではない。そこで、第３の実施の形態では、時間的局所性以外の概念を用いてグループ化した例について説明する。
【００７３】
図１９に示すように、第３の実施の形態に係るタスク管理装置１９００は、上述した第２の実施の形態に係るタスク管理装置１１００とは、ＯＳ１１０１と処理が異なるＯＳ１９０１に変更された点のみ異なる。また、ＯＳ１９０１は、第２の実施の形態にかかるＯＳ１１０１とは、タスク生成部１０２がタスク生成部１９０５に変更され、タスクテーブル１０４がタスクテーブル１９０２に変更され、スケジューリング部１１０２がスケジューリング部１９０３に変更され、スケジューリング履歴記憶部１０３がスケジューリング履歴記憶部１９０４に変更されている点とする。なお、本実施の形態のタスク管理装置１９００の構成で、第２の実施の形態のタスク管理装置１１００と共通な構成については説明を省略する。
【００７４】
タスク生成部１９０５は、アプリケーション１５０ａ〜ｎからの処理の実行の依頼に応じて、時間的局所性及び空間的局所性に基づいてグループ化されたタスクを生成する。空間的局所性とは、複数のタスクが同一のＣＰＵに割り当てられることを示す概念とする。つまり、タスク生成部１９０５で生成されたタスクのうち、同一グループの属する複数のタスクは、同一ＣＰＵで近しい時間で処理が行われることになる。
【００７５】
次に、空間的局所性でグループ化した場合の利点について一例を挙げて説明する。図２０に示すように、タスクＡ１の処理が第１ＣＰＵ２２で実行され、タスクＡ１の処理結果が第１キャッシュメモリ２１に格納された場合、タスクＡ１の処理結果を利用するタスクは、第１ＣＰＵ２２で実行された場合にすぐ結果を取得することができる。これに対して、第２ＣＰＵ２４でタスクＡ１の処理結果を利用するタスクが実行された場合、ＲＡＭ１３やシステムバスを介して処理結果を取得する必要があるため、遅延が生じることになる。そこで、本実施の形態にかかるタスク管理装置１９００では、時間的局所性のみならず、空間的局所性でグループ化してタスクを実行することとした。
【００７６】
なお、従来の技術では、タスクを連続的に同一ＣＰＵで処理したい場合には、図２１に示すようにタスク毎に処理を行うＣＰＵを指定することができた。この場合、図２２に示すように、第１ＣＰＵ２２でタスクＡ１が実行され、第２ＣＰＵ２４でタスクＡ２が実行された場合には、効率よく処理を行うことが可能であった。
【００７７】
しかしながら、図２３の符号２３０１に示すように、第１ＣＰＵ２２でタスクＡ２が実行され、第２ＣＰＵ２４でタスクＡ１が実行された場合には、第２ＣＰＵ２４でタスクＡ１が終了した後であっても、第１ＣＰＵ２２のタスクＡ２が終了するまで、タスクＢ１及びＢ２をＣＰＵに割り当てることができない。つまり、第２ＣＰＵ２４では、第１ＣＰＵ２２のタスクＡ２の処理が終了するまで、処理が行われないことになる。
【００７８】
さらに、符号２３０２が示すように、リバランスによりタスクＢ１を第２ＣＰＵ２４に割り当てた場合、第２ＣＰＵ２４の処理待ちを抑止することができるが、空間的局所性を保つことができなくなる。
【００７９】
つまり、従来の技術では、各ＣＰＵにおけるタスクの終了に応じて、後続のタスクが待たされてしまい、性能が低下していた。また、この性能低下を避けるために待ちが発生した時点で動的に再スケジューリング(リバランス)すると、タスク間の空間的局所性が損なわれていた。
【００８０】
そこで、本実施の形態にかかるタスク管理装置１９００では、空間的局所性に基づいてグループ化されたタスクを、各ＣＰＵに割り当てることとした。図２４に示すように、本実施の形態にかかるタスク管理装置１９００では、同一のＣＰＵで処理すべきタスクを予めグループ化しておく。なお、グループ化する手法については上述した実施の形態と同様とする。
【００８１】
本実施の形態にかかるタスク管理装置１９００では、このようにグループ化をされているので、図２５に示すように、第１ＣＰＵ２２でタスクＡ１の処理が終了した後に、空間的局所性でグループ化されているタスクＢ１及びタスクＢ２が割り当てられ、第２ＣＰＵ２４でタスクＡ２の処理が終了した後に、空間的局所性でグループ化されているタスクＣ１及びＣ２が割り当てられる。
【００８２】
さらに、図２６に示すように、第１ＣＰＵ２２でタスクＡ２の処理が行われ、第２ＣＰＵ２４にタスクＡ１の処理が行われた場合には、第２ＣＰＵ２４でタスクＡ１の処理の終了後にタスクＢ１及びタスクＢ２が割り当てられ、第１ＣＰＵ２２でタスクＡ２の処理が終了した後に、タスクＣ１及びＣ２が割り当てられる。
【００８３】
このように空間的局所グループでグループ化することで、効率的に処理を行うことができる。つまり、本実施の形態にかかるタスク管理装置１９００では、タスクがどのＣＰＵで処理されるかに依存することなく、性能確保と空間的局所性の両立が達成されている。
【００８４】
また、本実施の形態にかかるタスク管理装置１９００では、図２７に示すように、各タスクは、複数のタスクグループに属することはなく、一つのタスクグループ（空間的局所性及び時間的局所性のタスクグループ）に属する又はタスクグループに属さないこととする。
【００８５】
図１９に戻り、タスクテーブル１９０２は、タスク生成部１９０５により生成されたタスクであって、複数のＣＰＵによる処理待ちのタスクを管理する。図２８に示すように、タスクテーブル１９０２は、タスクＩＤと、タスクグループＩＤとを対応付けて記憶する。
【００８６】
図１９に戻り、スケジューリング履歴記憶部１９０４は、アクティブグループ対応管理テーブルを保持する。図２９に示すように、アクティブグループ対応管理テーブルは、タスクグループＩＤとＣＰＵ＿ＩＤとを対応付けて保持している。つまり、アクティブグループ対応管理テーブルでは、当該タスクグループＩＤで識別されるタスクグループが、ＣＰＵ＿ＩＤで識別されるＣＰＵに対して割り当てられていることを意味する。
【００８７】
図１９に戻り、スケジューリング部１９０３は、グループ判断部１９１３と、第１割当部１９１１と、第２割当部１９１２と、アクティブ設定部１９１４とを備えている。
【００８８】
グループ判断部１９１３は、任意のＣＰＵに対してタスクを割り当てる際、当該ＣＰＵに割り当てられたタスクグループは存在するか否か判断する。
【００８９】
第１割当部１９１１は、ＣＰＵ（第１ＣＰＵ２２、第２ＣＰＵ２４又は第３ＣＰＵ２６）に割り当てられたタスクグループが存在しない場合に、タスクテーブル１９０２で管理しているタスクのうち、他のＣＰＵに割り当てられたタスクグループに含まれていない処理待ちのタスクを当該ＣＰＵに対して割り当てる。
【００９０】
第２割当部１９１２は、割り当てられたタスクグループが存在する場合に、第１割当部１９１１が割り当てたタスクが終了したＣＰＵ（第１ＣＰＵ２２、第２ＣＰＵ２４又は第３ＣＰＵ２６）に対して、当該ＣＰＵに割り当てられたタスクの属するタスクグループと同じタスクグループに属する他のタスクを、当該タスクグループに属していないタスクより先に割り当てる。
【００９１】
アクティブ設定部１９１４は、第１割当部１９１１がＣＰＵ（第１ＣＰＵ２２、第２ＣＰＵ２４又は第３ＣＰＵ２６）に対して割り当てたタスクグループを、当該ＣＰＵでアクティブなタスクグループとして設定する。
【００９２】
本実施の形態にかかるタスク管理装置１９００は、タスク管理装置１００の処理とは、ＣＰＵに対するタスクの割り当て手順のみ異なる。そこで、タスク管理装置１９００におけるＣＰＵに対するタスクの割り当て手順について、図３０を用いて説明する。なお、以下の処理では、当該割当先のＣＰＵを割当先ＣＰＵという。
【００９３】
まず、グループ判断部１９１３は、割当先ＣＰＵに割り当てられたタスクグループが存在するか否か判断する（ステップＳ３００１）。なお、割り当てられたタスクグループが存在するか否かは、図２９に示したアクティブグループ対応管理テーブルを参照することで、確認できる。
【００９４】
そして、グループ判断部１９１３は、割り当てられたタスクグループが存在すると判断した場合（ステップＳ３００１：Ｙｅｓ）、第２割当部１９１２が、タスクテーブル１９０２から当該タスクグループに含まれるタスクを処理対象として選択する（ステップＳ３００２）。
【００９５】
次に、第２割当部１９１２は、選択されたタスクを、割当先ＣＰＵに対して割り当てる（ステップＳ３００３）。
【００９６】
また、グループ判断部１９１３がアクティブな時間的局所グループが存在しないと判断した場合（ステップＳ３００１：Ｎｏ）、タスクテーブル１９０２を参照して、処理待ちのタスクが存在するか否か判断する（ステップＳ３００４）。そして、グループ判断部１９１３が処理待ちのタスクが存在しないと判断した場合（ステップＳ３００４：Ｎｏ）、処理を終了する。
【００９７】
また、グループ判断部１９１３が処理待ちのタスクが存在すると判断した場合（ステップＳ３００４：Ｙｅｓ）、第１割当部１９１１がタスクテーブル１９０２に格納されている処理待ちのタスクから、処理対象となるタスクを選択する（ステップＳ３００５）。
【００９８】
そして、第１割当部１９１１は、選択したタスクを割当先ＣＰＵに対して割り当てる（ステップＳ３００６）。
【００９９】
次に、アクティブ設定部１９１４が、第１割当部１９１１で選択されたタスクが、タスクグループに属しているか否か判断する（ステップＳ３００７）。そして、アクティブ設定部１９１４が選択したタスクがタスクグループに属していないと判断した場合（ステップＳ３００７：Ｎｏ）、処理を終了する。
【０１００】
そして、アクティブ設定部１９１４が選択したタスクがタスクグループに属していると判断した場合（ステップＳ３００７：Ｙｅｓ）、選択されたタスクが属しているタスクグループを、割当先ＣＰＵの処理対象として設定する（ステップＳ３００８）。本実施の形態では、アクティブ設定部１９１４が、タスクグループを識別するＩＤをアクティブグループ対応管理テーブルに登録する。
【０１０１】
これにより、本実施の形態にかかるタスク管理装置１９００は、第２の実施の形態にかかるタスク管理装置１１００と同様の効果を得ることができるほか、同一のタスクグループに属しているタスクが同一のＣＰＵで連続して実行されるので、タスク間でＣＰＵが備えるキャッシュメモリ経由でデータの受け渡しを行うことができるので、処理効率が向上する。
【０１０２】
（第４の実施の形態）
第４の実施の形態では、時間的局所性及び空間的局所性のそれぞれについてグループ化した場合について説明する。
【０１０３】
図３１に示すように、第４の実施の形態に係るタスク管理装置３１００は、上述した第３の実施の形態に係るタスク管理装置１９００とは、ＯＳ１９０１と処理が異なるＯＳ３１０１に変更された点のみ異なる。
【０１０４】
また、ＯＳ３１０１では、第３の実施の形態にかかるＯＳ１９０１とは、タスク生成部１９０５がタスク生成部３１０５に変更され、タスクテーブル１９０２がタスクテーブル３１０２に変更され、スケジューリング部１９０３がスケジューリング部３１０４に変更され、スケジューリング履歴記憶部１９０４がスケジューリング履歴記憶部３１０３に変更されている点とする。なお、本実施の形態のタスク管理装置３１００の構成で、第３の実施の形態のタスク管理装置１９００と共通な構成については説明を省略する。
【０１０５】
タスク生成部３１０５は、アプリケーション１５０ａ〜ｎからの処理の実行の依頼に応じて、時間的局所グループ及び／又は空間的局所グループに属するタスクを生成する。つまり、時間的局所グループに属するタスクは、近しい時間に処理が行われるタスクとなる。そして、空間的局所グループに属するタスクは、同一のＣＰＵで処理が行われるタスクとなる。
【０１０６】
また、従来の技術では、複数のタスクを同一のＣＰＵで近い時間に処理したい場合、図３２に示すように、処理を行うＣＰＵの指定及び優先度を設定することで対応することができた。この場合、図３３に示すように、第１ＣＰＵ２２でタスクＡ１が実行され、第２ＣＰＵ２４でタスクＡ２が実行された場合には、効率よく処理を行うことが可能であった。
【０１０７】
しかしながら、図３４の符号３４０１に示すように、第２ＣＰＵ２４でタスクＡ２が、第１ＣＰＵ２２のタスクＡ１より先に処理が終了した場合、第１ＣＰＵ２２でタスクＡ１の処理が終了するまで、第２ＣＰＵ２４はタスクＢ２の処理を行うことができない。
【０１０８】
さらに、符号３４０２が示すように、優先度を無視した場合、第２ＣＰＵ２４においてすぐに処理を行うことが可能となるが、タスクＢ１及びタスクＢ２を近しい時間に処理を行うことができなくなる。
【０１０９】
さらに、符号３４０３が示すように、リバランスを行った場合、第２ＣＰＵ２４においてすぐに処理を行うことが可能となるが、空間的局所性を保つことができなくなる。
【０１１０】
つまり、従来の技術ではタスクの終了順序、若しくはタスクがどのＣＰＵで処理されるかに依存して後続のタスクが待たされてしまい性能が低下していた。さらに、この性能低下を避けるために優先度を無視してスケジューリングすると、タスクを実行する際の時間的局所性が損なわれていた。また、タスクの処理待ちが発生した時点で動的に再スケジューリング(リバランス)すると、タスクの実行について空間的局所性が損なわれていた。
【０１１１】
そこで、本実施の形態にかかるタスク管理装置３１００では、空間的局所グループ及び時間的局所グループでグループ化したタスクを、各ＣＰＵに割り当てることとした。図３５に示すように、本実施の形態にかかるタスク管理装置３１００では、時間的局所グループと空間的局所グループとは別のグループとする。
【０１１２】
そこで、本実施の形態にかかるタスク管理装置３１００では、時間的局所グループと空間的局所グループとによりグループ化しているので、図３６に示すように、第１ＣＰＵ２２のタスクＡ１の処理が終了した後に第２ＣＰＵ２４のタスクＡ２の処理が終了した場合に、要求通りに時間的局所性及び空間的局所性を保つことができる。
【０１１３】
また、タスク管理装置３１００では、図３７に示すように、第２ＣＰＵ２４のタスクＡ２の処理が終了した後に第１ＣＰＵ２２のタスクＡ１の処理が終了した場合であっても、ＣＰＵの性能確保、時間的局所性及び空間的局所性を達成することができる。
【０１１４】
また、本実施の形態にかかるタスク管理装置３１００では、図３８に示すように、各タスクは、空間的局所グループ及び／又は時間的局所グループに属している。なお、図示していないが、タスクは、空間的局所グループ及び時間的局所グループのいずれにも属していなくてもよい。
【０１１５】
図３１に戻り、タスクテーブル３１０２は、タスク生成部３１０５により生成されたタスクであって、複数のＣＰＵによる処理待ちのタスクを管理する。図３９に示すように、タスクテーブル３１０２は、タスクＩＤと、時間的局所グループＩＤと、空間的局所グループＩＤとを対応付けて記憶する。
【０１１６】
図３１に戻り、スケジューリング履歴記憶部３１０３は、アクティブグループ対応管理テーブルとアクティブグループ管理テーブルとを保持する。図４０に示すように、アクティブグループ対応管理テーブルは、空間的局所グループＩＤとＣＰＵ＿ＩＤとを対応付けて保持している。つまり、アクティブグループ対応管理テーブルでは、空間的局所グループＩＤで識別される空間的局所グループが、ＣＰＵ＿ＩＤで識別されるＣＰＵに対して割り当てられていることを意味する。
【０１１７】
アクティブグループ管理テーブルは、第１の実施の形態にかかる図７に示したので説明を省略する。
【０１１８】
図３１に戻り、スケジューリング部３１０４は、グループ判断部３１１３と、第１割当部３１１１と、第２割当部３１１２と、アクティブ設定部３１１４とを備えている。
【０１１９】
グループ判断部３１１３は、任意のＣＰＵに対してタスクを割り当てる際、他のＣＰＵに割り当てられた空間的局所グループを除き、アクティブな時間的局所グループが存在するか否か判断する。
【０１２０】
第１割当部３１１１は、グループ判断部３１１３にアクティブな時間的局所グループが存在しないと判断された場合に、タスクテーブル３１０２で管理しているタスクのうち、他のＣＰＵに割り当てられたタスクグループに含まれていない処理待ちのタスクを当該ＣＰＵに対して割り当てる。
【０１２１】
第２割当部３１１２は、グループ判断部３１１３がアクティブな時間的局所グループが存在すると判断された場合に、当該任意のＣＰＵ（第１ＣＰＵ２２、第２ＣＰＵ２４又は第３ＣＰＵ２６）に対して、アクティブな時間的局所グループに属するタスクを割り当てる。つまり、ＣＰＵに割り当てられたタスクが属する時間的局所グループと同じ時間的局所グループに属する他のタスクを、当該時間的局所グループに属していないタスクより先に割り当てることになる。
【０１２２】
アクティブ設定部３１１４は、第１割当部３１１１がＣＰＵ（第１ＣＰＵ２２、第２ＣＰＵ２４又は第３ＣＰＵ２６）に対して割り当てたタスクの属するタスクグループに対して設定を行う。なお、設定の詳細については後述する。
【０１２３】
このように、本実施の形態にかかるタスク管理装置３１００では、時間的局所性及び空間的局所性に基づいて、適切にタスクを各ＣＰＵに割り当てることができる。
【０１２４】
本実施の形態にかかるタスク管理装置３１００は、タスク管理装置１００の処理とは、ＣＰＵに対するタスクの割り当て手順のみ異なる。そこで、タスク管理装置３１００におけるＣＰＵに対するタスクの割り当て手順について、図４１を用いて説明する。なお、以下の処理では、当該割当先のＣＰＵを割当先ＣＰＵという。
【０１２５】
まず、グループ判断部３１１３は、他のＣＰＵ（割当先ＣＰＵ以外）に割り当てられた空間的局所グループを除き、アクティブな時間的局所グループが存在するか否か判断する（ステップＳ４１０１）。なお、他のＣＰＵに割り当てられたタスクグループは、図４０に示したアクティブグループ対応管理テーブルを参照することで、確認できる。
【０１２６】
そして、グループ判断部３１１３は、アクティブな時間的局所グループが存在すると判断した場合（ステップＳ４１０１：Ｙｅｓ）、第２割当部３１１２が、タスクテーブル３１０２から当該時間的局所グループに含まれるタスクを処理対象として選択する（ステップＳ４１０２）。
【０１２７】
次に、第２割当部３１１２は、選択されたタスクを、割当先ＣＰＵに対して割り当てる（ステップＳ４１０３）。
【０１２８】
また、グループ判断部３１１３がアクティブな時間的局所グループが存在しないと判断した場合（ステップＳ４１０１：Ｎｏ）、他のＣＰＵに割り当てられた空間的局所グループに属していない処理待ちのタスクは存在するか否か判断する（ステップＳ４１０４）。そして、グループ判断部３１１３が処理待ちのタスクが存在しないと判断した場合（ステップＳ４１０４：Ｎｏ）、処理を終了する。
【０１２９】
また、グループ判断部３１１３が処理待ちのタスクが存在すると判断した場合（ステップＳ４１０４：Ｙｅｓ）、第１割当部３１１１がタスクテーブル３１０２に格納されている処理待ちのタスクから、処理対象となるタスクを選択する（ステップＳ４１０５）。
【０１３０】
そして、第１割当部３１１１は、選択したタスクを割当先ＣＰＵに対して割り当てる（ステップＳ４１０６）。
【０１３１】
次に、アクティブ設定部３１１４が、第１割当部３１１１で選択されたタスクが、空間的局所グループに属しているか否か判断する（ステップＳ４１０７）。そして、アクティブ設定部３１１４が選択したタスクが空間的局所グループに属していないと判断した場合（ステップＳ４１０７：Ｎｏ）、特に処理を行わない。
【０１３２】
そして、アクティブ設定部３１１４が選択したタスクが空間的局所グループに属していると判断した場合（ステップＳ４１０７：Ｙｅｓ）、選択されたタスクが属している空間的局所グループを、割当先ＣＰＵの処理対象として設定する（ステップＳ４１０８）。本実施の形態では、アクティブ設定部３１１４が、タスクグループを識別するＩＤをアクティブグループ対応管理テーブルに登録する。
【０１３３】
次に、アクティブ設定部３１１４が、第１割当部３１１１で選択されたタスクが、時間的局所グループに属しているか否か判断する（ステップＳ４１０９）。そして、アクティブ設定部３１１４が選択したタスクが時間的局所グループに属していないと判断した場合（ステップＳ４１０９：Ｎｏ）、特に処理を行わない。
【０１３４】
そして、アクティブ設定部３１１４が選択したタスクが時間的局所グループに属していると判断した場合（ステップＳ４１０９：Ｙｅｓ）、選択されたタスクが属している時間的局所グループを、アクティブに設定する（ステップＳ４１１０）。本実施の形態では、アクティブ設定部３１１４が、時間的局所グループを識別するＩＤを、図７に示すアクティブグループ管理テーブルに登録する。
【０１３５】
本実施の形態にかかるタスク管理装置３１００では、時間的局所性及び空間的局所性を考慮することで、効率的にタスクをＣＰＵに割り当てることができる。また、時間的局所性と空間的局所性とを別グループでグルーピングを行うことで、より複雑なスケジューリングを可能としている。さらに、グループ化の手続が容易であるため、グループ分けを行う主体（例えば開発者など）から直感的に理解することが可能となる。
【０１３６】
（第５の実施の形態）
次に、グループ化されたタスクをＣＰＵに割り当てた後、割り当てたタスクを別のＣＰＵに再割り当てを行う場合について説明する。
【０１３７】
図４２に示すように、第５の実施の形態に係るタスク管理装置４２００は、上述した第４の実施の形態に係るタスク管理装置３１００とは、ＯＳ３１０１と処理が異なるＯＳ４２０１に変更された点のみ異なる。
【０１３８】
また、ＯＳ４２０１では、第５の実施の形態にかかるＯＳ３１０１とは、スケジューリング部３１０４がスケジューリング部４２０２に変更されている点とする。なお、本実施の形態のタスク管理装置４２００の構成で、第４の実施の形態のタスク管理装置３１００と共通な構成については説明を省略する。
【０１３９】
スケジューリング部４２０２は、グループ判断部３１１３と、第１割当部３１１１と、第２割当部３１１２と、再割当部４２１１と、アクティブ設定部４２１２とを備えている。
【０１４０】
再割当部４２１１は、各ＣＰＵに割り当てられた空間的局所グループを、他のタスクグループに再割当（リバランス）を行う。具体的には、再割当部４２１１は、任意のＣＰＵが他のＣＰＵより割り当てられたタスクの数が多い場合に、当該任意のＣＰＵに対して割り当てられているタスクと同じ空間的局所性グループに属している他のタスクを、他のＣＰＵに対して割り当てる。なお、詳細な処理手順については後述する。
【０１４１】
アクティブ設定部４２１２は、アクティブ設定部３１１４と同様の機能を備えているほかに、再割当部４２１１が行った再割当に従って、時間的局所グループの再設定を行う。具体的には、アクティブ設定部４２１２は、アクティブグループ対応管理テーブルの更新を行う。
【０１４２】
図４３に示すように、各タスクがグループ化された場合について説明する。この場合、タスクＢ１、Ｂ２及びＢ３が同じ空間的局所グループに属している。また、タスクＣ１、Ｃ２及びＣ３も同様に同じ空間的局所グループに属している。なお、各タスクを結ぶ直線はタスク間の依存関係を示している。つまり、依存関係が生じているタスクＢ１、Ｂ２及びＢ３と、タスクＣ１、Ｃ２及びＣ３とをそれぞれ同一プロセッサで処理したいとする。
【０１４３】
この場合、図４４に示すようにタスクの処理順序によっては、タスクＢ１、Ｂ２及びＢ３の空間的局所グループ、及びタスクＣ１、Ｃ２及びＣ３の空間的局所グループが同じＣＰＵ（例えば第１ＣＰＵ２２）に割り当てられることも考えられる。
【０１４４】
そこで本実施の形態にかかるタスク管理装置４２００では、図４５に示すような再割当（リバランス）を行うこととした。つまり、タスク管理装置４２００では、一つのＣＰＵに対して処理対象とされたタスクが片寄ることを抑止して、性能が低下することを抑止することができる。
【０１４５】
この場合、第１ＣＰＵ２２が使用する第１キャッシュメモリ２１と、第２ＣＰＵ２４が使用する第２キャッシュメモリ２３との間でデータの送受信が発生するが、第２ＣＰＵ２４が有効に利用され、結果として処理効率が向上する。
【０１４６】
次に、タスク管理装置４２００におけるＣＰＵに対するタスクの割り当て手順について、図４６を用いて説明する。なお、以下の処理では、当該割当先のＣＰＵを割当先ＣＰＵという。
【０１４７】
まず、グループ判断部３１１３は、図４１のステップＳ４１０１及びステップＳ４１０４の処理手順で、割当先ＣＰＵにおいて、処理対象となる時間的局所グループ又は処理待ちのタスクの存在を確認する（ステップＳ４６０１）。
【０１４８】
次に、再割当部４２１１が、割当先ＣＰＵに割り当てられた時間的局所グループ又は処理待ちのタスクが存在するか否か判断する（ステップＳ４６０２）。
【０１４９】
そして、再割当部４２１１が存在すると判断した場合（ステップＳ４６０２：Ｙｅｓ）、図４１のステップＳ４１０２、Ｓ４１０３、Ｓ４１０５〜Ｓ４１１０の処理手順で、処理対象となるタスクの選択（ステップＳ４６０３）、及びアクティブとなるタスクグループの設定（アクティブグループ）の処理を行う（ステップＳ４６０４）。
【０１５０】
また、再割当部４２１１が割当先ＣＰＵに割り当てられた時間的局所グループ又は処理待ちのタスクが存在しないと判断した場合（ステップＳ４６０２：Ｎｏ）、他のＣＰＵに割り当てられた空間的局所グループが存在するか否か判断する（ステップＳ４６０５）。再割当部４２１１は存在しないと判断した場合（ステップＳ４６０５：Ｎｏ）、処理を終了する。
【０１５１】
また、再割当部４２１１が、他のＣＰＵに割り当てられた空間的局所グループが存在すると判断した場合（ステップＳ４６０５：Ｙｅｓ）、他のＣＰＵに割り当てられた空間的局所グループのタスクを処理対象として選択する（ステップＳ４６０６）。
【０１５２】
そして、再割当部４２１１は、選択したタスクを割当先ＣＰＵに割り当てる（ステップＳ４６０７）。
【０１５３】
次に、アクティブ設定部４２１２が、再割当部４２１１が再割当を行ったタスクが属している空間的局所グループを割当先ＣＰＵの処理対象として設定すると共に、他のＣＰＵから処理対象の解除を行う（ステップＳ４６０８）。
【０１５４】
本実施の形態にかかるタスク管理装置４２００では、処理すべきタスクが一つのＣＰＵに片寄りが生じた際に、空間的局所グループの動的な再スケジューリングを行うことで負荷バランスを調整する。つまり、再スケジュールを行うことで通信ペナルティーが発生するが、空間的局所グループを同一のプロセッサに割り当てることで後続の通信ペナルティーを抑えることができる。
【０１５５】
（第６の実施の形態）
次に、空間的局所グループ及び時間的局所グループが存在する場合にさらに詳細に割り当てる条件を定めた例について説明する。
【０１５６】
図４７に示すように、第６の実施の形態に係るタスク管理装置４７００は、上述した第４の実施の形態に係るタスク管理装置３１００とは、ＯＳ３１０１と処理が異なるＯＳ４７０１に変更された点のみ異なる。
【０１５７】
また、ＯＳ４７０１では、第４の実施の形態にかかるＯＳ３１０１とは、スケジューリング部３１０４がスケジューリング部４７０２に変更されている点とする。なお、本実施の形態のタスク管理装置４７００の構成で、第４の実施の形態のタスク管理装置３１００と共通な構成については説明を省略する。
【０１５８】
スケジューリング部４７０２は、グループ判断部４７１３と、第１割当部４７１１と、第２割当部４７１２と、アクティブ設定部３１１４とを備えている。
【０１５９】
グループ判断部４７１３は、任意のＣＰＵに対してタスクを割り当てる際、空間的局所性及び時間的局所性に基づいて、処理対象となるタスクグループを判断する。なお、詳細な処理手順については後述する。
【０１６０】
第１割当部４７１１、及び第２割当部４７１２は、グループ判断部３１１３により処理対象として判断されたタスクグループに属しているタスクをＣＰＵに対して割り当てる。
【０１６１】
本実施の形態にかかる第２割当部４７１２は、時間的局所グループに属しているタスクが、空間的局所グループに属している場合、当該タスクを、空間的局所グループに属していないタスクより先にＣＰＵに割り当てる。なお、詳細な処理手順については後述する。
【０１６２】
次に、時間的局所グループ及び空間的局所グループに属するタスクの割当について説明する。図４８のタスク管理装置４７００のタスクの管理概念に示されるように、任意のＣＰＵに割り当てられた空間的局所グループのタスクは、他のＣＰＵから参照することができない。また、図４８に示すように、アクティブな時間的局所グループは、空間的局所性によりそれぞれのＣＰＵに限り実行可能なものと、全てのＣＰＵで実行可能なものとがある。
【０１６３】
また、図中の「（数字）」は、第２ＣＰＵ２４に割り当てられるタスクグループの優先順位を示したものとする。また、図中の「［数字］」は、第３ＣＰＵ２６に割り当てられるタスクグループの優先順位を示したものとする。なお、後述する説明では、Ｓｐ２を第２ＣＰＵ２４に割り当てられた空間的局所グループを示し、Ｓ―ｐ２を第２ＣＰＵ２４以外のＣＰＵに割り当てられた空間的局所グループを示す。
【０１６４】
そして、図４９に示すように、タスク管理装置４７００は、時間的局所グループＳ２及び空間的局所グループＳ３と、時間的局所グループＴ２とが、ＣＰＵに未割当の処理待ちのタスクグループとして受け取った場合について説明する。なお、重なっている領域は、複数のタスクグループに属しているタスクが存在していることを示している。
【０１６５】
その後、図５０に示すように、第１割当部４７１１が空間的局所グループＳ３を第３ＣＰＵ２６に割り当てた場合、アクティブ設定部３１１４がアクティブな空間的局所グループＳ’３を設定する。なお、空間的局所グループＳ’３は、時間的局所グループＴ２の一部のタスクを含んでいる。
【０１６６】
そして、図５１に示すように、アクティブ設定部３１１４が時間的局所グループＴ２をアクティブに設定する。アクティブに設定された時間的局所グループＴ２を、Ｔ’２と示す。これに伴い、空間的局所グループＳ’３及び時間的局所グループＴ’２に属するタスクは、第３ＣＰＵ２６の処理対象として最も優先度が高く設定される。
【０１６７】
そして、空間的局所グループＳ’３に含まれていない時間的局所グループＴ’２は、各ＣＰＵで優先度が２番目に高いものとして設定される。さらに、時間的局所グループＴ’２に属していない空間的局所グループＳ’３のタスクは、第３ＣＰＵ２６の処理対象として優先度が３番目に高いものとして設定される。
【０１６８】
次に、図５２に示すように、第１割当部４７１１が空間的局所グループＳ２を第２ＣＰＵ２４に割り当てた場合、アクティブ設定部３１１４がアクティブな空間的局所グループＳ’２を設定する。これにより、空間的局所グループＳ２及び時間的局所グループＴ’２に属するタスクが、第２ＣＰＵ２４で最も優先度が高く設定される。
【０１６９】
そこで、タスク管理装置４７００におけるＣＰＵに対するタスクの割り当て手順について、図５３を用いて説明する。なお、以下の処理では、当該割当先のＣＰＵを割当先ＣＰＵという。
【０１７０】
まず、グループ判断部４７１３は、他のＣＰＵ（割当先ＣＰＵ以外）に割り当てられた空間的局所グループを除き、アクティブな時間的局所グループが存在するか否か判断する（ステップＳ５３０１）。
【０１７１】
そして、グループ判断部４７１３は、アクティブな時間的局所グループが存在すると判断した場合（ステップＳ５３０１：Ｙｅｓ）、アクティブな時間的局所グループに属するタスクであって、本処理手順において割当対象であるＣＰＵに割り当てられた時間的局所タスクグループに属するタスクが存在するか否か判断する（ステップＳ５３０２）。
【０１７２】
そして、グループ判断部４７１３がアクティブな時間的局所グループに属するタスクであって、割当先ＣＰＵに割り当てられた空間的局所グループに属しているタスクが存在すると判断した場合（ステップＳ５３０２：Ｙｅｓ）、第２割当部４７１２は当該タスクを次に処理を行う対象として選択し（ステップＳ５３０３）、選択したタスクを割当先ＣＰＵに対して割り当てる（ステップＳ５３０４）。
【０１７３】
また、グループ判断部４７１３がアクティブな時間的局所グループに属するタスクであって、割当先ＣＰＵに割り当てられた空間的局所グループに属しているタスクが存在しないと判断した場合（ステップＳ５３０２：Ｎｏ）、第２割当部４７１２はアクティブな時間的局所グループに属するタスクであって、他のＣＰＵに割り当てられた空間的局所グループに属していないタスクを選択し（ステップＳ５３０５）、選択したタスクを割当先ＣＰＵに対して割り当てる（ステップＳ５３０６）。
【０１７４】
また、グループ判断部４７１３がアクティブな時間的局所グループが存在しないと判断した場合（ステップＳ５３０１：Ｎｏ）、他のＣＰＵに割り当てられた空間的局所グループに属していない処理待ちのタスクは存在するか否か判断する（ステップＳ５３０７）。そして、グループ判断部４７１３が処理待ちのタスクが存在しないと判断した場合（ステップＳ５３０７：Ｎｏ）、処理を終了する。
【０１７５】
次に、グループ判断部４７１３が、割当先ＣＰＵに割り当てられた空間的局所グループが存在するか否か判断する（ステップＳ５３０８）。
【０１７６】
そして、グループ判断部４７１３が、割当先ＣＰＵに割り当てられた空間的局所グループが存在すると判断した場合（ステップＳ５３０８：Ｙｅｓ）、第２割当部４７１２は、当該空間的局所グループに属してるタスクを選択し（ステップＳ５３０９）、選択したタスクを割当先ＣＰＵに対して割り当てる（ステップＳ５３１０）。
【０１７７】
また、グループ判断部４７１３が、割当先ＣＰＵに割り当てられた空間的局所グループが存在しないと判断した場合（ステップＳ５３０８：Ｎｏ）、第１割当部４７１１は、処理待ちのタスクのうち、他のＣＰＵに割り当てられた空間的局所グループに属していないタスクを選択し（ステップＳ５３１１）。選択したタスクを割当先ＣＰＵに対して割り当てる（ステップＳ５３１２）。その後、アクティブ設定部３１１４が、図４１のステップＳ４１０７〜Ｓ４１１０と同様の処理を行い、処理対象の設定（アクティブグループ）を行う（ステップＳ５３１３）。
【０１７８】
なお、本実施の形態に係るタスク管理装置４７００で説明した処理と、第５の実施形態で説明した再割当処理とを組み合わせても良い。
【０１７９】
ＣＰＵに割り当てるタスクの条件を詳細に設定した。これにより、例えば、アクティブな時間的局所グループを優先的に処理を行う際に、当該ＣＰＵに対して割り当てられた空間的局所グループに属しているタスクを優先的に処理を行うため、ＣＰＵに割り当てられるタスクに偏りが生じることを抑止することができる。
【０１８０】
このように本実施の形態にかかるタスク管理装置４７００では、ＣＰＵに割り当てられるタスクに片寄りが発生することを抑止して、空間的局所性が達成される可能性が向上する。
【０１８１】
上述した実施の形態のタスク管理装置で実行されるタスク管理プログラムは、インストール可能な形式又は実行可能な形式のファイルでＣＤ−ＲＯＭ、フレキシブルディスク（ＦＤ）、ＣＤ−Ｒ、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ）等のコンピュータで読み取り可能な記録媒体に記録して提供するように構成してもよい。
【０１８２】
さらに、上述した実施の形態にかかるタスク管理装置で実行されるタスク管理プログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成しても良い。また、上述した実施の形態のタスク管理装置で実行されるタスク管理プログラムをインターネット等のネットワーク経由で提供または配布するように構成しても良い。
【０１８３】
上述した実施の形態のタスク管理装置で実行されるタスク管理プログラムは、上述した各部を含むモジュール構成となっており、実際のハードウェアとしてはＣＰＵ（プロセッサ）がＲＯＭから認証プログラムを読み出して実行することにより上記各部が、タスク管理装置が有する主記憶装置上にロードされ、上記各部が主記憶装置上に生成されるようになっている。
【０１８４】
また、上述した実施の形態にかかるタスク管理装置のソフトウェア部で示した各構成要素は、ソフトウェアで実装することに制限するものではなく、一部もしくは全部をハードウェア実装してもよい。
【０１８５】
なお、本発明は上述した実施の形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上述した実施の形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。
【図面の簡単な説明】
【０１８６】
【図１】第１の実施の形態にかかるタスク管理装置の機能構成を示すブロック図である。
【図２】第１の実施の形態において処理対象となるタスクの依存関係を示した概念図である。
【図３】キャッシュメモリ及びＲＡＭにタスクの処理結果を格納する概念を示した説明図である。
【図４】タスクを時間的局所性に基づいてグループ化した概念を示した説明図である。
【図５】時間的局所グループに分けられたタスクを示した説明図である。
【図６】第１の実施形態にかかるタスクテーブルのテーブル構造を示した図である。
【図７】第１の実施形態にかかるアクティブグループ管理テーブルのテーブル構造を示した図である。
【図８】第１の実施形態にかかる、タスクの生成から当該タスクを割り当てるまでの処理手順を示すフローチャートである。
【図９】第１の実施形態にかかる、タスクの割り当て手順を示すフローチャートである。
【図１０】第１の実施形態にかかるタスク管理装置のハードウェア構成を示した図である。
【図１１】第２の実施の形態にかかるタスク管理装置の機能構成を示すブロック図である。
【図１２】依存関係があるタスクに対して優先度を割り当てる概念を示した説明図である。
【図１３】優先度が割り当てられたタスクを複数のＣＰＵで処理した第１の例を示した図である。
【図１４】優先度が割り当てられたタスクを複数のＣＰＵで処理した第２の例を示した図である。
【図１５】依存関係があるタスクに対して、時間的局所性でグループ化した概念を示した説明図である。
【図１６】第２の実施の形態において、時間的局所性でグループ化したタスクを処理した第１の例を示した図である。
【図１７】第２の実施の形態において、時間的局所性でグループ化したタスクを処理した第２の例を示した図である。
【図１８】第２の実施形態にかかるタスク管理装置のハードウェア構成を示した図である。
【図１９】第３の実施の形態にかかるタスク管理装置の機能構成を示すブロック図である。
【図２０】複数のＣＰＵがキャッシュメモリのタスクの処理結果を利用する概念を示した説明図である。
【図２１】依存関係があるタスクを処理するＣＰＵを指定した概念を示した説明図である。
【図２２】ＣＰＵを指定したタスクを処理する第１の例を示した図である。
【図２３】ＣＰＵを指定したタスクを処理する第２の例を示した図である。
【図２４】依存関係があるタスクに対して、時間的局所性及び空間的局所性でグループ化した概念を示した説明図である。
【図２５】第３の実施の形態において、時間的局所性及び空間的局所性でグループ化したタスクを処理する第１の例を示した図である。
【図２６】第３の実施の形態において、時間的局所性及び空間的局所性でグループ化したタスクを処理する第２の例を示した図である。
【図２７】タスクグループに分けられたタスクを示した説明図である。
【図２８】第３の実施の形態にかかるタスクテーブルのテーブル構造を示した図である。
【図２９】第３の実施の形態にかかるアクティブグループ対応管理テーブルのテーブル構造を示した図である。
【図３０】第３の実施形態における、タスクの割り当て手順を示すフローチャートである。
【図３１】第４の実施の形態にかかるタスク管理装置の機能構成を示すブロック図である。
【図３２】依存関係があるタスクに対して処理を行うＣＰＵ及び優先度を指定した概念を示した説明図である。
【図３３】優先度及びＣＰＵを指定したタスクを処理する第１の例を示した図である。
【図３４】優先度及びＣＰＵを指定したタスクを処理する第２の例を示した図である。
【図３５】依存関係があるタスクに対して、時間的局所性及び空間的局所性についてそれぞれ別にグループ化した第１の例を示した概念図である。
【図３６】第４の実施の形態において、時間的局所性及び空間的局所性で別グループ化したタスクを処理した第１の例を示した図である。
【図３７】第４の実施の形態において、時間的局所性及び空間的局所性で別グループ化したタスクを処理した第２の例を示した図である。
【図３８】時間的局所性及び空間的局所性についてそれぞれ別のタスクグループに分けられたタスクを示した説明図である。
【図３９】第４の実施の形態にかかるタスクテーブルのテーブル構造を示した図である。
【図４０】第４の実施の形態にかかるアクティブグループ対応管理テーブルのテーブル構造を示した図である。
【図４１】第４の実施形態における、タスクの割り当て手順を示すフローチャートである。
【図４２】第５の実施の形態にかかるタスク管理装置の機能構成を示すブロック図である。
【図４３】依存関係があるタスクに対して、時間的局所性及び空間的局所性で別グループ化した第２の例を示した概念図である。
【図４４】第５の実施の形態において、時間的局所性及び空間的局所性についてそれぞれ別にグループ化したタスクを処理する例を示した図である。
【図４５】第５の実施の形態において、時間的局所性及び空間的局所性についてそれぞれ別にグループ化したタスクを再割り当てした後に処理する例を示した図である。
【図４６】第５の実施形態における、タスクの割り当て手順を示すフローチャートである。
【図４７】第６の実施の形態にかかるタスク管理装置の機能構成を示すブロック図である。
【図４８】第６の実施の形態において、各ＣＰＵが処理すべきタスクの優先順位の概念を示した説明図である。
【図４９】図４８に示した優先順位の概念において、処理待ちのタスクが発生した状況を示した説明図である。
【図５０】図４８に示した優先順位の概念において、処理待ちのタスクの一部を第３ＣＰＵに割り当てた状況を示した説明図である。
【図５１】図４８に示した優先順位の概念において、さらに処理待ちのタスクの一部を、アクティブに設定した状況を示した説明図である。
【図５２】図４８に示した優先順位の概念において、さらに処理待ちのタスクの一部を第２ＣＰＵに割り当てた状況を示した説明図である。
【図５３】第６の実施形態における、タスクの割り当て手順を示すフローチャートである。
【符号の説明】
【０１８７】
１１  キャッシュメモリ
１２  ＣＰＵ
１３  ＲＡＭ
１４  ＲＯＭ
１５  通信Ｉ／Ｆ
１６  バス
２１  第１キャッシュメモリ
２２  第１ＣＰＵ
２３  第２キャッシュメモリ
２４  第２ＣＰＵ
２５  第３キャッシュメモリ
２６  第３ＣＰＵ
１００、１１００、１９００、３１００、４２００、４７００  タスク管理装置
１０１、１１０１、１９０１、３１０１、４２０１、４７０１  ＯＳ
１０２、１９０５、３１０５  タスク生成部
１０３、１９０４、３１０３  スケジューリング履歴記憶部
１０４、１９０２、３１０２  タスクテーブル
１０５、１１０２、１９０３、３１０４、４２０２、４７０２  スケジューリング部
１１１、１１１１、１９１１、３１１１、４７１１  第１割当部
１１２、１１１２、１９１２、３１１２、４７１２  第２割当部
１１３、１９１３、３１１３、４７１３  グループ判断部
１１４、１９１４、３１１４、４２１２  アクティブ設定部
１５０ａ〜ｎ  アプリケーション
４２１１  再割当部
【図１】
2009020692.tif 000003
【図２】
2009020692.tif 000004
【図３】
2009020692.tif 000005
【図４】
2009020692.tif 000006
【図５】
2009020692.tif 000007
【図６】
2009020692.tif 000008
【図７】
2009020692.tif 000009
【図８】
2009020692.tif 000010
【図９】
2009020692.tif 000011
【図１０】
2009020692.tif 000012
【図１１】
2009020692.tif 000013
【図１２】
2009020692.tif 000014
【図１３】
2009020692.tif 000015
【図１４】
2009020692.tif 000016
【図１５】
2009020692.tif 000017
【図１６】
2009020692.tif 000018
【図１７】
2009020692.tif 000019
【図１８】
2009020692.tif 000020
【図１９】
2009020692.tif 000021
【図２０】
2009020692.tif 000022
【図２１】
2009020692.tif 000023
【図２２】
2009020692.tif 000024
【図２３】
2009020692.tif 000025
【図２４】
2009020692.tif 000026
【図２５】
2009020692.tif 000027
【図２６】
2009020692.tif 000028
【図２７】
2009020692.tif 000029
【図２８】
2009020692.tif 000030
【図２９】
2009020692.tif 000031
【図３０】
2009020692.tif 000032
【図３１】
2009020692.tif 000033
【図３２】
2009020692.tif 000034
【図３３】
2009020692.tif 000035
【図３４】
2009020692.tif 000036
【図３５】
2009020692.tif 000037
【図３６】
2009020692.tif 000038
【図３７】
2009020692.tif 000039
【図３８】
2009020692.tif 000040
【図３９】
2009020692.tif 000041
【図４０】
2009020692.tif 000042
【図４１】
2009020692.tif 000043
【図４２】
2009020692.tif 000044
【図４３】
2009020692.tif 000045
【図４４】
2009020692.tif 000046
【図４５】
2009020692.tif 000047
【図４６】
2009020692.tif 000048
【図４７】
2009020692.tif 000049
【図４８】
2009020692.tif 000050
【図４９】
2009020692.tif 000051
【図５０】
2009020692.tif 000052
【図５１】
2009020692.tif 000053
【図５２】
2009020692.tif 000054
【図５３】
2009020692.tif 000055