(57)【特許請求の範囲】
【請求項１】
実行可能なプロセスのキューである実行可能プロセスキューの中にＣＰＵ目標時間までＣＰＵを使い切っていないプロセスが存在していない場合に、ＣＰＵ目標時間までＣＰＵを使い切っていないワークロードクラスで動作するプロセスであって資源の解放を待つ解放待ちプロセスと、当該資源を確保している資源確保プロセスとを特定する強制実行対象特定手段と、
前記資源確保プロセスを強制的に実行させる強制実行手段と、
強制実行手段からプロセスの実行に伴い資源の解放を要求されると、当該資源を解放するとともに、前記プロセスを中断し、前記資源の解放を待つ解放待ちプロセスを実行可能プロセスキューに追加する資源解放手段とを備える
ことを特徴とするプロセス制御装置。
【請求項２】
強制実行対象特定手段は、資源の解放を待つ解放待ちプロセスが存在していることを条件に、資源確保プロセスを強制実行手段に実行させる
請求項１に記載のプロセス制御装置。
【請求項３】
資源は、ワークロードクラス間で共有される資源を含む
請求項１または請求項２に記載のプロセス制御装置。
【請求項４】
確保されている資源の資源識別情報と、資源解放時に当該資源を優先的に使用するプロセスのプロセス識別情報とを記憶する優先プロセス記憶手段を備え、
強制実行対象特定手段は、資源確保プロセスが確保している資源の資源識別情報を優先プロセス記憶手段に記憶させ、解放待ちプロセスのプロセス識別情報を、前記資源を優先的に使用するプロセスのプロセス識別情報として優先プロセス記憶手段に記憶させ、
資源解放手段は、解放した資源の資源識別情報と優先プロセス記憶手段が記憶している資源識別情報とが一致する場合に、優先プロセス記憶手段に記憶されているプロセス識別情報が示すプロセスを実行可能プロセスキューにキューイングする
請求項１から請求項３のうちのいずれか１項に記載のプロセス制御装置。
【請求項５】
強制実行手段は、実行可能プロセスキューの中にＣＰＵ目標時間までＣＰＵを使い切っていないプロセスが存在する場合、当該プロセスを実行する
請求項１から請求項４のうちのいずれか１項に記載のプロセス制御装置。
【請求項６】
実行可能なプロセスのキューである実行可能プロセスキューの中にＣＰＵ目標時間までＣＰＵを使い切っていないプロセスが存在していない場合に、ＣＰＵ目標時間までＣＰＵを使い切っていないワークロードクラスで動作するプロセスであって資源の解放を待つ解放待ちプロセスと、当該資源を確保している資源確保プロセスとを特定し、
前記資源確保プロセスを強制的に実行させ、
プロセスの実行に伴い資源の解放を要求されると、当該資源を解放するとともに、前記プロセスを中断し、前記資源の解放を待つ解放待ちプロセスを実行可能プロセスキューに追加する
ことを特徴とするプロセス制御方法。
【請求項７】
資源の解放を待つ解放待ちプロセスが存在していることを条件に、資源確保プロセスを実行する
請求項６に記載のプロセス制御方法。
【請求項８】
コンピュータに、
実行可能なプロセスのキューである実行可能プロセスキューの中にＣＰＵ目標時間までＣＰＵを使い切っていないプロセスが存在していない場合に、ＣＰＵ目標時間までＣＰＵを使い切っていないワークロードクラスで動作するプロセスであって資源の解放を待つ解放待ちプロセスと、当該資源を確保している資源確保プロセスとを特定する強制実行対象特定処理、
前記資源確保プロセスを強制的に実行させる強制実行処理、および、
強制実行処理でのプロセスの実行に伴い資源の解放要求が生じると、当該資源を解放するとともに、前記プロセスを中断し、前記資源の解放を待つ解放待ちプロセスを実行可能プロセスキューに追加する資源解放処理
を実行させるためのプロセス制御プログラム。
【請求項９】
前記コンピュータに、
資源の解放を待つ解放待ちプロセスが存在していることを条件に、強制実行処理で資源確保プロセスを強制的に実行する
請求項８に記載のプロセス制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プロセス制御装置、プロセス制御方法およびプロセス制御プログラムに関する。
【背景技術】
【０００２】
本発明に関連する技術として、システム共有資源をロックした状態で、ワークロードクラスが、そのワークロードクラスに与えられたＣＰＵ時間を使い切った場合に、プロセスの実行を打ち切らず、無条件にシステム共有資源が解放されるまで、割り当て時間をオーバーしてＣＰＵ資源を与えるＣＰＵ配分装置があった。ワークロードクラスは、ＣＰＵの配分単位である。
【０００３】
図２４は、本発明に関連するＣＰＵ配分装置の例を示すブロック図である。図２４に例示するＣＰＵ配分装置は、ＣＰＵ配分テーブル２０２と、目標時間格納テーブル２０３と、プロセス対応テーブル２０４と、使用時間格納テーブル２０５と、インターバル初期化手段２５０と、目標時間計算手段２１０と、プロセス選択手段２２０と、プロセス実行手段２４０と、プロセス管理テーブル２０７と、実行可能プロセスキュー記憶手段２０６と、資源管理テーブル２０８とを備える。
【０００４】
ＣＰＵ配分テーブル２０２は、各ワークロードクラスに対するＣＰＵ配分比率を記憶する。目標時間格納テーブル２０３は、ワークロードクラス毎の目標時間を記憶する。プロセス対応テーブル２０４は、各プロセスのワークロードクラス番号を記憶する。使用時間格納テーブル２０５は、ワークロードクラス毎のＣＰＵ使用時間を記憶する。インターバル初期化手段２５０は、一定時間毎に使用時間格納テーブル２０５に記憶されるＣＰＵ使用時間を初期化する。資源管理テーブル２０８には、資源の解放を待つプロセスのキューが格納される。
【０００５】
目標時間計算手段２１０は、ＣＰＵ配分比率に応じて目標時間を設定する。プロセス決定手段２４０は、実行可能プロセスキュー記憶手段２０６に格納された実行可能プロセスを実行し、プロセス管理テーブル２０７にプロセスの状態を記録する。
【０００６】
プロセス選択手段２２０は、以下に示すように動作する。図２５および図２６は、図２４に示すＣＰＵ配分装置のプロセス選択手段２２０の動作を示すフローチャートである。プロセス選択手段２２０は、実行可能プロセスキュー記憶手段２０６の先頭にキューイングされているプロセスのプロセス番号および実行優先順位を取得し、それぞれ変数ｎ，ｗにセットする（ステップＳ２０１）。そして、実行優先順位ｗが、ユーザが設定可能な優先順位より高いか否かを判定する（ステップＳ２０２）
【０００７】
実行優先順位ｗが、ユーザが設定可能な優先順位より高い場合には、プロセス実行手段２４０に制御を渡す。また、実行優先順位ｗが、ユーザが設定可能な優先順位の範囲な範囲内である場合には、ステップＳ２０３に移行する。
【０００８】
ステップＳ２０３では、プロセス番号ｎのワークロードクラス番号をプロセス対応テーブル２０４から取得する。そして、そのワークロードクラスのＣＰＵ目標時間を、目標時間格納テーブル２０３から取得し（ステップＳ２０４）、そのワークロードクラスのＣＰＵ使用時間を、使用時間格納テーブル２０５から取得する（ステップＳ２０５）。
【０００９】
ステップＳ２０５の後、プロセス選択手段２２０は、ＣＰＵ使用時間がＣＰＵ目標時間未満であるか否かを判定する（ステップＳ２０６）。ＣＰＵ使用時間がＣＰＵ目標時間未満である場合に、プロセス実行手段２４０に制御を渡す。また、ＣＰＵ使用時間がＣＰＵ目標時間以上である場合、ステップＳ２０７に移行する。
【００１０】
ステップＳ２０７において、プロセス選択手段２２０は、実行可能プロセスキュー記憶手段２０６に格納された次のプロセスがキューイングされているか否かを判定する。次のプロセスがキューイングされている場合には、ステップＳ２０８に移行する。また、次のプロセスがキューイングされていない場合には、プロセス選択手段２２０に制御を渡す（換言すれば、ステップＳ２０１から処理を開始する）。
【００１１】
ステップＳ２０８では、実行可能プロセスキュー記憶手段２０６に格納されたの次のプロセスのプロセス番号、および実行優先順位を取得し、それぞれ変数ｎ，ｗにセットする。その後、ステップＳ２０２以降の処理を繰り返す。
【００１２】
以上のような動作により、システム共有資源をロックした状態で、ワークロードクラスが、そのワークロードクラスに与えられたＣＰＵ時間を使い切った場合に、プロセスの実行を打ち切らず、無条件にシステム共有資源が解放されるまで、割り当て時間をオーバーしてＣＰＵ資源を与える。このような動作によって、他のワークロードクラスのプロセスが配分されたＣＰＵ資源をまだ使用していないにもかかわらず、ＣＰＵ時間を使い切った他のワークロードクラスが取得しているシステム共有資源を待ったまま実行できない状態に陥ることを防止していた。なお、システム共有資源をロックする場合には、必ず、ユーザが設定可能な優先順位の範囲よりも高い実行優先順位に設定する。そして、実行優先順位をもとに、システム共有資源取得中か否かの判断を行っていた。
【００１３】
また、他の方式として、システムが使用したＣＰＵ時間はワークロードクラスへの配分対象としない方式がある。この方式では、ＣＰＵ時間全体からシステムが使用したＣＰＵ時間を除いた残りの時間について、ワークロードクラス毎に配分比率を指定する。そして、ワークロードクラス毎にＣＰＵ使用時間を累積していき、各ワークロードクラスに配分されたＣＰＵ時間を越えた場合には、そのワークロードクラスで実行しているプロセスの優先順位を低くする。このように制御することにより、配分されたＣＰＵ資源をまだ使用していないワークロードクラスのプロセスに優先的にＣＰＵ資源が割り当てられるようにしている。
【００１４】
また、特許文献１には、ジョブの性質に従って予め分類された各ジョブグループに対するＣＰＵ資源の配分比率を指定できるようにし、そのＣＰＵ資源の配分比率と、実際に各ジョブに割り当てられた配分実績とに基づいてジョブスケジュールが行われるようにするジョブスケジュール処理方式が記載されている。
【００１５】
また、特許文献２には、共有資源解放要求処理において、ジョブが共有資源を解放すると、そのジョブが一時的なＣＰＵ割り当て保証ジョブであるか否かを判定し、一時的なＣＰＵ割り当て保証ジョブである場合、一時的なＣＰＵの割り当てを解除するジョブのスケジュール方法が記載されている。
【００１６】
また、特許文献３には、リアルタイム処理トランザクションが、ディレード処理型トランザクションが処理を完了するまで資源待ちとなる場合、そのディレード処理型トランザクションが動作するタスクの実行優先度を上げるタスク優先度変更方式が記載されている。
【００１７】
【特許文献１】特開昭６２−２１０５４６号公報（第１ページ）
【特許文献２】特開２００４−１４８５１２号公報（段落００３４，００３５）
【特許文献３】特開平１０−４０１１７号公報（段落０００７）
【発明の開示】
【発明が解決しようとする課題】
【００１８】
図２４に示すＣＰＵ配分装置では、ワークロードクラスを大きな類似機能のまとまりで設定した場合（例えば、バッチ業務、オンライン業務、開発業務でワークロードクラスを分ける等の場合）には、システム共有資源の取得区間をオーバーしてＣＰＵ資源を与えても、オーバーしたＣＰＵ時間が配分の設定値から大きくずれることはなかった。
【００１９】
ところが、ＣＰＵ単体性能向上に伴い、１つのＯＳで多くの業務を行うようになり、類似機能をさらにいくつかのワークロードクラスに分割してきめ細かく設定する必要性が増えてきた。例えば、バッチ業務、オンライン業務１、オンライン業務２、オンライン業務３、開発業務等のようにワークロードクラスを分ける必要が生じる場合があった。ＣＰＵ配分の設定値が小さくなると、システム共有資源のロック区間をオーバーしてＣＰＵ資源を与えた場合に、ＣＰＵ配分の設定値からずれる割合が大きくなり、これにより全体のＣＰＵ配分を崩すようになってきた。また、類似機能をさらにいくつかのワークロードクラスに分割することにより、システムが共有資源をロックする場合の他に、ワークロードクラス間で資源（例えば、オンライン業務共有資源）を共有する場合も生じるようになった。共有資源がシステムでなく特定業務に限定される場合には、その特定業務が実行される優先順位の範囲内で高い優先順位となっていればよく、全ての業務よりも高い実行優先順位（すなわち、ユーザが設定可能な優先順位の範囲よりも高い実行優先順位）には設定しない。このため、あるワークロードクラスでワークロードクラス間共有資源を取得したままＣＰＵ配分時間を使い切ったために、他のワークロードクラスがＣＰＵ配分時間を使い切っていないにもかかわらず、ワークロードクラス間共有資源待ちのままＣＰＵ資源を使用することができない状態に陥る場合が生じるようになった。
【００２０】
また、システムが使用したＣＰＵ時間はワークロードクラスへの配分対象としない方式では、システム資源の取得によるＣＰＵ配分バランスの崩れは発生しない。しかし、ワークロードクラスで実行しているプロセスから依頼されて動作したシステム部分は、配分対象ではないため、結果的にコンピュータが各ワークロードクラスのために使用したＣＰＵ資源は、配分比率とは異なるものになるという問題がある。また、システム部分以外で、ワークロードクラス間の共有資源を取得するような場合には、あるワークロードクラスでワークロードクラス間共有資源を取得したままＣＰＵ配分時間を使い切ったために、他のワークロードクラスがＣＰＵ配分時間を使い切っていないにもかかわらず、ワークロードクラス間共有資源待ちのままＣＰＵ資源を使用することができない状態に陥るという問題も発生する。
【００２１】
そこで、本発明は、ワークロードクラスの定め方によらず、ＣＰＵ配分時間を使い切っていないにもかかわらず共有資源待ちのままＣＰＵ資源を使用することができない状態に陥ることを防止することができ、プロセスの強制的実行によるＣＰＵ配分比率からのずれを抑えることができるプロセス制御装置、プロセス制御方法およびプロセス制御プログラムを提供することを目的とする。
【課題を解決するための手段】
【００２２】
本発明のプロセス制御装置は、実行可能なプロセスのキューである実行可能プロセスキューの中にＣＰＵ目標時間までＣＰＵを使い切っていないプロセスが存在していない場合に、ＣＰＵ目標時間までＣＰＵを使い切っていないワークロードクラスで動作するプロセスであって資源の解放を待つ解放待ちプロセスと、当該資源を確保している資源確保プロセスとを特定する強制実行対象特定手段と、前記資源確保プロセスを強制的に実行させる強制実行手段と、強制実行手段からプロセスの実行に伴い資源の解放を要求されると、当該資源を解放するとともに、前記プロセスを中断し、前記資源の解放を待つ解放待ちプロセスを実行可能プロセスキューに追加する資源解放手段とを備えることを特徴とする。
【００２３】
また、本発明のプロセス制御方法は、実行可能なプロセスのキューである実行可能プロセスキューの中にＣＰＵ目標時間までＣＰＵを使い切っていないプロセスが存在していない場合に、ＣＰＵ目標時間までＣＰＵを使い切っていないワークロードクラスで動作するプロセスであって資源の解放を待つ解放待ちプロセスと、当該資源を確保している資源確保プロセスとを特定し、前記資源確保プロセスを強制的に実行させ、プロセスの実行に伴い資源の解放を要求されると、当該資源を解放するとともに、前記プロセスを中断し、前記資源の解放を待つ解放待ちプロセスを実行可能プロセスキューに追加することを特徴とする。
【００２４】
また、本発明のプロセス制御プログラムは、コンピュータに、実行可能なプロセスのキューである実行可能プロセスキューの中にＣＰＵ目標時間までＣＰＵを使い切っていないプロセスが存在していない場合に、ＣＰＵ目標時間までＣＰＵを使い切っていないワークロードクラスで動作するプロセスであって資源の解放を待つ解放待ちプロセスと、当該資源を確保している資源確保プロセスとを特定する強制実行対象特定処理、前記資源確保プロセスを強制的に実行させる強制実行処理、および、強制実行処理でのプロセスの実行に伴い資源の解放要求が生じると、当該資源を解放するとともに、前記プロセスを中断し、前記資源の解放を待つ解放待ちプロセスを実行可能プロセスキューに追加する資源解放処理を実行させることを特徴とする。
【発明の効果】
【００２５】
本発明によれば、ワークロードクラスの定め方によらず、ＣＰＵ配分時間を使い切っていないにもかかわらず共有資源待ちのままＣＰＵ資源を使用することができない状態に陥ることを防止することができ、プロセスの強制的実行によるＣＰＵ配分比率からのずれを抑えることができる。
【発明を実施するための最良の形態】
【００２６】
以下、本発明の実施形態を図面を参照して説明する。
図１は、本発明のプロセス制御装置の例を示すブロック図である。プロセス制御装置は、コンピュータ１０によって実現される。プロセス制御装置１０は、プロセス対応テーブル１０１と、ＣＰＵ配分テーブル１０２と、目標時間格納テーブル１０３と、使用時間格納テーブル１０４と、プロセス管理テーブル１０５と、実行可能プロセスキュー記憶手段１０６と、資源管理テーブル１０７と、強制実行情報格納テーブル１０８と、目標時間計算手段１１０と、プロセス選択手段１２０と、強制実行プロセス選択手段１３０と、プロセス実行手段１４０と、インターバル初期化手段１５０と、資源取得手段１６０と、資源解放手段１７０とを備える。
【００２７】
プロセス対応テーブル１０１は、各プロセスのワークロードクラス番号を記憶する記憶手段である。図２は、プロセス対応テーブル１０１を示す説明図である。図２に示すように、プロセス対応テーブル１０１には、プロセス番号順に各プロセスのワークロードクラス番号が格納される。なお、ワークロードクラスはＣＰＵの配分単位であり、ワークロードクラス番号は、各ワークロードクラスの識別情報である。また、プロセス番号は、各プロセスの識別情報である。
【００２８】
ＣＰＵ配分テーブル１０２は、各ワークロードクラスのＣＰＵ配分比率を記憶する記憶手段である。図３は、ＣＰＵ配分テーブル１０２を示す説明図である。図３に示すように、ＣＰＵ配分テーブル１０２には、ワークロードクラス番号順にＣＰＵ配分比率が格納される。ＣＰＵ配分比率は、例えば、百分率で表された値であるが、百分率以外で表されていてもよい。
【００２９】
目標時間格納テーブル１０３は、各ワークロードクラスのＣＰＵ目標時間を記憶する記憶手段である。ＣＰＵ目標時間は、ＣＰＵ配分比率に応じて各ワークロードクラスに割り当てられた時間である。図４は、目標時間格納テーブル１０３を示す説明図である。図４に示すように、目標時間格納テーブル１０３には、ワークロードクラス番号順にＣＰＵ目標時間が格納される。
【００３０】
使用時間格納テーブル１０４は、各ワークロードクラスのＣＰＵ使用時間を記憶する記憶手段である。ＣＰＵ使用時間は、ＣＰＵにより実際に処理を実行したワークロードクラス毎の時間である。図５は、使用時間格納テーブル１０４を示す説明図である。図５に示すように、使用時間格納テーブル１０４には、ワークロードクラス番号順にＣＰＵ使用時間が格納される。
【００３１】
プロセス管理テーブル１０５は、各プロセスの状態を示す情報を記憶する記憶手段である。図６は、プロセス管理テーブル１０５を示す説明図である。図６に示すように、プロセス管理テーブル１０５には、実行可フラグ、資源待ちフラグ、実行中断フラグ、実行優先順位、資源待ちしている資源番号の組が、プロセス番号順に格納される。実行可フラグは、実行可能か否かを示すフラグであり、セットされている状態（オン）で実行可能であることを表す。資源待ちフラグは、資源（共有資源）を待っている状態であるか否かを示すフラグであり、セットされている状態で資源待ち状態であることを表す。実行中断フラグは、実行を中断する要求があるか否かを示すフラグであり、セットされている状態で実行を中断する要求があることを表す。また、各種フラグがセットされていない状態をオフと記す。
【００３２】
プロセスが解放を待つ資源には、システム資源だけでなく、ワークロードクラス間で共有される資源も含まれる。
【００３３】
また、資源番号は、各資源を識別するための識別情報である。
【００３４】
図７は、実行可能プロセスキュー記憶手段１０６を示す説明図である。実行可能プロセスキュー記憶手段１０６は、実行可能プロセスが実行優先順位順にキューイングされる記憶手段である。具体的には、実行可能プロセスキュー記憶手段１０６は、実行優先順位順にキューイングされたプロセス番号および実行優先順位の情報を記憶する。
【００３５】
図８は、資源管理テーブル１０７を示す説明図である。資源管理テーブル１０７は、資源番号順に、資源を確保しているテナントプロセスのプロセス番号を記憶するとともに、資源待ちのプロセスが実行優先順位順にキューイングされる記憶手段である。図８に示すように、“０”，“１”等の資源番号順に、テナントプロセスのプロセス番号および資源待ちのプロセス番号が記憶される。
【００３６】
図９は、強制実行情報格納テーブル１０８を示す説明図である。強制実行情報格納テーブル１０８は、資源番号と、資源解放時に優先的に資源を渡すプロセスのプロセス番号が格納される記憶手段である。
【００３７】
目標時間計算手段１１０は、ＣＰＵ配分テーブル１０２に格納されているワークロードクラス毎のＣＰＵ配分比率をもとに、一定のインターバル時間で各ワークロードクラスが使用可能なＣＰＵ時間を計算し、目標時間格納テーブル１０３に記憶させる。
【００３８】
プロセス選択手段１２０は、実行可能プロセスキュー記憶手段１０６にキューイングされているプロセスを先頭から順番にサーチし、目標時間格納テーブル１０３に格納されているＣＰＵ目標時間までＣＰＵを使い切っていないプロセスを特定する。そのようなプロセスを特定したならば、そのプロセスを選択して、プロセス実行手段１４０に制御を渡す。また、ＣＰＵ目標時間までＣＰＵを使い切っていないプロセスが、キューイングされた最後のプロセスまで存在しなかった場合には、強制実行プロセス選択手段１３０に制御を渡す。プロセス選択手段１２０は、プロセスがＣＰＵ目標時間までＣＰＵを使い切っているか否かを以下のように判定する。すなわち、実行可能プロセスキュー記憶手段１０６にキューイングされているプロセスのワークロードクラス番号をプロセス対応テーブル１０１から取得し、そのワークロードクラス番号のＣＰＵ使用時間およびＣＰＵ目標時間を、使用時間格納テーブル１０４、目標時間格納テーブル１０３で参照し、両者を比較することによって、プロセスがＣＰＵ目標時間までＣＰＵを使い切っているか否かを判定すればよい。
【００３９】
強制実行プロセス選択手段１３０は、ＣＰＵ目標時間までＣＰＵを使い切っていないプロセスが、実行可能プロセスキュー記憶手段１０６にキューイングされたプロセス中に存在しなかった場合、以下の処理を行う。強制実行プロセス選択手段１３０は、目標時間格納テーブル１０３と使用時間格納テーブル１０４とを参照し、ＣＰＵ目標時間までＣＰＵを使い切っていないワークロードクラスをサーチする。さらに、強制実行プロセス選択手段１３０は、プロセス対応テーブル１０１を参照し、そのワークロードクラスで動作するプロセスをサーチする。そして、強制実行プロセス選択手段１３０は、プロセス管理テーブル１０５に格納されているそのプロセスの状態が資源待ちである場合、対象となる資源番号と資源解放時に優先的に資源を渡すプロセスの番号とを強制実行情報格納テーブル１０８に格納し、対象となる資源を確保しているプロセスのプロセス番号を資源管理テーブル１０７から取得して、プロセス実行手段１４０に制御を渡す。
【００４０】
プロセス実行手段１４０は、ＣＰＵ目標時間までＣＰＵを使い切っていないプロセスとしてプロセス選択手段１２０に選択されたプロセスや、資源を確保しているプロセスとして資源管理テーブル１０７から強制実行プロセス選択手段１３０によって取得されたプロセスに対して以下の処理を行う。プロセス実行手段１４０は、それらのプロセスを実行可能プロセスキュー記憶手段１０６からデキューする。そして、プロセス実行手段１４０は、そのプロセスのワークロードクラスのＣＰＵ使用時間がＣＰＵ目標時間に到達するか、あるいは、プロセス管理テーブル１０５中の実行中断フラグがセットされるまで、そのプロセスを実行するとともに、そのプロセスのワークロードクラスの使用時間格納テーブル１０４中のＣＰＵ使用時間に実行時間を加算する。プロセス実行手段１４０は、プロセスの実行終了後に、強制実行情報格納テーブル１０８中に登録されている資源番号を削除する。
【００４１】
インターバル初期化手段１５０は、一定のインターバル時間毎に動作し、使用時間格納テーブル１０４中の各ワークロードクラスが使用したＣＰＵ使用時間を０にセットする。
【００４２】
資源取得手段１６０は、資源の取得（確保）がプロセスから要求されると、資源管理テーブル１０７を参照し、その資源が既に取得されているか否かを判定する。その資源が未だ取得されていない場合、資源取得手段１６０は、資源の取得を要求したプロセス（資源取得要求プロセス）のプロセス番号を、テナントプロセスのプロセス番号として資源管理テーブル１０７に格納する。また、資源が既に取得されている場合には、資源取得要求プロセスを資源管理テーブル１０７中の資源待ちプロセスキューにつなぎ、プロセス管理テーブル１０５中の資源待ちフラグをセットし、プロセス管理テーブル１０５中の資源待ちしている資源番号として、その既に取得されている資源の番号をセットする。なお、プロセスをキューにつなぐとは、プロセスをキューに追加することである。
【００４３】
資源解放手段１７０は、資源を解放するとともに、解放した資源の番号が強制実行情報格納テーブル１０８の資源番号と一致している場合には、強制実行情報格納テーブル１０８に格納されているプロセスを資源管理テーブル１０７の資源待ちプロセスキューからデキューし、資源番号が一致していない場合には、資源管理テーブル１０７の資源待ちプロセスキューの先頭のプロセスをデキューする。そして、資源解放手段１７０は、デキューしたプロセスの番号を資源管理テーブル１０７のテナントプロセスのプロセス番号にセットする。さらに、デキューしたプロセスのプロセス管理テーブル１０５の実行可フラグをセットし、資源待ちフラグをリセットし、そのプロセスを実行可能プロセスキュー１０６につなぐ。資源解放手段１７０は、解放資源が強制実行情報格納テーブル１０８の資源番号と一致している場合には、最後に資源解放要求プロセスのプロセス管理テーブル１０５の実行中断フラグと実行可フラグをセットし、資源解放要求プロセスを実行可能プロセスキュー１０６にキューイングし、プロセス実行手段１４０に制御を戻す。
【００４４】
プロセス対応テーブル１０１、ＣＰＵ配分テーブル１０２、目標時間格納テーブル１０３、使用時間格納テーブル１０４、プロセス管理テーブル１０５、実行可能プロセスキュー記憶手段１０６、資源管理テーブル１０７、および強制実行情報格納テーブル１０８は、例えば、コンピュータ１０が備える記憶装置によって実現される。また、目標時間計算手段１１０、プロセス選択手段１２０、強制実行プロセス選択手段１３０、プロセス実行手段１４０、インターバル初期化手段１５０、資源取得手段１６０、および資源解放手段１７０は、例えば、プログラム（プロセス制御プログラム）に従って動作するコンピュータ１０のＣＰＵによって実現される。例えば、コンピュータ１０のＣＰＵが、プロセス制御プログラムを読み込み、そのプログラムに従って、目標時間計算手段１１０、プロセス選択手段１２０、強制実行プロセス選択手段１３０、プロセス実行手段１４０、インターバル初期化手段１５０、資源取得手段１６０、および資源解放手段１７０として動作する。
【００４５】
次に、本発明の動作について説明する。
まず、各ワークロードクラスのＣＰＵ目標時間を算出して目標時間格納テーブル１０３に記憶させる動作について説明する。なお、ＣＰＵ配分テーブル１０２には、予め定められたワークロードクラス毎のＣＰＵ配分比率が設定されている。図１０は、ＣＰＵ目標時間を目標時間格納テーブル１０３に記憶させる動作の例を示すフローチャートである。
【００４６】
まず、目標時間計算手段１１０は、ＣＰＵ配分テーブル１０２に記憶されているワークロードクラス毎のＣＰＵ配分比率を読み込み（ステップＳ１１１）、全ワークロードクラスのＣＰＵ配分比率の合計値を計算する（ステップＳ１１２）。既に説明したように、ＣＰＵ配分比率は、例えば、百分率で表された値であるが、百分率以外で表されていてもよい。
【００４７】
次に、目標時間計算手段１１０は、各ワークロードクラスのＣＰＵ目標時間をそれぞれ計算する（ステップＳ１１３）。目標時間計算手段１１０は、ワークロードクラス毎に、「一定のインターバル時間」に、ステップＳ１１２で求めた合計値に対するＣＰＵ配分比率の割合を乗じることで、個々のワークロードクラスのＣＰＵ目標時間を計算する。「一定のインターバル時間」とは、インターバル初期化手段１５０が、使用時間格納テーブル１０４に格納されたＣＰＵ使用時間を０に初期化する周期である。この一定のインターバル時間をＩとし、ステップＳ１１２で計算した全ワークロードクラスのＣＰＵ配分比率の合計値をＳとし、ＣＰＵ目標時間の計算対象としているワークロードクラスのＣＰＵ配分比率をＲとすると、目標時間計算手段１１０は、個々のワークロードクラス毎に、Ｉ×Ｒ／Ｓを計算することにより、各ワークロードクラスのＣＰＵ目標時間を計算する。このように、目標時間計算手段１１０は、一定のインターバル時間をＣＰＵ配分比率に応じて配分することで、各ワークロードクラスのＣＰＵ目標時間を計算する。
【００４８】
次に、目標時間計算手段１１０は、計算した各ワークロードクラスのＣＰＵ目標時間を目標時間格納テーブル１０３に記憶させる（ステップＳ１１４）。このとき、図４に示すように、ワークロードクラス番号順にＣＰＵ目標時間を記憶させる。
【００４９】
次に、プロセス選択からプロセス実行までの制御の流れを説明する。図１１は、プロセス選択からプロセス実行までの制御の流れを示す説明図である。
【００５０】
プロセス選択手段１２０は、実行可能なプロセスを選択する。そして、プロセス選択手段１２０は、実行可能なプロセスを選択できた場合には、プロセス実行手段１４０に制御を渡し、実行可能なプロセスを選択できなかった場合には、強制実行プロセス選択手段１３０に制御を渡す。このプロセス選択手段１２０の動作については、図１２を用いて後述する。
【００５１】
強制実行プロセス選択手段１３０は、強制的に実行するプロセスを選択する。強制実行プロセス選択手段１３０は、強制的に実行するプロセスを選択できた場合には、プロセス実行手段１４０に制御を渡し、強制的に実行するプロセスを選択できなかった場合には、プロセス選択手段１２０に制御を渡す。この強制実行プロセス選択手段１３０の動作については、図１３、図１４および図１５を用いて後述する。
【００５２】
プロセス実行手段１４０は、プロセス選択手段１２０、または、強制実行プロセス選択手段１３０で選択されたプロセスを実行し、プロセス選択手段１２０に制御を渡す。このプロセス実行手段１４０の動作については、図１６および図１７を用いて後述する。
【００５３】
次に、プロセス選択手段１２０の動作について説明する。図１２は、プロセス選択手段１２０の動作の例を示すフローチャートである。プロセス選択手段１２０は、実行可能プロセスキュー記憶手段１０６において先頭にキューイングされているプロセスのプロセス番号を取得する（ステップＳ１２１）。すなわち、実行可能プロセスキュー記憶手段１０６に記憶されているプロセス番号のうち、優先順位が最も高いプロセス番号を取得する。プロセス選択手段１２０が取得したプロセス番号を、ここではｎとする。
【００５４】
次に、プロセス選択手段１２０は、取得したプロセス番号ｎに対応するワークロードクラス番号（すなわち、プロセス番号ｎのプロセスのワークロードクラス番号）をプロセス対応テーブル１０１から取得する（ステップＳ１２２）。ステップＳ１２１からステップＳ１２２に移行した場合、プロセス選択手段１２０は、ステップＳ１２１で取得したプロセス番号に対応するワークロードクラス番号をプロセス対応テーブル１０１から取得する。また、後述のステップＳ１２７からステップＳ１２２に移行した場合、プロセス選択手段１２０は、ステップＳ１２７で取得したプロセス番号に対応するワークロードクラス番号をプロセス対応テーブル１０１から取得する。
【００５５】
ステップＳ１２２の次に、プロセス選択手段１２０は、ステップＳ１２２で取得したワークロードクラス番号に対応するＣＰＵ目標時間を、目標時間格納テーブル１０３から取得する（ステップＳ１２３）。すなわち、そのワークロードクラス番号が示すワークロードクラスのＣＰＵ目標時間を取得する。
【００５６】
次に、プロセス選択手段１２０は、ステップＳ１２２で取得したワークロードクラス番号に対応するＣＰＵ使用時間を、使用時間格納テーブル１０４から取得する（ステップＳ１２４）。すなわち、ステップＳ１２２で取得したワークロードクラス番号が示すワークロードクラスのＣＰＵ使用時間を取得する。
【００５７】
プロセス選択手段１２０は、ＣＰＵ使用時間がＣＰＵ目標時間よりも小さいか否かを判定する（ステップＳ１２５）。ＣＰＵ使用時間がＣＰＵ目標時間よりも小さければ（ステップＳ１２５のＹ）、プロセス実行手段１４０に制御を渡す。ＣＰＵ使用時間がＣＰＵ目標時間と等しいか、または、大きい場合には（ステップＳ１２５のＮ）、プロセス選択手段１２０は、実行可能プロセスキュー記憶手段１０６に次のプロセスがキューイングされているか否かを判定する（ステップＳ１２６）。
【００５８】
実行可能プロセスキュー記憶手段１０６に次のプロセスがキューイングされている場合（ステップＳ１２６のＹ）、プロセス選択手段１２０は、実行可能プロセスキュー記憶手段１０６にキューイングされている次のプロセスのプロセス番号を取得し（ステップＳ１２７）、ステップＳ１２２に移行する。そして、ステップＳ１２７で取得したプロセス番号について、ステップＳ１２２以降の処理を行う。
【００５９】
実行可能プロセスキュー記憶手段１０６に次のプロセスがキューイングされていない場合（ステップＳ１２６のＮ）というのは、キューイングされている最後のプロセスまで、ＣＰＵ使用時間がＣＰＵ目標時間未満のプロセスが存在しない場合である。換言すれば、ＣＰＵ目標時間までＣＰＵ使用時間を使い切っていないプロセスが実行可能プロセスキュー記憶手段１０６にキューイングされていない場合である。この場合、プロセス選択手段１２０は、強制実行プロセス選択手段１３０に制御を渡す。
【００６０】
次に、強制実行プロセス選択手段１３０の動作について説明する。図１３、図１４および図１５は、強制実行プロセス選択手段１３０の動作の例を示すフローチャートである。以下の説明で、例えば、ワークロードクラス番号がｉであるワークロードクラスを、単にワークロードクラスｉと記す。また、プロセス番号ｘに対応するワークロードクラス番号とは、プロセス番号がｘであるプロセスのワークロードクラス番号である。
【００６１】
強制実行プロセス選択手段１３０は、変数ｉに０をセットする（ステップＳ２３１）。次に、強制実行プロセス選択手段１３０は、ワークロードクラスｉのＣＰＵ目標時間を目標時間格納テーブル１０３から取得し（ステップＳ２３２）、ワークロードクラスｉのＣＰＵ使用時間を使用時間格納テーブル１０４から取得する（ステップＳ２３３）。そして、ＣＰＵ使用時間がＣＰＵ目標時間未満であるか否かを判定する（ステップＳ２３４）。ＣＰＵ使用時間がＣＰＵ目標時間以上であれば（ステップＳ２３４のＮ）、ステップＳ２４６（図１５参照）に移行し、ＣＰＵ使用時間がＣＰＵ目標時間未満であれば（ステップＳ２３４のＹ）、ステップＳ２３５に移行する。
【００６２】
ステップＳ２３５では、強制実行プロセス選択手段１３０は、変数ｊに０をセットする。
【００６３】
次に、強制実行プロセス選択手段１３０は、プロセス対応テーブル１０１を参照し、プロセス番号ｊに対応するワークロードクラス番号を取得し（ステップＳ２３６）、そのワークロードクラス番号が変数ｉと等しいか否かを判定する（ステップＳ２３７）。すなわち、ＣＰＵ使用時間がＣＰＵ目標時間未満となっている着目しているワークロードクラス番号ｉと等しいか否かを判定する。プロセス番号ｊに対応するワークロードクラス番号が変数ｉと等しくなければ（ステップＳ２３７のＮ）、ステップＳ２４４（図１４参照）に移行する。プロセス番号ｊに対応するワークロードクラス番号が変数ｉと等しい場合（ステップＳ２３７のＹ）、そのｊは、ＣＰＵ使用時間がＣＰＵ目標時間未満となっている着目しているワークロードクラスで動作するプロセスのプロセス番号である。この場合（ステップＳ２３７のＹ）、ステップＳ２３８に移行する。
【００６４】
ステップＳ２３８では、強制実行プロセス選択手段１３０は、変数ｋにｊの値をセットする。
【００６５】
次に、強制実行プロセス選択手段１３０は、プロセス管理テーブル１０５において、プロセス番号ｋの資源待ちフラグがオンであるか否かを判定する（ステップＳ２３９）。すなわち、ＣＰＵ使用時間がＣＰＵ目標時間未満となっている着目しているワークロードクラスで動作するプロセスが資源待ち状態であるか否かを判定する。プロセス管理テーブル１０５に記憶されているプロセス番号ｋの資源待ちフラグがオフであるならば（ステップＳ２３９のＮ）、ステップＳ２４４に移行し、オンであれば（ステップＳ２３９のＹ）、ステップＳ２４０に移行する。
【００６６】
ステップＳ２４０において、強制実行プロセス選択手段１３０は、プロセス管理テーブル１０５に格納されているプロセス番号ｋの資源番号（資源待ちしている資源番号。図６参照。）を、変数ｍにセットする。すなわち、プロセス番号ｋのプロセスが待っている資源の資源番号をｍにセットする。
【００６７】
次に、強制実行プロセス選択手段１３０は、資源管理テーブル１０７に格納されている資源番号ｍのテナントプロセスのプロセス番号を、変数ｎにセットする（ステップＳ２４１）。すなわち、着目している資源番号ｍの資源を確保しているプロセスのプロセス番号をｎにセットする（ステップＳ２４１）。以上のようにして、ＣＰＵ使用時間がＣＰＵ目標時間未満となっている着目中のワークロードクラスで動作するプロセスが待っている資源を確保中のプロセスのプロセス番号をｎとしている。
【００６８】
次に、強制実行プロセス選択手段１３０は、プロセス管理テーブル１０５を参照して、プロセス番号ｎの実行可能フラグ（資源番号ｍの資源を確保しているプロセスの実行可能フラグ）がオンであるか否かを判定する（ステップＳ２４２）。その実行可能フラグがオンであれば（ステップＳ２４２のＹ）、ステップＳ２４８に移行する。オフであれば（ステップＳ２４２のＮ）、強制実行プロセス選択手段１３０は、変数ｋにｎの値をセットし（ステップＳ２４３）、ステップＳ２３９以降の処理を繰り返す。
【００６９】
ステップＳ２４２で実行可能フラグがオンと判定された場合、その時点のｎは、ＣＰＵ使用時間がＣＰＵ目標時間未満となっている着目しているワークロードクラスで動作するプロセスが待っている資源を確保中のプロセスであって、実行可能フラグがオンとなっているプロセスのプロセス番号を意味する。
【００７０】
また、ステップＳ２４４において、強制実行プロセス選択手段１３０は、プロセス番号ｊが最終エントリであるか否かを判定する（ステップＳ２４４）。すなわち、ｊが最大のプロセス番号に達したか否かを判定する。プロセス番号ｊが最終エントリであれば（ステップＳ２４４のＹ）、ステップＳ２４６（図１５参照）に移行する。また、プロセス番号ｊが最終エントリでなければ（ステップＳ２４４のＮ）、強制実行プロセス選択手段１３０は、ｊの値を１増加させ（ステップＳ２４５）、そのｊに関して、ステップＳ２３６以降の処理を行う。
【００７１】
また、ステップＳ２４６において、強制実行プロセス選択手段１３０は、ワークロードクラス番号ｉが目標時間格納テーブル１０３における最終エントリであるか否かを判定する（ステップＳ２４６）。ワークロードクラス番号ｉが最終エントリであれば（ステップＳ２４６のＹ）、プロセス選択手段１２０に制御を渡す。ワークロードクラス番号ｉが最終エントリでなければ（ステップＳ２４６のＮ）、ｉの値を１増加させ（ステップＳ２４７）、そのｉに関して、ステップＳ２３２（図１３参照）以降の処理を行う。
【００７２】
また、ステップＳ２４２からステップ２４８に移行した時点で、ＣＰＵ使用時間がＣＰＵ目標時間未満の着目中のワークロードクラスで動作するプロセスが待っている資源を確保中のプロセスであって、実行可能フラグがオンとなっているプロセスのプロセス番号（ｎ）が特定されることになる。強制実行プロセス選択手段１３０は、強制実行情報格納テーブル１０８の資源番号として、その資源番号ｍを格納する（ステップＳ２４８）。さらに、強制実行プロセス選択手段１３０は、資源解放時に優先的に資源を渡すプロセスのプロセス番号（図９参照）として、ｋの値を、強制実行情報格納テーブル１０８に格納する（ステップＳ２４９）。そして、プロセス実行手段１４０に制御を渡す。
【００７３】
上記の動作において、ステップＳ２３９の処理は、資源待ちフラグがオフであるということは、ＣＰＵ使用時間がＣＰＵ目標時間未満となっている着目しているワークロードクラスで動作するプロセスが、資源を待っていないということを意味する。この場合には、ステップＳ２４０，Ｓ２４１，Ｓ２４２，Ｓ２４８，Ｓ２４９を行ってプロセス実行手段１４０に制御を渡すのではなく、ステップＳ２４４に移行し、ｊが最終エントリでなければ、ｊを１インクリメントし（ステップＳ２４５）、ステップＳ２３６からの処理を繰り返す。ｊが最終エントリであれば、ｉが最終エントリであるか否かを判定し、ｉを１インクリメントしてステップＳ２３２からの処理を繰り返す。このように、ＣＰＵ使用時間がＣＰＵ目標時間未満となっている着目しているワークロードクラスで動作するプロセスが資源を待っていない場合には、プロセス実行手段１４０にそのプロセスを強制的に実行させることはしない。
【００７４】
次に、プロセス実行手段１４０の動作について説明する。図１６および図１７は、プロセス実行手段１４０の動作の例を示すフローチャートである。プロセス実行手段１４０は、プロセス選択手段１２０または強制実行プロセス選択手段１３０で選択されたプロセス、すなわちプロセス番号ｎのプロセスのワークロードクラス番号を、プロセス対応テーブル１０１から取得し、そのワークロードクラス番号を変数ｐにセットする（ステップＳ３４１）。
【００７５】
すなわち、プロセス選択手段１２０が実行するステップＳ１２５（図１２参照）において、ＣＰＵ使用時間がＣＰＵ目標時間未満であると判定され、プロセス選択手段１２０から制御を渡された場合には、その時点でプロセス選択手段１２０が取得していたプロセス番号ｎに対応するワークロードクラス番号を変数ｐにセットする。
【００７６】
また、強制実行プロセス選択手段１３０が実行するステップＳ２４２（図１５参照）において、資源番号ｍの資源を確保しているプロセス番号ｎのプロセスの実行可能フラグがオンであり、ステップＳ２４８，Ｓ２４９（図１６参照）の処理後に強制実行プロセス選択手段１３０から制御を渡された場合には、その時点で強制実行プロセス選択手段１３０が特定していたプロセス番号ｎに対応するワークロードクラス番号を変数ｐにセットする。
【００７７】
ステップＳ３４１の後、プロセス実行手段１４０は、ワークロードクラスｐのＣＰＵ目標時間を目標時間格納テーブル１０３から取得し、変数ｑにセットし（ステップＳ３４２）、ワークロードクラスｐのＣＰＵ使用時間を使用時間格納テーブル１０４から取得し、変数ｒにセットする（ステップＳ３４３）。
【００７８】
そして、プロセス実行手段１４０は、実行可能プロセスキュー記憶手段１０６にキューイングされているプロセス番号から、ｎをデキューし（ステップＳ３４４）、プロセス管理テーブル１０５に格納されているプロセス番号ｎの実行可フラグをオフにする（ステップＳ３４５）。さらに、プロセス実行手段１４０は、プロセス管理テーブル１０５に格納されているプロセス番号ｎの実行中断フラグをオフにする（ステップＳ３４６）。次に述べるステップＳ３４７は、プロセスを実行するステップであり、ステップＳ３４４〜Ｓ３４６では、これから実行しようとするプロセスのプロセス番号ｎを実行可能プロセスキュー記憶手段１０６からデキューし、その実行可フラグおよび実行中断フラグをいずれもオフとしている。
【００７９】
ステップＳ３４６の後、プロセス実行手段１４０は、プロセス番号ｎのプロセスを最小単位分だけ実行する（ステップＳ３４７）。
【００８０】
強制実行プロセス選択手段１３０がステップＳ２４２，Ｓ２４８，Ｓ２４９の処理を行い、強制実行プロセス選択手段１３０から制御を渡された場合、このようにステップＳ３４７を実行することで、資源番号ｍの資源を確保しているプロセス番号ｎのプロセスを強制的に実行させている。
【００８１】
ただし、ステップＳ３４７は、資源番号ｍの資源を確保しているプロセス番号ｎのプロセスを強制的に実行させるためだけのステップではない。プロセス選択手段１２０から制御を渡されてステップＳ３４７に移行した場合には、ＣＰＵ目標時間までＣＰＵを使用していないプロセス（プロセス選択手段１２０が選択したプロセス）を最小単位分、実行する。
【００８２】
ステップＳ３４７の後、プロセス実行手段１４０は、使用時間格納テーブル１０４に格納されているワークロードクラスｐのＣＰＵ使用時間に対し、ステップＳ３４７で実行した時間分を加算して、ワークロードクラスｐのＣＰＵ使用時間を更新する（ステップＳ３４８）。
【００８３】
次に、プロセス実行手段１４０は、プロセス管理テーブル１０５に格納されているプロセス番号ｎの実行中断フラグがオンになっているか否かを確認する（ステップＳ３４９）。プロセス番号ｎの実行中断フラグがオンであれば（ステップＳ３４９のＹ）、ステップＳ３５４に移行し、オフであれば（ステップＳ３４９のＮ）、ステップＳ３５０に移行する。
【００８４】
ステップＳ３５０では、プロセス実行手段１４０は、変数ｒの値が変数ｑの値以上であるか否かを判定する（ステップＳ３５０）。変数ｒの値が変数ｑの値以上であれば（ステップＳ３５０のＹ）、ステップＳ３４７以降の処理を繰り返す。すなわち、ステップＳ３４３で変数ｒにセットしたＣＰＵ使用時間が既にＣＰＵ目標時間を超えている場合、実行中断フラグがオンになるまで、プロセス番号ｎのプロセスを実行させる。
【００８５】
また、変数ｒの値が変数ｑの値未満である場合（ステップＳ３５０のＮ）、プロセス実行手段１４０は、使用時間格納テーブル１０４に格納されているワークロードクラスｐのＣＰＵ使用時間（ステップＳ３４７で実行した時間分が加算されたＣＰＵ使用時間）がＣＰＵ目標時間未満であるか否かを判定する（ステップＳ３５１）。ＣＰＵ使用時間がＣＰＵ目標時間未満であれば、ステップＳ３４７以降の処理を繰り返し、ＣＰＵ使用時間がＣＰＵ目標時間以上になったならばステップＳ３５２に移行する。
【００８６】
ステップＳ３５２では、プロセス実行手段１４０は、プロセス管理テーブル１０５に格納されているプロセス番号の実行可フラグをオンにする（ステップＳ３５２）。次に、プロセス実行手段１４０は、実行可能プロセスキュー記憶手段１０６に、プロセス番号ｎを実行順位順になるようにエンキューする（ステップＳ３５３）。そして、プロセス実行手段１４０は、強制実行情報格納テーブル１０８に登録されている資源番号を削除する(ステップＳ３５４)。
【００８７】
なお、上記のステップＳ３４７で、プロセス実行手段１４０がプロセス番号ｎのプロセスを実行するときに、資源解放手段１７０に資源の解放を要求する場合、資源解放手段１７０によって、そのプロセスの実行中断フラグがオンにされ、そのプロセスは中断される。資源を解放した資源解放手段１７０から制御を戻されると、プロセス実行手段１４０はステップＳ３４８を行い、その後のステップＳ３４９で実行中断フラグがオンとなっているので、ステップＳ３４７に戻らない。よって、プロセス番号ｎのプロセスは中断されていることになる。
【００８８】
次に、インターバル初期化手段１５０の動作について説明する。図１８は、インターバル初期化手段１５０の動作の例を示すフローチャートである。インターバル初期化手段１５０は、使用時間格納テーブル１０４中の全てのワークロードクラスのＣＰＵ使用時間に０をセットすると（ステップＳ１５１）、一定のインターバル時間が経過するのを待つ（ステップＳ１５２）。その一定のインターバル時間が経過すると、ステップＳ１５１以降の処理を繰り返す。
【００８９】
次に、資源取得手段１６０および資源解放手段１７０の動作について説明する。資源取得手段１６０および資源解放手段１７０は、プロセス実行手段１４０がステップＳ３４７でプロセスを実行している最中に、プロセス実行手段１４０によって起動される。プロセス実行手段１４０がステップＳ３４７で資源の取得を要求する場合には、資源取得手段１６０を起動して、取得する資源の資源番号を指定して、その資源を取得させる。このときプロセス実行手段１４０が実行しているプロセスを資源取得要求プロセスと記す。また、プロセス実行手段１４０がステップＳ３４７で資源の解放を要求する場合には、資源解放手段１７０を起動して、解放する資源の資源番号を指定して、その資源を解放させる。このときプロセス実行手段１４０が実行しているプロセスを資源解放プロセスと記す。
【００９０】
図１９は、資源取得手段１６０の動作の例を示すフローチャートである。資源取得手段１６０は、取得する資源を資源番号によって指定されると、その資源番号を変数ｓにセットする（ステップＳ１６１）。
【００９１】
次に、資源取得手段１６０は、資源管理テーブル１０７において、資源番号ｓのテナントプロセスのプロセス番号格納領域にプロセス番号が格納されているか否かを確認する（ステップＳ１６２）。テナントプロセスのプロセス番号格納領域にプロセス番号が未格納であれば（ステップＳ１６２のＮ）、ステップＳ１６３に移行し、プロセス番号が格納済みであれば（ステップＳ１６２のＹ）、ステップＳ１６４に移行する。
【００９２】
ステップＳ１６３では、資源取得手段１６０は、資源管理テーブル１０７中の資源番号ｓのテナントプロセスのプロセス番号格納領域に、資源取得要求プロセスの番号を格納し（ステップＳ１６３）、資源取得手段１６０を終了する。
【００９３】
また、ステップＳ１６４に移行した場合、資源取得手段１６０は、資源管理テーブル１０７における資源番号ｓの資源待ちプロセスキューに、資源取得要求プロセスを実行優先順位順となるようにキューイングする（ステップＳ１６４）。すなわち、資源取得要求プロセスのプロセス番号を実行優先順位順となるように格納する。次に、資源取得手段１６０は、プロセス管理テーブル１０５中の資源取得要求プロセスの実行中断フラグをオンにセットし（ステップＳ１６５）、プロセス管理テーブル１０５中の資源取得要求プロセスの資源待ちフラグをオンにセットする（ステップＳ１６６）。さらに、プロセス管理テーブル１０５中の資源取得要求プロセスの資源番号（資源待ちしている資源番号。図６参照）として、変数ｓをセットし、プロセス実行手段１４０に制御を戻す（ステップＳ１６７）。
【００９４】
図２０および図２１は、資源解放手段１７０の動作の例を示すフローチャートである。資源解放手段１７０は、解放する資源を資源番号によって指定されると、その資源番号を変数ｔにセットする（ステップＳ１７１）。次に、資源解放手段１７０は、資源管理テーブル１０７において資源番号ｔのテナントプロセスのプロセス番号格納領域に格納されているプロセス番号を削除する（ステップＳ１７２）。このように、テナントプロセスのプロセス番号格納領域に格納されているプロセス番号を削除することによって、プロセス実行手段１４０が実行しているプロセスで確保していた資源（解放を要求された資源）を解放する。
【００９５】
次に、資源解放手段１７０は、強制実行情報格納テーブル１０８に格納されている資源番号と変数ｔとが一致しているか否かを判定する（ステップＳ１７３）。一致していない場合、ステップＳ１７５に移行し、一致している場合、ステップＳ１７４に移行する。
【００９６】
ステップＳ１７４において、資源解放手段１７０は、強制実行情報格納テーブル１０８中の「源解放時に優先的に資源を渡すプロセスのプロセス番号（図９参照）」を変数ｕにセットする（ステップＳ１７４）。
【００９７】
また、ステップＳ１７５では、資源解放手段１７０は、資源管理テーブル１０７中の、資源番号ｔの資源待ちプロセスキューにプロセスが存在するか否かを確認する（ステップＳ１７５）。存在していなければ（ステップＳ１７５のＮ）、資源解放手段１７０を終了する。存在している場合（ステップＳ１７５のＹ）、資源解放手段１７０は、資源管理テーブル１０７中の、資源番号ｔの資源待ちプロセスキューの先頭のプロセスのプロセス番号を変数ｕにセットする（ステップＳ１７６）。
【００９８】
ステップＳ１７４の後、および、ステップＳ１７６の後、資源解放手段１７０は、資源管理テーブル１０７中の資源番号ｔの資源待ちプロセスキューから、プロセス番号ｕをデキューする（ステップＳ１７７）。すなわち、ステップＳ１７４の後では、「源解放時に優先的に資源を渡すプロセスのプロセス番号」をデキューし、ステップＳ１７６の後では、資源番号ｔの資源待ちプロセスキューの先頭のプロセスのプロセス番号をデキューする。
【００９９】
次に、資源解放手段１７０は、資源管理テーブル１０７中の、資源番号ｔのテナントプロセスのプロセス番号格納領域に変数ｕを設定する（ステップＳ１７８）。
【０１００】
続いて、資源解放手段１７０は、プロセス管理テーブル１０５中のプロセス番号ｕの資源待ちフラグをオフにし（ステップＳ１７９）、さらに、プロセス管理テーブル１０５中のプロセス番号ｕの実行可フラグをオンにする（ステップＳ１８０）。次に、資源解放手段１７０は、実行可能プロセスキュー記憶手段１０６の実行可能プロセスキューに、プロセス番号ｕを実行優先順位順となるようにキューイングする（ステップＳ１８１）。
【０１０１】
次に、資源解放手段１７０は、強制実行情報格納テーブル１０８中の資源番号と変数ｔが一致しているか否かを判定し（ステップＳ１８２）、一致していなければ、資源解放手段１７０を終了する。
【０１０２】
一致していれば、資源解放手段１７０は、プロセス管理テーブル１０５中の資源解放プロセスの実行中断フラグをオンにセットし（ステップＳ１８３）、さらに、プロセス管理テーブル１０５中の資源解放プロセスの実行可フラグをオンにセットし（ステップＳ１８４）、実行可能プロセスキュー記憶手段１０６に資源解放プロセスを実行優先順位順となるようにキューイングし、プロセス実行手段１４０に制御を渡す(ステップＳ１８５)。
【０１０３】
ステップＳ１７１〜Ｓ１８５の処理において、資源解放手段１７０は、ステップＳ１７２でテナントプロセスのプロセス番号格納領域に格納されているプロセス番号を削除することによって、解放要求された資源を解放している。また、ステップＳ１７７でプロセス番号ｕをデキューすることで、その資源の解放の待ち状態であったプロセスを、資源待ちプロセスキューからデキューしている。さらに、ステップＳ１８１で、そのプロセス番号ｕを実行可能プロセスキューにキューイングすることで、待っていた資源が解放されたプロセスを実行可能プロセスキューにキューイングしている。
【０１０４】
また、ステップＳ１８３，Ｓ１８４，Ｓ１８５で、資源解放プロセスの実行中断フラグおよび実行可フラグをオンとし、資源解放プロセスを実行可能プロセスキューにキューイングすることにより、資源解放プロセスを中断させている。ステップＳ１８５の後、資源解放プロセスを実行していたプロセス実行手段１４０は、資源解放手段１７０から制御を戻されると、ステップＳ３４８，Ｓ３４９（図１６および図１７参照）を行い、ステップＳ３４９で、資源解放プロセスの実行中断フラグがオンになっていることを確認して、ステップＳ３４７〜Ｓ３５１のループ処理を抜け、ステップＳ３４７には戻らないので、中断したプロセスをさらに実行し続けることはない。
【０１０５】
次に、本発明の動作の具体例を説明する。図２２は、各テーブルの状態の具体例を示す説明図である。以下の説明では、プロセス対応テーブル１０１に、プロセス番号０に対応するワークロードクラス番号として“０”が格納され、プロセス番号１に対応するワークロードクラス番号として“１”が格納されている場合を例にする。また、ＣＰＵ配分テーブル１０２において、ワークロードクラス０に対応するＣＰＵ配分比率が８０％であり、ワークロードクラス１に対応するＣＰＵ配分比率が７０％であると定められている場合を例にする。また、以下に示す例では、ＣＰＵの配分を行うインターバル時間（インターバル初期化手段１５０が全ワークロードクラスのＣＰＵ使用時間を０に初期化する周期）が１００ミリ秒であるとする。
【０１０６】
図１０を参照して、目標時間計算手段１１０の動作の具体例を説明する。目標時間計算手段１１０は、ＣＰＵ配分テーブル１０２から、ワークロードクラス０のＣＰＵ配分比率“８０”、およびワークロードクラス１のＣＰＵ配分比率“２０”を読み込み（ステップＳ１１１）、各ワークロードクラスのＣＰＵ配分比率の合計値を計算する（ステップＳ１１２）。ワークロードクラス０，１のＣＰＵ配分比率は、それぞれ、８０，２０であるので、本例では、８０と２０とを加算して、その計算結果である１００を算出する。次に、インターバル時間が１００ミリ秒であるので、ワークロードクラス０，１のＣＰＵ目標時間をそれぞれ、１００×８０／１００＝８０ミリ秒、１００×２０／１００＝２０ミリ秒と計算する（ステップＳ１１３）。そして、目標時間計算手段１１０は、各ワークロードクラス０，１のＣＰＵ目標時間をそれぞれ８０ミリ秒、２０ミリ秒として目標時間格納テーブル１０３にセットする（ステップＳ１１４）。
【０１０７】
図１９を参照して、資源取得手段１６０の動作の具体例を説明する。プロセス番号１のプロセスから資源番号０の資源の取得を要求されているとする。すなわち、資源要求プロセスのプロセス番号が１であるとする。資源取得手段１６０は、取得する資源番号０を変数ｓにセットする（ステップＳ１６１）。図２２に示すように、資源管理テーブル１０７において、資源番号０のテナントプロセスのプロセス番号格納領域にプロセス番号０が格納されているとする。すると、資源取得手段１６０は、テナントプロセスのプロセス番号が格納済みであるので（ステップＳ１６２のＹ）、資源管理テーブル１０７中の資源番号０の資源待ちプロセスキューに、プロセス１を実行優先順位順となるようにキューイングする（ステップＳ１６４）。次に、資源取得手段１６０は、プロセス管理テーブル１０５中のプロセス番号１の実行中断フラグおよび資源待ちフラグをオンにセットし（ステップＳ１６５，Ｓ１６６）、プロセス管理テーブル１０５中のプロセス番号１の資源番号（資源待ちしている資源番号）に、資源番号０をセットする（ステップＳ１６７）。そして、プロセス実行手段１４０に制御を戻す。
【０１０８】
次に、図１２を参照して、プロセス選択手段１２０の動作の具体例を説明する。本例では、実行可能プロセスキュー記憶手段１０６には、プロセス番号０のプロセスが実行可能プロセスとしてキューイングされ、他にキューイングされている実行可能プロセスはないものとする。また、ワークロードクラス番号０のＣＰＵ使用時間は８０ミリ秒になっていて、ワークロードクラス番号１のＣＰＵ使用時間は１０ミリ秒になっているとする。
【０１０９】
プロセス選択手段１２０は、ステップ１２１で、実行可能プロセスキューにキューイングされているプロセスのプロセス番号０を取得する。次に、プロセス番号０のワークロードクラス番号（本例では、ワークロードクラス番号は０）をプロセス対応テーブル１０１から取得する（ステップＳ１２２）。そして、プロセス選択手段１２０は、そのワークロードクラス番号０のＣＰＵ目標時間８０ミリ秒を、目標時間格納テーブル１０３から取得し（ステップＳ１２３）、そのワークロードクラス番号０のＣＰＵ使用時間８０ミリ秒を、使用時間格納テーブル１０４から取得する（ステップＳ１２４）。すると、取得したＣＰＵ使用時間およびＣＰＵ目標時間は等しいので（ステップＳ１２５のＮ）、ステップＳ１２６に移行し、実行可能プロセスキュー記憶手段１０６に他にキューイングされている実行可能プロセスがないため、強制実行プロセス選択手段１３０に制御を渡す。
【０１１０】
次に、図１３、図１４および図１５を参照して、強制実行プロセス選択手段１３０の動作の具体例を説明する。強制実行プロセス選択手段１３０は、変数ｉに０をセットする（ステップＳ２３１）。そして、目標時間格納テーブル１０３からワークロードクラス０のＣＰＵ目標時間８０ミリ秒を取得し（ステップＳ２３２）、使用時間格納テーブル１０４からワークロードクラス０のＣＰＵ使用時間８０ミリ秒を取得する（ステップＳ２３３）。ＣＰＵ使用時間がＣＰＵ目標時間以上であるため（ステップＳ２３４のＮ）、ステップＳ２４６に移行し、強制実行プロセス選択手段１３０は、ワークロードクラス番号０が最終エントリであるか否かを判定する（ステップＳ２４６）。ワークロードクラス番号として１があり、ワークロードクラス番号０は最終エントリではないので（ステップＳ２４６のＮ）、ステップＳ２４７に移行し、強制実行プロセス選択手段１３０は、ｉの値を１増加させ、ｉ＝１としてステップＳ２３２に移行する（ステップＳ２４７）。
【０１１１】
続いて、強制実行プロセス選択手段１３０は、目標時間格納テーブル１０３からワークロードクラス１のＣＰＵ目標時間２０ミリ秒を取得し（ステップＳ２３２）、使用時間格納テーブル１０４からワークロードクラス１のＣＰＵ使用時間１０ミリ秒を取得する（ステップＳ２３３）。すると、ＣＰＵ使用時間がＣＰＵ目標時間未満であるため（ステップＳ２３４のＹ）、強制実行プロセス選択手段１３０は、変数ｊを０にセットする（ステップＳ２３５）。
【０１１２】
続いて、強制実行プロセス選択手段１３０は、プロセス対応テーブル１０１を参照し、プロセス番号ｊ（ここでは０）のワークロードクラス番号０を取得する（ステップＳ２３６）。取得したワークロードクラス番号０が変数ｉの値（ここでは１）でないため（ステップＳ２３７のＮ）、ステップＳ２４４に移行する。ステップＳ２４４では、プロセス番号ｊ（＝０）が、プロセス対応テーブル１０１において最終エントリであるか否かを判定する。ここでは、プロセス番号０は最終エントリではないため（ステップＳ２４４のＮ）、強制実行プロセス選択手段１３０は、ｊの値を１増加させ、ｊ＝１としてステップＳ２３６に移行する。
【０１１３】
強制実行プロセス選択手段１３０は、プロセス対応テーブル１０１を参照し、プロセス番号ｊ（ここでは１）のワークロードクラス番号１を取得する（ステップＳ２３６）。取得したワークロードクラス番号１が変数ｉの値である１と等しいので（ステップＳ２３７のＹ）、強制実行プロセス選択手段１３０は、変数ｋにｊの値１をセットする（ステップＳ２３８）。
【０１１４】
次に、プロセス管理テーブル１０５に格納されているプロセス番号１の資源待ちフラグがオンであるか否かを判定する（ステップＳ２３９）。プロセス番号１の資源待ちフラグがオンであるので（ステップＳ２３９のＹ）、強制実行プロセス選択手段１３０は、プロセス管理テーブル１０５に格納されているプロセス番号１に対応する、資源待ちしている資源番号０を、変数ｍにセットする（ステップＳ２４０）。さらに、資源管理テーブル１０７に格納されている資源番号０のテナントプロセスのプロセス番号０を、変数ｎにセットする（ステップＳ２４１）。
【０１１５】
次に、強制実行プロセス選択手段１３０は、プロセス管理テーブル１０５においてプロセス番号ｎ（＝０）の実行可フラグがオンになっているか否かを確認する（ステップＳ２４２）。本例では、プロセス管理テーブル１０５においてプロセス番号０の実行可フラグはオンであるとする（ステップＳ２４２のＹ）。よって、この時点でのｎ＝０が、ワークロードクラス１で動作するプロセス１が待っている資源を確保中のプロセスのプロセス番号である。続いて、ステップＳ２４８に移行し、強制実行情報格納テーブル１０８の資源番号にｍ（＝０）を格納する（ステップＳ２４８）。さらに、強制実行プロセス選択手段１３０は、資源解放時に優先的に資源を渡すプロセスのプロセス番号（図９参照）として、ｋの値（ここでは１）を、強制実行情報格納テーブル１０８に格納し（ステップＳ２４９）、プロセス実行手段１４０に制御を渡す。
【０１１６】
次に、図１６および図１７を参照して、プロセス実行手段１４０の動作の具体例を説明する。プロセス実行手段１４０は、強制実行プロセス選択手段１３０で選択されたプロセス番号ｎ（ここではｎ＝０）のワークロードクラス番号（ここでは０）をプロセス対応テーブル１０１から取得し、変数ｐにセットする（ステップＳ３４１）。強制実行プロセス選択手段１３０で選択されたプロセス番号ｎとは、強制実行プロセス選択手段１３０から制御が渡された時点のｎであり、上記のように、ワークロードクラス１で動作するプロセス１が待っている資源を確保中のプロセスのプロセス番号を意味している。
【０１１７】
ステップＳ３４１の後、プロセス実行手段１４０は、目標時間格納テーブル１０３からワークロードクラス番号ｐ（＝０）のＣＰＵ目標時間（ここでは８０ミリ秒）を取得して変数ｑにセットし（ステップＳ３４２）、使用時間格納テーブル１０４からワークロードクラス番号ｐ（＝０）のＣＰＵ使用時間（ここでは８０ミリ秒）を取得して変数ｒにセットする（ステップＳ３４３）。そして、ｎ＝０であるので、実行可能プロセスキュー１０６から、プロセス番号０をデキューする（ステップＳ３４４）。さらに、プロセス管理テーブル１０５に格納されているプロセス番号０の実行可フラグおよび実行中断フラグをオフとする（ステップＳ３４５，Ｓ３４６）。
【０１１８】
そして、プロセス実行手段１４０は、プロセス番号０を最小実行単位分、実行し（ステップＳ３４７）、使用時間格納テーブル１０４のワークロードクラスｐ（＝０）のＣＰＵ使用時間を、ステップＳ３４７で実行した時間分加算する（ステップＳ３４８）。
【０１１９】
次に、プロセス管理テーブル１０５に格納されているプロセス番号０の実行中断フラグがオンになったか否かを判定する（ステップＳ３４９）。ここでは、プロセス番号０の実行中断フラグがオフのままであるとする（ステップＳ３４９のＮ）。次に、プロセス実行手段１４０は、変数ｒの値（８０ミリ秒）と、変数ｑの値（８０ミリ秒）とを比較し、ｒ＝ｑであるので（ステップＳ３５０のＹ）、ステップＳ３４７に移行する。その後、プロセス番号０の実行中断フラグがオンになるまで、ステップＳ３４７〜Ｓ３５０の処理を繰り返す。
【０１２０】
次に、図２０および図２１を参照して、資源解放手段１７０の動作の具体例を説明する。上記のステップＳ３４７（図１６参照）でプロセス実行手段１４０がプロセス番号０のプロセスを実行中に、そのプロセスから資源番号０の解放要求を行ったとする。すなわち、プロセス番号０のプロセスが資源解放プロセスであるとする。すると、資源解放手段１７０は、解放する資源番号０を変数ｔにセットする（ステップＳ１７１）。そして、資源管理テーブル１０７中の、資源番号ｔ（ここでは０）のテナントプロセスのプロセス番号格納領域に格納されているプロセス番号０を削除し（ステップＳ１７２）、変数ｔが強制実行情報格納テーブル１０８中の資源番号０と一致しているか否かを判定する（ステップＳ１７３）。ここでは、変数ｔの値は０であり、両者は一致しているので（ステップＳ１７３のＹ）、資源解放手段１７０は、強制実行情報格納テーブル１０８中の「源解放時に優先的に資源を渡すプロセスのプロセス番号（図９参照）」を変数ｕにセットする。本例では、源解放時に優先的に資源を渡すプロセスのプロセス番号は１となっているので、ｕ＝１とする（ステップＳ１７４）。
【０１２１】
ここではｔ＝０，ｕ＝１であるので、資源解放手段１７０は、資源管理テーブル１０７において資源番号０の資源待ちプロセスキューから、プロセス番号１をデキューする（ステップＳ１７７）。さらに、資源管理テーブル１０７中の資源番号０のテナントプロセスのプロセス番号格納領域にプロセス番号１を格納する（ステップＳ１７８）。
【０１２２】
また、資源解放手段１７０は、プロセス管理テーブル１０５中のプロセス番号１の資源待ちフラグをオフとし（ステップＳ１７９）、そのプロセス番号１の実行可フラグをオンとする（ステップＳ１８０）。さらに、実行可能プロセスキュー記憶手段１０６にプロセス番号１を実行優先順位順となるようにキューイングする（ステップＳ１８１）。
【０１２３】
そして、強制実行情報格納テーブル１０８中の資源番号と変数ｔが一致しているので（ステップＳ１８２のＹ）、資源解放手段１７０は、プロセス管理テーブル１０５において、資源解放プロセス（本例では、プロセス０）の実行中断フラグおよび実行可フラグをオンにセットする（ステップＳ１８３，Ｓ１８４）。実行可能プロセスキュー記憶手段１０６に、資源解放プロセスを実行優先順位順となるようにキューイングする（ステップＳ１８５）。すなわち、プロセス番号０を実行優先順位順となるようにキューイングする。その後、プロセス実行手段１４０に制御を戻す。
【０１２４】
プロセス実行手段１４０は、ステップＳ３４７（図１６参照）でのプロセス実行中に資源番号０の解放要求を行った後、資源解放手段１７０から制御を戻されると、ステップＳ３４８以降の処理を行う。使用時間格納テーブル１０４のワークロードクラス０のＣＰＵ使用時間を、ステップＳ３４７で実行した時間分加算し（ステップＳ３４８、図１６参照）。続くステップＳ３４９では、プロセス管理テーブル１０５に格納されているプロセス番号０の実行中断フラグがオンになっているので、ステップＳ３５４に移行し、強制実行情報格納テーブル１０８に登録されている資源番号０を削除し、プロセス選択手段１２０に制御を渡す。
【０１２５】
次に、図１８を参照して、インターバル初期化手段１５０の動作の具体例を説明する。インターバル初期化手段１５０は、使用時間格納テーブル１０４中の全てのワークロードクラスのＣＰＵ使用時間に０をセットし（ステップＳ１５１）、１００ミリ秒が経過するのを待つ（ステップＳ１５２）。１００ミリ秒経過すると、ステップＳ１５１以降の処理を再度行う。
【０１２６】
次に、本発明の効果について説明する。
本発明によれば、ＣＰＵ使用時間がＣＰＵ目標時間未満となっているワークロードクラスで動作するプロセスが待っている資源を確保中のプロセスを強制的に実行させる。従って、ＣＰＵ配分時間を使い切っていないにもかかわらず、共有資源待ちのままＣＰＵ資源を使用することができない状態に陥ることを防止することができる。
【０１２７】
本発明によれば、ステップＳ２３９における資源待ちフラグがオンかオフかの判定を行うことで、ＣＰＵ使用時間がＣＰＵ目標時間未満となっている着目しているワークロードクラスで動作するプロセスが、資源待ち状態であるか否かを判定している。そして、そのプロセスが資源待ち状態でない場合（ステップＳ２３９のＮ）では、プロセス実行手段１４０に制御を渡さず、プロセス実行手段１４０がそのプロセスの強制的実行（ステップＳ３４７）を行うことはない。換言すれば、システム資源等の資源を取得（確保）している場合でも、他のワークロードクラスがその資源の解放を待っていない場合には、強制的な実行を行わない。そのため、ワークロードクラスをきめ細かく設定し、各ワークロードクラスのＣＰＵ配分比率が小さくなる場合でも、システム資源の取得区間の強制実行を行った結果のＣＰＵ配分と、元々定めていたＣＰＵ配分比率とのずれを削減することができる。
【０１２８】
また、資源を確保中のプロセスを強制的に実行させた場合でも、そのプロセスが資源の解放を要求すると、資源解放手段１７０は、そのプロセスを中断させる（ステップＳ１８３，Ｓ１８４，Ｓ１８５）。その結果、実行優先順位が、ユーザが設定可能な優先順位の範囲に戻るまでの余分な区間を実行しないので、システム資源の取得区間の強制実行を行った結果のＣＰＵ配分と、元々定めていたＣＰＵ配分比率とのずれを削減することができる。
【０１２９】
また、プロセスが解放を待つ資源には、システム資源だけでなく、ワークロードクラス間で共有される資源も含まれ、システム資源だけでなく、ワークロードクラス間共有資源についても、他のワークロードクラスが資源の解放を待つ場合に、その資源を確保しているプロセスの強制的な実行（ステップＳ３４７）を行う。よって、類似機能をさらにいくつかのワークロードクラスに分割したことによりワークロードクラス間で共有する資源が存在するようになった場合でも、ワークロードクラス間共有資源のロックネックによるスループットの低下を防止することができる。
【０１３０】
次に、本発明の概要について説明する。図２３は、本発明の概要を示すブロック図である。本発明のプロセス制御装置は、強制実行対象特定手段５０１（例えば、強制実行プロセス選択手段１３０）と、強制実行手段５０２（例えば、プロセス実行手段１４０）と、資源解放手段５０３（例えば、資源解放手段１７０）とを備える。
【０１３１】
強制実行対象特定手段５０１は、実行可能なプロセスのキューである実行可能プロセスキューの中にＣＰＵ目標時間までＣＰＵを使い切っていないプロセスが存在していない場合に（例えば、プロセス選択手段１２０がステップＳ１２１〜Ｓ１２７の処理でＣＰＵ使用時間がＣＰＵ目標時間未満のプロセスを選択できなかった場合）、ＣＰＵ目標時間までＣＰＵを使い切っていないワークロードクラスで動作するプロセスであって資源の解放を待つ解放待ちプロセス（例えば、ステップＳ２４２でＹとなるときのプロセス番号ｋのプロセス）と、その資源を確保している資源確保プロセス（例えば、ステップＳ２４２でＹとなるときのプロセス番号ｎのプロセス）とを特定する。
【０１３２】
強制実行手段５０２は、資源確保プロセスを強制的に実行させる（例えば、ステップＳ３４７を行う）。
【０１３３】
資源解放手段５０３は、強制実行手段からプロセスの実行に伴い資源の解放を要求されると、その資源を解放する（例えば、ステップＳ１７２を行う）とともに、そのプロセスを中断し（例えば、ステップＳ１８３〜Ｓ１８５を行い）、その資源の解放を待つ解放待ちプロセスを実行可能プロセスキューに追加する（例えば、ステップＳ１８１を行う）。
【０１３４】
以上のような構成により、資源確保プロセスを強制的に実行させ、ＣＰＵ目標時間を使い切っていないにもかかわらず、資源待ちのままとなってしまう状態に陥ることを防止することができる。また、資源解放手段５０３は、資源解放時に、資源解放を要求したプロセスを中断するので、ワークロードクラスをきめ細かく設定し、各ワークロードクラスのＣＰＵ配分比率が小さくなる場合でも、システム資源の取得区間の強制実行を行った結果のＣＰＵ配分と、元々定めていたＣＰＵ配分比率とのずれを削減することができる。
【０１３５】
また、上記の実施形態には、強制実行対象特定手段５０１が、資源の解放を待つ解放待ちプロセスが存在していることを条件に（ステップＳ２３９でＹとなることを条件に）、資源確保プロセスを強制実行手段５０２に実行させる構成が開示されている。
【０１３６】
そのような構成により、ワークロードクラスをきめ細かく設定し、各ワークロードクラスのＣＰＵ配分比率が小さくなる場合でも、システム資源の取得区間の強制実行を行った結果のＣＰＵ配分と、元々定めていたＣＰＵ配分比率とのずれを削減することができる。
【０１３７】
また、資源が、ワークロードクラス間で共有される資源を含むことが開示されている。
【０１３８】
また、確保されている資源の資源識別情報と、資源解放時にその資源を優先的に使用するプロセスのプロセス識別情報とを記憶する優先プロセス記憶手段（例えば、強制実行情報格納テーブル１０８）を備え、強制実行対象特定手段５０１が、資源確保プロセスが確保している資源の資源識別情報を優先プロセス記憶手段に記憶させ（例えばステップＳ２４８を行い）、解放待ちプロセスのプロセス識別情報を、その資源を優先的に使用するプロセスのプロセス識別情報として優先プロセス記憶手段に記憶させ（例えば、ステップＳ２４９を行い）、資源解放手段５０３が、解放した資源の資源識別情報と優先プロセス記憶手段が記憶している資源識別情報とが一致する場合に（例えば、ステップＳ１７３のＹ）、優先プロセス記憶手段に記憶されているプロセス識別情報が示すプロセスを実行可能プロセスキューにキューイングする（例えば、ステップＳ１７４で定めたｕに関してステップＳ１８１を行う）構成が開示されている。
【０１３９】
また、強制実行手段５０２は、実行可能プロセスキューの中にＣＰＵ目標時間までＣＰＵを使い切っていないプロセスが存在する場合（例えば、プロセス選択手段１２０がステップＳ１２１〜Ｓ１２７の処理でＣＰＵ使用時間がＣＰＵ目標時間未満のプロセスを選択した場合）、そのプロセスを実行する構成が開示されている。
【産業上の利用可能性】
【０１４０】
本発明は、ワークロード毎に資源の割り当てを行うプロセス制御に好適に適用される。
【図面の簡単な説明】
【０１４１】
【図１】本発明のプロセス制御装置の例を示すブロック図である。
【図２】プロセス対応テーブルを示す説明図である。
【図３】ＣＰＵ配分テーブルを示す説明図である。
【図４】目標時間格納テーブルを示す説明図である。
【図５】使用時間格納テーブルを示す説明図である。
【図６】プロセス管理テーブルを示す説明図である。
【図７】実行可能プロセスキュー記憶手段を示す説明図である。
【図８】資源管理テーブルを示す説明図である。
【図９】強制実行情報格納テーブルを示す説明図である。
【図１０】ＣＰＵ目標時間を目標時間格納テーブルに記憶させる動作の例を示すフローチャートである。
【図１１】プロセス選択からプロセス実行までの制御の流れを示す説明図である。
【図１２】プロセス選択手段の動作の例を示すフローチャートである。
【図１３】強制実行プロセス選択手段の動作の例を示すフローチャートである。
【図１４】強制実行プロセス選択手段の動作の例を示すフローチャートである。
【図１５】強制実行プロセス選択手段の動作の例を示すフローチャートである。
【図１６】プロセス実行手段の動作の例を示すフローチャートである。
【図１７】プロセス実行手段の動作の例を示すフローチャートである。
【図１８】インターバル初期化手段の動作の例を示すフローチャートである。
【図１９】資源取得手段の動作の例を示すフローチャートである。
【図２０】資源解放手段の動作の例を示すフローチャートである。
【図２１】資源解放手段の動作の例を示すフローチャートである。
【図２２】各テーブルの状態の具体例を示す説明図である。
【図２３】本発明の概要を示すブロック図である。
【図２４】本発明に関連するＣＰＵ配分装置の例を示すブロック図である。
【図２５】図２４に示すＣＰＵ配分装置のプロセス選択手段の動作を示すフローチャートである。
【図２６】図２４に示すＣＰＵ配分装置のプロセス選択手段の動作を示すフローチャートである。
【符号の説明】
【０１４２】
１０  プロセス制御装置
１０１  プロセス対応テーブル
１０２  ＣＰＵ配分テーブル
１０３  目標時間格納テーブル
１０４  使用時間格納テーブル
１０５  プロセス管理テーブル
１０６  実行可能プロセスキュー記憶手段
１０７  資源管理テーブル
１０８  強制実行情報格納テーブル
１１０  目標時間計算手段
１２０  プロセス選択手段
１３０  強制実行プロセス選択手段
１４０  プロセス実行手段
１５０  インターバル初期化手段
１６０  資源取得手段
１７０  資源解放手段
５０１  強制実行対象特定手段
５０２  強制実行手段
５０３  資源解放手段
【図１】
0004650504.tif 000002
【図２】
0004650504.tif 000003
【図３】
0004650504.tif 000004
【図４】
0004650504.tif 000005
【図５】
0004650504.tif 000006
【図６】
0004650504.tif 000007
【図７】
0004650504.tif 000008
【図８】
0004650504.tif 000009
【図９】
0004650504.tif 000010
【図１０】
0004650504.tif 000011
【図１１】
0004650504.tif 000012
【図１２】
0004650504.tif 000013
【図１３】
0004650504.tif 000014
【図１４】
0004650504.tif 000015
【図１５】
0004650504.tif 000016
【図１６】
0004650504.tif 000017
【図１７】
0004650504.tif 000018
【図１８】
0004650504.tif 000019
【図１９】
0004650504.tif 000020
【図２０】
0004650504.tif 000021
【図２１】
0004650504.tif 000022
【図２２】
0004650504.tif 000023
【図２３】
0004650504.tif 000024
【図２４】
0004650504.tif 000025
【図２５】
0004650504.tif 000026
【図２６】
0004650504.tif 000027