(57)【要約】【課題】プログラムを変更することなく、スレッドのリソース割当量を変更する。【解決手段】本発明の情報処理装置は、スレッドごとに、そのスレッドのスレッド名を管理するスレッド名管理部１１と、スレッド名ごとに、そのスレッド名と一致するスレッドに割り当てるリソースを表す属性を管理するスレッド属性管理部１２とを有する。【選択図】図１
2008040951.tif 000002
【特許請求の範囲】
【請求項１】
複数のスレッドをリソースの共有により並列に実行可能な情報処理装置であって、
前記スレッドごとに、当該スレッドのスレッド名を管理するスレッド名管理部と、
前記スレッド名ごとに、当該スレッド名と一致するスレッドに割り当てるリソースを表すスレッド属性を管理するスレッド属性管理部とを有する、情報処理装置。
【請求項２】
前記スレッドの実行時に、当該スレッドのスレッド名を前記スレッド名管理部から抽出し、抽出したスレッド名と一致するスレッドのスレッド属性を前記スレッド属性管理部から抽出し、抽出したスレッド属性を反映して前記スレッドを実行する制御部をさらに有する、請求項１に記載の情報処理装置。
【請求項３】
前記スレッド属性管理部は、前記スレッド属性を不揮発性メモリに登録して管理する、請求項１または２に記載の情報処理装置。
【請求項４】
前記スレッド属性管理部は、動作モードごとに設けられている、請求項１から３のいずれか１項に記載の情報処理装置。
【請求項５】
複数のスレッドを並列に実行可能な情報処理装置によるスレッド制御方法であって、
前記スレッドごとに、当該スレッドのスレッド名をスレッド名管理領域にて管理するスレッド名管理ステップと、
前記スレッド名ごとに、当該スレッド名と一致するスレッドに割り当てるリソースを表すスレッド属性をスレッド属性管理領域にて管理するスレッド属性管理ステップとを有する、スレッド制御方法。
【請求項６】
前記スレッドの実行時に、当該スレッドのスレッド名を前記スレッド名管理領域から抽出し、抽出したスレッド名と一致するスレッドのスレッド属性を前記スレッド属性管理領域から抽出し、抽出したスレッド属性を反映して前記スレッドを実行するスレッド実行ステップをさらに有する、請求項５に記載のスレッド制御方法。
【請求項７】
前記スレッド属性管理ステップでは、前記スレッド属性を不揮発性メモリに登録して管理する、請求項５または６に記載のスレッド制御方法。
【請求項８】
前記スレッド属性管理ステップでは、動作モードごとに、前記スレッド属性を管理する、請求項５から７のいずれか１項に記載のスレッド制御方法。
【請求項９】
複数のスレッドを並列に実行可能な情報処理装置に、
前記スレッドごとに、当該スレッドのスレッド名をスレッド名管理領域にて管理するスレッド名管理ステップと、
前記スレッド名ごとに、当該スレッド名と一致するスレッドに割り当てるリソースを表すスレッド属性をスレッド属性管理領域にて管理するスレッド属性管理ステップとを実行させる、プログラム。
【請求項１０】
前記情報処理装置に、
前記スレッドの実行時に、当該スレッドのスレッド名を前記スレッド名管理領域から抽出し、抽出したスレッド名と一致するスレッドのスレッド属性を前記スレッド属性管理領域から抽出し、抽出したスレッド属性を反映して前記スレッドを実行するスレッド実行ステップをさらに実行させる、請求項９に記載のプログラム。
【請求項１１】
前記スレッド属性管理ステップでは、前記スレッド属性を不揮発性メモリに登録して管理する、請求項９または１０に記載のプログラム。
【請求項１２】
前記スレッド属性管理ステップでは、動作モードごとに、前記スレッド属性を管理する、請求項９から１１のいずれか１項に記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のスレッドを並列に実行可能な情報処理装置、スレッド制御方法、プログラムに関する。
【背景技術】
【０００２】
プログラムの実行方式として、１つのプログラムに対応する１つのプロセス内に、プログラムの実行単位であるスレッドを複数配置し、複数のスレッドを並列に実行するマルチスレッドと呼ばれる方式がある。
【０００３】
以下、マルチスレッドに対応するオペレーションシステム（以下、マルチスレッドＯＳと称す）について説明する。
【０００４】
図８に示したマルチスレッドＯＳにおいては、１つのプログラムαに対応する１つのプロセスα０内にスレッドα１，α２が配置されている。また、１つのプログラムβに対応する１つのプロセスβ０内にスレッドβ１，β２が配置されている。
【０００５】
スレッドα１，α２，β１，β２は、ＣＰＵやメモリなどのリソースを共有する。そのため、例えば、プログラムαの実行においては、スレッドα１，α２がＣＰＵを交互に使用することによって、見かけ上、スレッドα１，α２を並列に実行することができる。
【０００６】
しかし、リソースは有限であるため、各スレッドα１，α２，β１，β２が使用できるリソースには制限がある。
【０００７】
このため、マルチスレッドＯＳにおいては、プログラマーが、各スレッドα１，α２，β１，β２ごとに、そのスレッドに割り当てるリソースを決定することができるようになっている。例えば、スレッドに設定する実行優先度、スレッドに割り当てるＣＰＵ使用割合、スレッドに割り当てるメモリ領域等である。
【０００８】
ところで、スレッドに割り当てるリソースを決定する際には、システム全体の状況を考慮する必要がある。例えば、スレッドα１の実行優先度を高くした場合、スレッドα１の実行速度は早くなるが、他のスレッドの処理が遅延してしまうため、システム全体として性能が劣化するおそれがある。
【０００９】
そこで、特許文献１に開示された技術では、システム全体の状況を考慮したリソース割り当てを行うべく、スレッドを複数の「型」のいずれかに分類し、その「型」に割り付けられたリソースにスレッドを割り当てている。
【特許文献１】特開２００４−２２０６０８号公報
【発明の開示】
【発明が解決しようとする課題】
【００１０】
しかし、特許文献１に開示された従来技術等によりスレッドにリソースを割り当てたとしても、割り当てたリソースがシステム全体として最適なものになっているとは限らない。
【００１１】
そのため、マルチスレッドＯＳにおいては、プログラムの検証時に、プログラマーが、いわゆるトライ＆エラーの実行により、スレッドに割り当てるリソースを微調整することが必須となる。図８において、スレッドα１を例に挙げると、まず、プログラマーは、スレッドα１に割り当てるリソースを仮設定する。その後、プログラマーは、プログラムαを実際に実行させて、その時のシステム性能を測定し、その測定結果を基にしてスレッドα１に割り当てるリソースを微調整することを繰り返す。
【００１２】
しかし、スレッドα１は、プロセスα０内に閉じられた資源であり、プロセスα０の外には公開されない。そのため、プロセスα０内のスレッドα１を特定できるのは、プロセスα０内のプログラムコードのみである。
【００１３】
そのため、スレッドα１に割り当てるリソースを微調整した結果、図９に示すように、リソース割当をａからｅに変更する場合、プログラマーは、スレッドα１が属するプログラム自体をαからαｖ２に変更する必要がある。また、プログラマーは、他のスレッド、例えばスレッドβ１のリソース割当を変更する場合も同様に、スレッドβ１が属するプログラム自体をβ１からβｖ２に変更する必要がある。
【００１４】
このように、従来技術においては、プログラマーがスレッドに割り当てるリソースを変更する場合、その度に、そのスレッドが属するプログラム自体を変更しなければならないため、プログラマーの負担が著しく増加する等の不都合が生じていた。
【００１５】
そこで、本発明の目的は、プログラマーが、プログラムを変更することなく、スレッドに割り当てるリソースを変更することができる情報処理装置、スレッドの管理方法、プログラムを提供することにある。
【課題を解決するための手段】
【００１６】
上記目的を達成するために本発明の情報処理装置は、複数のスレッドを並列に実行可能な情報処理装置であって、前記スレッドごとに、当該スレッドのスレッド名を管理するスレッド名管理部と、前記スレッド名ごとに、当該スレッド名と一致するスレッドに割り当てるリソースを表すスレッド属性を管理するスレッド属性管理部とを有することを特徴とするものである。
【００１７】
また、本発明のスレッド制御方法は、複数のスレッドを並列に実行可能な情報処理装置によるスレッド制御方法であって、前記スレッドごとに、当該スレッドのスレッド名をスレッド名管理領域にて管理するスレッド名管理ステップと、前記スレッド名ごとに、当該スレッド名と一致するスレッドに割り当てるリソースを表すスレッド属性をスレッド属性管理領域にて管理するスレッド属性管理ステップとを有することを特徴とするものである。
【００１８】
また、本発明のプログラムは、複数のスレッドを並列に実行可能な情報処理装置に、前記スレッドごとに、当該スレッドのスレッド名をスレッド名管理領域にて管理するスレッド名管理ステップと、前記スレッド名ごとに、当該スレッド名と一致するスレッドに割り当てるリソースを表すスレッド属性をスレッド属性管理領域にて管理するスレッド属性管理ステップとを実行させることを特徴とするものである。
【００１９】
上記の構成によれば、例えば、スレッドに割り当てるリソースを変更する場合、プログラマーがスレッド属性管理部におけるスレッド属性を変更すれば、そのスレッドの実行時に、そのスレッドのスレッド名を辿って変更後のスレッド属性が抽出され、スレッドの実行に反映させることができる。
【００２０】
したがって、プログラマーは、スレッドに割り当てるリソースを変更する場合、スレッド属性管理部におけるスレッド属性を変更するだけで良く、プログラム自体の変更は不要である。
【発明の効果】
【００２１】
以上説明したように本発明によれば、プログラマーが、スレッドの属するプログラムを変更することなく、そのスレッドのリソース割当量、実行優先度等を変更することができるため、プログラマーの負担が軽減されるという効果が得られる。
【発明を実施するための最良の形態】
【００２２】
以下に、本発明を実施するための最良の形態について図面を参照して説明する。
【００２３】
図１および図２に示すように、本実施形態の情報処理装置は、マルチスレッドＯＳ１０と、制御部であるＣＰＵ２０と、メモリ３０とを含む。なお、メモリ３０は、本情報処理装置内のＲＡＭ、ＲＯＭ、ＨＤＤ等の各種の記憶装置を全て含むとする。また、マルチスレッドＯＳ１０は、スレッド名管理部１１と、スレッド属性管理部１２とを含む。
【００２４】
なお、図１は、本発明を実施するための要部の構成のみを示すものであり、実際には、当然ながら外部装置や外部ネットワークとのＩ／Ｆ等の構成要素も設けられているが、これらの構成要素は図１からは省略されている。
【００２５】
ＣＰＵ２０は、メモリ３０内のＲＯＭから、マルチスレッドＯＳ１０上で動作可能な各種プログラムを読み出し、実行する。また、プログラムの実行においては、そのプログラムに従ってスレッド作成関数を読み出し、読み出したスレッド作成関数を用いてスレッドを自由に作成することが可能である。また、スレッドの作成においては、スレッド作成関数により、任意の文字列からなるスレッド名が指定される。
【００２６】
スレッド名管理部１１は、スレッドごとに、そのスレッドのスレッド名を表すスレッド名データを管理する。なお、スレッド名データの「管理」とは、ＣＰＵ２０が実行するスレッドからスレッド名データを抽出できるように、スレッドと対応付けてスレッド名データをメモリ３０内に登録しておくことを言う。このとき、スレッド名管理部１１は、スレッド名データを不揮発性メモリに登録する必要はない。
【００２７】
スレッド属性管理部１２は、任意のスレッド名ごとに、そのスレッド名と一致するスレッドに割り当てるリソースを表す属性データを管理する。ここで、属性データとは、スレッドに設定する実行優先度、スレッドに割り当てるＣＰＵの使用割合、スレッドに割り当てるメモリの領域等を表すデータである。なお、属性データの「管理」とは、ＣＰＵ２０がスレッド名から属性データを抽出できるように、スレッド名と対応付けて属性データをメモリ３０内に登録しておくことを言う。このとき、スレッド属性管理部１２は、属性データをメモリ３０内のフラッシュメモリなどの不揮発性メモリに登録して管理する。よって、属性データは、電源がＯＦＦになっても消去されない。
【００２８】
ここで、スレッド名管理部１１およびスレッド属性管理部１２で管理されるデータについて、より詳細に説明する。
【００２９】
最初に、スレッド名管理部１１で管理されるスレッド名データについて説明する。
【００３０】
例えば、プロセスα０内のスレッドα１の作成時にスレッド作成関数により「スレッドα１」というスレッド名が指定されたとする。この場合、スレッド名管理部１１は、図３に示すように、プロセスα０内のスレッドα１のスレッド名データとして、「スレッドα１」を登録し管理する。
【００３１】
なお、プロセスα０内のスレッドα１の実行が終了すると、スレッドα１のスレッド名データは管理する必要がなくなる。そのため、スレッド名管理部１１は、スレッドα１の実行が終了すると、スレッドα１のスレッド名データを削除する。
【００３２】
また、スレッド名管理部１１は、スレッドα１のスレッド名データとして、複数のスレッド名データを管理することとしても良い。
【００３３】
続いて、スレッド属性管理部１２で管理される属性データについて説明する。
【００３４】
例えば、スレッド属性管理部１２は、図４に示すように、スレッド名「スレッドα１」の属性データとして、「スレッドα１」と合致するスレッドに実行優先度「１／４」、ＣＰＵの使用割合「０．１」等を割り当てることを表すデータを登録し管理する。
【００３５】
また、スレッド属性管理部１２は、スレッド名「スレッドβ＊」の属性データとして、「スレッドβ＊」と合致するスレッドに実行優先度「２／４」、ＣＰＵの使用割合「０．２」等を割り当てることを表すデータを登録し管理する。なお、スレッドβ＊は、「β」の部分が一致するスレッド、すなわちスレッドβ１，β２の双方がスレッドβ＊に合致することを示している。
【００３６】
スレッド属性管理部１２における属性データは、プログラマーにより予め決定されて登録されている。ここで、もし、トライ＆エラーの実行により、リソース割り当てに起因して何らかの不具合が発生した場合、プログラマーは、従来技術であればプログラムの変更が必要であったが、スレッド属性管理部１２における属性データを変更するだけで良い。
【００３７】
なお、プログラマーが属性データを変更する方法には、特に制限はなく、任意の方法を使用することができる。例えば、プログラマーは、各スレッド名の属性データを表す属性パターンを複数保持しておき、不具合の状況等に応じて属性パターンを選択するといった方法を使用することができる。
【００３８】
また、属性データは、絶対的な値とするのが前提であるが、相対的な値とすることもできる。例えば、スレッドα＊のＣＰＵ使用割合については、スレッドβ１よりも「０．１増加」としても良い。
【００３９】
以下、本実施形態の情報処理装置のプログラム検証時の動作について説明する。なお、以下に説明する処理の手順は、メモリ３０内のプログラムに記述されているものとする。
【００４０】
まず、スレッド作成動作について説明する。ここでは、スレッドα１を作成するためのスレッド作成関数がプログラムαに記述されており、プログラムαの実行によりスレッドα１を作成するものとして説明する。
【００４１】
図５に示すように、ＣＰＵ２０は、プログラムαの実行過程で、スレッド作成関数を読み出し、読み出したスレッド作成関数を用いてスレッドα１を作成する（ステップ５０１）。よって、プログラムαを繰り返し実行する場合、プログラムαを実行する度に、スレッドα１が作成されることになる。
【００４２】
このとき、スレッド作成関数により、「スレッドα１」というスレッド名が指定される。そのため、スレッド名管理部１１は、プロセスα０内のスレッドα１のスレッド名データとして、「スレッドα１」をメモリ３０内に登録する（ステップ５０２）。
【００４３】
なお、スレッド属性管理部１２は、予め、スレッド名「スレッドα１」の属性データとして、「スレッドα１」と合致するスレッドに実行優先度「１／４」、ＣＰＵの使用割合「０．１」等を割り当てることを表すデータを登録している。
【００４４】
次に、スレッド実行動作について説明する。ここでは、プログラムαのプロセスα０内に配置されたスレッドα１を実行するものとして説明する。
【００４５】
図６に示すように、ＣＰＵ２０は、プロセスα１内のスレッドα１の実行を開始するに際して、まず、スレッド名管理部１１から、スレッドα１のスレッド名データとして、「スレッドα１」を抽出する（ステップ６０１）。
【００４６】
次に、ＣＰＵ２０は、スレッド属性管理部１２から、「スレッドα１」と合致するスレッド名の属性データを抽出する（ステップ６０２）。ここでは、「スレッドα１」と合致するのは「スレッドα１」および「スレッド＊１」の２つのスレッド名であるため、「スレッドα１」および「スレッド＊１」の２つの属性データが抽出される。
【００４７】
そして、ＣＰＵ２０は、スレッド属性管理部１２から抽出した属性データを反映したスレッドα１の実行を、他のスレッドと並列に開始する（ステップ６０３）。ここでは、「スレッドα１」および「スレッド＊１」の２つの属性データが反映されることになる。このように２以上の属性データが反映される場合、例えば、実行優先度に関しては、最先の「１／４」のみを反映させることができ、また、ＣＰＵ実行割合に関しては、「０．１」と「０．３」とを合わせた「０．４」を反映させることができる。
【００４８】
スレッドα１を実行した結果、不具合の発生なく（ステップ６０４のＮｏ）、スレッドα１の実行が完了したとする（ステップ６０５のＹｅｓ）。この場合、スレッド名管理部１１は、スレッドα１のスレッド名データは管理する必要がなくなるため、スレッドα１のスレッド名データを削除する。
【００４９】
一方、スレッドα１を実行した結果、何らかの不具合が発生した場合（ステップ６０４のＹｅｓ）、プログラマーは、スレッド属性管理部１２における「スレッドα１」または「スレッド＊１」の属性データを変更し（ステップ６０６）、ステップ６０３の処理に戻る。その後、ＣＰＵ２０は、変更後の属性データを反映して、再度、スレッドα１を他のスレッドと並列に実行する。
【００５０】
すなわち、スレッドα１に割り当てるリソースを変更する場合、プログラマーは、従来技術であればプログラムα自体の変更が必要であるが、本実施形態によれば、スレッド属性管理部１２におけるスレッドα１の属性データを変更するだけで良く、プログラムα自体の変更は不要である。
【００５１】
ここで、本実施形態の情報処理装置の具体例について説明する。
【００５２】
図７に示すように、本具体例の情報処理装置は、通信モード（Ａモード）とオフラインモード（Ｂモード）の２つの動作モードで動作可能であり、各動作モードごとに、スレッド属性管理部１２Ａ，１２Ｂが設けられている。なお、図７においては、スレッド名管理部１１を共通に１つだけ設けているが、スレッド名管理部１１についても、各動作モードごとに設けても良い。
【００５３】
スレッド属性管理部１２Ａは、通信モード時に各スレッドに割り当てるリソースを表す属性データを登録し管理する。例えば、プログラマーは、スレッド属性管理部１２Ａの属性データを決定する際に、通信時に使用するプログラムに属するスレッドに対しては、リソース割当量を大きくすることができる。
【００５４】
スレッド属性管理部１２Ｂは、オフラインモード時に各スレッドに割り当てるリソースを表す属性データを登録し管理する。例えば、プログラマーは、スレッド属性管理部１２Ｂの属性データを決定する際に、オフライン時に使用するプログラムに属するスレッドに対しては、リソース割当量を大きくすることができる。
【００５５】
ＣＰＵ２０は、例えば、ユーザにより通信モードが選択された場合、通信モードに対応して設けられたスレッド属性管理部１２Ａから属性データを抽出し、その属性データを反映してスレッドを実行する。
【００５６】
したがって、プログラマーは、複数の動作モードがある場合、プログラムを変更することなく、ユーザにより選択された動作モードにおいて使用されるスレッドに優先的にリソースを割り当てることができるため、合理的なプログラミングが可能となる。
【００５７】
なお、本具体例においては、ユーザに動作モードを選択させるために、マルチスレッドＯＳ１０が立ち上がった段階で、ユーザにモード選択を促す画面を表示させることとしても良い。
【００５８】
また、本具体例においては、通信モードとオフラインモードで動作可能な情報処理装置を例に挙げて説明したが、本発明はこれに限らず、他のモードで動作可能な情報処理装置にも適用可能である。例えば、通話モードとメールモードで動作可能な情報処理装置等である。
【００５９】
上述したように本実施形態においては、プロセス内に閉じられた資源であるスレッドに関する情報を、プロセス外のスレッド名管理部１１およびスレッド属性管理部１２で管理する構成となっている。
【００６０】
すなわち、スレッド名管理部１１は、スレッドごとに、そのスレッドのスレッド名データを管理し、スレッド属性管理部１２は、スレッド名ごとに、そのスレッド名と一致するスレッドに割り当てるリソースを表す属性データを管理する。
【００６１】
本構成の場合、スレッドの実行時には、そのスレッドのスレッド名データをスレッド名管理部１１から抽出し、そのスレッド名と一致するスレッドのリソースを表す属性データをスレッド属性管理部１２から抽出する。
【００６２】
したがって、プログラマーが、プログラムの検証時に、スレッドに割り当てるリソースを変更する場合、スレッド属性管理部１２における属性データを変更すれば、そのスレッドの実行時に、変更後の属性データをスレッドの実行に反映させることができる。
【００６３】
よって、プログラマーは、従来技術のようにプログラム自体を変更することなく、スレッド属性管理部１２におけるスレッドの属性データを変更するだけで、リソース割当量、実行優先度等を変更することができるため、プログラマーの負担が軽減される。
【００６４】
また、本実施形態においては、スレッド属性管理部１２が属性データを不揮発性メモリに登録して管理する構成であるため、電源をＯＦＦしても属性データは消去されない。よって、プログラマーは、再起動後も属性データを有効利用することができる。
【００６５】
また、本実施形態においては、複数の動作モードがある場合、スレッド属性管理部１２を動作モードごとに設ける構成であるため、プログラマーは、プログラムを変更することなく、ユーザにより選択された動作モードにおいて使用されるスレッドに優先的にリソースを割り当てることができる。
【図面の簡単な説明】
【００６６】
【図１】本発明の一実施形態の情報処理装置の構成を示す図である。
【図２】図１に示した情報処理装置の概念を説明する図である。
【図３】図１に示したスレッド名管理部で管理されるスレッド名データを示す図である。
【図４】図１に示したスレッド属性管理部で管理される属性データを示す図である。
【図５】図１に示した情報処理装置のスレッド作成動作を説明する図である。
【図６】図１に示した情報処理装置のスレッド実行動作を説明する図である。
【図７】図１に示した情報処理装置の具体例を説明する図である。
【図８】従来の情報処理装置の概念を説明する図である。
【図９】従来の情報処理装置のリソース割当の変更動作を説明する図である。
【符号の説明】
【００６７】
１０    マルチスレッドＯＳ
１１    スレッド名管理部
１２    スレッド属性管理部
２０    ＣＰＵ
３０    メモリ
【図１】
2008040951.tif 000003
【図２】
2008040951.tif 000004
【図３】
2008040951.tif 000005
【図４】
2008040951.tif 000006
【図５】
2008040951.tif 000007
【図６】
2008040951.tif 000008
【図７】
2008040951.tif 000009
【図８】
2008040951.tif 000010
【図９】
2008040951.tif 000011