(57)【要約】【課題】タスクグループ毎にＣＰＵ割当時間の上限制御を行うＣＰＵ割当時間管理方式を実行する装置において、ＣＰＵ空き時間がある場合に機能要求に応じて適切な制御を行う装置を提供する。【解決手段】グループ１は、タスク１ａ，１ｂ，１ｃ，１ｄからなる。グループ２は、タスク２ａ，２ｂ，２ｃ，２ｄからなる。ＣＰＵ割当時間管理装置１０００は、ＣＰＵ時間管理周期Ｔ３において、グループ１用に設定されたＣＰＵ割当時時間が経過した時刻（ａ）で、タスク１ａ，１ｂのみを実行終了した。さらにＣＰＵ割当時間管理装置１０００は、ＣＰＵ時間管理周期Ｔ３において、グループ２用に設定されたＣＰＵ割当時時間が経過する前に残存時間を残して時刻（ｂ）でタスク２ａ〜２ｄを実行終了した。ＣＰＵ割当時間管理装置１０００は、ＣＰＵ時間管理周期Ｔ３におけるグループ２用の残存時間で、未実行のタスク１ａ，１ｂの実行を行う。【選択図】図４
2013117806.tif 000002
【特許請求の範囲】
【請求項１】
ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）に対して設定された実行周期ごとにスケジューリングされた実行周期内におけるＣＰＵの処理単位であって、実行周期内において認められるＣＰＵの連続使用時間の上限値を示すＣＰＵ割当時間が設定された処理単位である周期内処理単位を、ＣＰＵ割当時間以内でＣＰＵに実行させる第１実行部と、
いずれかの実行周期において複数の周期内処理単位がＣＰＵに実行されるときに、そのＣＰＵ割当時間の間にＣＰＵによる実行の終了しない周期内処理単位である周期内未終了単位が発生すると共に、周期内未終了単位が発生した実行周期中に、周期内未終了単位の後に実行された周期内処理単位であって、そのＣＰＵ割当時間よりも短い時間で実行の終了した周期内処理単位である周期内早期終了単位が発生する場合には、周期内早期終了単位の実行の終了に引き続いて周期内未終了単位をＣＰＵに実行させる第２実行部と
を備えたことを特徴とするＣＰＵ割当時間管理装置。
【請求項２】
前記第２実行部は、
周期内未終了単位を実行しないことを指令するハード制限モード設定を受け付け、ハード制限モード設定を受け付けると、周期内早期終了単位が存在する場合であっても周期内未終了単位をＣＰＵに実行させないことを特徴とする請求項１記載のＣＰＵ割当時間管理装置。
【請求項３】
前記第２実行部は、
特定の周期内処理単位を未終了実行対象として受け付け、未終了実行対象として受け付けた周期内処理単位のみ、周期内早期終了単位が存在する場合にＣＰＵに実行させることを特徴とする請求項１または２のいずれかに記載のＣＰＵ割当時間管理装置。
【請求項４】
前記ＣＰＵ割当時間管理装置は、さらに、
ＣＰＵの実行周期を設定する実行周期設定部と、
前記実行周期設定部によって設定された実行周期を変更する周期変更部と
を備えたことを特徴とする請求項１〜３のいずれかに記載のＣＰＵ割当時間管理装置。
【請求項５】
前記ＣＰＵ割当時間管理装置は、さらに、
周期内早期終了単位が存在する際の周期内未終了単位のＣＰＵによる実行を指示するソフト制限モード設定と、ハード制限モード設定とを択一的に切り替えるべき切替指示を前記第２実行部に指示するモード切替部を備え、
前記第２実行部は、
前記モード切替部からの切替指示に応じて、ソフト制限モード設定とハード制限モード設定とのいずれかを実行することを特徴とする請求項２記載のＣＰＵ割当時間管理装置。
【請求項６】
前記ＣＰＵ割当時間管理装置は、さらに、
前記第２実行部が受け付けた未終了実行対象を変更する未終了実行対象変更部を備えたこと特徴とする請求項３記載のＣＰＵ割当時間管理装置。
【請求項７】
前記周期内処理単位は、
一つ以上のタスクから構成されるタスクグループであることを特徴とする請求項１〜６のいずれかに記載のＣＰＵ割当時間管理装置。
【請求項８】
前記周期内処理単位は、
ＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）であることを特徴とする請求項１〜６のいずれかに記載のＣＰＵ割当時間管理装置。
【請求項９】
前記周期内処理単位は、
仮想計算機であることを特徴とする請求項１〜６のいずれかに記載のＣＰＵ割当時間管理装置。
【請求項１０】
コンピュータを、
ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）に対して設定された実行周期ごとにスケジューリングされた実行周期内におけるＣＰＵの処理単位であって、実行周期内において認められるＣＰＵの連続使用時間の上限値を示すＣＰＵ割当時間が設定された処理単位である周期内処理単位を、ＣＰＵ割当時間以内でＣＰＵに実行させる第１実行部、
いずれかの実行周期において複数の周期内処理単位がＣＰＵに実行されるときに、そのＣＰＵ割当時間の間にＣＰＵによる実行の終了しない周期内処理単位である周期内未終了単位が発生すると共に、周期内未終了単位が発生した実行周期中に、周期内未終了単位の後に実行された周期内処理単位であって、そのＣＰＵ割当時間よりも短い時間で実行の終了した周期内処理単位である周期内早期終了単位が発生する場合には、周期内早期終了単位の実行の終了に引き続いて周期内未終了単位をＣＰＵに実行させる第２実行部、
として機能させるためのＣＰＵ割当時間管理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、複数のタスクを実行するＯＳにおいて、複数のタスクから構成されるタスクグループに対し、そのタスクグループが使用できるＣＰＵ時間の上限を設定するＣＰＵ割当時間管理方式に関する。
【背景技術】
【０００２】
異なる複数の機能を同時（マルチタスク）に実行する情報処理装置の場合、それぞれの機能を予測可能な性能で実行を続けることが必要となる。このような性能予測性を実現するために、機能を構成するタスク群でタスクグループを構成し、そのタスクグループが使用できるＣＰＵ時間の上限を制限することにより、それぞれの機能が適切な割合のＣＰＵ時間を使用するように制限するＣＰＵ割当時間管理方式がある。例えば従来の一つのＣＰＵ割当時間管理方式では、機能毎に仮想計算機を構成し、各仮想計算機にＣＰＵ割当時間の上限を示すサービス率を設定し、仮想計算機のＣＰＵ使用時間を監視して、サービス率以下とすることで、一つの機能が全てのＣＰＵ時間を占有しないようにしている。
【０００３】
さらに、ＣＰＵ割当時間の上限に到達したことでＣＰＵ時間が割り当てられない時間が長く発生し、機能の応答が大きく遅延することを防ぐために、仮想計算機のＣＰＵ使用時間の増加率を計測して、割当時間内でのＣＰＵ空き時間を分散させる制御を行っていた（例えば、特許文献１）。また、一時的に負荷が高い状態にある機能（タスクグループ、仮想計算機）に対して短期間でのＣＰＵ割当時間の上限制限を行うとＣＰＵ使用時間が超過してしまう場合があるという課題がある。この課題に対して、別の方式では、短期間でのＣＰＵ割当時間管理と長期間でのＣＰＵ割当時間管理とを選択可能とし、一時的に負荷が高い処理は長期間でのＣＰＵ割当時間管理を使用することにより、一時的なＣＰＵ割当時間超過を許容するということを行っていた（例えば、特許文献２）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００８−１８６２１０号公報
【特許文献２】特開平９−８１４０１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、従来の技術では各機能が使用するＣＰＵ時間の上限制御はできるものの、各機能がＣＰＵ割当時間を使い切らず、ＣＰＵに空き時間が生じた場合に、そのＣＰＵ空き時間を要求に応じて利用可能なように制御することができないという課題があった。特定のタスクグループに対してＣＰＵ割当時間管理を行わないように設定すれば、そのタスクグループはＣＰＵ空き時間を自由に使用することができる。しかし、この場合、ＣＰＵ負荷が高い場合にもそのタスクグループのＣＰＵ時間の上限が制限できず、他のタスクグループのＣＰＵ時間に影響を及ぼすという課題がある。したがって、ＣＰＵ割当時間管理を行った上で、ＣＰＵ空き時間の割り当てを制御する方式が必要になる。
【０００６】
この発明は、タスクグループ毎（周期内処理単位ごと）にＣＰＵ割当時間の上限制御を行うＣＰＵ割当時間管理方式を実行する装置であって、ＣＰＵ空き時間がある場合に、機能要求に応じて適切な制御を行うＣＰＵ割当時間管理方式を実行する装置の提供を目的とする。
【課題を解決するための手段】
【０００７】
この発明のＰＵ割当時間管理装置は、
ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）に対して設定された実行周期ごとにスケジューリングされた実行周期内におけるＣＰＵの処理単位であって、実行周期内において認められるＣＰＵの連続使用時間の上限値を示すＣＰＵ割当時間が設定された処理単位である周期内処理単位を、ＣＰＵ割当時間以内でＣＰＵに実行させる第１実行部と、
いずれかの実行周期において複数の周期内処理単位がＣＰＵに実行されるときに、そのＣＰＵ割当時間の間にＣＰＵによる実行の終了しない周期内処理単位である周期内未終了単位が発生すると共に、周期内未終了単位が発生した実行周期中に、周期内未終了単位の後に実行された周期内処理単位であって、そのＣＰＵ割当時間よりも短い時間で実行の終了した周期内処理単位である周期内早期終了単位が発生する場合には、周期内早期終了単位の実行の終了に引き続いて周期内未終了単位をＣＰＵに実行させる第２実行部と
を備えたことを特徴とする。
【発明の効果】
【０００８】
この発明により、タスクグループ毎にＣＰＵ割当時間の上限制御を行うＣＰＵ割当時間管理方式を実行する装置であって、ＣＰＵ空き時間がある場合に、機能要求に応じて適切な制御を行うＣＰＵ割当時間管理方式を実行する装置を提供することができる。
【図面の簡単な説明】
【０００９】
【図１】実施の形態１におけるＣＰＵ割当時間管理装置１０００のブロック図。
【図２】実施の形態１におけるＯＳ１０１が行う初期設定のフローチャート。
【図３】実施の形態１におけるハード制限モードの動作を説明する図。
【図４】実施の形態１におけるソフト制限モードの動作を説明する図。
【図５】実施の形態１におけるＣＰＵスケジューリング機能部１１１の動作フロー。
【図６】実施の形態１における空きリソース管理機能部１２１の動作フロー。
【図７】実施の形態２におけるＣＰＵ割当時間管理装置１０００のブロック図。
【図８】実施の形態３におけるＣＰＵ割当時間管理装置１０００のブロック図。
【図９】実施の形態４におけるＣＰＵ割当時間管理装置１０００の外観図。
【図１０】実施の形態４におけるＣＰＵ割当時間管理装置１０００のハードウェア構成図。
【発明を実施するための形態】
【００１０】
実施の形態１．
図１は、ＣＰＵ割当時間管理方式を実行するＣＰＵ割当時間管理装置１０００示す構成図である。図１は、以下のとおりである。
（１）１０１は、ＯＳ（実行周期設定部）である。
（２）タスクグループ２０１、２０２は、ＯＳ１０１上で動作するタスクを機能毎に集め、ＣＰＵ割当時間管理を行う単位となるタスクグループ（単にグループともいう）である。各グループ（周期内処理単位の一例）には一つまたは複数のタスクが含まれる。また、グループは２つ以上、複数のグループが存在して良い。
（３）ＣＰＵスケジューリング機能部１１１（第１実行部）は、ＯＳ１０１内でＣＰＵスケジューリングを行う。
（４）ＣＰＵ割当時間表１１２は、ＣＰＵスケジューリング機能部１１１がグループ毎のＣＰＵ割当時間情報を記録するための表である。ＣＰＵ割当時間表１１２には、グループ毎のＣＰＵ時間制限であるＣＰＵ割当時間と管理周期時間内（ＣＰＵ時間管理周期内）でＣＰＵを使用したＣＰＵ使用時間が記録される。ＣＰＵ割当時間は、そのタスクグループに関して、管理周期時間内において認められるＣＰＵの連続使用時間の上限値を示す。図１では、ＣＰＵ時間を管理周期時間内での割合としてパーセントで示した例であるが、実際の時間単位で記録しても良い。
（５）スケジューリングキュー１１３は、ＣＰＵスケジューリング機能部１１１が実行可能タスクを選択するためのスケジューリングキューである。ここまで述べたものは従来方式にもある構成要素である。
【００１１】
実施の形態１では上記の構成に加え、新たに次の構成要素を追加する。
（１）空きリソース管理機能部１２１（第２実行部）は、ＣＰＵ空き時間の割当制御を行う。
（２）空きリソースプール１２２は、空きリソース管理機能部１２１がＣＰＵ時間をリザーブするリソースプールである。空きリソースプール１２２にはＣＰＵ時間を無限ループで消費するタスクとしてアイドルタスクが含まれる。
（３）リソース制限モード１２３は、空きＣＰＵ時間割当方針を設定するモードである。リソース制限モード１２３には、空きＣＰＵ時間があってもグループに割当を行わない「ハード制限モード」と、空きＣＰＵ時間がある場合その割当を行う「ソフト制限モード」の設定を可能にする。
（４）空きリソース利用可能グループ設定１２４は、「ソフト制限モード」を設定した場合に、空きＣＰＵ時間を利用することができるグループ（未終了実行対象）を登録する。空きリソース利用可能グループ設定１２４には、複数のグループを登録しても良い。
（５）ＣＰＵ時間管理周期設定１２５は、ＣＰＵ割当時間を管理する単位周期であるＣＰＵ時間管理周期（実行周期）を登録する。ＣＰＵスケジューリング機能部１１１、および空きリソース管理機能部１２１は、このＣＰＵ時間管理周期設定１２５に登録された時間（周期）で、ＣＰＵ割当時間、ＣＰＵ使用時間、ＣＰＵ空き時間が割り当て通りになることを管理する。
（６）割当オーバタスクキュー１２６は、ＣＰＵ割当時間を越えてＣＰＵを要求するタスクを登録するキューである。
【００１２】
次に動作について説明する。
図２は、ＯＳ１０１が行うＣＰＵ割当時間管理方式の初期設定の動作である。図２の動作の主体はＯＳ１０１である。
（１）まずＳ１０１で従来のＣＰＵ割当時間管理方式と同様に、ＣＰＵ割当時間管理の単位となるグループ群２０１、２０２、・・・を作成する。ここで作成したグループに対するＣＰＵ割当時間を、ＣＰＵ割当時間表１１２の対応するエントリに登録する。
（２）次にＳ１０２で空きＣＰＵ時間リザーブ用のタスクとしてアイドルタスクを作成し、空きリソースプール１２２に登録する。さらに空きリソースプール１２２に対するＣＰＵ割当時間を管理するためにＣＰＵ割当時間表１１２に空きリソースプール１２２を登録する。
（３）次にＳ１０３でリソース制限モード１２３の初期値設定を行う。空きＣＰＵ時間が生じた場合でもＣＰＵ割当時間を超えたグループへのＣＰＵスケジューリングを行わない場合は「ハード制限モード」に設定し、空きＣＰＵ時間が生じた場合にＣＰＵ割当時間を超えたグループへのＣＰＵスケジューリングを行う場合は「ソフト制限モード」に設定する。
（４）次にＳ１０４で空きリソース利用可能グループ設定１２４に空きＣＰＵ時間の利用を許可するグループ群を設定する。空きＣＰＵ時間の利用を許可するグループは複数登録しても良い。この設定は「ハード制限モード」では影響を与えないこととする。
（５）次にＳ１０５で、ＣＰＵ時間管理周期設定１２５にＣＰＵ割当時間の管理を行う単位周期時間（実行周期）を設定する。この時間は、ＣＰＵ割当時間の上限確認、ＣＰＵ使用時間の積算、ＣＰＵ空き時間の有無確認を行う時間周期となる。この時間を短くすることにより、短い周期でＣＰＵ割当時間制御が行われるようになる。これらの初期設定の動作により、空きリソース管理機能部１２１の持つＣＰＵ割当時間管理パラメータの初期設定が行われ、その設定に基づきＣＰＵスケジューリング機能部１１１と空きリソース管理機能部１２１が動作するようになる。
【００１３】
次に、図３、図４を用いて、リソース制限モード１２３の「ハード制限モード」、「ソフト制限モード」を説明する。図３、図４はグループの実行状況を示す図あり、横軸はＣＰＵ時間である。この例ではグループ１、グループ２と二つのタスクグループを作成した場合を示している。
【００１４】
（ハード制限モード）
図３は、リソース制限モードを「ハード制限モード」に設定した場合である。ＣＰＵ割当時間はＣＰＵ時間管理周期設定１２５に設定されたＣＰＵ時間管理周期をベースに管理されている。最初の周期Ｔ１ではグループ１、グループ２共ＣＰＵ割当時間を全て使い切っているが、２番目の周期Ｔ２ではグループ１はＣＰＵ割当時間を使い切っていない。しかし、リソース制限モードが「ハード制限モード」に設定されているため、ＣＰＵ空き時間は他のグループに割り当てられることなく、空きリソースプールのアイドルタスクによりリザーブされる。また３番目の周期Ｔ３ではグループ２がＣＰＵ割当時間を使い切っていないが、同様にＣＰＵ空き時間は他のグループに割り当てられることなく、アイドルタスクによりリザーブされる。これによって、グループ１、グループ２共、ＣＰＵ割当時間の上限により実行性能の一定性を実現できる。
【００１５】
（ソフト制限モード）
図４は、リソース制限モードを「ソフト制限モード」に設定した場合である。図３と同じ状況で効果を見ると、２番目の周期Ｔ２ではグループ１はＣＰＵ割当時間を使い切っていないが、「空きリソース利用可能グループ設定」にグループ２が設定されていないため、グループ２はこのＣＰＵ空き時間を利用することができず、アイドルタスクによりリザーブされる。しかし、３番目の周期Ｔ３でグループ２（周期内早期終了単位の例）のＣＰＵ割当時間に空き時間ができると、「リソース制限モード」が「ソフト制限モード」に設定されていて、かつ、「空きリソース利用可能グループ設定」が「グループ１」に設定されている。したがって、グループ１（周期内未終了単位の例）はＣＰＵ空き時間を利用することができ、グループ１がＣＰＵ割当時間を越えて実行される。これによって、グループ２は実行性能の一定性を実現できるのに対し、グループ１はＣＰＵ割当時間以上のＣＰＵ時間を使用した高速な実行を行うことができる。
【００１６】
なお、図３、図４では、グループ１、グループ２が順番にかつ連続的にスケジューリングされるように模式的に示した。しかしこれは一例であり、実際にはグループ１、グループ２内のタスクは、ＯＳ１０１のタスクスケジューリングにより、タスクの実行順序やタスクスイッチの粒度について、きめ細かくスケジューリングすることができる。
【００１７】
次に、図５を参照して、ＣＰＵスケジューリング機能部１１１の動作を説明する。
図５は、ＣＰＵ割当時間管理方式のＣＰＵスケジューリング機能部１１１の動作である。つまり、図５の動作の主体は、ＣＰＵスケジューリング機能部１１１である。以下の図５、図６の説明では、図４のようにグループ１と、グループ２とを想定し、グループ１はタスク１ａ〜１ｄを有し、グループ２はタスク２ａ〜２ｄを有するとする。
（１）まずＳ２００でＣＰＵスケジューリング機能部１１１は、ＯＳ１０１の持つタスクスケジューリングに従い、実行するタスクを選択し実行する。ＯＳには様々なタスクスケジューリング方式があり、ＣＰＵ割当時間管理装置１０００が実行するＣＰＵ割当時間管理方式では、そのタスクスケジューリング方式をそのまま使用する。グループのＣＰＵ使用時間がＣＰＵ割当時間に到達しない限り、ＣＰＵ割当時間管理装置１０００のＣＰＵ割当時間管理方式は、ＯＳのタスクスケジューリングに影響を与えない。
（２）次にＳ２０１で、各グループ内のタスクが使用したＣＰＵ時間を積算し、ＣＰＵ割当時間表１１２の該当するグループのＣＰＵ使用時間に記録する。図４のように、グループ１から実行される場合は、グループ１のＣＰＵ使用時間が記録される。
（３）次にＳ２０２でグループのＣＰＵ使用時間がＣＰＵ割当時間に到達し、かつ、そのグループ内に実行可能なタスクがあるか確認する。実行可能なタスクがある場合は、Ｓ２０３でそのタスクをスケジューリングキュー１１３から外し、割当オーバタスクキュー１２６に登録する。例えば、図４の３番目の周期Ｔ３において、グループ１用のＣＰＵ割当時間に到達し、かつ、タスク１ｃ、タスク１ｄがまだ実行されておらずスケジューリングキュー１１３に存在するような状況である。この場合、ＣＰＵスケジューリング機能部１１１は、タスク１ｃ、タスク１ｄをスケジューリングキュー１１３から外し、割当オーバタスクキュー１２６に登録する。
（４）Ｓ２０４では、ここまでのＳ２００からＳ２０３までの処理の実行でＣＰＵ時間管理周期設定１２５に登録された管理周期時間が経過したか確認する。現在、図４の３番目の周期Ｔ３の時刻（ａ）とする。
（５）ＣＰＵ時間管理周期Ｔが経過した場合は、Ｓ２０５でＣＰＵ割当時間管理表１１２の全グループのＣＰＵ使用時間をゼロリセットすると共に、割当オーバタスクキュー１２６に登録されているタスクを、スケジューリングキュー１１３に戻す。
この後、Ｓ２００に戻る。
（６）Ｓ２０４でＣＰＵ時間管理周期Ｔが経過していない場合は、Ｓ２０６でスケジューリングキュー１１３に登録されているタスクが空きリソースプール１２２のアイドルタスクのみであるか確認する。スケジューリングキュー１１３にアイドルタスク以外のタスクが登録されている場合は、Ｓ２００に戻る。Ｓ２０６からＳ２００に戻るのは、図４の時刻（ａ）の後に、タスク２ａ〜２ｄがスケジューリングキュー１１３に登録されているような場合である。
（７）Ｓ２０６でスケジューリングキューに登録されたタスクがアイドルタスクのみの場合は、Ｓ３００で空きリソース管理機能部１２１を呼び出して実行する。Ｓ３００の動作の詳細は図６で説明する。例えば、図４の時刻（ｂ）の状態のようにタスク２ａ〜２ｄが実行済の場合である。
【００１８】
図６は、ＣＰＵ割当時間管理装置１０００の空きリソース管理機能部１２１の動作である図５のＳ３００の詳細である。図６の動作主体は空きリソース管理機能部１２１である。
（１）まずＳ３０１で、空きリソース管理機能部１２１は、リソース制限モード１２３が「ハード制限モード」に設定されているか、「ソフト制限モード」に設定されているかを確認する。「ハード制限モード」に設定されている場合は、空きＣＰＵ時間を他のグループに割り当てず、Ｓ３０４で空きリソースプール１２２のアイドルタスクを実行する。Ｓ３０１でリソース制限モードが「ソフト制限モード」に設定されている場合は、Ｓ３０２に進む。
（２）Ｓ３０２で割当オーバタスクキュー１２６が空であるか確認する。割当オーバタスクキュー１２６が空であれば、実行可能状態のタスクが存在しないため、Ｓ３０４でアイドルタスクを実行する。
（３）Ｓ３０２で割当オーバタスクキュー１２６にタスクが登録されていれば、Ｓ３０３で割当オーバタスクキュー１２６に登録されているタスクのうち、「空きリソース利用可能グループ設定１２４」に登録されているグループのタスクを実行する。この時の実行するタスクの選択方法は、ＯＳのタスクスケジューリング方式に従う。この例では、図４の時刻（ｂ）の時点で、タスク１ｃ、１ｄが割当オーバタスクキュー１２６に登録されており、グループ１は「空きリソース利用可能グループ設定１２４」に登録されているとする。
（４）Ｓ３０５では、ここまでのＳ３０１からＳ３０４までの処理の実行でＣＰＵ時間管理周期設定１２５に登録された管理周期時間が経過したか確認する。ＣＰＵ管理周期Ｔが経過していない場合は、Ｓ３０１に戻る。
（５）Ｓ３０５でＣＰＵ時間管理周期Ｔが経過した場合は、Ｓ３０６でＣＰＵ割当時間管理表１１２の全グループのＣＰＵ使用時間をゼロリセットすると共に、割当オーバタスクキュー１２６に登録されているタスクをスケジューリングキュー１１３に戻す。これにより空きリソース管理機能部１２１の動作を完了し、図５のＳ２００に戻る。例えばＳ３０６でタスク１ｄが割当オーバタスクキュー１２６に残っている場合には、空きリソース管理機能部１２１は、タスク１ｄをスケジューリングキュー１１３に戻す。
【００１９】
以上のように、この実施の形態１におけるＣＰＵ割当時間管理装置１０００のＣＰＵ割当時間管理方式では、ＣＰＵ空き時間がある場合に、ＯＳが空きリソース管理機能部１２１を呼び出し、そこで設定されたパラメータに従い、タスクグループがそのＣＰＵ割当時間を越えてＣＰＵを使用することができるかどうかを制御するようにした。このことにより、タスクグループの実行する機能が高速性を要求するのか、性能の一定性を要求するのか要求により、ＣＰＵ空き時間の割当方法を変えることができる。
【００２０】
実施の形態２．
図７を参照して実施の形態２のＣＰＵ割当時間管理装置１０００を説明する。実施の形態２では、実施の形態１のＣＰＵ割当時間管理装置１０００が、さらに、空きリソース管理パラメータ設定機能部１３１（機能は後述）を備える構成である。実施の形態２によれば、空きリソース管理パラメータ設定機能部１３１（周期変更部、モード切替部、未終了実行対象変更部）を設けたことにより、ＯＳ上位から空きリソース管理機能部１２１の使用するパラメータを変更できるようにすることで、ＣＰＵ割当時間管理装置１０００（情報処理装置）の実行時に、ＣＰＵ割当時間管理の動作を変えることができる。
【００２１】
図７は、このような場合の構成図である。空きリソース管理パラメータ設定機能部１３１は、ＯＳ上位からＣＰＵ割当時間管理方式の実行時に、空きリソース管理機能部１２１の使用するパラメータを変更する機能を有する。図７において、図１と同じ番号がついている構成要素は、図１と同じものである。
【００２２】
空きリソース管理パラメータ設定機能部１３１は、実施の形態１で図２の動作によりＯＳ１０１が初期設定した空きリソース管理機能部１２１の以下の（ａ）〜（ｃ）の設定値（パラメータ）を変更可能である。
すなわち、
（ａ）リソース制限モード１２３、
（ｂ）空きリソース利用可能グループ設定１２４、
（ｃ）ＣＰＵ時間管理周期設定１２５
の設定値を、「ユーザ指示、もしくはタスク間呼出し」により、図２の初期設定後に変更する。
【００２３】
実施の形態１で説明した図５、図６の動作では、それぞれの設定値（パラメータ（ａ）〜（ｃ））を動作中に読んで判断を行うようにしているので、これらの設定値を変更することにより、空きリソース管理機能部１２１の動作を変更することができる。
【００２４】
以上のように実施の形態２のＣＰＵ割当時間管理装置１０００のＣＰＵ割当時間管理方式では、空きリソース管理パラメータ設定機能部１３１を追加することにより、ＯＳ上位から空きリソース管理機能部１２１の使用するパラメータをＣＰＵ割当時間管理装置１０００（情報処理装置）の起動時だけでなく、実行時に変更できるようにした。これにより、タスクの機能に対する要求の変更や状態の変化に応じて、空きリソース管理機能部１２１のＣＰＵ空き時間の割当制御を変更することができる。
【００２５】
例えば、通常は「ハード制限モード」で動作させておくが、空きリソース管理パラメータ設定機能部１３１は「起動時や通常とは異なる処理」が発生した時のみ「ソフト制限モード」に設定を変更して、「起動時や通常とは異なる処理」に関連する機能を実行するタスクグループに空きＣＰＵ時間を割り当てるという制御を行うことができる。
【００２６】
実施の形態３．
図８を参照して実施の形態３のＣＰＵ割当時間管理装置１０００を説明する。上記の実施の形態１のＣＰＵ割当時間管理装置１０００では、そのＣＰＵ割当時間管理方式をＯＳに適用し、ＯＳ上のタスク間のＣＰＵ割当時間管理を実現した。この実施の形態３では、実施の形態１のＣＰＵ割当時間管理方式を複数のＯＳ（あるいは複数の仮想計算機）を実行させるハイパーバイザに適用し、ハイパーバイザ上のＯＳ間（あるいは仮想計算機間）のＣＰＵ割当時間管理を実現する。なお、実施の形態３は実施の形態２と組み合わせることができるのは、実施の形態１と同様である。
【００２７】
図８は、実施の形態３におけるＣＰＵ割当時間管理装置１０００の構成図である。実施の形態３のＣＰＵ割当時間管理装置１０００では、実施の形態１で示したＯＳ１０１の代わりに、ハイパーバイザ５０１の中に、ＣＰＵ割当時間管理方式の空きリソース管理機能部１２１を組み込む。
【００２８】
ハイパーバイザ５０１は、一つの情報処理装置で複数のＯＳを実行するためにハードウェア管理と仮想化制御を行う。
【００２９】
６０１、６０２は、ハイパーバイザ上で実行するＯＳ（周期内処理単位の一例）である。ＯＳは二つ以上、複数存在しても良い。またＯＳではなく、ハイパーバイザ上で動作する仮想計算機（ＶＭとも表記する）でも良い。また、仮想計算機（周期内処理単位の一例）の場合は、ハイパーバイザ５０１の代わりに仮想マシンモニタでもよい。
【００３０】
ハイパーバイザ５０１には、ＯＳまたは仮想計算機に対してＣＰＵ割当時間の上限管理を行うＣＰＵスケジューリング機能部１１１があるものとする。ハイパーバイザがＯＳまたは仮想計算機に対して行うスケジューリングは、ＯＳがタスクに対して行うスケジューリングと同じであることから、実施の形態１で示した空きリソース管理機能部１２１を、ハイパーバイザ５０１のＣＰＵスケジューリング機能と組み合わせて動作させることができる。空きリソース管理機能部１２１内の構成は、図８で示すように、実施の形態１と同じである。また、ＣＰＵスケジューリング機能部１１１、空きリソース管理機能部１２１の動作は、図２、図５、図６の各フローチャートで示したものと同じである。
【００３１】
（ＯＳ等の読み替え）
実施の形態３の場合は、ＣＰＵスケジューリングを行うＯＳ１０１をハイパーバイザ５０１と読み替え、ＣＰＵスケジューリング対象であるタスクを、ＯＳ（または仮想計算機）と読み替える。この読み替えにより、ハイパーバイザ５０１のスケジューリングに対しても、実施の形態１で述べたＣＰＵ割当時間管理方式を適用することができる。この読み替えに対応する図８と、実施の形態１の図１との相違箇所は破線で囲んでいる。
【００３２】
以上のように、実施の形態３では、一つの情報処理装置で複数のＯＳ（あるいはＶＭ）を実行するハイパーバイザのＣＰＵ割当時間管理に、実施の形態１で述べたＣＰＵ割当時間管理方式を組み込むことにより、ＯＳ（あるいはＶＭ）に対してＣＰＵ空き時間が生じた場合のＣＰＵ割当制御を行うことができる。これにより、ハイパーバイザ５０１上で実行するＯＳが高速性を要求するのか、性能の一定性を要求するのか要求に合わせて、ＣＰＵ空き時間の割当方法を変えることができる。
【００３３】
実施の形態４．
図９、図１０を参照して実施の形態４を説明する。実施の形態４は、コンピュータであるＣＰＵ割当時間管理装置１０００のハードウェア構成を説明する。図９は、コンピュータであるＣＰＵ割当時間管理装置１０００の外観の一例を示す図である。図１０は、実施の形態１〜３で述べたＣＰＵ割当時間管理装置１０００のハードウェア資源の一例を示す図である。
【００３４】
外観を示す図９において、ＣＰＵ割当時間管理装置１０００は、システムユニット８３０、ＣＲＴ（Ｃａｔｈｏｄｅ・Ｒａｙ・Ｔｕｂｅ）やＬＣＤ（液晶）の表示画面を有する表示装置８１３、キーボード８１４（Ｋｅｙ・Ｂｏａｒｄ：Ｋ／Ｂ）、マウス８１５、コンパクトディスク装置８１８（ＣＤＤ：Ｃｏｍｐａｃｔ  Ｄｉｓｋ  Ｄｒｉｖｅ）などのハードウェア資源を備え、これらはケーブルや信号線で接続されている。システムユニット８３０はネットワークに接続している。
【００３５】
またハードウェア資源を示す図１０において、ＣＰＵ割当時間管理装置１０００は、プログラムを実行するＣＰＵ８１０（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）を備えている。ＣＰＵ８１０は、バス８２５を介してＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）８１１、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）８１２、表示装置８１３、キーボード８１４、マウス８１５、通信ボード８１６、ＣＤＤ８１８、磁気ディスク装置８２０と接続され、これらのハードウェアデバイスを制御する。磁気ディスク装置８２０の代わりに、光ディスク装置、フラッシュメモリなどの記憶装置でもよい。
【００３６】
ＲＡＭ８１２は、揮発性メモリの一例である。ＲＯＭ８１１、ＣＤＤ８１８、磁気ディスク装置８２０等の記憶媒体は、不揮発性メモリの一例である。これらは、「記憶装置」あるいは記憶部、格納部、バッファの一例である。これら記憶装置等は「キュー」を実現する。通信ボード８１６、キーボード８１４などは、入力部、入力装置の一例である。また、通信ボード８１６、表示装置８１３などは、出力部、出力装置の一例である。通信ボード８１６は、ネットワークに接続されている。
【００３７】
磁気ディスク装置８２０には、オペレーティングシステム８２１（ＯＳ）、ウィンドウシステム８２２、プログラム群８２３、ファイル群８２４が記憶されている。プログラム群８２３のプログラムは、ＣＰＵ８１０、オペレーティングシステム８２１、ウィンドウシステム８２２により実行される。
【００３８】
上記ＯＳ８２１，プログラム群８２３には、以上の実施の形態の説明において「〜部」として説明した機能を実行するプログラムが記憶されている。プログラムは、ＣＰＵ８１０により読み出され実行される。
【００３９】
ファイル群８２４には、以上の実施の形態の説明において、「〜の判定結果」、「〜の算出結果」、「〜の抽出結果」、「〜の生成結果」、「〜の処理結果」として説明した情報や、データや信号値や変数値やパラメータなどが、「〜ファイル」や「〜データベース」の各項目として記憶されている。「〜ファイル」や「〜データベース」は、ディスクやメモリなどの記録媒体に記憶される。ディスクやメモリなどの記憶媒体に記憶された情報やデータや信号値や変数値やパラメータは、読み書き回路を介してＣＰＵ８１０によりメインメモリやキャッシュメモリに読み出され、抽出・検索・参照・比較・演算・計算・処理・出力・印刷・表示などのＣＰＵの動作に用いられる。抽出・検索・参照・比較・演算・計算・処理・出力・印刷・表示のＣＰＵの動作の間、情報やデータや信号値や変数値やパラメータは、メインメモリやキャッシュメモリやバッファメモリに一時的に記憶される。
【００４０】
また、以上に述べた実施の形態の説明において、データや信号値は、ＲＡＭ８１２のメモリ、ＣＤＤ８１８のコンパクトディスク、磁気ディスク装置８２０の磁気ディスク、その他光ディスク、ミニディスク、ＤＶＤ（Ｄｉｇｉｔａｌ・Ｖｅｒｓａｔｉｌｅ・Ｄｉｓｋ）等の記録媒体に記録される。また、データや信号は、バス８２５や信号線やケーブルその他の伝送媒体によりオンライン伝送される。
【００４１】
また、以上の実施の形態の説明において、「〜部」として説明したものは、「〜手段」、であってもよく、また、「〜ステップ」、「〜手順」、「〜処理」であってもよい。すなわち、「〜部」として説明したものは、ソフトウェアのみ、或いは、ソフトウェアとハードウェアとの組み合わせ、さらには、ファームウェアとの組み合わせで実施されても構わない。ファームウェアとソフトウェアは、プログラムとして、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、ミニディスク、ＤＶＤ等の記録媒体に記憶される。プログラムはＣＰＵ８１０により読み出され、ＣＰＵ８１０により実行される。すなわち、プログラムは、以上に述べた「〜部」としてコンピュータを機能させるものである。あるいは、以上に述べた「〜部」の手順や方法をコンピュータに実行させるものである。
【００４２】
以上の実施の形態では、ＣＰＵ割当時間管理装置１０００を説明したが、ＣＰＵ割当時間管理装置１０００の動作を、コンピュータに実行させるためのプログラムとしても把握できることは以上の説明から当然である。また、以上の実施の形態で説明したＣＰＵ割当時間管理装置１０００の動作を、ＣＰＵ割当時間管理装置１０００の各部が行うＣＰＵ割当時間管理と把握することも可能である。
【００４３】
（１）以上の実施の形態１のＣＰＵ割当時間管理装置１０００によれば、タスクグループ毎にＣＰＵ割当時間の上限制御を行い、そして、ＣＰＵ空き時間がある場合に、機能要求に応じて適切な制御ができるＣＰＵ割当時間方式を提供できる。
（２）また、実施の形態２のＣＰＵ割当時間管理装置１０００によれば、このような管理に必要なパラメータを情報処理装置の実行時に動的に変更できる方式を得ることができる。
（３）また、実施の形態３のＣＰＵ割当時間管理装置１０００によれば、このようなＣＰＵ割当時間管理方式を一つのＯＳ内にあるタスクで構成されるタスクグループのＣＰＵ割当時間制御に用いるだけでなく、複数のＯＳ（あるいは複数のＶＭ）を同時に実行させる機能を提供するハイパーバイザ上のＯＳ間（あるいはＶＭ間）のＣＰＵ割当時間制御に用いることができる。
【００４４】
以上の実施の形態では、
複数のタスクを同時（厳密には時分割のマルチタスク）に実行する情報処理装置のＯＳで、一つまたは複数のタスク群から構成されるタスクグループに対し、そのタスクグループが使用できるＣＰＵ時間の上限を設定するＣＰＵ割当時間管理方式において、以下の手段を備えることを特徴とするＣＰＵ割当時間管理方式を説明した。
（ａ）ＣＰＵ空き時間が生じた場合に、そのＣＰＵ空き時間をリザーブする空きリソースプール；
（ｂ）ＣＰＵ空き時間が生じた場合にタスクグループに割り当てたＣＰＵ時間の上限以上のＣＰＵ時間割当を行うかどうかを選択するリソース制限モード情報。
（ｃ）ＣＰＵ空き時間が生じた場合にタスクグループに割り当てたＣＰＵ時間の上限を超えて実行したいタスクが登録される割当オーバタスクキュー。
（ｄ）タスクグループに割り当てたＣＰＵ時間に空き時間が生じた場合に呼び出され、空きリソースプールによりＣＰＵ空き時間をリザーブし、リソース制限モード情報によりタスクグループに対するＣＰＵ空き時間の割り当てを行うかどうかを制御し、割当オーバタスクキューに登録されたタスクを実行する空きリソース管理機能。
【００４５】
以上の実施の形態では、以下の手段を備えることを特徴とするＣＰＵ割当時間管理方式を説明した。
（ａ）指定した周期時間毎に、ＣＰＵ割当時間管理に使用する設定するＣＰＵ使用時間情報、割当オーバタスクキューの情報をクリアし、空きリソース管理機能の状態をリセットするＣＰＵ時間管理周期設定。
【００４６】
以上の実施の形態では、以下の手段を備えることを特徴とするＣＰＵ割当時間管理方式を説明した。
（ａ）ＣＰＵ空き時間が生じた場合で、かつリソース制限モード情報によりＣＰＵ空き時間の割り当てが許可されていた場合に、指定したタスクグループのみにＣＰＵ空き時間の割り当てを行う空きリソース利用可能グループ設定。
【００４７】
以上の実施の形態では、以下の手段を備えることを特徴とするＣＰＵ割当時間管理方式を説明した。
（ａ）ＯＳ実行中にリソース制限モード、ＣＰＵ時間管理周期設定、空きリソース利用可能グループ設定に登録された設定値を変更する空きリソース管理パラメータ設定機能。
【００４８】
以上の実施の形態では、以下のＣＰＵ割当時間管理方式を説明した。
複数のＯＳもしくは仮想計算機を同時（時分割のマルチタスク）に実行するための情報処理装置のハイパーバイザもしくは仮想マシンモニタで、実行するＯＳもしくは仮想計算機に対し、そのＯＳもしくは仮想計算機の使用するＣＰＵ時間の上限を設定するＣＰＵ割当時間管理方式において、上記のＣＰＵ割当時間管理方式をハイパーバイザもしくは仮想マシンモニタ内に持つＣＰＵ割当時間管理方式。
【符号の説明】
【００４９】
１０００  ＣＰＵ割当時間管理装置、１０１  ＯＳ、１１１  ＣＰＵスケジューリング機能部、１１２  ＣＰＵ割当時間表、１１３  スケジューリングキュー、１２１  空きリソース管理機能部、１２２  空きリソースプール、１２３  リソース制限モード、１２４  空きリソース利用可能グループ設定、１２５  ＣＰＵ時間管理周期設定、１２６  割当オーバタスクキュー、１３１  空きリソース管理パラメータ設定機能部、２０１  グループ１、２０２  グループ２、５０１  ハイパーバイザ、６０１，６０２  ＯＳ（またはＶＭ）。
【図１】
2013117806.tif 000003
【図２】
2013117806.tif 000004
【図３】
2013117806.tif 000005
【図４】
2013117806.tif 000006
【図５】
2013117806.tif 000007
【図６】
2013117806.tif 000008
【図７】
2013117806.tif 000009
【図８】
2013117806.tif 000010
【図９】
2013117806.tif 000011
【図１０】
2013117806.tif 000012