(57)【要約】      （修正有）【課題】使用可能なリソース量を制限する制御規則（タスククラス）が各タスクに適用されている際、異なるタスククラスが割当てられたタスクが複数連携して動作する場合において、各タスクのタスククラスを統一することで、ＱｏＳの低下を防ぐ。【解決手段】連携タスク取得部１０２は実行されるタスクと連携して動作するタスクを順次取得し、タスク検索部１０３に渡す。タスク検索部１０３は、連携タスク取得部１０２から渡されたタスクが実際に実行可能または起動状態にあるか否かを検出する。割当クラス決定部１０４はタスク検索部１０３によって検出された連携して動作するタスクが属するタスククラスの中で最もリソース割当ての多いタスククラスを連携して動作するタスクに割当てるタスククラスとして決定する。クラス再割当部１０６は割当クラス決定部１０４によって決定されたタスククラスをタスクに再割当てする。【選択図】図２
2007183733.tif 000002
【特許請求の範囲】
【請求項１】
実行可能状態に設定されたタスクとしての実行可能設定タスクと連携して動作する連携タスクの識別子を取得する連携タスク取得部と、
前記連携タスク識別子を用いて前記連携タスクのうち実行可能状態にあるものを検索して実行可能連携タスクとするタスク検索部と、
前記実行可能連携タスクの各々が属するタスククラスに割当てられたリソース割合値と、前記各実行可能連携タスクが起動直後に割当てられるべきタスククラスのリソース割合値を比較し、前記実行可能設定タスクと前記各実行可能連携タスクに割当てるタスククラスを決定する割当クラス決定部と、
前記各実行可能連携タスクが属しているタスククラスに割当てられたリソース割合と、前記決定タスククラスに割当てられたリソース割合に基づいて、前記各実行可能連携タスクに前記決定タスククラスを割当てるか否かを判断するクラス比較部と、
前記クラス比較部が割当てると判断したとき、前記各実行可能連携タスクに前記決定タスククラスを割当てるクラス再割当部と
を具備するリソースＱｏＳ制御システム。
【請求項２】
請求項１に記載のリソースＱｏＳ制御システムにおいて、
タスクの識別子に関して該タスクと連携して動作するタスクの識別子を含む連携タスク情報を格納する連携タスク記憶部と、
前記連携タスク記憶部から、前記実行可能設定タスクの識別子に基づいて前記連携タスク情報から前記実行可能設定タスクに対する前記連携タスク識別子を取得する連携タスク情報取得部と
を更に具備し、
前記連携タスク取得部は、前記連携タスク情報取得部から前記各連携タスク識別子を取得し、
前記タスク検索部は、前記連携タスク識別子の各々に対応する前記連携タスクが実行可能状態か否かを判定する
リソースＱｏＳ制御システム。
【請求項３】
請求項２に記載のリソースＱｏＳ制御システムにおいて、
タスククラスの識別子に関して該タスククラスが利用可能なリソース割合値を含むリソース割合値データを記憶するクラス定義記憶部を更に備え、
前記連携タスク情報は、前記各連携タスク識別子に対応するタスククラス識別子を含み、
前記連携タスク情報取得部は、前記各連携タスク識別子に対応する前記タスククラス識別子を取得し、
前記連携タスク取得部は、前記各連携タスク識別子を取得するとき、前記各連携タスク識別子に対応する前記タスククラス識別子を取得し、
前記割当クラス決定部および前記クラス比較部は、前記クラス定義記憶部から、前記実行可能設定タスクと前記実行可能連携タスクの各々に対応する前記タスククラスのリソース割合値を取得する
リソースＱｏＳ制御システム。
【請求項４】
請求項３に記載のリソースＱｏＳ制御システムにおいて、
前記連携タスク情報は、前記各連携タスクに対応する前記タスククラスに割当てられているリソース割当値の順に割当てられている優先度を前記各連携タスクごとに更に有し、
前記連携タスク取得部は、優先度順に前記各連携タスク識別子と、前記対応するタスククラス識別子を取得する
リソースＱｏＳ制御システム。
【請求項５】
請求項１乃至４のいずれかに記載のリソースＱｏＳ制御システムにおいて、
前記割当クラス決定部による前記決定タスククラス識別子を格納する割当クラス記憶部を
更に備えるリソースＱｏＳ制御システム。
【請求項６】
起動されたタスクの識別子を取得する起動タスク管理部と、
終了したタスクにその起動直後に割当てられたタスククラスの識別子と、該タスククラスに属している起動中のタスクの識別子を順次取得し、前記終了タスクに予め割当てられたタスククラスの識別子と、該タスククラスに属するタスクの識別子を順次取得する終了タスク管理部と、
前記起動タスク管理部または前記終了タスク管理部によって取得されたタスク識別子としての取得タスク識別子の各々を有するタスクと連携して動作する連携タスクの識別子を取得する連携タスク取得部と、
前記連携タスクが起動中か否かを検索して起動中の前記連携タスクを起動中連携タスクとするタスク検索部と、
前記各取得タスク識別子を有するタスクが属するタスククラスに割当てられたリソース割合値と、前記起動中連携タスクの各々に起動直後に割当てられたタスククラスのリソース割合値に基づいて、前記起動タスクと前記起動中連携タスクの各々に割当てるタスククラスを決定する割当クラス決定部と、
前記各起動中連携タスクが属しているタスククラスに割当てられたリソース割合値と、前記決定タスククラスに割当てられたリソース割合値に基づいて、前記各起動中連携タスクに前記決定タスククラスを割当てるか否かを判断するクラス比較部と、
前記終了タスク管理部によって取得されたタスククラス識別子を有するタスククラスを、前記終了タスク管理部によって取得されたタスク識別子を有するタスクに割当て、さらに前記決定タスククラスを前記各起動中連携タスクに割当てるクラス再割当部と
を具備するリソースＱｏＳ制御システム。
【請求項７】
請求項６に記載のリソースＱｏＳ制御システムにおいて、
各タスクの識別子に関して該タスクと連携して動作する前記連携タスクの識別子を含む連携タスク情報を格納する連携タスク記憶部と、
前記連携タスク記憶部から、前記各取得タスク識別子に基づいて連携タスク情報を取得する連携タスク情報取得部を備え、
前記連携タスク取得部は、前記連携タスク情報から前記連携タスクの識別子を取得し、
前記タスク検索部は、前記各連携タスク識別子を有するタスクが起動中か否かを検索する
リソースＱｏＳ制御システム。
【請求項８】
請求項７に記載のリソースＱｏＳ制御システムにおいて、
タスククラス識別子に関して該タスククラス識別子を有するタスククラスが利用可能なリソース割合値を含むリソース割合値データを格納するクラス定義記憶部を備え、
前記連携タスク情報は、前記連携タスクが属するタスククラスの識別子を含み、
前記連携タスク情報取得部は、前記各取得タスク識別子に基づいて前記連携タスク記憶部から、前記連携タスク情報を取得して、
前記連携タスク取得部は、前記連携タスク情報から前記各連携タスクの識別子と前記各連携タスクが属するタスククラスの識別子とを取得し、
前記割当クラス決定部および前記クラス比較部は、前記クラス定義記憶部から、前記各タスククラス識別子を有するタスククラスのリソース割合値を取得する
リソースＱｏＳ制御システム。
【請求項９】
請求項８に記載のリソースＱｏＳ制御システムにおいて、
起動中のタスクの識別子を記憶する起動タスク記憶部と、
タスクの識別子に関して該タスクの識別子を有するタスクにその起動直後に割当てられるタスククラスの識別子を含むデフォルトクラスデータを記憶するデフォルトクラス割当記憶部とを更に備え、
前記起動タスク管理部は、前記起動したタスクの識別子を前記起動タスク記憶部に書き込み、
前記終了タスク管理部は、前記終了したタスクの識別子を前記起動タスク記憶部から削除し、前記終了したタスクに対する前記連携タスクの識別子を取得し、
前記タスク検索部は、前記起動タスク記憶部を検索して、前記各連携タスクが起動中か否かを検索する
リソースＱｏＳ制御システム。
【請求項１０】
請求項８と請求項９に記載のリソースＱｏＳ制御システムにおいて、
前記連携タスク情報は、前記各連携タスクに対応する前記タスククラスに割当てられているリソース割当値の順に割当てられている優先度を前記各連携タスクごとに更に有し、
前記連携タスク取得部は、優先度順に該優先度に対するタスクの識別子とタスククラスの識別子を取得する
リソースＱｏＳ制御システム。
【請求項１１】
請求項６乃至１０のいずれかに記載のリソースＱｏＳ制御システムにおいて、
前記決定タスククラスの識別子を記憶する割当クラス記憶部を備える
リソースＱｏＳ制御システム。
【請求項１２】
請求項６乃至８、１０及び１１のいずれかに記載のリソースＱｏＳ制御システムにおいて、
起動中のタスクの識別子を記憶する起動タスク記憶部と、
タスクの識別子に関して該タスクの識別子を有するタスクにその起動直後に割当てられるタスククラスの識別子を含むデフォルトクラスデータを記憶するデフォルトクラス割当記憶部と、
各タスククラスの識別子とそのタスククラスの識別子に該当するタスククラスに属している起動状態の各タスクの識別子の組みからなるデータを記憶するクラス割当記憶部と、
タスクが起動した際に前記クラス割当記憶部に該当タスクの識別子を登録し、タスクが終了した際に前記クラス割当記憶部に該当タスクの識別子を削除し、クラス再割当時に前記クラス割当記憶部に該当タスクの識別子のデータを更新するタスク割当管理部と
を更に備え、
前記終了タスク管理部は、前記デフォルトクラス割当記憶部から前記終了したタスクの識別子に対するタスククラスの識別子を取得し、前記クラス割当記憶部から前記終了したタスクにその起動直後に割当てられたタスククラスに属するタスクを取得する
リソースＱｏＳ制御システム。
【請求項１３】
実行可能状態に設定されたタスクとしての実行可能設定タスクと連携して動作する連携タスクの識別子を取得する連携タスク取得ステップと、
前記連携タスク識別子を用いて前記連携タスクのうち実行可能状態にあるものを検索して実行可能連携タスクとするタスク検索ステップと、
前記実行可能連携タスクの各々が属するタスククラスに割当てられたリソース割合値と、前記各実行可能連携タスクが起動直後に割当てられるべきタスククラスのリソース割合値を比較して、前記実行可能設定タスクと前記各実行可能連携タスクに割当てるタスククラスを決定する割当クラス決定ステップと、
前記各実行可能連携タスクが属しているタスククラスに割当てられたリソース割合と、前記決定タスククラスに割当てられたリソース割合に基づいて、前記各実行可能連携タスクに前記決定タスククラスを割当てるか否かを判断するクラス比較ステップと、
前記クラス比較ステップが割当てが判断されたとき、前記各実行可能連携タスクに前記決定タスククラスを割当てるクラス再割当ステップと
を具備するリソースＱｏＳ制御方法。
【請求項１４】
請求項１３に記載のリソースＱｏＳ制御方法において、
タスクの識別子に関して該タスクと連携して動作するタスクの識別子を含む連携タスク情報を格納する連携タスク記憶部から、前記実行可能設定タスクの識別子に基づいて前記連携タスク情報から前記実行可能設定タスクに対する前記連携タスク識別子を取得する連携タスク情報取得ステップを更に具備し、
前記連携タスク取得ステップは、前記連携タスク情報取得ステップで取得された前記連携タスク情報から前記各連携タスク識別子を取得するステップを含み、
前記タスク検索ステップは、前記連携タスク識別子の各々に対応する前記連携タスクが実行可能状態か否かを判定するステップを含む
リソースＱｏＳ制御方法。
【請求項１５】
請求項１４に記載のリソースＱｏＳ制御方法において、
前記連携タスク情報は、前記各連携タスク識別子に対応するタスククラス識別子を含み、
前記連携タスク情報取得ステップは、前記各連携タスク識別子に対応する前記タスククラス識別子を取得するステップを含み、
前記連携タスク取得ステップは、前記各連携タスク識別子を取得するとき、前記各連携タスク識別子に対応する前記タスククラス識別子を取得するステップを含み、
前記割当クラス決定ステップおよび前記クラス比較ステップは、タスククラスの識別子に関して該タスククラスが利用可能なリソース割合値を含むリソース割合値データを記憶するクラス定義記憶部から、前記実行可能設定タスクと前記実行可能連携タスクの各々に対応する前記タスククラスのリソース割合値を取得するステップを含む
リソースＱｏＳ制御方法。
【請求項１６】
請求項１５に記載のリソースＱｏＳ制御方法において、
前記連携タスク情報は、前記各連携タスクに対応する前記タスククラスに割当てられているリソース割当値の順に割当てられている優先度を前記各連携タスクごとに更に有し、
前記連携タスク取得ステップは、優先度順に前記各連携タスク識別子と、前記対応するタスククラス識別子を取得するステップを含む
リソースＱｏＳ制御方法。
【請求項１７】
請求項１３乃至１６のいずれかに記載のリソースＱｏＳ制御方法において、
前記割当クラス決定ステップによる前記決定タスククラス識別子を割当クラス記憶部に格納するステップを
更に備えるリソースＱｏＳ制御方法。
【請求項１８】
起動されたタスクの識別子を取得する起動タスク管理ステップと、
終了したタスクにその起動直後に割当てられたタスククラスの識別子と、該タスククラスに属している起動中のタスクの識別子を順次取得し、前記終了タスクに予め割当てられたタスククラスの識別子と、該タスククラスに属するタスクの識別子を順次取得する終了タスク管理ステップと、
前記起動タスク管理ステップまたは前記終了タスク管理ステップにおいて取得されたタスク識別子としての取得タスク識別子の各々を有するタスクと連携して動作する連携タスクの識別子を取得する連携タスク取得ステップと、
前記連携タスクが起動中か否かを検索して起動中の前記連携タスクを起動中連携タスクとするタスク検索ステップと、
前記各取得タスク識別子を有するタスクが属するタスククラスに割当てられたリソース割合値と、前記起動中連携タスクの各々に起動直後に割当てられたタスククラスのリソース割合値に基づいて、前記起動タスクと前記起動中連携タスクの各々に割当てるタスククラスを決定する割当クラス決定ステップと、
前記各起動中連携タスクが属しているタスククラスに割当てられたリソース割合値と、前記決定タスククラスに割当てられたリソース割合値に基づいて、前記各起動中連携タスクに前記決定タスククラスを割当てるか否かを判断するクラス比較ステップと、
前記終了タスク管理ステップによって取得されたタスククラス識別子を有するタスククラスを、前記終了タスク管理ステップによって取得されたタスク識別子を有するタスクに割当て、さらに前記決定タスククラスを前記各起動中連携タスクに割当てるクラス再割当ステップと
を具備するリソースＱｏＳ制御方法。
【請求項１９】
請求項１８に記載のリソースＱｏＳ制御方法において、
各タスクの識別子に関して該タスクと連携して動作する前記連携タスクの識別子を含む連携タスク情報を格納する連携タスク記憶部から、前記各取得タスク識別子に基づいて連携タスク情報を取得する連携タスク情報取得ステップを備え、
前記連携タスク取得ステップは、前記連携タスク情報から前記連携タスクの識別子を取得するステップを含み、
前記タスク検索ステップは、前記各連携タスク識別子を有するタスクが起動中か否かを検索するステップを含む
リソースＱｏＳ制御方法。
【請求項２０】
請求項１９に記載のリソースＱｏＳ制御方法において、
前記連携タスク情報は、前記連携タスクが属するタスククラスの識別子を含み、
前記連携タスク情報取得ステップは、前記各取得タスク識別子に基づいて、タスククラス識別子に関して該タスククラス識別子を有するタスククラスが利用可能なリソース割合値を含むリソース割合値データを格納する連携タスク記憶部から、前記連携タスク情報を取得するステップを含み、
前記連携タスク取得ステップは、前記連携タスク情報から前記各連携タスクの識別子と前記各連携タスクが属するタスククラスの識別子とを取得するステップを含み、
前記割当クラス決定ステップおよび前記クラス比較ステップは、前記クラス定義記憶ステップから、前記各タスククラス識別子を有するタスククラスのリソース割合値を取得するステップを含む
リソースＱｏＳ制御方法。
【請求項２１】
請求項２０に記載のリソースＱｏＳ制御方法において、
起動中のタスクの識別子を記憶する起動タスク記憶ステップと、
タスクの識別子に関して該タスクの識別子を有するタスクにその起動直後に割当てられるタスククラスの識別子を含むデフォルトクラスデータを記憶するデフォルトクラス割当記憶ステップとを更に備え、
前記起動タスク管理ステップは、前記起動したタスクの識別子を、起動中のタスクの識別子を記憶する起動タスク記憶部に書き込むステップを備え、
前記終了タスク管理ステップは、前記終了したタスクの識別子を前記起動タスク記憶部から削除し、前記終了したタスクに対する前記連携タスクの識別子を取得するステップを含み、
前記タスク検索ステップは、前記起動タスク記憶ステップを検索して、前記各連携タスクが起動中か否かを検索するステップを含む
リソースＱｏＳ制御方法。
【請求項２２】
請求項２０と請求項２１に記載のリソースＱｏＳ制御方法において、
前記連携タスク情報は、前記各連携タスクに対応する前記タスククラスに割当てられているリソース割当値の順に割当てられている優先度を前記各連携タスクごとに更に有し、
前記連携タスク取得ステップは、優先度順に該優先度に対するタスクの識別子とタスククラスの識別子を取得するステップを含む
リソースＱｏＳ制御方法。
【請求項２３】
請求項１８乃至２０、及び２２のいずれかに記載のリソースＱｏＳ制御方法において、
タスクが起動した際に、各タスククラスの識別子とそのタスククラスの識別子に該当するタスククラスに属している起動状態の各タスクの識別子の組みからなるデータを記憶するクラス割当記憶部に該当タスクの識別子を登録し、タスクが終了した際に前記クラス割当記憶部から該当タスクの識別子を削除し、クラス再割当時に前記クラス割当記憶部に格納されている該当タスクの識別子のデータを更新するタスク割当管理ステップを更に備え、
前記終了タスク管理ステップは、タスクの識別子に関して該タスクの識別子を有するタスクにその起動直後に割当てられるタスククラスの識別子を含むデフォルトクラスデータを記憶するデフォルトクラス割当記憶部から前記終了したタスクの識別子に対するタスククラスの識別子を取得し、前記クラス割当記憶部から前記終了したタスクにその起動直後に割当てられたタスククラスに属するタスクを取得するステップを含む
リソースＱｏＳ制御方法。
【請求項２４】
請求項１３乃至２３のいずれかに記載のリソースＱｏＳ制御方法における前記ステップの各々をコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータのオペレーティングシステム（ＯＳ）によるリソースＱｏＳ制御システム、リソースＱｏＳ制御方法およびリソースＱｏＳ制御プログラムに関する。
【背景技術】
【０００２】
一般的に、コンピュータ端末内のリソースは、ある一定規則やタスクが持つ優先度に基づいて、オペレーティングシステム（ＯＳ）によりタスクに割当てられていた。なお、リソースには、タスクが走行できる時間を意味するＣＰＵリソース、タスクが使用するメモリ量を意味するメモリリソース、タスクが使用するネットワーク（ＮＷ）帯域幅を意味するネットワークリソース量などが含まれる。しかし、組み込みシステムや多数のサービスが実行されるサーバなどにおいては、限られたリソースを効率的に利用するために、各タスク間の関係やそのタスクの属性に応じて適切に割当てられるリソース量を制御する必要がある。つまり、サービス品質（ＱｏＳ：Ｑｕａｌｉｔｙ  ｏｆ  Ｓｅｒｖｉｃｅ）を適切に制御する必要がある。
【０００３】
例えば、Ｘ  Ｗｉｎｄｏｗ   Ｓｙｓｔｅｍのようなグラフィカルユーザインタフェース（ＧＵＩ）を提供するタスクは、複数のタスクから利用される可能性があり、ＣＰＵリソースが割当てられない場合はそれらのタスクの実行にも影響が出てくる。このため、確実にＣＰＵリソースを割当てる必要がある。
また、映像再生を提供するようなマルチメディアサービスを提供するタスクは、多くのメモリリソースを必要とするため、一定のメモリリソースが割当てられる必要がある。
【０００４】
これらを解決するための従来のシステムの一例が、非特許文献１に記載されている。この従来例のシステムでは、属性が同等であるタスクが幾つかのグループに分類されてタスククラスが構成され、このタスククラス毎にそのタスククラスの属性に応じてリソースが割当てられ、このリソースが各タスククラス内のタスクに対して分割的に割当てられる。これにより、タスクの属性に応じてリソース制御が行なわれる。また、非特許文献１には、タスククラスを階層構造として定義する技術についても記載されている。
【０００５】
また、特開平１０−３４７３０４号公報（特許文献１）には、ＣＰＵリソースが、１つ以上のタスクから構成されるタスククラス単位で割当てられるタスク管理装置が開示されている。この従来例のタスク管理装置は、図１に示されるように、データ処理装置１と記憶装置２とを備え、データ処理装置１は、実効タスク選択部１１、実効タスク切替え部１２、切替え時間検知部１３とを備え、記憶装置２は、レディキュー２１、タスククラスキュー２２、クラス切替え時間テーブル２３を備えている。実行タスク選択部１１は、次に実行されるべきタスクをレディキュー２１から選択し、実行クラス切替え部１２は、実行中のタスククラスに割当てられたＣＰＵ時間が消費されたときに、次に実行されるべきタスククラスにＣＰＵ時間を切替える。切替え時間検出部１３は、タスククラスが切替えられるタイミングを検出する。レディキュー２１には、現在実行可能なタスククラスのレディキューが格納され、タスククラスキュー２２には各タスククラスのレディキューが格納されている。クラス切替え時間テーブル２３には、タスククラスの切替え時間のデータが格納されている。
【０００６】
上記の構成を有するタスク管理装置は次のように動作する。すなわち、タスク実行中にそのタスクが属するクラスに割当てられたＣＰＵ時間が全て消費された場合、実行クラス切替え部１２は、レディキュー２１に登録されているタスクキューをタスククラスキュー２２に配置し、次に実行されるべきタスククラスをタスククラスキュー２２から選択し、レディキュー２１に登録する。実行タスク選択部１１は、レディキュー２１から、実行されるべきタスクを順次選択する。こうして、そのタスクが実行される。切替え時間検出部１３は、クラス切替え時間テーブル２３を参照し、レディキュー２１に登録されているレディキューのＣＰＵ割当て時間の残り時間、つまり現在アクティブのタスククラスのＣＰＵ割当て時間の消費量を監視する。レディキュー２１に登録されているタスククラスのＣＰＵ割当て時間が全て消費された場合、実行クラス切替え部１２は、再び次のタスククラスを選択する。
【０００７】
しかしながら、上記の従来例には、問題がある。即ち、異なるタスククラスに属する複数のタスクが連携して動作する場合に、それぞれのタスクに対して同一のＱｏＳ制御を行うことができない。ここでＱｏＳ制御とは各タスクが利用可能なリソース量の下限のことを指す。各タスクには、属するタスククラスのＱｏＳ制御規則のみが適用され、属するタスククラスが異なるタスクが連係動作する際は、個々のタスクによって異なったＱｏＳ制御が実行される。
【０００８】
また、各タスクには予め定められたＱｏＳ制御規則のみが適用されるので、連携して動作するタスクの組み合わせに応じて、ＱｏＳ制御規則を変更することができない。
【０００９】
更に、各タスクには異なったＱｏＳ制御規則が適用されているので、タスククラスの異なる複数のタスクが連携して動作する場合、そのＱｏＳを保証することできない。例えば、リソースの割当て量が少ないタスククラスに属するタスクＡとリソースの割当て量が多いタスククラスに属するタスクＢが連携して動作するアプリケーションソフトの場合、このアプリケーションソフトが使用できるリソース量は、リソース割当て量が少ないタスクＡが使用できるリソース量に依存することとなり、十分なサービス品質を提供することが出来ない。
【００１０】
上記説明と関連して、国際公開番号ＷＯ９６／３１８２４（特許文献２）には、オペレーティングシステムが開示されている。この従来例のオペレーティングシステムは、夫々が優先度を持つ複数のプロセスを管理し、該プロセスのうち実行可能で最も優先度の高いものを優先して実行し、外複数のプロセスの間で通信をおおなう通信手段をもち、Ｉ／Ｏ制御プログラムがカーネルの外にプロセスとして実現されており、他のプロセスがＩ／Ｏへの入出力処理を行うときには該通信手段を用いて該Ｉ／Ｏ制御プログラムのプロセスに，メッセージを送信する。メッセージの受け手である該Ｉ／Ｏ制御プログラムのプロセスの識別子を保存する領域を該通信手段に設け、メッセージの送り手であるプロセスが該メッセージを送信したときに、該送り手のプロセスの優先度に従って前記受け手である該Ｉ／Ｏ制御プログラムのプロセスの優先度を変化させる手段が設けられている。
【００１１】
また、タスク管理装置が特開２０００−１７２５１４号公報（特許文献３）に開示されている。この従来例のタスク管理装置は、優先度スケジューリングを実行するものであり、優先度スケジューリングの実行の際、所定範囲の優先度のタスクのレディ状態とウェイト状態とを指定された時間に基づいて入れ替える機能を有するデータ処理装置と情報を記憶する記憶装置とを有する。前記記憶装置は、実行可能なタスクの情報を優先度毎に記憶するレディキューと、当該レディキューの一部分の情報を記憶するタイムシェアリングウェイトキューと、タイムシェアリングを行う優先度の上位及び下位を記憶するタイムシェアリング優先度範囲と、実行中のタスクグループ番号を記憶するアクティブタスクグループと、タスクグループ毎の処理時間情報を記憶するタイムシェアリング時間テーブルとを備えている。前記データ処理装置は、前記レディキューに記憶されている実行可能なタスクの中から優先度の最も高いタスクを選択して実行する実行タスク切り替え手段と、前記タイムシェアリング優先度範囲で指定された範囲のタスクを前記レディキューから前記タイムシェアリングウェイトキューへ待避させるとともに、前記タイムシェアリングウェイトキューに待避されている次のグループのタスクを前記レディキューへ復帰させるタスクグループ切り替え手段と、前記アクティブタスクグループに基づいて現在のタスクグループを判定するとともに、前記タイムシェアリング時間テーブルに記憶された時間の経過を待って前記タスクグループ切り替え手段を起動する切り替え時間検知手段とを備えている。
【００１２】
また、タスク実行制御方法が、特開２００１−１８４２２１号公報（特許文献４）に開示されている。この従来例では、タスク連携モデル変換部は、タスク実行構造の設計で得られるタスク実行パラメータに基づき作成したタスク間連携モデルを、リアルタイムＯＳが理解できる内部表現に変換し、タスク間連携モデル格納部は、これを格納する。タスク制御タイミングマーカーは、ユーザプログラムのタスク毎の実装コードに埋め込まれる。タスク制御システムコール発行は、タスク制御タイミングマーカーをリアルタイムＯＳに入力する。タスク制御内容抽出部は、タスク制御タイミングマーカーの情報に基づいて、タスク間連携モデルからタスク制御の内容を抽出し、タスク実行制御部に対してタスク制御要求を発行する。
【００１３】
また、オペレーティングシステムが特開２００３−６７２０１号公報（特許文献５）に開示されている。この従来例では、複数のタスクと該タスクの実行制御を行うオペレーティングシステムを含むプログラムが提供される。コントローラは、前記複数のタスクをネットワーク通信系と通信を行うための通信タスクグループと監視制御対象を監視制御するための制御タスクグループとに分けて管理するとともに、前記複数のタスクの実行順序をグループ単位で切換え、切換えられたタスク群に従って前記監視制御対象または前記ネットワーク通信系から得られた情報の処理を実行する。
【００１４】
また、タスクスケジューリング装置が特開２００４−７０５７９号公報（特許文献６）に開示されている。この従来例のタスクスケジューリング装置はでは、制限時間保持手段はタスクごとの制限時間を保持する。スケジューリング手段は、前記保持されたタスクごとの制限時間に基づいてスケジューリングを行う。タイマ手段は、時間の経過に伴いシステム時間のカウントを行う。時間加算手段は、タスクの起動要求があった場合、前記タイマ手段によってカウントされたシステム時間と予め設定された当該タスクのデッドラインまでの余裕時間の初期値とを関して求めた当該タスクの制限時間を前記制限時間保持手段に登録する。
【００１５】
また、情報処理装置が特開２００５−８４７０７号公報（特許文献７）に開示されている。この従来例の情報処理装置は、複数の処理単位を略同時に処理するマルチタスク機能を有する。同期手段は複数の処理単位間での同期を取る。取得手段は、前記同期手段が同期を取ろうとする処理単位について設定されている優先順位を取得する。保持手段は、取得された優先順位を保持する。比較手段は、保持手段により保持されている先行処理単位についての優先順位と前記取得手段が新たに取得する固族処理単位についての優先順位とを比較する。制御手段は、比較手段での比較結果に基づいて同期手段の動作制御を行う。通知手段は、比較手段での比較の結果、先行処理単位についての優先順位のランクと後続処理単位についての優先順位のランクとの差が２段階以上あると、その旨を外部に通知する。
【００１６】
【特許文献１】特開平１０−３４７３０４号公報
【特許文献２】国際公開番号ＷＯ９６／３１８２４
【特許文献３】特開２０００−１７２５１４号公報
【特許文献４】特開２００１−１８４２２１号公報
【特許文献５】特開２００３−６７２０１号公報
【特許文献６】特開２００４−７０５７９号公報
【特許文献７】特開２００５−８４７０７号公報
【非特許文献１】ｈｔｔｐ：／／ｃｋｒｍ．ｓｏｕｒｃｅｆｏｒｇｅ．ｎｅｔ／
【発明の開示】
【発明が解決しようとする課題】
【００１７】
本発明の目的は、異なるタスククラスに属する複数のタスクが連携して動作する場合に、それぞれのタスクに対して同一のＱｏＳ制御規則を適用することができるデータ処理システム、リソースＱｏＳ制御方法を提供することである。
本発明の他の目的は、連携して動作するタスクの組み合わせに応じて、ＱｏＳ制御規則を変更することができるデータ処理システム、リソースＱｏＳ制御方法を提供することである。
本発明のさらに他の目的は、異なるタスククラスに属する複数のタスクが連携して動作する場合において、ＱｏＳを保証することができるデータ処理システム、リソースＱｏＳ制御方法を提供することである。
【課題を解決するための手段】
【００１８】
本発明のシステムは、実行されるタスクと連携して動作するタスクを順次取得する連携タスク取得部（図２の１０２）と、指定したタスクが実際に実行可能状態にあるか否かを検出するタスク検索部（図２の１０３）と、連携して動作するタスクに割当てるタスククラスを決定する割当クラス決定部（図２の１０４）と、タスクにタスククラスを割当てるクラス再割当部（図２の１０６）を有している。このような構成を採用し、連携して動作するタスクが属するタスククラスの中で最もリソース割当ての多いタスククラスを、連携して動作するタスクに再割当てすることにより、本発明の第１及び第２及び第３目的を達成することができる。
【００１９】
また、本発明の他の観点では、リソースＱｏＳ制御システムは、実行可能状態に設定されたタスクとしての実行可能設定タスクと連携して動作する連携タスクの識別子を取得する連携タスク取得部と、前記連携タスク識別子を用いて前記連携タスクのうち実行可能状態にあるものを検索して実行可能連携タスクとするタスク検索部と、前記実行可能連携タスクの各々が属するタスククラスに割当てられたリソース割合値と、前記各実行可能連携タスクが起動直後に割当てられるべきタスククラスのリソース割合値を比較し、前記実行可能設定タスクと前記各実行可能連携タスクに割当てるタスククラスを決定する割当クラス決定部と、前記各実行可能連携タスクが属しているタスククラスに割当てられたリソース割合と、前記決定タスククラスに割当てられたリソース割合に基づいて、前記各実行可能連携タスクに前記決定タスククラスを割当てるか否かを判断するクラス比較部と、前記クラス比較部が割当てると判断したとき、前記各実行可能連携タスクに前記決定タスククラスを割当てるクラス再割当部とを具備する。
ここで、リソースＱｏＳ制御システムは、タスクの識別子に関して該タスクと連携して動作するタスクの識別子を含む連携タスク情報を格納する連携タスク記憶部と、前記連携タスク記憶部から、前記実行可能設定タスクの識別子に基づいて前記連携タスク情報から前記実行可能設定タスクに対する前記連携タスク識別子を取得する連携タスク情報取得部とを更に具備する。前記連携タスク取得部は、前記連携タスク情報取得部から前記各連携タスク識別子を取得し、前記タスク検索部は、前記連携タスク識別子の各々に対応する前記連携タスクが実行可能状態か否かを判定する。
リソースＱｏＳ制御システムは、タスククラスの識別子に関して該タスククラスが利用可能なリソース割合値を含むリソース割合値データを記憶するクラス定義記憶部を更に備えてもよい。前記連携タスク情報は、前記各連携タスク識別子に対応するタスククラス識別子を含む。前記連携タスク情報取得部は、前記各連携タスク識別子に対応する前記タスククラス識別子を取得し、前記連携タスク取得部は、前記各連携タスク識別子を取得するとき、前記各連携タスク識別子に対応する前記タスククラス識別子を取得する。前記割当クラス決定部および前記クラス比較部は、前記クラス定義記憶部から、前記実行可能設定タスクと前記実行可能連携タスクの各々に対応する前記タスククラスのリソース割合値を取得する。
また、前記連携タスク情報は、前記各連携タスクに対応する前記タスククラスに割当てられているリソース割当値の順に割当てられている優先度を前記各連携タスクごとに更に有し、前記連携タスク取得部は、優先度順に前記各連携タスク識別子と、前記対応するタスククラス識別子を取得する。
リソースＱｏＳ制御システムは、前記割当クラス決定部による前記決定タスククラス識別子を格納する割当クラス記憶部を更に備えてもよい。
【００２０】
本発明の他の観点では、リソースＱｏＳ制御システムは、起動されたタスクの識別子を取得する起動タスク管理部と、終了したタスクにその起動直後に割当てられたタスククラスの識別子と、該タスククラスに属している起動中のタスクの識別子を順次取得し、前記終了タスクに予め割当てられたタスククラスの識別子と、該タスククラスに属するタスクの識別子を順次取得する終了タスク管理部と、前記起動タスク管理部または前記終了タスク管理部によって取得されたタスク識別子としての取得タスク識別子の各々を有するタスクと連携して動作する連携タスクの識別子を取得する連携タスク取得部と、前記連携タスクが起動中か否かを検索して起動中の前記連携タスクを起動中連携タスクとするタスク検索部と、前記各取得タスク識別子を有するタスクが属するタスククラスに割当てられたリソース割合値と、前記起動中連携タスクの各々に起動直後に割当てられたタスククラスのリソース割合値に基づいて、前記起動タスクと前記起動中連携タスクの各々に割当てるタスククラスを決定する割当クラス決定部と、前記各起動中連携タスクが属しているタスククラスに割当てられたリソース割合値と、前記決定タスククラスに割当てられたリソース割合値に基づいて、前記各起動中連携タスクに前記決定タスククラスを割当てるか否かを判断するクラス比較部と、前記終了タスク管理部によって取得されたタスククラス識別子を有するタスククラスを、前記終了タスク管理部によって取得されたタスク識別子を有するタスクに割当て、さらに前記決定タスククラスを前記各起動中連携タスクに割当てるクラス再割当部とを具備する。
リソースＱｏＳ制御システムは、各タスクの識別子に関して該タスクと連携して動作する前記連携タスクの識別子を含む連携タスク情報を格納する連携タスク記憶部と、
前記連携タスク記憶部から、前記各取得タスク識別子に基づいて連携タスク情報を取得する連携タスク情報取得部を備え、前記連携タスク取得部は、前記連携タスク情報から前記連携タスクの識別子を取得してもよい。前記タスク検索部は、前記各連携タスク識別子を有するタスクが起動中か否かを検索する。
また、リソースＱｏＳ制御システムは、タスククラス識別子に関して該タスククラス識別子を有するタスククラスが利用可能なリソース割合値を含むリソース割合値データを格納するクラス定義記憶部を備えている。前記連携タスク情報は、前記連携タスクが属するタスククラスの識別子を含む。前記連携タスク情報取得部は、前記各取得タスク識別子に基づいて前記連携タスク記憶部から、前記連携タスク情報を取得して、前記連携タスク取得部は、前記連携タスク情報から前記各連携タスクの識別子と前記各連携タスクが属するタスククラスの識別子とを取得する。前記割当クラス決定部および前記クラス比較部は、前記クラス定義記憶部から、前記各タスククラス識別子を有するタスククラスのリソース割合値を取得する。
また、リソースＱｏＳ制御システムは、起動中のタスクの識別子を記憶する起動タスク記憶部と、タスクの識別子に関して該タスクの識別子を有するタスクにその起動直後に割当てられるタスククラスの識別子を含むデフォルトクラスデータを記憶するデフォルトクラス割当記憶部とを更に備えている。前記起動タスク管理部は、前記起動したタスクの識別子を前記起動タスク記憶部に書き込む。前記終了タスク管理部は、前記終了したタスクの識別子を前記起動タスク記憶部から削除し、前記終了したタスクに対する前記連携タスクの識別子を取得し、前記タスク検索部は、前記起動タスク記憶部を検索して、前記各連携タスクが起動中か否かを検索する。
また、リソースＱｏＳ制御システムは、前記連携タスク情報は、前記各連携タスクに対応する前記タスククラスに割当てられているリソース割当値の順に割当てられている優先度を前記各連携タスクごとに更に備える。前記連携タスク取得部は、優先度順に該優先度に対するタスクの識別子とタスククラスの識別子を取得する。
また、リソースＱｏＳ制御システムは、前記決定タスククラスの識別子を記憶する割当クラス記憶部を備える。
また、リソースＱｏＳ制御システムは、起動中のタスクの識別子を記憶する起動タスク記憶部と、タスクの識別子に関して該タスクの識別子を有するタスクにその起動直後に割当てられるタスククラスの識別子を含むデフォルトクラスデータを記憶するデフォルトクラス割当記憶部と、各タスククラスの識別子とそのタスククラスの識別子に該当するタスククラスに属している起動状態の各タスクの識別子の組みからなるデータを記憶するクラス割当記憶部と、タスクが起動した際に前記クラス割当記憶部に該当タスクの識別子を登録し、タスクが終了した際に前記クラス割当記憶部に該当タスクの識別子を削除し、クラス再割当時に前記クラス割当記憶部に該当タスクの識別子のデータを更新するタスク割当管理部とを更に備える。前記終了タスク管理部は、前記デフォルトクラス割当記憶部から前記終了したタスクの識別子に対するタスククラスの識別子を取得し、前記クラス割当記憶部から前記終了したタスクにその起動直後に割当てられたタスククラスに属するタスクを取得する。
【００２１】
また、本発明の他の観点では、リソースＱｏＳ制御方法は、実行可能状態に設定されたタスクとしての実行可能設定タスクと連携して動作する連携タスクの識別子を取得する連携タスク取得ステップと、前記連携タスク識別子を用いて前記連携タスクのうち実行可能状態にあるものを検索して実行可能連携タスクとするタスク検索ステップと、前記実行可能連携タスクの各々が属するタスククラスに割当てられたリソース割合値と、前記各実行可能連携タスクが起動直後に割当てられるべきタスククラスのリソース割合値を比較して、前記実行可能設定タスクと前記各実行可能連携タスクに割当てるタスククラスを決定する割当クラス決定ステップと、前記各実行可能連携タスクが属しているタスククラスに割当てられたリソース割合と、前記決定タスククラスに割当てられたリソース割合に基づいて、前記各実行可能連携タスクに前記決定タスククラスを割当てるか否かを判断するクラス比較ステップと、前記クラス比較ステップが割当てが判断されたとき、前記各実行可能連携タスクに前記決定タスククラスを割当てるクラス再割当ステップとにより達成される。
リソースＱｏＳ制御方法は、タスクの識別子に関して該タスクと連携して動作するタスクの識別子を含む連携タスク情報を格納する連携タスク記憶部から、前記実行可能設定タスクの識別子に基づいて前記連携タスク情報から前記実行可能設定タスクに対する前記連携タスク識別子を取得する連携タスク情報取得ステップを更に具備する。前記連携タスク取得ステップは、前記連携タスク情報取得ステップで取得された前記連携タスク情報から前記各連携タスク識別子を取得するステップにより達成され、前記タスク検索ステップは、前記連携タスク識別子の各々に対応する前記連携タスクが実行可能状態か否かを判定するステップにより達成される。
また、前記連携タスク情報は、前記各連携タスク識別子に対応するタスククラス識別子を含む。前記連携タスク情報取得ステップは、前記各連携タスク識別子に対応する前記タスククラス識別子を取得するステップにより達成され、前記連携タスク取得ステップは、前記各連携タスク識別子を取得するとき、前記各連携タスク識別子に対応する前記タスククラス識別子を取得するステップにより達成される。前記割当クラス決定ステップおよび前記クラス比較ステップは、タスククラスの識別子に関して該タスククラスが利用可能なリソース割合値を含むリソース割合値データを記憶するクラス定義記憶部から、前記実行可能設定タスクと前記実行可能連携タスクの各々に対応する前記タスククラスのリソース割合値を取得するステップにより達成される。
また、リソースＱｏＳ制御方法はでは、前記連携タスク情報は、前記各連携タスクに対応する前記タスククラスに割当てられているリソース割当値の順に割当てられている優先度を前記各連携タスクごとに更に有する。前記連携タスク取得ステップは、優先度順に前記各連携タスク識別子と、前記対応するタスククラス識別子を取得するステップにより達成される。
また、リソースＱｏＳ制御方法は、前記割当クラス決定ステップによる前記決定タスククラス識別子を割当クラス記憶部に格納するステップを更に備えてもよい。
【００２２】
また、リソースＱｏＳ制御方法は、起動されたタスクの識別子を取得する起動タスク管理ステップと、終了したタスクにその起動直後に割当てられたタスククラスの識別子と、該タスククラスに属している起動中のタスクの識別子を順次取得し、前記終了タスクに予め割当てられたタスククラスの識別子と、該タスククラスに属するタスクの識別子を順次取得する終了タスク管理ステップと、前記起動タスク管理ステップまたは前記終了タスク管理ステップにおいて取得されたタスク識別子としての取得タスク識別子の各々を有するタスクと連携して動作する連携タスクの識別子を取得する連携タスク取得ステップと、前記連携タスクが起動中か否かを検索して起動中の前記連携タスクを起動中連携タスクとするタスク検索ステップと、前記各取得タスク識別子を有するタスクが属するタスククラスに割当てられたリソース割合値と、前記起動中連携タスクの各々に起動直後に割当てられたタスククラスのリソース割合値に基づいて、前記起動タスクと前記起動中連携タスクの各々に割当てるタスククラスを決定する割当クラス決定ステップと、前記各起動中連携タスクが属しているタスククラスに割当てられたリソース割合値と、前記決定タスククラスに割当てられたリソース割合値に基づいて、前記各起動中連携タスクに前記決定タスククラスを割当てるか否かを判断するクラス比較ステップと、前記終了タスク管理ステップによって取得されたタスククラス識別子を有するタスククラスを、前記終了タスク管理ステップによって取得されたタスク識別子を有するタスクに割当て、さらに前記決定タスククラスを前記各起動中連携タスクに割当てるクラス再割当ステップとにより達成されてもよい。
また、リソースＱｏＳ制御方法では、各タスクの識別子に関して該タスクと連携して動作する前記連携タスクの識別子を含む連携タスク情報を格納する連携タスク記憶部から、前記各取得タスク識別子に基づいて連携タスク情報を取得する連携タスク情報取得ステップを更にそなえてもよい。前記連携タスク取得ステップは、前記連携タスク情報から前記連携タスクの識別子を取得するステップを含み、前記タスク検索ステップは、前記各連携タスク識別子を有するタスクが起動中か否かを検索するステップを含んでもよい。
また、リソースＱｏＳ制御方法では、前記連携タスク情報は、前記連携タスクが属するタスククラスの識別子を含む。前記連携タスク情報取得ステップは、前記各取得タスク識別子に基づいて、タスククラス識別子に関して該タスククラス識別子を有するタスククラスが利用可能なリソース割合値を含むリソース割合値データを格納する連携タスク記憶部から、前記連携タスク情報を取得するステップにより達成される。前記連携タスク取得ステップは、前記連携タスク情報から前記各連携タスクの識別子と前記各連携タスクが属するタスククラスの識別子とを取得するステップにより達成され、前記割当クラス決定ステップおよび前記クラス比較ステップは、前記クラス定義記憶ステップから、前記各タスククラス識別子を有するタスククラスのリソース割合値を取得するステップにより達成される。
また、リソースＱｏＳ制御方法は、起動中のタスクの識別子を記憶する起動タスク記憶ステップと、タスクの識別子に関して該タスクの識別子を有するタスクにその起動直後に割当てられるタスククラスの識別子を含むデフォルトクラスデータを記憶するデフォルトクラス割当記憶ステップとを更に備えてもよい。前記起動タスク管理ステップは、前記起動したタスクの識別子を、起動中のタスクの識別子を記憶する起動タスク記憶部に書き込むステップを備える。前記終了タスク管理ステップは、前記終了したタスクの識別子を前記起動タスク記憶部から削除し、前記終了したタスクに対する前記連携タスクの識別子を取得するステップにより達成され、前記タスク検索ステップは、前記起動タスク記憶ステップを検索して、前記各連携タスクが起動中か否かを検索するステップにより達成される。
また、前記連携タスク情報は、前記各連携タスクに対応する前記タスククラスに割当てられているリソース割当値の順に割当てられている優先度を前記各連携タスクごとに更に有する。前記連携タスク取得ステップは、優先度順に該優先度に対するタスクの識別子とタスククラスの識別子を取得するステップにより達成される。
また、リソースＱｏＳ制御方法は、タスクが起動した際に、各タスククラスの識別子とそのタスククラスの識別子に該当するタスククラスに属している起動状態の各タスクの識別子の組みからなるデータを記憶するクラス割当記憶部に該当タスクの識別子を登録し、タスクが終了した際に前記クラス割当記憶部から該当タスクの識別子を削除し、クラス再割当時に前記クラス割当記憶部に格納されている該当タスクの識別子のデータを更新するタスク割当管理ステップを更に備える。前記終了タスク管理ステップは、タスクの識別子に関して該タスクの識別子を有するタスクにその起動直後に割当てられるタスククラスの識別子を含むデフォルトクラスデータを記憶するデフォルトクラス割当記憶部から前記終了したタスクの識別子に対するタスククラスの識別子を取得し、前記クラス割当記憶部から前記終了したタスクにその起動直後に割当てられたタスククラスに属するタスクを取得するステップにより達成される。
【００２３】
また、本発明の他の観点では、上記のリソースＱｏＳ制御方法における各ステップをコンピュータに実行させるためのプログラムが提供される。
【発明の効果】
【００２４】
上記のように、本発明によれば、異なるタスククラスに属する複数のタスクが連携して動作する場合に、それぞれのタスクに対して同一のＱｏＳ制御規則を適用することができる。その理由は、連携して動作するタスクが属するタスククラスの中で最もリソース割当ての多いタスククラスに割当てられたリソースを、連携して動作する全てのタスクに再割当てするためである。
第２効果は、連携して動作するタスクの組み合わせに応じて、ＱｏＳ制御規則を変更
きることにある。その理由は、連携して動作するタスクが属するタスククラスに応じて、割当てられるタスククラスが異なるからである。
第３効果は、異なるタスククラスに属すタスクが複数連携して動作する場合においても、ＱｏＳを保証できることにある。その理由は、連携して動作するタスクが属するタスククラスの中で最もリソース割当ての多いタスククラスを、連携して動作する全てのタスクに再割当てするためである。
【発明を実施するための最良の形態】
【００２５】
以下に添付図面を参照して、本発明によるリソースＱｏＳ制御システムを備えるデータ処理システムとリソースＱｏＳ制御方法について詳細に説明する。
【００２６】
［第１実施形態］
図２は、本発明の第１実施形態によるリソースＱｏＳ制御システムを備えるデータ処理システムの構成を示すブロック図である。図２を参照して、本発明の第１実施形態によるデータ処理システムのリソースＱｏＳ制御システムは、プログラム制御により動作するデータ処理装置１００と、記憶装置１１０を備えている。データ処理装置１００は、連携タスク情報取得部１０１と、連携タスク取得部１０２と、タスク検索部１０３と、割当クラス決定部１０４と、クラス比較部１０５と、クラス再割当部１０６とを含む。リソースＱｏＳ制御システムは、タスク０〜Ｎ（Ｎは０以上整数）を処理するオペレーティングシステムの一部の機能として実現される。記憶装置１１０は、連携タスク記憶部１１１と、レディキュー１１２と、割当クラス記憶部１１３と、クラス定義記憶部１１４とを備えている。以上の各部について以下に説明する。
【００２７】
連携タスク情報取得部１０１は、連携タスク記憶部１１１を参照し、あるタスク識別子（ＩＤ）が割当てられた連携タスク情報を取得する。タスク識別子とはタスク０〜Ｎに対して一意に定められた識別子である。連携タスク情報とは、該当タスクと連携して動作するタスク群（連携タスク群）の各タスク識別子と、連携タスク群の各タスクが属するタスククラスの識別子と、連携タスク群内における各タスクの優先度との組みからなるデータの集合である。つまり、連携タスク情報は、連携タスク群の各タスクに関するタスク識別子とタスククラス識別子と優先度の組みのデータが連携タスクの数だけ存在する。連携タスク群内における各タスクの優先度とは、連携タスクが属するタスククラスに割当てられたリソースの割合値を、各連携タスク群内のタスク間で比較し、それぞれの連携タスク群内において各タスクにリソース割当の値が大きい順に０から連番で割り振られている。ここで同一タスククラスに属する複数のタスクが連携タスク群内に存在した場合においても、その優先度を予め決めておくため、１つの連携タスク群内で優先度の値は、各連携タスク識別子に対して一意に決定されることとなる。また、タスククラス識別子とは各タスククラスに対して一意に定められた識別子のことである。
【００２８】
連携タスク取得部１０２は、連携タスク情報を参照し、指定された優先度と組みとなるタスク識別子とタスククラス識別子を取得する。
【００２９】
タスク検索部１０３は、レディキュー１１２を参照し、該当するタスクが登録されているか否かを検索する。
割当クラス決定部１０４は、割当てるタスククラスを決定し、割当クラス記憶部１１３に該当タスククラス識別子を書き込む。
クラス比較部１０５は、クラス定義部１１４を参照し、指定された２つのタスククラスのリソース割合値を比較する。
クラス再割当部１０６は、割当クラス記憶部１１３を参照し、該当タスクに割当クラス記憶部１１３に記憶されているタスククラスを再割当する。
【００３０】
連携タスク記憶部１１１は、連係動作するタスクのタスク識別子と連携タスク情報の組みを予め記憶している。レディキュー１１２には、実行可能状態のタスクが記憶される。各タスクは現在属しているタスククラスのタスククラス識別子を記憶している。レディキュー１１２には、タスクａ（ａは０以上Ｎ以下の整数値）が記憶されている。割当クラス記憶部１１３には、タスクが割当てられるタスククラスのタスククラス識別子（タスククラス識別子ＩＤｍ）を記憶している。クラス定義記憶部１１４には、各タスククラス識別子とそのタスククラスが利用可能なリソース割合値の組みが予め記憶されている。
【００３１】
次に、図３から図８を参照して、本実施形態によるデータ処理システムのリソースＱｏＳ制御システム全体の動作について詳細に説明する。
【００３２】
連携タスク情報取得部１０１は、タスクaが実行可能状態に設定されると、タスクａのタスク識別子（タスクＩＤａ）とタスクａが属するタスククラスのタスククラス識別子ＩＤａを取得する（図３のステップＡ１）。続いて、連携タスク記憶部１１１を参照し、タスク識別子ＩＤａと組みとなる連携タスク情報（連携タスク情報ａ）を取得する（図３のステップＡ２）。続いて、連携タスク情報取得部１０１は、連携タスク取得部１０２に、タスク識別子ＩＤａとタスククラス識別子ＩＤａと連携タスク情報ａを渡す（図３のステップＡ３）。
【００３３】
連携タスク取得部１０２は、連携タスク情報取得部１０１からタスク識別子ＩＤａとタスククラス識別子ＩＤａと連携タスク情報ａを渡されると（図４ＡのステップＢ１）、初期化のために、割当クラス記憶部１１３に登録されているタスククラス識別子ＩＤｍにＮＵＬＬ値を設定し、優先度ｘを初期値０に設定する（図４ＡのステップＢ２）。続いて、連携タスク取得部１０２は、連携タスク情報ａを参照して（図４ＡのステップＢ３）、優先度ｘと組みとなるタスク識別子とタスククラス識別子の組みが存在するか否かを検索する（図４ＡのステップＢ４）。連携タスク取得部１０２は、優先度ｘと組みとなるタスク識別子（タスクＩＤｘ）とタスククラス識別子（タスククラスＩＤｘ）が存在する場合、タスクＩＤｘとタスククラスＩＤｘを取得する（図４ＡのステップＢ５）。連携タスク取得部１０２は、優先度ｘと組みとなるタスク識別子とタスククラス識別子が存在しない場合は、クラス再割当処理を終了する。連携タスク取得部１０２は、タスクＩＤｘとタスククラスＩＤｘを取得した場合、タスク検索部１０３に、タスクＩＤｘを渡す（図４ＡのステップＢ６）。その後、連携タスク取得部１０２は、検索成功信号または検索失敗信号を受信するまで待つ（図４ＡのステップＢ７）。
【００３４】
タスク検索部１０３は、連携タスク取得部１０２よりタスクＩＤｘを渡されると（図５のステップＣ１）、レディキュー１１２を参照し（図５のステップＣ２）、タスクＩＤｘに該当するタスクが登録されているか否かを検索する（図５のステップＣ３）。タスク検索部１０３は、該当タスクが登録されている場合、該当するタスクから、該当タスクが属するタスククラスのタスククラス識別子（タスククラスＩＤｒ）を取得し（図５のステップＣ４）、連携タスク取得部１０２に検索成功信号とタスククラスＩＤｒを返す（図５のステップＣ５）。タスク検索部１０３は、該当タスクが登録されていない場合、連携タスク取得部１０２に、検索失敗信号を返す（図５のステップＣ６）。
【００３５】
連携タスク取得部１０２は、検索失敗信号を受信した場合（図４ＡのステップＢ８）、優先度ｘに１を加えた値を新しい優先度ｘとして設定する（図４ＡのステップＢ９）。連携タスク取得部１０２は、再びステップＢ３を実行して、新しい優先度に基づいて連携タスクの検索を行なう。
連携タスク取得部１０２は、検索成功信号を受信した場合（図４ＡのステップＢ８）、割当クラス記憶部１１３を参照し（図４ＢのステップＢ１０）、タスククラスＩＤｍがＮＵＬＬ値に設定されているか否かを検索する（図４ＢのステップＢ１１）。連携タスク取得部１０２は、タスククラスＩＤｍにＮＵＬＬ値が設定されていない場合、割当クラス記憶部１１３からタスククラスＩＤｍを取得し（図４ＢのステップＢ１２）、クラス比較部１０５に、タスククラスＩＤｍとタスククラスＩＤｒを渡す（図４ＢのステップＢ１３）。その後、連携タスク取得部１０２は、割当許可信号または割当不許可信号を受信するまで待つ（図４ＢのステップＢ１４）。
連携タスク取得部１０２は、タスククラスＩＤｍがＮＵＬＬ値に設定されている場合、割当クラス決定部１０４に、タスククラスＩＤｘとタスククラスＩＤaとタスクＩＤａを渡す（図４ＢのステップＢ１５）。その後、連携タスク取得部１０２は、割当クラス決定信号を受信するまで待つ（図４ＢのステップＢ１６）。
【００３６】
割当クラス決定部１０４は、連携タスク取得部１０２からタスククラスＩＤｘとタスククラスＩＤａとタスクＩＤａを渡されると（図６のステップＤ１）、クラス定義記憶部１１４を参照し、タスククラスＩＤｘのリソース割合値（リソース割合ｘ）とタスククラスＩＤａのリソース割合値（リソース割合ａ）を取得する（図６のステップＤ２））。続いて、割当クラス決定部１０４は、リソース割合ｘとリソース割合ａを比較する（図６のステップＤ３）。割当クラス決定部１０４は、リソース割合ａの方が大きい場合またはリソース割合ａとリソース割合ｘが等しい場合は、タスククラスＩＤａを割当クラス記憶部１１３に書き込み、タスククラスＩＤｍとして設定する（図６のステップＤ４）。その後、連携タスク取得部１０２に、割当クラス決定信号を送信する（図６のステップＤ８）。
割当クラス決定部１０４は、リソース割合ｘの方が大きい場合は、タスククラスＩＤｘを割当クラス記憶部１１３に書き込み、タスククラスＩＤｍとして設定し（図６のステップＤ５）、クラス再割当部１０６に、タスクＩＤａとタスククラスＩＤｍを渡す（図６のステップＤ６）。続いて、割当クラス決定部１０４は、割当終了信号を受信するまで待つ（図６のステップＤ７）。
【００３７】
クラス再割当部１０６は、割当クラス決定部１０４からタスクＩＤａとタスククラスＩＤｍを渡されると（図８のステップＦ１）、タスククラスＩＤｍのタスククラスを、タスクＩＤａのタスク（タスクａ）に割当て（図８のステップＦ２）、割当クラス決定部１０４に割当終了信号を送信する（図８のステップＦ３）。
【００３８】
割当クラス決定部１０４は、割当終了信号を受信すると（図６のステップＤ７）、連携タスク取得部１０２に、割当クラス決定信号を送信する（図６のステップＤ８）。
【００３９】
連携タスク取得部１０２は、割当クラス決定信号を受信すると（図４ＢのステップＢ１６）、クラス比較部１０５に、タスククラスＩＤｍとタスククラスＩＤｒを渡す（図４ＢのステップＢ１３）。続いて、連携タスク取得部１０２は、割当許可信号または割当不許可信号を受信するまで待つ（図４ＢのステップＢ１４）。
【００４０】
クラス比較部１０５は、連携タスク取得部１０２からタスククラスＩＤｍとタスククラスＩＤｒを渡されると（図７のステップＥ１）、クラス定義記憶部１１４を参照し、タスククラスＩＤｍのリソース割合値（リソース割合ｍ）とタスククラスＩＤｒのリソース割合値（リソース割合ｒ）を取得する（図７のステップＥ２）。続いて、クラス比較部１０５は、リソース割合ｍとリソース割合ｒを比較する（図７のステップＥ３）。
クラス比較部１０５は、リソース割合ｒの方が大きい場合またはリソース割合ｍとリソース割合ｒが等しい場合は、連携タスク取得部１０２に、割当不許可信号を送信する（図７のステップＥ４）。また、クラス比較部１０５は、リソース割合ｍの方が大きい場合は、連携タスク取得部１０２に、割当許可信号を送信する（図７のステップＥ５）。
【００４１】
連携タスク取得部１０２は、割当不許可信号を受信した場合（図４のステップＢ１４）、優先度ｘに１を加えた値を新しい優先度ｘとして設定する（図４のステップＢ９）。そして、処理は再びステップＡ４へ戻り、新しい優先度に基づいて連携タスクの検索が行われる。連携タスク取得部１０２は、割当許可信号を受信した場合（図４のステップＢ１４）、クラス再割当部１０６に、タスクＩＤｘとタスククラスＩＤｍを渡す（図４のステップＢ１７）。そして、連携タスク取得部１０２は、割当終了信号を受信するまで待つ（図４のステップＢ１８）。
【００４２】
クラス再割当部１０６は、連携タスク取得部１０２からタスクＩＤｘとタスククラスＩＤｍを渡されると（図８のステップＦ１とステップＦ６)、タスククラスＩＤｍのタスククラスを、タスクＩＤｘのタスクに割当て（図８のステップＦ４）、連携タスク取得部１０２に、割当終了信号を送信する（図８のステップＦ５）。
【００４３】
連携タスク取得部１０２は、割当終了信号を受信すると（ステップＢ１４）、優先度ｘに１を加えた値を新しい優先度ｘとして設定する（図４のステップＢ９）。そして、処理は再びステップＢ３へ戻り、新しい優先度に基づいて連携タスクの検索が行われる。
【００４４】
本実施形態では、該当タスクと連携して動作する実行可能状態にあるタスクが属するタスククラスのうち、最も割当てられたリソース割合が多いタスククラスが求められ、そのタスククラスが該当タスクと連携して動作する実行可能状態にある全タスクに割当てられる。
【００４５】
［第２実施形態］
次に、本発明の第２実施形態によるデータ処理システムについて図９を参照して詳細に説明する。図９は、本発明の第２実施形態よるデータ処理システムのリソースＱｏＳ制御システムの構成を示すブロック図である。図９を参照して、第２実施形態よるデータ処理システムは、プログラム制御に基づいて動作するデータ処理装置２００と、記憶装置２１０を備えている。
データ処理装置２００は、連携タスク情報取得部２０１と、連携タスク取得部２０２と、タスク検索部２０３と、割当クラス決定部２０４と、クラス比較部２０５と、クラス再割当部２０６と、起動タスク管理部２０７と、終了タスク管理部２０８と、クラス割当管理部２０９を含み、リソースＱｏＳ制御システムは、タスク０〜Ｎ（Ｎは０以上整数）を処理するオペレーティングシステムの一部の機能として実現されている。
記憶装置２１０は、連携タスク記憶部２１１と、起動タスク記憶部２１２と、割当クラス記憶部２１３と、クラス定義記憶部２１４と、タスククラス割当記憶部２１５と、デフォルトクラス割当記憶部２１６を備えている。これらの部のそれぞれについて以下に説明する。
【００４６】
連携タスク情報取得部２０１と、連携タスク取得部２０２と、割当クラス決定部２０４と、クラス比較部２０５と、クラス再割当部２０６と、連携タスク記憶部２１１と、割当クラス記憶部２１３と、クラス定義域億部２１４は、本発明の第１実施形態における、連携タスク情報取得部１０１と、連携タスク取得部１０２と、割当クラス決定部１０４と、クラス比較部１０５と、クラス再割当部１０６と、連携タスク記憶部１１１と、割当クラス記憶部１１３と、クラス定義記憶部１１４と同等の機能を持っている。
【００４７】
タスク検索部２０３は、起動タスク記憶部２１２を参照し、該当タスクが登録されているか否かを検索する。
起動タスク管理部２０７は、タスクが起動されたときに、起動タスク記憶部２１２に該当タスクのタスク識別子を書き込む。
終了タスク管理部２０８は、タスクが終了したときに、起動タスク記憶部２１２に登録されている該当タスクのタスク識別子を削除し、クラス割当記憶部２１５を参照して、該当タスクのデフォルトクラスのタスククラス識別子と組みとなるタスクリストを取得する。ここで、デフォルトクラスとは、タスクが起動直後に割当てられるタスククラスであり、割当てられるタスククラスは、タスク毎に予め定められている。タスクリストとは、組みとなるタスククラス識別子に該当するタスククラスに属する起動状態のタスクのタスク識別子群である。
クラス割当管理部２０９は、クラス割当記憶部２１５を参照し、指定されたタスククラス識別子と組みとなるタスクリストに、指定されたタスク識別子の追加と削除を行う。
起動タスク記憶部２１２には、起動状態のタスクのタスク識別子が記憶されている。
クラス割当記憶部２１５には、タスククラス識別子とタスクリストの組みからなるデータが記憶されている。各タスククラス識別子は予め記憶されており、組みとなるタスクリストには、そのタスククラス識別子のタスククラスに属する起動状態のタスクのタスク識別子が記憶される。
デフォルトクラス割当記憶部２１６は、各タスク識別子と、そのタスク識別子に該当するタスクのデフォルトクラスのタスククラス識別子の組みからなるデータが予め記憶されている。
【００４８】
次に、第２実施形態によるデータ処理システムのリソースＱｏＳ制御システムの全体の動作について詳細に説明する。その動作は、タスクが起動された時と、タスクが終了した時に行われる。
【００４９】
まず、図７から図１７を参照して、タスクが起動された時の動作について説明する。
【００５０】
起動タスク管理部２０７は、タスクａが起動されると、タスクaのタスク識別子（タスクＩＤａ）とタスクａが属するタスククラスの識別子（タスククラスＩＤａ）を取得し（図１４のステップＧ１）、起動タスク記憶部２１２に、タスクＩＤａを書き込む（図１４のステップＧ２）。続いて、起動タスク管理部２０７は、クラス割当管理部２０９に、タスククラスＩＤａとタスクＩＤａとタスク追加信号を渡し（図１４のステップＧ３）、クラス割当記憶更新信号を受信するまで待つ（図１４のステップＧ４）。
【００５１】
クラス割当管理部２０９は、起動タスク管理部２０７からタスククラスＩＤａとタスクＩＤａとタスク追加信号を受信すると（図１６のステップＩ１とステップＩ２）、クラス割当記憶部２１５を参照して、タスククラスＩＤａと組みとなるタスクリスト（タスクリストａ）にタスクＩＤａを追加する（図１６のステップＩ３）。続いて、クラス割当管理部２０９は、起動タスク管理部２０７に、クラス割当記憶更新信号を送信する（図１６のステップＩ４）。
【００５２】
起動タスク管理部２０７は、クラス割当記憶更新信号を受信すると（図１４のステップＧ４）、連携タスク情報取得部２０１に、タスクＩＤａとタスククラスＩＤａとタスク起動信号を渡す（図１４のステップＧ５）。
【００５３】
連携タスク情報取得部２０１は、起動タスク管理部２０７からタスクＩＤａとタスククラスＩＤａとタスク起動信号が渡されると（図１０のステップＡ４）、連携タスク記憶部２１１を参照して、タスクＩＤａと組みとなる連携タスク情報（連携タスク情報ａ）を取得する（図１０のステップＡ２）。続いて、連携タスク情報取得部２０１は、連携タスク取得部２０２に、タスクＩＤａとタスククラスＩＤａと連携タスク情報ａとタスク起動信号を渡す（図１０のステップＡ５）。
【００５４】
連携タスク取得部２０２は、連携タスク情報取得部２０１からタスクＩＤａとタスククラスＩＤａと連携タスク情報ａとタスク起動信号が渡されると（図１１ＡのステップＢ２５）、初期化のために、割当クラス記憶部２１３に登録されているタスククラスＩＤｍにＮＵＬＬ値を設定し、優先度ｘを初期値０に設定する（図１１ＡのステップＢ２）。続いて、連携タスク取得部２０２は、連携タスク情報ａを参照し（図１１ＡのステップＢ３）、優先度ｘと組みとなるタスク識別子とタスククラス識別子の組みが存在するか検索する（図１１ＡのステップＢ４）。続いて、連携タスク取得部２０２は、優先度ｘと組みとなるタスク識別子（タスクＩＤｘ）とタスククラス識別子（タスククラスＩＤｘ）が存在した場合、タスクＩＤｘとタスククラスＩＤｘを取得する（図１１ＡのステップＢ５）。連携タスク取得部２０２は、優先度ｘと組みとなるタスク識別子とタスククラス識別子が存在せず連携タスク情報取得部２０１からのタスク起動信号を受信した場合（図１１のステップＢ４とステップＢ２４）、クラス再割当処理を終了する（図１１ＡのステップＢ２１）。
連携タスク取得部２０２は、タスクＩＤｘとタスククラスＩＤｘを取得した場合、タスク検索部２０３に、タスクＩＤｘを渡す（図１１ＡのステップＢ６）。そして、連携タスク取得部２０２は、検索成功信号または検索失敗信号を受信するまで待つ（図１１ＡのステップＢ７）。
【００５５】
タスク検索部２０３は、連携タスク取得部２０２からタスクＩＤｘを渡されると（図１２のステップＣ１）、起動タスク記憶部２１２を参照し（図１２のステップＣ７）、タスクＩＤｘが登録されているか否かを検索する（図１２のステップＣ８）。タスク検索部２０３は、該当タスクが登録されている場合、タスクＩＤｘを持つ該当タスクから、該当タスクが属するタスククラスのタスククラス識別子（タスククラスＩＤｒ）を取得し（図１２のステップＣ４）、連携タスク取得部２０２に検索成功信号とタスククラスＩＤｒを返す（図１２のステップＣ５）。タスク検索部２０３は、該当タスクが登録されていない場合、連携タスク取得部２０２に、検索失敗信号を送信する（図１２のステップＣ６）。
【００５６】
連携タスク取得部２０２は、検索失敗信号を受信した場合（図１１ＡのステップＢ８）、優先度ｘに１を加えた値を新しい優先度ｘと設定する（図１１ＡのステップＢ９）。その後、処理は再びステップＢ３へ戻り、新しい優先度に基づいて連携タスクの検索が行われる。
連携タスク取得部２０２は、検索成功信号を受信した場合（図１１ＡのステップＢ８）、割当クラス記憶部２１３を参照し（図１１ＢのステップＢ１０）、タスククラスＩＤｍがＮＵＬＬ値に設定されているか否かを検索する（図１１ＢのステップＢ１１）。連携タスク取得部２０２は、タスククラスＩＤｍにＮＵＬＬ値が設定されていない場合、割当クラス記憶部２１３からタスククラスＩＤｍを取得し（図１１ＢのステップＢ１２）、クラス比較部２０５に、タスククラスＩＤｍとタスククラスＩＤｒを渡す（図１１ＢのステップＢ１３）。続いて、連携タスク取得部２０２は、割当許可信号または割当不許可信号を受信するまで待つ（図１１ＢのステップＢ１４）。
連携タスク取得部２０２は、タスククラスＩＤｍがＮＵＬＬ値に設定されている場合、割当クラス決定部２０４に、タスククラスＩＤｘとタスククラスＩＤaとタスクＩＤａを渡す（図１１ＢのステップＢ１５）。続いて、連携タスク取得部２０２は、割当クラス決定信号を受信するまで待つ（図１１ＢのステップＢ１６）。
【００５７】
割当クラス決定部２０４は、連携タスク取得部２０２からタスククラスＩＤｘとタスククラスＩＤａとタスクＩＤａを渡されると（図１３のステップＤ１）、クラス定義記憶部２１４を参照し、タスククラスＩＤｘのリソース割合値（リソース割合ｘ）とタスククラスＩＤａのリソース割合値（リソース割合ａ）を取得する（図１３のステップＤ２）。続いて、割当クラス決定部２０４は、リソース割合ｘとリソース割合ａを比較する（図１３のステップＤ３）。
割当クラス決定部２０４は、リソース割合ａの方が大きい場合またはリソース割合ａとリソース割合ｘが等しい場合は、タスククラスＩＤａを割当クラス記憶部２１３に書き込み（タスククラスＩＤｍとして設定）（図１３のステップＤ４）、連携タスク取得部２０２に、割当クラス決定信号を送信する（図１３のステップＤ８）。
割当クラス決定部２０４は、リソース割合ｘの方が大きい場合は、タスククラスＩＤｘを割当クラス記憶部２１３に書き込む（タスククラスＩＤｍとして設定する）（図１３のステップＤ５）。その後、割当クラス決定部２０４は、クラス割当管理部２０９に、タスククラスＩＤａとタスククラスＩＤｍとタスクＩＤａとタスククラス変更信号を渡し（図１３のステップＤ９）、クラス割当記憶更新信号を受信するまで待つ（図１３のステップＤ１０）。
【００５８】
クラス割当管理部２０９は、タスククラスＩＤａとタスククラスＩＤｍとタスクＩＤａとタスククラス変更信号を受信すると（図１６のステップＩ１と図１７のステップＩ５とステップＩ６）、クラス割当記憶部２１５を参照し、タスククラスＩＤａと組みとなるタスクリスト（タスクリストａ）に登録されているタスクＩＤａを削除する（図１７のステップＩ７）。続いて、クラス割当管理部２０９は、タスククラスＩＤｍと組みとなるタスクリスト（タスクリストｍ）にタスクＩＤａを追加する（図１７のステップＩ８）。その後、クラス割当管理部２０９は、割当クラス決定部２０４に、クラス割当記憶更新信号を送信する（図１７のステップＩ９）。
【００５９】
割当クラス決定部２０４は、クラス割当記憶更新信号を受信すると（図１３のステップＤ１０）、クラス再割当部２０６に、タスクＩＤａとタスククラスＩＤｍを渡す（図１３のステップＤ６）。そして、割当クラス決定部２０４は、割当終了信号を受信するまで待つ（図１３のステップＤ７）。
【００６０】
クラス再割当部２０６は、割当クラス決定部２０４からタスクＩＤａとタスククラスＩＤｍを渡されると（図８のステップＦ１）、タスククラスＩＤｍに該当するタスククラスを、タスクＩＤａに該当するタスク（タスクａ）に割当て（図８のステップＦ２）、割当クラス決定部２０４に割当終了信号を送信する（図８のステップＦ３）。
【００６１】
割当クラス決定部２０４は、割当終了信号を受信すると（図１３のステップＤ７）、連携タスク取得部２０２に、割当クラス決定信号を送信する（図１３のステップＤ８）。
連携タスク取得部２０２は、割当クラス決定信号を受信すると（図１１ＢのステップＢ１６）、クラス比較部２０５に、タスククラスＩＤｍとタスククラスＩＤｒを渡す（図１１ＢのステップＢ１３）。続いて、連携タスク取得部２０２は、割当許可信号または割当不許可信号を受信するまで待つ（図１１ＢのステップＢ１４）。
【００６２】
クラス比較部２０５は、連携タスク取得部２０２からタスククラスＩＤｍとタスククラスＩＤｒを渡されると（図７のステップＥ１）、クラス定義記憶部２１４を参照し、タスククラスＩＤｍのリソース割合値（リソース割合ｍ）とタスククラスＩＤｒのリソース割合値（リソース割合ｒ）を取得する（図７のステップＥ２）。続いて、クラス比較部２０５は、リソース割合ｍとリソース割合ｒを比較する（図７のステップＥ３）。
クラス比較部２０５は、リソース割合ｒの方が大きい場合またはリソース割合ｍとリソース割合ｒが等しい場合は、連携タスク取得部２０２に、割当不許可信号を送信する（図７のステップＥ４）。また、クラス比較部２０５は、リソース割合ｍの方が大きい場合は、連携タスク取得部２０２に、割当許可信号を送信する（図７のステップＥ５）。
【００６３】
連携タスク取得部２０２は、割当不許可信号を受信した場合（図１１ＢのステップＢ１４）、優先度ｘに１を加えた値を新しい優先度ｘとして設定する（図１１ＢのステップＢ９）。続いて、処理は再びステップＢ３へ戻り、新しい優先度に基づいて連携タスクの検索が行われる。
連携タスク取得部２０２は、割当許可信号を受信した場合（図１１ＢのステップＢ１４）、クラス割当管理部２０９に、タスククラスＩＤｒとタスククラスＩＤｍとタスクＩＤｘとタスククラス変更信号を渡し（図１１ＢのステップＢ１９）、クラス割当記憶更新信号を受信するまで待つ（図１１ＢのステップＢ２０）。
【００６４】
クラス割当管理部２０９は、連携タスク取得部２０２からタスククラスＩＤｒとタスククラスＩＤｍとタスクＩＤｘとタスククラス変更信号を受信すると（図１６のステップＩ１と図１７のステップＩ５とステップＩ１０）、クラス割当記憶部２１５を参照し、タスククラスＩＤｒと組みとなるタスクリスト（タスクリストｒ）に登録されているタスクＩＤｘを削除する（図１７のステップＩ１１）。続いて、クラス割当管理部２０９は、タスククラスＩＤｍと組みとなるタスクリスト（タスクリストｍ）にタスクＩＤｘを追加する（図１７のステップＩ１２）。続いて、クラス割当管理部２０９は、連携タスク取得部２０２に、クラス割当記憶更新信号を送信する（図１７のステップＩ１３）。
【００６５】
連携タスク取得部２０２は、クラス割当記憶更新信号を受信すると（図１１ＢのステップＢ２０）、クラス再割当部２０６に、タスクＩＤｘとタスククラスＩＤｍを渡す（図１１ＢのステップＢ１７）。続いて、連携タスク取得部２０２は、割当終了信号を受信するまで待つ（図１１ＢのステップＢ１８）。
【００６６】
クラス再割当部２０６は、連携タスク取得部２０２からタスクＩＤｘとタスククラスＩＤｍを渡されると（図８のステップＦ１とステップＦ６）、タスククラスＩＤｍに該当するタスククラスを、タスクＩＤｘに該当するタスクに割当て（図８のステップＦ４）、連携タスク取得部２０２に、割当終了信号を送信する（図８のステップＦ５）。
【００６７】
連携タスク取得部２０２は、割当終了信号を受信すると、優先度ｘに１を加えた値を新しい優先度ｘとして設定する（図１１ＡのステップＢ９）。続いて、処理は再びステップＢ３へ戻り、新しい優先度に基づいて連携タスクの検索が行われる。
【００６８】
次に、図７から図１７を参照して、タスクが終了した時の動作について説明する。
終了タスク管理部２０８は、タスクａが終了すると、タスクaのタスク識別子（タスクＩＤａ）とタスクａが属するタスククラスのタスククラス識別子（タスククラスＩＤｂ）を取得し（図１５ＡのステップＨ１）、起動タスク記憶部２１２からタスクＩＤａを削除する（図１５ＡのステップＨ２）。続いて、終了タスク管理部２０８は、クラス割当管理部２０９に、タスククラスＩＤｂとタスクＩＤａとタスク削除信号を渡し（図１５ＡのステップＨ３）、クラス割当記憶更新信号を受信するまで待つ（図１５ＡのステップＨ４）。
【００６９】
クラス割当管理部２０９は、終了タスク管理部２０８からタスククラスＩＤｂとタスクＩＤａとタスク削除信号を受信すると（図１６のステップＩ１とステップＩ１４）、クラス割当記憶部２１５を参照し、タスククラスＩＤｂと組みとなるタスクリスト（タスクリストｂ）に登録されているタスクＩＤａを削除する（図１６のステップＩ１５）。続いて、クラス割当管理部２０９は、終了タスク管理部２０８に、クラス割当記憶更新信号を送信する（図１６のステップＩ１６）。
【００７０】
終了タスク管理部２０８は、クラス割当記憶更新信号を受信すると（図１５ＡのステップＨ４）、デフォルトクラス割当記憶部２１６を参照し、タスククラスＩＤａと組みとなるタスククラスＩＤａを取得する（図１５ＡのステップＨ５）。続いて、終了タスク管理部２０８は、クラス割当記憶部２１５からタスククラスＩＤａと組みとなるタスクリストａを参照し（図１５のステップＨ６）、タスクリストａにタスク識別子が登録されているか否かを検索する（図１５ＡのステップＨ７）。
終了タスク管理部２０８は、タスクリストａにタスク識別子が登録されていない場合、クラス再割当処理を終了する。
終了タスク管理部２０８は、タスクリストａにタスク識別子が登録されている場合、タスクリストａを取得する（図１５ＡのステップＨ８）。続いて、終了タスク管理部２０８は、取得したタスクリストａからタスク識別子を処理対象として順次取得し（図１５ＡのステップＨ９）、以下の処理を実行する。取得した全てのタスク識別子に対して処理が実行された場合はクラス再割当処理を終了する。
終了タスク管理部２０８は、処理対象とするタスク識別子をタスクＩＤｙと設定する（図１５ＢのステップＨ１０）。終了タスク管理部２０８は、デフォルトクラス割当記憶部２１６を参照し、タスクＩＤｙと組みとなるタスククラス識別子（タスククラスＩＤｙ）を取得し（図１５ＢのステップＨ１１）、クラス割当管理部２０９に、タスククラスＩＤａとタスククラスＩＤｙとタスクＩＤｙとタスククラス変更信号を渡し（図１５ＢのステップＨ１２）、クラス割当記憶更新信号を受信するまで待つ（図１５ＢのステップＨ１３）。
【００７１】
クラス割当管理部２０９は、終了タスク管理部２０８からタスククラスＩＤａとタスククラスＩＤｙとタスクＩＤｙとタスククラス変更信号を受信すると（図１６のステップＩ１と図１７のステップＩ５とステップＩ１７）、クラス割当記憶部２１５を参照し、タスククラスＩＤａと組みとなるタスクリスト（タスクリストａ）に登録されている、タスクＩＤｙを削除する（図１７のステップＩ１８）。続いて、クラス割当管理部２０９は、タスククラスＩＤｙと組みとなるタスクリスト（タスクリストｙ）にタスクＩＤｙを追加する（図１７のステップＩ１９）。続いて、クラス割当管理部２０９は、終了タスク管理部２０８に、クラス割当記憶更新信号を送信する（図１７のステップＩ２０）。
【００７２】
終了タスク管理部２０８は、クラス割当記憶更新信号を受信すると（図１５ＢのステップＨ１３）、クラス再割当部２０６に、タスクＩＤｙとタスククラスＩＤｙを渡す（図１５ＢのステップＨ１４）。続いて、終了タスク管理部２０８は、割当終了信号を受信するまで待つ（図１５ＢのステップＨ１５）。
【００７３】
クラス再割当部２０６は、終了タスク管理部２０８からタスクＩＤｙとタスククラスＩＤｙを渡されると（図８のステップＦ１とステップＦ６とステップＦ７）、タスククラスＩＤｙに該当するタスククラスを、タスクＩＤｙに該当するタスクに割当て（図８のステップＦ８）、終了タスク管理部２０８に、割当終了信号を送信する（図８のステップＦ９）。
【００７４】
終了タスク管理部２０８は、割当終了信号を受信すると（図１５ＢのステップＨ１５）、連携タスク情報取得部２０１に、タスクＩＤｙとタスククラスＩＤｙとタスク終了信号を渡す（図１５ＢのステップＨ１６）。続いて、終了タスク管理部２０８は、次タスク検索要求信号を受信するまで待つ（図１５ＢのステップＨ１７）。
【００７５】
連携タスク情報取得部２０１は、タスクＩＤｙとタスククラスＩＤｙとタスク終了信号を受け取ると（図１０のステップＡ４）、連携タスク記憶部２１１を参照し、タスクＩＤｙと組みとなる連携タスク情報（連携タスク情報ｙ）を取得する（図１０のステップＡ２）。続いて、連携タスク情報取得部２０１は、連携タスク取得部２０２に、タスクＩＤｙとタスククラスＩＤｙと連携タスク情報ｙとタスク終了信号を渡す（図１０のステップＡ５）。
【００７６】
連携タスク取得部２０２は、連携タスク情報取得部２０１からタスクＩＤｙとタスククラスＩＤｙと連携タスク情報ｙとタスク終了信号を渡されると（図１１ＡのステップＢ２５）、初期化のために、割当クラス記憶部２１３に登録されているタスククラスＩＤｍにＮＵＬＬ値を設定し、優先度ｘを初期値０に設定する（図１１ＡのステップＢ２）。続いて、連携タスク取得部２０２は、連携タスク情報ｙを参照し（図１１ＡのステップＢ３）、優先度ｘと組みとなるタスク識別子とタスククラス識別子の組みが存在するか検索する（図１１ＡのステップＢ４）。続いて、連携タスク取得部２０２は、優先度ｘと組みとなるタスク識別子とタスククラス識別子が存在せず連携タスク情報取得部２０１よりタスク終了信号を受信した場合（図１１ＡのステップＢ４とステップＢ２４）、終了タスク管理部２０８に、次タスク検索要求信号を送信する（図１１ＡのステップＢ２１）。
【００７７】
終了タスク管理部２０８は、次タスク検索要求信号を受信すると、処理は再びステップＨ９へ戻り、新たなタスク識別子に基づいてクラス再割当処理が行われる。
【００７８】
連携タスク取得部２０２は、優先度ｘと組みとなるタスク識別子（タスクＩＤｘ）とタスククラス識別子（タスククラスＩＤｘ）が存在した場合、タスクＩＤｘとタスククラスＩＤｘを取得する（図１１ＡのステップＢ５）。続いて、連携タスク取得部２０２は、タスク検索部２０３に、タスクＩＤｘを渡す（図１１ＡのステップＢ６）。続いて、連携タスク取得部２０２は、検索成功信号または検索失敗信号を受信するまで待つ（図１１ＡのステップＢ７）。
【００７９】
タスク検索部２０３は、連携タスク取得部２０２からタスクＩＤｘを渡されると（図１２のステップＣ１）、起動タスク記憶部２１２を参照し（図１２のステップＣ７）、タスクＩＤｘが登録されているか否かを検索する（図１２のステップＣ８）。タスク検索部２０３は、該当タスクが登録されている場合、タスクＩＤｘに該当するタスクから、該当タスクが属するタスククラスのタスククラス識別子（タスククラスＩＤｒ）を取得し（図１２のステップＣ４）、連携タスク取得部２０２に検索成功信号とタスククラスＩＤｒを返す。タスク検索部２０３は、該当タスクが登録されていない場合、連携タスク取得部２０２に、検索失敗信号を送信する（図１２のステップＣ５）。
【００８０】
連携タスク取得部２０２は、検索失敗信号を受信した場合（図１１ＡのステップＢ８）、優先度ｘに１を加えた値を新しい優先度ｘと設定する（図１１ＡのステップＢ９）。続いて、処理は再びステップＢ３へ戻り、新しい優先度に基づいて連携タスクの検索が行われる。
連携タスク取得部２０２は、検索成功信号を受信した場合（図１１ＢのステップＢ８）、割当クラス記憶部２１３を参照し（図１１ＢのステップＢ１０）、タスククラスＩＤｍがＮＵＬＬ値に設定されているか否かを検索する（図１１ＢのステップＢ１１）。連携タスク取得部２０２は、タスククラスＩＤｍにＮＵＬＬ値が設定されていない場合、割当クラス記憶部２１３からタスククラスＩＤｍを取得し（図１１ＢのステップＢ１２）、クラス比較部２０５に、タスククラスＩＤｍとタスククラスＩＤｒを渡す（図１１ＢのステップＢ１３）。続いて、連携タスク取得部２０２は、割当許可信号または割当不許可信号を受信するまで待つ（図１１ＢのステップＢ１４）。
連携タスク取得部２０２は、タスククラスＩＤｍがＮＵＬＬ値に設定されている場合、割当クラス決定部２０４に、タスククラスＩＤｘとタスククラスＩＤｙとタスクＩＤｙを渡す（図１１ＢのステップＢ１５）。続いて、連携タスク取得部２０２は、割当クラス決定信号を受信するまで待つ（図１１ＢのステップＢ１６）。
【００８１】
割当クラス決定部２０４は、連携タスク取得部２０２からタスククラスＩＤｘとタスククラスＩＤｙとタスクＩＤｙを渡されると（図１３のステップＤ１）、クラス定義記憶部２１４を参照し、タスククラスＩＤｘのリソース割合値（リソース割合ｘ）とタスククラスＩＤｙのリソース割合値（リソース割合ｙ）を取得する（図１３のステップＤ２）。続いて、クラス比較部２０５は、リソース割合ｘとリソース割合ｙを比較する（図１３のステップＤ３）。続いて、割当クラス決定部２０４は、リソース割合ｙの方が大きい場合またはリソース割合ｙとリソース割合ｘが等しい場合は、タスククラスＩＤｙを割当クラス記憶部２１３に書き込み（タスククラスＩＤｍとして設定）（図１３のステップＤ４）、連携タスク取得部２０２に、割当クラス決定信号を送信する（図１３のステップＤ８）。
割当クラス決定部２０４は、リソース割合ｘの方が大きい場合は、タスククラスＩＤｘを割当クラス記憶部２１３に書き込む（タスククラスＩＤｍとして設定）（図１３のステップＤ５）。続いて、割当クラス決定部２０４は、クラス割当管理部２０９に、タスククラスＩＤｙとタスククラスＩＤｍとタスクＩＤｙとタスククラス変更信号を渡し（図１３のステップＤ９）、クラス割当記憶更新信号を受信するまで待つ（図１３のステップＤ１０）。
【００８２】
クラス割当管理部２０９は、割当クラス決定部２０４からタスククラスＩＤｙとタスククラスＩＤｍとタスクＩＤｙとタスククラス変更信号を受信すると（図１６のステップＩ１と図１７のステップＩ５とステップＩ６）、クラス割当記憶部２１５を参照し、タスククラスＩＤｙと組みとなるタスクリスト（タスクリストｙ）に登録されているタスクＩＤｙを削除する（図１７のステップＩ７）。続いて、クラス割当管理部２０９は、タスククラスＩＤｍと組みとなるタスクリスト（タスクリストｍ）にタスクＩＤｙを追加する（図１７のステップＩ８）。続いて、クラス割当管理部２０９は、割当クラス決定部２０４に、クラス割当記憶更新信号を送信する（図１７のステップＩ９）。
【００８３】
割当クラス決定部２０４は、クラス割当記憶更新信号を受信すると（図１３のステップＤ１０）、クラス再割当部２０６に、タスクＩＤｙとタスククラスＩＤｍを渡す（図１３のステップＤ６）。続いて、割当クラス決定部２０４は、割当終了信号を受信するまで待つ（図１３のステップＤ７）。
【００８４】
クラス再割当部２０６は、割当クラス決定部２０４からタスクＩＤｙとタスククラスＩＤｍを渡されると（図８のステップＦ１）、タスククラスＩＤｍに該当するタスククラスを、タスクＩＤｙに該当するタスク（タスクｙ）に割当て（図８のステップＦ２）、割当クラス決定部２０４に割当終了信号を送信する（図８のステップＦ３）。
【００８５】
割当クラス決定部２０４は、割当終了信号を受信すると（図１３のステップＤ７）、連携タスク取得部２０２に、割当クラス決定信号を送信する（図１３のステップＤ８）。
【００８６】
連携タスク取得部２０２は、割当クラス決定信号を受信すると（図１１ＢのステップＢ１６）、クラス比較部２０５に、タスククラスＩＤｍとタスククラスＩＤｒを渡す（図１１ＢのステップＢ１３）。続いて、連携タスク取得部２０２は、割当許可信号または割当不許可信号を受信するまで待つ（図１１のステップＢ１４）。
【００８７】
クラス比較部２０５は、連携タスク取得部２０２からタスククラスＩＤｍとタスククラスＩＤｒを渡されると（図７のステップＥ１）、クラス定義記憶部２１４を参照し、タスククラスＩＤｍのリソース割合値（リソース割合ｍ）とタスククラスＩＤｒのリソース割合値（リソース割合ｒ）を取得する（図７のステップＥ２）。続いて、クラス比較部２０５は、リソース割合ｍとリソース割合ｒを比較する（図７のステップＥ３）。続いて、クラス比較部２０５は、リソース割合ｒの方が大きい場合またはリソース割合ｍとリソース割合ｒが等しい場合は、連携タスク取得部２０２に、割当不許可信号を送信する（図７のステップＥ４）。クラス比較部２０５は、リソース割合ｍの方が大きい場合は、連携タスク取得部２０２に、割当許可信号を送信する（図７のステップＥ５）。
【００８８】
連携タスク取得部２０２は、割当不許可信号を受信した場合（図１１ＢのステップＢ１４）、優先度ｘに１を加えた値を新しい優先度ｘとして設定する（図１１ＢのステップＢ９）。続いて、処理は再びステップＢ３へ戻り、新しい優先度に基づいて連携タスクの検索が行われる。
連携タスク取得部２０２は、割当許可信号を受信した場合（図１１ＢのステップＢ１４）、クラス割当管理部２０９に、タスククラスＩＤｒとタスククラスＩＤｍとタスクＩＤｘとタスククラス変更信号を渡し（図１１ＢのステップＢ１９）、クラス割当記憶更新信号を受信するまで待つ（図１１ＢのステップＢ２０）。
【００８９】
クラス割当管理部２０９は、連携タスク取得部２０２からタスククラスＩＤｒとタスククラスＩＤｍとタスクＩＤｘとタスククラス変更信号を受信すると（図１６のステップＩ１と図１７のステップＩ５とステップＩ１０）、クラス割当記憶部２１５を参照し、タスククラスＩＤｒと組みとなるタスクリスト（タスクリストｒ）に登録されているタスクＩＤｘを削除する（図１７のステップＩ１１）。
次に、クラス割当管理部２０９は、タスククラスＩＤｍと組みとなるタスクリスト（タスクリストｍ）にタスクＩＤｘを追加する（図１７のステップＩ１２）。続いて、クラス割当管理部２０９は、連携タスク取得部２０２に、クラス割当記憶更新信号を送信する（図１７のステップＩ１３）。
【００９０】
連携タスク取得部２０２は、クラス割当記憶更新信号を受信すると（図１１ＢのステップＢ２０）、クラス再割当部２０６に、タスクＩＤｘとタスククラスＩＤｍを渡す（図１１ＢのステップＢ１７）。続いて、連携タスク取得部２０２は、割当終了信号を受信するまで待つ（図１１ＢのステップＢ１８）。
【００９１】
クラス再割当部２０６は、連携タスク取得部２０２からタスクＩＤｘとタスククラスＩＤｍを渡されると（図８のステップＦ１とステップＦ６）、タスククラスＩＤｍに該当するタスククラスを、タスクＩＤｘに該当するタスクに割当て（図８のステップＦ４）、連携タスク取得部２０２に、割当終了信号を送信する（図８のステップＦ５）。
【００９２】
連携タスク取得部２０２は、割当終了信号を受信すると、優先度ｘに１を加えた値を新しい優先度ｘとして設定する（図１１ＢのステップＢ９）。続いて、処理は再びステップＢ３へ戻り、新しい優先度に基づいて連携タスクの検索が行われる。
【００９３】
次に、本実施形態の効果について説明する。
本実施形態では、本発明の第１実施形態と同等の効果を得ることができる。
さらに、本実施形態では、タスク起動時またはタスク終了時に、該当タスクの連携タスクに対してタスククラスの再割当てを行うため、本発明の第１実施形態と比べ、タスククラスの再割当てを行う頻度が減少し、ＯＳの処理時間が削減できるといった効果を得ることが出来る。
【００９４】
［第３実施形態］
次に、本発明の第３実施形態によるデータ処理システムのリソースＱｏＳ制御システムについて図面を参照して詳細に説明する。図１８を参照して、本発明の第３実施形態は、プログラム制御により動作するデータ処理装置３００と、記憶装置３１０を備えている。
【００９５】
データ処理装置３００は、連携タスク情報取得部３０１と、連携タスク取得部３０２と、タスク検索部３０３と、クラス比較部３０５と、クラス再割当部３０６と、起動タスク管理部３０７と、終了タスク管理部３０８と、第２連携タスク情報取得部３２１と、第２連携タスク取得部３２２と、第２クラス比較部３２５を含んでいる。リソースＱｏＳ制御システムは、タスク０〜Ｎ（Ｎは０以上整数）を処理するオペレーティングシステムの一部の機能として実現されている。記憶装置３１０は、連携タスク記憶部３１１と、起動タスク記憶部３１２と、クラス定義記憶部３１４と、デフォルトクラス割当記憶部３１６を備えている。
【００９６】
これらの部のそれぞれについて以下に説明する。
連携タスク情報取得部３０１と、連携タスク取得部３０２と、タスク検索部３０３と、クラス比較部３０５と、クラス再割当部３０６と、起動タスク管理部３０７と、連携タスク記憶部３１１と、起動タスク記憶部３１２と、クラス定義記憶部３１４と、デフォルトクラス割当記憶部３１６は、第２実施形態における、連携タスク情報取得部２０１と、連携タスク取得部２０２と、タスク検索部２０３と、クラス比較部２０５と、クラス再割当部２０６と、起動タスク管理部２０７と連携タスク記憶部２１１と、起動タスク記憶部２１２と、クラス定義記憶部２１４と、デフォルトクラス割当記憶部２１６と同等の機能を持つ。
【００９７】
第２連携タスク情報取得部３２１と、第２連携タスク取得部３２２と、第２クラス比較部３２５は、連携タスク情報取得部３０１と、連携タスク取得部３２２とクラス比較部３０５と同等の機能を持つ。
終了タスク管理部３０８は、タスクが終了した際に、起動タスク記憶部３１２に登録されている該当タスクのタスク識別子を削除し、連携タスク記憶部３１１を参照し、該当タスク識別子と組みとなる連携タスク情報を取得し、連携タスクが属するタスククラスを変更する。
次に、本実施形態によるデータ処理システムのリソースＱｏＳ制御システムの全体の動作について詳細に説明する。本実施形態は、タスクが起動した時と、タスクが終了した時に、動作が行われる。
【００９８】
まず、図１９から図２２と図２５と図２６と図２８と図２９を参照して、タスクが起動した時の動作について説明する。
【００９９】
起動タスク管理部３０７は、タスクａが起動すると、タスクaのタスク識別子（タスクＩＤａ）とタスクａが属するタスククラスのタスククラス識別子（タスククラスＩＤａ）を取得し（図２９のステップＧ１）、起動タスク記憶部３１２に、タスクＩＤａを書き込む（図２９のステップＧ２）。続いて、起動タスク管理部３０７は、連携タスク情報取得部３０１に、タスクＩＤａとタスククラスＩＤａを渡す（図２９のステップＧ６）。
【０１００】
連携タスク情報取得部３０１は、起動タスク管理部３０７からタスクＩＤａとタスククラスＩＤａを渡されると（図１９のステップＡ６）、連携タスク記憶部３１１を参照し、タスクＩＤａと組みとなる連携タスク情報（連携タスク情報ａ）を取得する（図１９のステップＡ２）。続いて、連携タスク情報取得部３０１は、連携タスク取得部３０２に、タスクＩＤａとタスククラスＩＤａと連携タスク情報ａを渡す（図１９のステップＡ３）。
【０１０１】
連携タスク取得部３０２は、連携タスク情報取得部３０１からタスクＩＤａとタスククラスＩＤａと連携タスク情報ａを渡されると（図２０ＡのステップＢ１）、初期化のために、優先度ｘを初期値０に設定する（図２０ＡのステップＢ２２）。続いて、連携タスク取得部３０２は、連携タスク情報ａを参照し（図２０のステップＢ３）、優先度ｘと組みとなるタスク識別子とタスククラス識別子の組みが存在するか検索する（図２０ＡのステップＢ４）。続いて、連携タスク取得部３０２は、優先度ｘと組みとなるタスク識別子（タスクＩＤｘ）とタスククラス識別子（タスククラスＩＤｘ）が存在した場合、タスクＩＤｘとタスククラスＩＤｘを取得する（図２０ＡのステップＢ５）。
連携タスク取得部３０２は、優先度ｘと組みとなるタスク識別子とタスククラス識別子が存在しない場合は、クラス再割当処理を終了する。
連携タスク取得部３０２は、タスクＩＤｘとタスククラスＩＤｘを取得した場合、タスク検索部３０３に、タスクＩＤｘを渡す（図２０ＡのステップＢ６）。続いて、連携タスク取得部３０２は、検索成功信号または検索失敗信号を受信するまで待つ（図２０ＡのステップＢ７）。
【０１０２】
タスク検索部３０３は、連携タスク取得部３０２からタスクＩＤｘを渡されると（図２１のステップＣ９と図２２のステップＣ１０）、起動タスク記憶部３１２を参照し（図２２のステップＣ７）、タスクＩＤｘが登録されているか否かを検索する（図２２のステップＣ８）。タスク検索部３０３は、該当タスクが登録されている場合、タスクＩＤｘに該当するタスクから、該当タスクが属するタスククラスのタスククラス識別子（タスククラスＩＤｒ）を取得し（図２２のステップＣ４）、連携タスク取得部３０２に検索成功信号とタスククラスＩＤｒを返す（図２２のステップＣ５）。タスク検索部３０３は、該当タスクが登録されていない場合、連携タスク取得部３０２に、検索失敗信号を送信する（図２２のステップＣ６）。
【０１０３】
連携タスク取得部３０２は、検索失敗信号を受信した場合（図２０ＡのステップＢ８）、優先度ｘに１を加えた値を新しい優先度ｘと設定する（図２０ＡのステップＢ９）。続いて、処理は再びステップＢ３へ戻り、新しい優先度に基づいて連携タスクの検索が行われる。
連携タスク取得部３０２は、検索成功信号とタスククラスＩＤｒを受信した場合（図２０ＡのステップＢ８）、クラス比較部３０５にタスククラスＩＤａとタスククラスＩＤｒを渡す（図２０ＢのステップＢ２３）。続いて、連携タスク取得部３０２は、割当許可信号または割当不許可信号を受信するまで待つ（図２０ＢのステップＢ１４）。
【０１０４】
クラス比較部３０５は、連携タスク取得部３０２からタスククラスＩＤａとタスククラスＩＤｒを渡されると（図２５のステップＥ１４と図２６のステップＥ６）、クラス定義記憶部３１４を参照し、タスククラスＩＤａのリソース割合値（リソース割合ａ）とタスククラスＩＤｒのリソース割合値（リソース割合ｒ）を取得する（図２６のステップＥ７）。続いて、クラス比較部３０５は、リソース割合ａとリソース割合ｒを比較する（図２６のステップＥ８）。
クラス比較部３０５は、リソース割合ｒの方が大きい場合またはリソース割合ａとリソース割合ｒが等しい場合は、連携タスク取得部３０２に、割当不許可信号を送信する（図２６のステップＥ４）。
クラス比較部３０５は、リソース割合ａの方が大きい場合は、連携タスク取得部３０２に、割当許可信号を送信する（図２６のステップＥ５）。
【０１０５】
連携タスク取得部３０２は、割当不許可信号を受信した場合（図２０ＢのステップＢ１４）、優先度ｘに１を加えた値を新しい優先度ｘとして設定する（図２０ＡのステップＢ９）。続いて、処理は再びステップＢ３へ戻り、新しい優先度に基づいて連携タスクの検索が行われる。
連携タスク取得部３０２は、割当許可信号を受信した場合（図２０ＢのステップＢ１４）、クラス再割当部３０６に、タスクＩＤｘとタスククラスＩＤａを渡す（図２０ＢのステップＢ１７）。続いて、連携タスク取得部３０２は、割当終了信号を受信するまで待つ（図２０ＢのステップＢ１８）。
【０１０６】
クラス再割当部３０６は、連携タスク取得部３０２からタスクＩＤｘとタスククラスＩＤａを渡されると（図２８のステップＦ１９とステップＦ１０）、タスククラスＩＤａに該当するタスククラスを、タスクＩＤｘに該当するタスクに割当て（図２８のステップＦ１１）、連携タスク取得部３０２に、割当終了信号を送信する（図２８のステップＦ１２）。
【０１０７】
連携タスク取得部３０２は、割当終了信号を受信すると、優先度ｘに１を加えた値を新しい優先度ｘとして設定する（図２０ＡのステップＢ９）。続いて、処理は再びステップＢ３へ戻り、新しい優先度に基づいて連携タスクの検索が行われる。
【０１０８】
次に、図２１と図２３から図２５と図２７と図２８と図３０から図３３を参照して、タスクが終了した時の動作について説明する。
終了タスク管理部３０８は、タスクａが終了すると、タスクaのタスク識別子（タスクＩＤａ）を取得し（図３０ＡのステップＨ１８）、起動タスク記憶部３１２からタスクＩＤａを削除する（図３０ＡのステップＨ２）。続いて、終了タスク管理部３０８は、デフォルトクラス割当記憶部３１６を参照し、タスクＩＤａと組みとなるタスククラス識別子（タスククラスＩＤａ）を取得する（図３０ＡのステップＨ５）。終了タスク管理部３０８は、連携タスク記憶部３１１を参照し、タスクＩＤａと組みとなる連携タスク情報（連携タスク情報ａ）を取得する（図３０ＡのステップＨ１９）。
終了タスク管理部３０８は、初期化のために、優先度ｘを初期値０に設定する（図３０ＡのステップＨ２０）。続いて、終了タスク管理部３０８は、連携タスク情報ａを参照し（図３０ＡのステップＨ２１）、優先度ｘと組みとなるタスク識別子とタスククラス識別子の組みが存在するか検索する（図３０ＡのステップＨ２２）。続いて、終了タスク管理部３０８は、優先度ｘと組みとなるタスク識別子（タスクＩＤｘ）とタスククラス識別子（タスククラスＩＤｘ）が存在した場合、タスクＩＤｘとタスククラスＩＤｘを取得する（図３０ＡのステップＨ２３）。
終了タスク管理部３０８は、優先度ｘと組みとなるタスク識別子とタスククラス識別子が存在しない場合は、クラス再割当処理を終了する。
終了タスク管理部３０８は、タスクＩＤｘとタスククラスＩＤｘを取得した場合、タスク検索部３０３に、タスクＩＤｘを渡す（図３０ＡのステップＨ２４）。続いて、終了タスク管理部３０８は、検索成功信号または検索失敗信号を受信するまで待つ（図３０ＢのステップＨ２５）。
【０１０９】
タスク検索部３０３は、終了タスク管理部３０８からタスクＩＤｘを渡されると（図２１のステップＣ９と図２３のステップＣ１１）、起動タスク記憶部３１２を参照し（図２３のステップＣ１２）、タスクＩＤｘが登録されているか否かを検索する（図２３のステップＣ１３）。タスク検索部３０３は、該当タスクが登録されている場合、タスクＩＤｘに該当するタスクから、該当タスクが属するタスククラスのタスククラス識別子（タスククラスＩＤｒ）を取得し（図２３のステップＣ１４）、終了タスク管理部３０８に検索成功信号とタスククラスＩＤｒを返す（図２３のステップＣ１５）。タスク検索部３０３は、該当タスクが登録されていない場合、終了タスク管理部３０８に、検索失敗信号を送信する（図２３のステップＣ１６）。
【０１１０】
終了タスク管理部３０８は、検索失敗信号を受信した場合（図３０ＢのステップＨ２６）、優先度ｘに１を加えた値を新しい優先度ｘと設定する（図３０ＡのステップＨ２７）。続いて、処理は再びステップＢ３へ戻り、新しい優先度に基づいて連携タスクの検索が行われる。
終了タスク管理部３０８は、検索成功信号とタスククラスＩＤｒを受信した場合（図３０ＢのステップＨ２６）、第２クラス比較部３２５にタスククラスＩＤａとタスククラスＩＤｒとタスククラスＩＤｘを渡す（図３０ＢのステップＨ２８）。続いて、終了タスク管理部３０８は、割当許可信号または割当不許可信号を受信するまで待つ（図３０ＢのステップＨ２９）。
【０１１１】
第２クラス比較部３２５は、終了タスク管理部３０８からタスククラスＩＤａとタスククラスＩＤｒとタスククラスＩＤｘを渡されると（図３３のステップＬ１）、クラス定義記憶部３１４を参照し、タスククラスＩＤａのリソース割合値（リソース割合ａ）とタスククラスＩＤｒのリソース割合値（リソース割合ｒ）を取得する（図３３のステップＬ２）。続いて、第２クラス比較部３２５は、リソース割合ａとリソース割合ｒを比較する（図３３のステップＬ３）。
第２クラス比較部３２５は、リソース割合ａとリソース割合ｒが異なる場合は、終了タスク管理部３０８に、割当不許可信号を送信する（図３３のステップＬ４）。
第２クラス比較部３２５は、リソース割合ａとリソース割合ｒが等しい場合は、クラス定義記憶部３１４を参照し、タスククラスＩＤａのリソース割合値（リソース割合ａ）とタスククラスＩＤｘのリソース割合値（リソース割合ｘ）を取得する（図３３のステップＬ５）。続いて、第２クラス比較部３２５は、リソース割合ａとリソース割合ｘを比較する（図３３のステップＬ６）。
第２クラス比較部３２５は、リソース割合ａとリソース割合ｘが等しい場合は、終了タスク管理部３０８に、割当不許可信号を送信する（図３３のステップＬ４）。
第２クラス比較部３２５は、リソース割合ａとリソース割合ｘが異なる場合は、終了タスク管理部３０８に、割当許可信号を送信する（図３３のステップＬ７）。
【０１１２】
終了タスク管理部３０８は、割当不許可信号を受信した場合（図３０ＢのステップＨ２９）、優先度ｘに１を加えた値を新しい優先度ｘとして設定する（図３０ＡのステップＨ２７）。続いて、処理は再びステップＨ２１へ戻り、新しい優先度に基づいて連携タスクの検索が行われる。
終了タスク管理部３０８は、割当許可信号を受信した場合（図３０ＢのステップＨ２９）、クラス再割当部３０６に、タスクＩＤｘとタスククラスＩＤｘを渡す（図３０ＢのステップＨ３０）。続いて、終了タスク管理部３０８は、割当終了信号を受信するまで待つ（図３０ＢのステップＨ３１）。
【０１１３】
クラス再割当部３０６は、終了タスク管理部３０８からタスクＩＤｘとタスククラスＩＤｘを渡されると（図２８のステップＦ１９とステップＦ１３）、タスククラスＩＤｘに該当するタスククラスを、タスクＩＤｘに該当するタスクに割当て（図２８のステップＦ１４）、終了タスク管理部３０８に、割当終了信号を送信する（図２８のステップＦ１５）。
【０１１４】
終了タスク管理部３０８は、割当終了信号を受信すると（図３０ＢのステップＨ３１）、第２連携タスク情報取得部３２１にタスクＩＤｘとタスククラスＩＤｘを渡す（図３０ＢのステップＨ３２）。続いて、終了タスク管理部３０８は次タスク検索要求信号を受信するまで待つ（図３０ＢのステップＨ３３）。
【０１１５】
第２連携タスク情報取得部３２１は、第２連携タスク取得部３２２からタスクＩＤｘとタスククラスＩＤｘを渡されると（図３１のステップＪ１）、連携タスク記憶部３１１を参照し、タスクＩＤｘと組みとなる連携タスク情報（連携タスク情報ｘ）を取得する（図３１のステップＪ２）。続いて、第２連携タスク情報取得部３２１は、第２連携タスク取得部３２２に、タスクＩＤｘとタスククラスＩＤｘと連携タスク情報ｘを渡す（図３１のステップＪ３）。
【０１１６】
第２連携タスク取得部３２２は、第２連携タスク情報取得部３２１からタスクＩＤｘとタスククラスＩＤｘと連携タスク情報ｘを渡されると（図３２ＡのステップＫ１）、初期化のために、優先度ｙを初期値０に設定する（図３２ＡのステップＫ２）。第２連携タスク取得部３２２は、連携タスク情報ｘを参照し（図３２ＡのステップＫ３）、優先度ｙと組みとなるタスク識別子とタスククラス識別子の組みが存在するか検索する（図３２ＡのステップＫ４）。続いて、第２連携タスク取得部３２２は、優先度ｙと組みとなるタスク識別子（タスクＩＤｙ）とタスククラス識別子（タスククラスＩＤｙ）が存在した場合、タスクＩＤｙとタスククラスＩＤｙを取得する（図３２ＡのステップＫ５）。第２連携タスク取得部３２２は、優先度ｙと組みとなるタスク識別子とタスククラス識別子が存在しない場合は、終了タスク管理部３０８に次タスク検索要求信号を送信する（図３２ＡのステップＫ６）。
【０１１７】
終了タスク管理部３０８は、次タスク検索要求信号を受信すると（図３０ＢのステップＨ３３）、優先度ｘに１を加えた値を新しい優先度ｘとして設定する（図３０ＡのステップＨ２７）。続いて、処理は再びステップＨ２１へ戻り、新しい優先度に基づいて連携タスクの検索が行われる。
【０１１８】
第２連携タスク取得部３２２は、タスクＩＤｙとタスククラスＩＤｙを取得した場合、タスク検索部２０３に、タスクＩＤｙを渡す（図３２ＡのステップＫ７）。続いて、第２連携タスク取得部３２２は、検索成功信号または検索失敗信号を受信するまで待つ（図３２ＢのステップＫ８）。
【０１１９】
タスク検索部３０３は、第２連携タスク取得部３２２からタスクＩＤｙを渡されると（図２１のステップＣ９と図２４のステップＣ１７）、起動タスク記憶部３１２を参照し（図２４のステップＣ１８）、タスクＩＤｙが登録されているか否かを検索する（図２４のステップＣ１９）。タスク検索部３０３は、該当タスクが登録されている場合、第２連携タスク取得部３２２に検索成功信号を送信する（図２４のステップＣ２０）。タスク検索部３０３は、該当タスクが登録されていない場合、第２連携タスク取得部３２２に、検索失敗信号を送信する（図２４のステップＣ２１）。
【０１２０】
第２連携タスク取得部３２２は、検索失敗信号を受信した場合（図３２ＢのステップＫ９）、優先度ｙに１を加えた値を新しい優先度ｙと設定する（図３２ＡのステップＫ１０）。続いて、処理は再びステップＫ３へ戻り、新しい優先度に基づいて連携タスクの検索が行われる。
第２連携タスク取得部３２２は、検索成功信号を受信した場合（図３２ＢのステップＫ９）、クラス比較部３０５にタスククラスＩＤｘとタスククラスＩＤｙを渡す（図３２ＢのステップＫ１１）。続いて、第２連携タスク取得部３２２は、割当許可信号または割当不許可信号を受信するまで待つ（図３２ＢのステップＫ１２）。
【０１２１】
クラス比較部３０５は、第２連携タスク取得部３２２からタスククラスＩＤｘとタスククラスＩＤｙを渡されると（図２５のステップＥ１４と図２７のステップＥ９）、クラス定義記憶部３１４を参照し、タスククラスＩＤｘのリソース割合値（リソース割合ｘ）とタスククラスＩＤｙのリソース割合値（リソース割合ｙ）を取得する（図２７のステップＥ１０）。続いて、クラス比較部３０５は、リソース割合ｘとリソース割合ｙを比較する（図２７のステップＥ１１）。クラス比較部３０５は、リソース割合ｘの方が大きい場合またはリソース割合ｘとリソース割合ｙが等しい場合は、第２連携タスク取得部３２２に、割当不許可信号を送信する（図２７のステップＥ１２）。クラス比較部３０５は、リソース割合ｙの方が大きい場合は、第２連携タスク取得部３２２に、割当許可信号を送信する（図２７のステップＥ１３）。
【０１２２】
第２連携タスク取得部３２２は、割当不許可信号を受信した場合（図３２ＢのステップＫ１２）、最終的に終了タスク管理部３０８に次タスク検索要求信号を送信する（図３２ＡのステップＫ６）。
【０１２３】
終了タスク管理部３０８は、次タスク検索要求信号を受信すると（図３０ＢのステップＨ３３）、優先度ｘに１を加えた値を新しい優先度ｘとして設定する（図３０ＡのステップＨ２７）。続いて、処理は再びステップＨ２１へ戻り、新しい優先度に基づいて連携タスクの検索が行われる。
【０１２４】
第２連携タスク取得部３２２は、割当許可信号を受信した場合、クラス再割当部３０６に、タスクＩＤｘとタスククラスＩＤｙを渡す（図３２ＢのステップＫ１３）。続いて、第２連携タスク取得部３２２は、割当終了信号を受信するまで待つ（図３２ＢのステップＫ１４）。
クラス再割当部３０６は、第２連携タスク取得部３２２からタスクＩＤｘとタスククラスＩＤｙを渡されると（図２８のステップＦ１９とステップＦ１６）、タスククラスＩＤｙに該当するタスククラスを、タスクＩＤｙに該当するタスクに割当て（図２８のステップＦ１７）、第２連携タスク取得部３２２に、割当終了信号を送信する（図２８のステップＦ１８）。
【０１２５】
第２連携タスク取得部３２２は、割当終了信号を受信すると（図３２ＢのステップＫ１４）、最終的に終了タスク管理部３０８に次タスク検索要求信号を送信する（図３２ＡのステップＫ６）。
【０１２６】
終了タスク管理部３０８は、次タスク検索要求信号を受信すると（図３０ＢのステップＨ３３）、優先度ｘに１を加えた値を新しい優先度ｘとして設定する（図３０ＡのステップＨ２７）。続いて、処理は再びステップＨ２１へ戻り、新しい優先度に基づいて連携タスクの検索が行われる。
【０１２７】
次に、本実施形態の効果について説明する。
本実施形態では、本発明の第２実施形態と同等の効果を得ることができる。
さらに、本実施形態では、新規に起動したタスクに割当てられるタスククラスが変更されないため、新規に起動したタスクと連携して動作するタスクが属するタスククラスに関わらず、新規に起動したタスクにデフォルトクラスを割当てることが出来るといった効果を得ることができる。
【０１２８】
次に、本発明の第１実施形態のデータ処理システムのリソースＱｏＳ制御システムの第１具体例を、図面を参照して説明する。本実施形態は、データ処理装置としてパーソナル・コンピュータを、記憶装置として磁気ディスク記憶装置を備えている。
【０１２９】
パーソナル・コンピュータは、連携タスク情報取得部、連携タスク取得部、タスク検索部、割当クラス決定部、クラス比較部、クラス再割当部として機能する中央演算装置を有している。
磁気ディスクは、各タスクのタスク識別子と連携タスク情報の組みと、現在実行可能状態のタスク群と、タスクに割当てるタスククラスのタスククラス識別子と、各タスククラス識別子とそのタスククラスが利用可能なリソース割合値の組みとが記憶される。つまり、磁気ディスクは、連携タスク記憶部１１１、レディキュー１１２、割当クラス記憶部１１３、クラス定義記憶部１１４として機能し、連携タスク記憶部とレディキューとクラス定義記憶部には図３４に示す内容が記憶されている。
【０１３０】
今、タスクＡが実行可能状態になったとする。連携タスク情報取得部は、タスクＡのタスク識別子（タスクＩＤＡ）とタスクＡが属するタスククラスのタスククラス識別子（タスククラスＩＤＡ）を取得する。続いて、連携タスク記憶部を参照し、タスクＩＤＡと組みとなる連携タスク情報Ａを取得する。続いて、連携タスク取得部にタスクＩＤＡとタスククラスＩＤＡと連携タスク情報Ａを渡す。
【０１３１】
連携タスク取得部は、割当クラス記憶部にＮＵＬＬ値を保存し、優先度を０に設定する。続いて、連携タスク情報Ａを参照し、優先度０と組みとなるタスク識別子とタスククラス識別子が存在するか否かを検索する。本実施形態では、連携タスク情報Ａに、優先度０と組みとなるタスク識別子（タスクＩＤ１０）とタスククラス識別子（タスククラスＩＤ１０）が存在するため、連携タスク取得部は、タスクＩＤ１０とタスククラスＩＤ１０を取得する。続いて、連携タスク取得部は、タスク検索部に、タスクＩＤ１０を渡し、検索成功信号または検索失敗信号を受信するまで待つ。
【０１３２】
タスク検索部は、レディキューを参照し、タスクＩＤ１０に該当するタスクが登録されているか否かを検索する。本実施形態では、レディキューに、タスクＩＤ１０に該当するタスクが登録されているため、タスク検索部は、タスクＩＤ１０が現在属しているタスククラスのタスククラスＩＤ１０を取得する。続いて、タスク検索部は、連携タスク取得部に、検索成功信号とタスククラスＩＤ１０を送信する。
【０１３３】
連携タスク取得部は、検索成功信号を受信すると、割当クラス記憶部を参照し、ＮＵＬＬ値が設定されているか否かを検索する。割当クラス記憶部には、ＮＵＬＬ値が設定されているので、連携タスク取得部は、割当クラス決定部に、タスククラスＩＤ１０とタスククラスＩＤＡとタスクＩＤＡを渡す。続いて、連携タスク取得部は、割当クラス決定信号を受信するまで待つ。
【０１３４】
割当クラス決定部は、クラス定義部を参照し、タスククラスＩＤ１０のＣＰＵ利用率（ＣＰＵ利用率１０＝９５％）とタスククラスＩＤＡのＣＰＵ利用率（ＣＰＵ利用率Ａ＝１０％）を取得する。続いて、ＣＰＵ利用率１０とＣＰＵ利用率Ａの値を比較する。本実施形態では、タスククラスＩＤ１０のＣＰＵ利用率の値の方が大きいため、割当クラス記憶部にタスククラスＩＤ１０を設定する。続いて、クラス再割当部にタスクＩＤＡとタスククラスＩＤ１０を渡す。続いて、割当クラス決定部は、割当終了信号を受信するまで待つ。
【０１３５】
クラス再割当部は、タスククラスＩＤ１０に該当するタスククラスを、タスクＩＤＡに該当するタスク（タスクＡ）に割当て、割当クラス決定部に、割当終了信号を送信する。
【０１３６】
割当クラス決定部は、割当終了信号を受信すると、連携タスク取得部に、割当クラス決定信号を送信する。
【０１３７】
連携タスク取得部は、割当クラス決定信号を受信すると、クラス比較部にタスククラスＩＤ１０とタスククラスＩＤ１０を渡す。続いて、連携タスク取得部は、割当許可信号または割当不許可信号を受信するまで待つ。
【０１３８】
クラス比較部は、クラス定義部を参照し、タスククラスＩＤ１０のＣＰＵ利用率（ＣＰＵ利用率１０＝９５％）とタスククラスＩＤ１０のＣＰＵ利用率（ＣＰＵ利用率１０＝９５％）を取得する。続いて、ＣＰＵ利用率１０とＣＰＵ利用率１０の値を比較する。本実施形態では、ＣＰＵ利用率が等しいので、クラス比較部は、連携タスク取得部に、割当不許可信号を送信する。
【０１３９】
連携タスク取得部は、割当不許可信号を受信すると、優先度に１を加え、優先度を１に設定する。続いて、連携タスク情報Ａを参照し、優先度１と組みとなるタスク識別子とタスククラス識別子が存在するか否かを検索する。本実施形態では、連携タスク情報Ａに、優先度１と組みとなるタスク識別子（タスクＩＤ１１）とタスククラス識別子（タスククラスＩＤ１１）が存在するため、連携タスク取得部は、タスクＩＤ１１とタスククラスＩＤ１１を取得する。続いて、連携タスク取得部は、タスク検索部に、タスクＩＤ１１を渡し、検索成功信号または検索失敗信号を受信するまで待つ。
【０１４０】
タスク検索部は、レディキューを参照し、タスクＩＤ１１に該当するタスクが登録されているか否かを検索する。本実施形態では、レディキューに、タスクＩＤ１１に該当するタスクが登録されているため、タスク検索部は、タスクＩＤ１１が現在属しているタスククラスのタスククラスＩＤ１１を取得する。続いて、タスク検索部は、連携タスク取得部に、検索成功信号とタスククラスＩＤ１１を送信する。
【０１４１】
連携タスク取得部は、検索成功信号を受信すると、割当クラス記憶部を参照し、ＮＵＬＬ値が設定されているか否かを検索する。割当クラス記憶部には、ＮＵＬＬ値が設定されていないので、割当クラス記憶部に設定されているタスククラスＩＤ１０を取得する。続いて、クラス比較部に、タスククラスＩＤ１０とタスククラスＩＤ１１を渡す。続いて、連携タスク取得部は、割当許可信号または割当不許可信号を受信するまで待つ。
【０１４２】
クラス比較部は、クラス定義部を参照し、タスククラスＩＤ１０のＣＰＵ利用率（ＣＰＵ利用率１０＝９５％）とタスククラスＩＤ１１のＣＰＵ利用率（ＣＰＵ利用率１１＝９０％）を取得する。続いて、ＣＰＵ利用率１０とＣＰＵ利用率１１の値を比較する。本実施形態では、ＣＰＵ利用率１０の値の方が大きいため、クラス比較部は、連携タスク取得部に、割当許可信号を送信する。
【０１４３】
連携タスク取得部は、割当許可信号を受信すると、クラス再割当部に、タスクＩＤ１１とタスククラスＩＤ１０を渡す。
【０１４４】
クラス再割当部は、タスククラスＩＤ１０に該当するタスククラスを、タスクＩＤ１１に該当するタスクに割当て、連携タスク取得部に、割当終了信号を送信する。
【０１４５】
連携タスク取得部は、割当終了信号を受信すると、優先度に１を加え、優先度を２に設定する。続いて、連携タスク情報Ａを参照し、優先度２と組みとなるタスク識別子とタスククラス識別子が存在するか否かを検索する。本実施形態では、連携タスク情報Ａに、優先度２と組みとなるタスク識別子（タスクＩＤ１２）とタスククラス識別子（タスククラスＩＤ１２）が存在するため、連携タスク取得部は、タスクＩＤ１２とタスククラスＩＤ１２を取得する。続いて、連携タスク取得部は、タスク検索部に、タスクＩＤ１２を渡し、検索成功信号または検索失敗信号を受信するまで待つ。
【０１４６】
タスク検索部は、レディキューを参照し、タスクＩＤ１２に該当するタスクが登録されているか否かを検索する。本実施形態では、レディキューに、タスクＩＤ１２に該当するタスクが登録されているため、タスク検索部は、タスクＩＤ１２が現在属しているタスククラスのタスククラスＩＤ１２を取得する。続いて、タスク検索部は、連携タスク取得部に、検索成功信号とタスククラスＩＤ１２を送信する。
【０１４７】
連携タスク取得部は、検索成功信号を受信すると、割当クラス記憶部を参照し、ＮＵＬＬ値が設定されているか否かを検索する。割当クラス記憶部には、ＮＵＬＬ値が設定されていないので、割当クラス記憶部に設定されているタスククラスＩＤ１０を取得する。続いて、クラス比較部に、タスククラスＩＤ１０とタスククラスＩＤ１２を渡す。続いて、連携タスク取得部は、割当許可信号または割当不許可信号を受信するまで待つ。
【０１４８】
クラス比較部は、クラス定義部を参照し、タスククラスＩＤ１０のＣＰＵ利用率（ＣＰＵ利用率１０＝９５％）とタスククラスＩＤ１２のＣＰＵ利用率（ＣＰＵ利用率１２＝８０％）を取得する。続いて、ＣＰＵ利用率１０とＣＰＵ利用率１２の値を比較する。本実施形態では、ＣＰＵ利用率１０の値の方が大きいため、クラス比較部は、連携タスク取得部に、割当許可信号を送信する。
【０１４９】
連携タスク取得部は、割当許可信号を受信すると、クラス再割当部に、タスクＩＤ１２とタスククラスＩＤ１０を渡す。
【０１５０】
クラス再割当部は、タスククラスＩＤ１０に該当するタスククラスを、タスクＩＤ１２に該当するタスクに割当て、連携タスク取得部に、割当終了信号を送信する。
【０１５１】
連携タスク取得部は、割当終了信号を受信すると、優先度に１を加え、優先度を３に設定する。続いて、連携タスク情報Ａを参照し、優先度３と組みとなるタスク識別子とタスククラス識別子が存在するか否かを検索する。本実施形態では、連携タスク情報Ａに、優先度３と組みとなるタスク識別子とタスククラス識別子は存在しないため、クラス再割当処理を終了する。
【０１５２】
次に、本発明の第１実施形態によるデータ処理システムのリソースＱｏＳ制御システムの第２具体例を、図３５を参照して説明する。本実施形態は、データ処理装置としてパーソナル・コンピュータを、記憶装置として磁気ディスク記憶装置を備えている。
【０１５３】
パーソナル・コンピュータは、連携タスク情報取得部、連携タスク取得部、タスク検索部、割当クラス決定部、クラス比較部、クラス再割当部として機能する中央演算装置を有している。
磁気ディスクは、各タスクのタスク識別子と連携タスク情報の組みと、現在実行可能状態のタスク群と、タスクに割当てるタスククラスのタスククラス識別子と、各タスククラス識別子とそのタスククラスが利用可能なリソース割合値の組みとが記憶される。つまり、磁気ディスクは、連携タスク記憶部１１１、レディキュー１１２、割当クラス記憶部１１３、クラス定義記憶部１１４として機能し、連携タスク記憶部とレディキューとクラス定義記憶部には図３５に示す内容が記憶されている。
【０１５４】
今、タスクＢが実行可能状態になったとする。
連携タスク情報取得部は、タスクＢのタスク識別子（タスクＩＤＢ）とタスクＢが属するタスククラスのタスククラス識別子（タスククラスＩＤＢ）を取得する。続いて、連携タスク記憶部を参照し、タスクＩＤＢと組みとなる連携タスク情報Ｂを取得する。続いて、連携タスク取得部にタスクＩＤＢとタスククラスＩＤＢと連携タスク情報Ｂを渡す。
【０１５５】
連携タスク取得部は、割当クラス記憶部にＮＵＬＬ値を保存し、優先度を０に設定する。続いて、連携タスク情報Ｂを参照し、優先度０と組みとなるタスク識別子とタスククラス識別子が存在するか否かを検索する。本実施形態では、連携タスク情報Ｂに、優先度０と組みとなるタスク識別子（タスクＩＤ１３）とタスククラス識別子（タスククラスＩＤ１３）が存在するため、連携タスク取得部は、タスクＩＤ１３とタスククラスＩＤ１３を取得する。続いて、連携タスク取得部は、タスク検索部に、タスクＩＤ１３を渡し、検索成功信号または検索失敗信号を受信するまで待つ。
【０１５６】
タスク検索部は、レディキューを参照し、タスクＩＤ１３に該当するタスクが登録されているか否かを検索する。本実施形態では、レディキューに、タスクＩＤ１３に該当するタスクが登録されているため、タスク検索部は、タスクＩＤ１３が現在属しているタスククラスのタスククラスＩＤ１３を取得する。続いて、タスク検索部は、連携タスク取得部に、検索成功信号とタスククラスＩＤ１３を送信する。
【０１５７】
連携タスク取得部は、検索成功信号を受信すると、割当クラス記憶部を参照し、ＮＵＬＬ値が設定されているか否かを検索する。割当クラス記憶部には、ＮＵＬＬ値が設定されているので、連携タスク取得部は、割当クラス決定部に、タスククラスＩＤ１３とタスククラスＩＤＢとタスクＩＤＢを渡す。続いて、連携タスク取得部は、割当クラス決定信号を受信するまで待つ。
【０１５８】
割当クラス決定部は、クラス定義部を参照し、タスククラスＩＤ１３のメモリ利用率（メモリ利用率１３＝７０％）とタスククラスＩＤＢのメモリ利用率（メモリ利用率Ｂ＝７５％）を取得する。続いて、メモリ利用率１３とメモリ利用率Ｂの値を比較する。本実施形態では、メモリ利用率Ｂの値の方が大きいため、割当クラス記憶部にタスククラスＩＤＢを設定する。続いて、連携タスク取得部に、割当クラス決定信号を送信する。
【０１５９】
連携タスク取得部は、割当クラス決定信号を受信すると、クラス比較部にタスククラスＩＤＢとタスククラスＩＤ１３を渡す。続いて、連携タスク取得部は、割当許可信号または割当不許可信号を受信するまで待つ。
クラス比較部は、クラス定義部を参照し、タスククラスＩＤＢのメモリ利用率（メモリ利用率Ｂ＝７５％）とタスククラスＩＤ１３のメモリ利用率（メモリ利用率１３＝７０％）を取得する。続いて、メモリ利用率Ｂとメモリ利用率１３の値を比較する。本実施形態では、メモリ利用率Ｂの値の方が大きいので、クラス比較部は、連携タスク取得部に、割当許可信号を送信する。
【０１６０】
連携タスク取得部は、割当許可信号を受信すると、クラス再割当部に、タスクＩＤ１３とタスククラスＩＤＢを渡す。続いて、連携タスク取得部は、割当終了信号を受信するまで待つ。
【０１６１】
クラス再割当部は、タスククラスＩＤＢに該当するタスククラスを、タスクＩＤ１３に該当するタスクに割当て、連携タスク取得部に、割当終了信号を送信する。
【０１６２】
連携タスク取得部は、割当終了信号を受信すると、優先度に１を加え、優先度を１に設定する。続いて、連携タスク情報Ｂを参照し、優先度１と組みとなるタスク識別子とタスククラス識別子が存在するか否かを検索する。本実施形態では、連携タスク情報Ｂに、優先度１と組みとなるタスク識別子（タスクＩＤ１４）とタスククラス識別子（タスククラスＩＤ１４）が存在するため、連携タスク取得部は、タスクＩＤ１４とタスククラスＩＤ１４を取得する。続いて、連携タスク取得部は、タスク検索部に、タスクＩＤ１４を渡し、検索成功信号または検索失敗信号を受信するまで待つ。
【０１６３】
タスク検索部は、レディキューを参照し、タスクＩＤ１４に該当するタスクが登録されているか否かを検索する。本実施形態では、レディキューに、タスクＩＤ１４に該当するタスクが登録されているため、タスク検索部は、タスクＩＤ１４が現在属しているタスククラスのタスククラスＩＤ１１を取得する。続いて、タスク検索部は、連携タスク取得部に、検索成功信号とタスククラスＩＤ１１を送信する。
【０１６４】
連携タスク取得部は、検索成功信号を受信すると、割当クラス記憶部を参照し、ＮＵＬＬ値が設定されているか否かを検索する。割当クラス記憶部には、ＮＵＬＬ値が設定されていないので、割当クラス記憶部に設定されているタスククラスＩＤＢを取得する。続いて、クラス比較部に、タスククラスＩＤＢとタスククラスＩＤ１１を渡す。続いて、連携タスク取得部は、割当許可信号または割当不許可信号を受信するまで待つ。
【０１６５】
クラス比較部は、クラス定義部を参照し、タスククラスＩＤＢのメモリ利用率（メモリ利用率Ｂ＝７５％）とタスククラスＩＤ１１のメモリ利用率（メモリ利用率１１＝９０％）を取得する。続いて、メモリ利用率Ｂとメモリ利用率１１の値を比較する。本実施形態では、メモリ利用率１１の値の方が大きいため、クラス比較部は、連携タスク取得部に、割当不許可信号を送信する。
【０１６６】
連携タスク取得部は、割当不許可信号を受信すると、優先度に１を加え、優先度を２に設定する。続いて、連携タスク情報Ｂを参照し、優先度２と組みとなるタスク識別子とタスククラス識別子が存在するか否かを検索する。本実施形態では、連携タスク情報Ｂに、優先度２と組みとなるタスク識別子（タスクＩＤ１５）とタスククラス識別子（タスククラスＩＤ１５）が存在するため、連携タスク取得部は、タスクＩＤ１５とタスククラスＩＤ１５を取得する。続いて、連携タスク取得部は、タスク検索部に、タスクＩＤ１５を渡し、検索成功信号または検索失敗信号を受信するまで待つ。
【０１６７】
タスク検索部は、レディキューを参照し、タスクＩＤ１５に該当するタスクが登録されているか否かを検索する。本実施形態では、レディキューに、タスクＩＤ１５に該当するタスクが登録されているため、タスク検索部は、タスクＩＤ１５が現在属しているタスククラスのタスククラスＩＤ１５を取得する。続いて、タスク検索部は、連携タスク取得部に、検索成功信号とタスククラスＩＤ１５を送信する。
【０１６８】
連携タスク取得部は、検索成功信号を受信すると、割当クラス記憶部を参照し、ＮＵＬＬ値が設定されているか否かを検索する。割当クラス記憶部には、ＮＵＬＬ値が設定されていないので、割当クラス記憶部に設定されているタスククラスＩＤＢを取得する。続いて、クラス比較部に、タスククラスＩＤＢとタスククラスＩＤ１５を渡す。続いて、連携タスク取得部は、割当許可信号または割当不許可信号を受信するまで待つ。
【０１６９】
クラス比較部は、クラス定義部を参照し、タスククラスＩＤＢのメモリ利用率（メモリ利用率Ｂ＝７５％）とタスククラスＩＤ１５のメモリ利用率（メモリ利用率１５＝５０％）を取得する。続いて、メモリ利用率Ｂとメモリ利用率１５の値を比較する。本実施形態では、メモリ利用率Ｂの値の方が大きいため、クラス比較部は、連携タスク取得部に、割当許可信号を送信する。
連携タスク取得部は、割当許可信号を受信すると、クラス再割当部に、タスクＩＤ１５とタスククラスＩＤＢを渡す。続いて、連携タスク取得部は、割当終了信号を受信するまで待つ。
【０１７０】
クラス再割当部は、タスククラスＩＤＢに該当するタスククラスを、タスクＩＤ１５に該当するタスクに割当て、連携タスク取得部に、割当終了信号を送信する。
【０１７１】
連携タスク取得部は、割当終了信号を受信すると、優先度に１を加え、優先度を３に設定する。続いて、連携タスク情報Ｂを参照し、優先度３と組みとなるタスク識別子とタスククラス識別子が存在するか否かを検索する。本実施形態では、連携タスク情報Ｂに、優先度３と組みとなるタスク識別子とタスククラス識別子は存在しないため、クラス再割当処理を終了する。
【０１７２】
次に、本発明の第１実施形態によるデータ処理システムのリソースＱｏＳ制御システムの第３具体例を、図３６を参照して説明する。本実施形態では、データ処理装置としてパーソナル・コンピュータを、記憶装置として磁気ディスク記憶装置を備えている。
【０１７３】
パーソナル・コンピュータは、連携タスク情報取得部、連携タスク取得部、タスク検索部、割当クラス決定部、クラス比較部、クラス再割当部として機能する中央演算装置を有している。
磁気ディスクは、各タスクのタスク識別子と連携タスク情報の組みと、現在実行可能状態のタスク群と、タスクに割当てるタスククラスのタスククラス識別子と、各タスククラス識別子とそのタスククラスが利用可能なリソース割合値の組みとが記憶される。つまり、磁気ディスクは、連携タスク記憶部１１１、レディキュー１１２、割当クラス記憶部１１３、クラス定義記憶部１１４として機能し、連携タスク記憶部とレディキューとクラス定義記憶部には図３６に示す内容が記憶されている。
【０１７４】
今、タスクＣが実行可能状態になったとする。
連携タスク情報取得部は、タスクＣのタスク識別子（タスクＩＤＣ）とタスクＣが属するタスククラスのタスククラス識別子（タスククラスＩＤＣ）を取得する。続いて、連携タスク記憶部を参照し、タスクＩＤＣと組みとなる連携タスク情報Ｃを取得する。続いて、連携タスク取得部にタスクＩＤＣとタスククラスＩＤＣと連携タスク情報Ｃを渡す。
【０１７５】
連携タスク取得部は、割当クラス記憶部にＮＵＬＬ値を保存し、優先度を０に設定する。続いて、連携タスク情報Ｃを参照し、優先度０と組みとなるタスク識別子とタスククラス識別子が存在するか否かを検索する。本実施形態では、連携タスク情報Ｃに、優先度０と組みとなるタスク識別子（タスクＩＤ１５）とタスククラス識別子（タスククラスＩＤ１５）が存在するため、連携タスク取得部は、タスクＩＤ１５とタスククラスＩＤ１５を取得する。続いて、連携タスク取得部は、タスク検索部に、タスクＩＤ１５を渡し、検索成功信号または検索失敗信号を受信するまで待つ。
【０１７６】
タスク検索部は、レディキューを参照し、タスクＩＤ１５に該当するタスクが登録されているか否かを検索する。本実施形態では、レディキューに、タスクＩＤ１５に該当するタスクが登録されているため、タスク検索部は、タスクＩＤ１５が現在属しているタスククラスのタスククラスＩＤ１１を取得する。続いて、タスク検索部は、連携タスク取得部に、検索成功信号とタスククラスＩＤ１１を送信する。
【０１７７】
連携タスク取得部は、検索成功信号を受信すると、割当クラス記憶部を参照し、ＮＵＬＬ値が設定されているか否かを検索する。割当クラス記憶部には、ＮＵＬＬ値が設定されているので、連携タスク取得部は、割当クラス決定部に、タスククラスＩＤ１５とタスククラスＩＤＣとタスクＩＤＣを渡す。続いて、連携タスク取得部は、割当クラス決定信号を受信するまで待つ。
【０１７８】
割当クラス決定部は、クラス定義部を参照し、タスククラスＩＤ１５のＮＷ帯域利用率（ＮＷ帯域利用率１５＝５０％）とタスククラスＩＤＣのＮＷ帯域利用率（ＮＷ帯域利用率Ｃ＝６０％）を取得する。続いて、ＮＷ帯域利用率１５とＮＷ帯域利用率Ｃの値を比較する。本実施形態では、ＮＷ帯域利用率Ｃの値の方が大きいため、割当クラス記憶部にタスククラスＩＤＣを設定する。続いて、連携タスク取得部に、割当クラス決定信号を送信する。
【０１７９】
連携タスク取得部は、割当クラス決定信号を受信すると、クラス比較部にタスククラスＩＤＣとタスククラスＩＤ１１を渡す。続いて、連携タスク取得部は、割当許可信号または割当不許可信号を受信するまで待つ。
【０１８０】
クラス比較部は、クラス定義部を参照し、タスククラスＩＤＣのＮＷ帯域利用率（ＮＷ帯域利用率Ｃ＝６０％）とタスククラスＩＤ１１のＮＷ帯域利用率（ＮＷ帯域利用率１１＝９０％）を取得する。続いて、ＮＷ帯域利用率ＣとＮＷ帯域利用率１１の値を比較する。本実施形態では、ＮＷ帯域利用率１１の値の方が大きいため、クラス比較部は、連携タスク取得部に、割当不許可信号を送信する。
【０１８１】
連携タスク取得部は、割当不許可信号を受信すると、優先度に１を加え、優先度を１に設定する。続いて、連携タスク情報Ｃを参照し、優先度１と組みとなるタスク識別子とタスククラス識別子が存在するか否かを検索する。本実施形態では、連携タスク情報Ｃに、優先度１と組みとなるタスク識別子（タスクＩＤ１６）とタスククラス識別子（タスククラスＩＤ１６）が存在するため、連携タスク取得部は、タスクＩＤ１６とタスククラスＩＤ１６を取得する。続いて、連携タスク取得部は、タスク検索部に、タスクＩＤ１６を渡し、検索成功信号または検索失敗信号を受信するまで待つ。
【０１８２】
タスク検索部は、レディキューを参照し、タスクＩＤ１４に該当するタスクが登録されているか否かを検索する。本実施形態では、レディキューに、タスクＩＤ１６に該当するタスクが登録されていないため、検索失敗信号を送信する。
【０１８３】
連携タスク取得部は、検索失敗信号を受信すると、優先度に１を加え、優先度を２に設定する。続いて、連携タスク情報Ｃを参照し、優先度２と組みとなるタスク識別子とタスククラス識別子が存在するか否かを検索する。本実施形態では、連携タスク情報Ｃに、優先度２と組みとなるタスク識別子（タスクＩＤ１７）とタスククラス識別子（タスククラスＩＤ１７）が存在するため、連携タスク取得部は、タスクＩＤ１７とタスククラスＩＤ１７を取得する。続いて、連携タスク取得部は、タスク検索部に、タスクＩＤ１７を渡し、検索成功信号または検索失敗信号を受信するまで待つ。
【０１８４】
タスク検索部は、レディキューを参照し、タスクＩＤ１７に該当するタスクが登録されているか否かを検索する。本実施形態では、レディキューに、タスクＩＤ１７に該当するタスクが登録されているため、タスク検索部は、タスクＩＤ１７が現在属しているタスククラスのタスククラスＩＤ１７を取得する。続いて、タスク検索部は、連携タスク取得部に、検索成功信号とタスククラスＩＤ１７を送信する。
【０１８５】
連携タスク取得部は、検索成功信号を受信すると、割当クラス記憶部を参照し、ＮＵＬＬ値が設定されているか否かを検索する。割当クラス記憶部には、ＮＵＬＬ値が設定されていないので、割当クラス記憶部に設定されているタスククラスＩＤＣを取得する。続いて、クラス比較部に、タスククラスＩＤＣとタスククラスＩＤ１７を渡す。続いて、連携タスク取得部は、割当許可信号または割当不許可信号を受信するまで待つ。
【０１８６】
クラス比較部は、クラス定義部を参照し、タスククラスＩＤＣのＮＷ帯域利用率（ＮＷ帯域利用率Ｃ＝６０％）とタスククラスＩＤ１７のＮＷ帯域利用率（ＮＷ帯域利用率１７＝３０％）を取得する。続いて、ＮＷ帯域利用率ＣとＮＷ帯域利用率１７の値を比較する。本実施形態では、ＮＷ帯域利用率Ｃの値の方が大きいため、クラス比較部は、連携タスク取得部に、割当許可信号を送信する。
【０１８７】
連携タスク取得部は、割当許可信号を受信すると、クラス再割当部に、タスクＩＤ１７とタスククラスＩＤＣを渡す。続いて、連携タスク取得部は、割当終了信号を受信するまで待つ。
【０１８８】
クラス再割当部は、タスククラスＩＤＣに該当するタスククラスを、タスクＩＤ１７に該当するタスクに割当て、連携タスク取得部に、割当終了信号を送信する。
【０１８９】
連携タスク取得部は、割当終了信号を受信すると、優先度に１を加え、優先度を３に設定する。続いて、連携タスク情報Ｃを参照し、優先度３と組みとなるタスク識別子とタスククラス識別子が存在するか否かを検索する。本実施形態では、連携タスク情報Ｃに、優先度３と組みとなるタスク識別子とタスククラス識別子は存在しないため、クラス再割当処理を終了する。
【０１９０】
次に、本発明の第２実施形態によるデータ処理システムのリソースＱｏＳ制御システムの第１具体例を、図３７，図３８を参照して説明する。本具体例は、データ処理装置としてパーソナル・コンピュータを、記憶装置として磁気ディスク記憶装置を備えている。
【０１９１】
パーソナル・コンピュータは、連携タスク情報取得部、連携タスク取得部、タスク検索部、割当クラス決定部、クラス比較部、クラス再割当部、起動タスク管理部、終了タスク管理部、クラス割当管理部として機能する中央演算装置を有している。
磁気ディスクは、各タスクのタスク識別子と連携タスク情報の組みと、現在起動状態のタスク群と、タスクに割当てるタスククラスのタスククラス識別子と、各タスククラス識別子とそのタスククラスが利用可能なリソース割合値の組みと、各タスククラス識別子とそのタスククラス識別子に該当するタスククラスに属している起動状態のタスクのタスク識別子と、各タスク識別子とそのタスク識別子に該当するタスクに対して起動直後に割当てられるタスククラスのタスククラス識別子が記憶される。つまり、磁気ディスクは、連携タスク記憶部２１１、起動タスク記憶部２１２、割当クラス記憶部２１３、クラス定義記憶部２１４、クラス割当記憶部２１５、デフォルトクラス割当記憶部２１６として機能し、連携タスク記憶部と起動タスク記憶部とクラス定義記憶部とクラス割当記憶部には図３７と図３８に示す内容が記憶されている。
【０１９２】
本実施形態では、タスクリストはリスト構造によって実現されており、各リストはタスククラス識別子と次リストへのポインタを要素として持つ。また、タスクリストには、先頭のリストを示すポインタ（ＨＥＡＤポインタ）と最後のリストを示すポインタ（ＴＡＩＬポインタ）が記憶されており、ＨＥＡＤポインタとＴＡＩＬポインタには、初期値としてＮＵＬＬポインタが設定されている。
【０１９３】
今、タスクＤが起動したとする。
起動タスク管理部は、タスクＤのタスク識別子（タスクＩＤＤ）とタスクＤが属するタスククラスのタスククラス識別子（タスククラスＩＤＤ）を取得し、起動タスク記憶部にタスクＩＤＤを書き込む。続いて、クラス割当管理部に、タスククラスＩＤＤとタスクＩＤＤとタスク追加信号を渡し、クラス割当記憶更新信号を受信するまで待つ。
【０１９４】
クラス割当管理部は、タスク追加信号を受信すると、クラス割当記憶部からタスククラスＩＤＤと組みとなるタスクリスト（タスクリストＤ）を参照する。
まず、クラス割当管理部は、タスクリストＤのＴＡＩＬポインタの内容を判別する。タスクリストＤのＴＡＩＬポインタはＮＵＬＬポインタが設定されているため、クラス割当管理部は、ＴＡＩＬポインタとＨＥＡＤポインタに、タスクＩＤＤを要素として持つリスト（リストＤ）を示されるように設定し、リストＤの要素のポインタにはＮＵＬＬポインタを設定する。続いて、クラス割当管理部は、起動タスク管理部に、クラス割当記憶更新信号を送信する。
【０１９５】
起動タスク管理部は、クラス割当記憶更新信号を受信すると、連携タスク情報取得部に、タスクＩＤＤとタスククラスＩＤＤとタスク起動信号を渡す。
【０１９６】
連携タスク情報取得部は、連携タスク記憶部を参照し、タスクＩＤＤと組みとなる連携タスク情報（連携タスク情報Ｄ）を取得する。続いて、連携タスク情報取得部は、連携タスク取得部に、タスクＩＤＤとタスククラスＩＤＤと連携タスク情報Ｄとタスク起動信号を渡す。連携タスク取得部は、初期化のために、割当クラス記憶部にＮＵＬＬ値を設定し、優先度を初期値０に設定する。その後、連携タスク取得部は、連携タスク情報Ｄを参照し、優先度０と組みとなるタスク識別子とタスククラス識別子の組みが存在するか検索する。本実施形態では、優先度０と組みとなるタスク識別子（タスクＩＤ２１）とタスククラス識別子（タスククラスＩＤ２１）が存在するため、連携タスク取得部は、タスクＩＤ２１とタスククラスＩＤ２１を取得する。続いて、連携タスク取得部は、タスク検索部に、タスクＩＤ２１を渡し、検索成功信号または検索失敗信号を受信するまで待つ。
【０１９７】
タスク検索部は、起動タスク記憶部を参照し、タスクＩＤ２１が登録されているか否かを検索する。本実施形態では、起動タスク記憶部にタスクＩＤ２１が登録されているため、タスクＩＤ２１に該当するタスク（タスク２１）から、タスク２１が属するタスククラスのタスククラス識別子（タスククラスＩＤ２１）を取得し、連携タスク取得部に検索成功信号とタスククラスＩＤ２１を渡す。
【０１９８】
連携タスク取得部は、検索成功信号を受信すると、割当クラス記憶部を参照し、ＮＵＬＬ値が設定されているか否かを検索する。割当クラス記憶部には、ＮＵＬＬ値が設定されているので、連携タスク取得部は、割当クラス決定部に、タスククラスＩＤ２１とタスククラスＩＤＤとタスクＩＤＤを渡す。続いて、連携タスク取得部は、割当クラス決定信号を受信するまで待つ。
【０１９９】
割当クラス決定部は、クラス定義部を参照し、タスククラスＩＤ２１のＣＰＵ利用率（ＣＰＵ利用率２１＝９０％）とタスククラスＩＤＤのＣＰＵ利用率（ＣＰＵ利用率Ｄ＝９５％）を取得する。続いて、ＣＰＵ利用率２１とＣＰＵ利用率Ｄの値を比較する。本実施形態では、ＣＰＵ利用率Ｄの値の方が大きいため、割当クラス記憶部にタスククラスＩＤＤを設定する。続いて、割当クラス決定部は、連携タスク取得部に、割当クラス決定信号を送信する。
【０２００】
連携タスク取得部は、割当クラス決定信号を受信すると、クラス比較部に、タスククラスＩＤ２１とタスククラスＩＤＤを渡す。続いて、連携タスク取得部は、割当許可信号または割当不許可信号を受信するまで待つ。
【０２０１】
クラス比較部は、連携タスク取得部からタスククラスＩＤ２１とタスククラスＩＤＤを渡されると、クラス定義記憶部を参照し、タスククラスＩＤ２１のＣＰＵ利用率（ＣＰＵ利用率２１＝９０％）とタスククラスＩＤＤのＣＰＵ利用率（ＣＰＵ利用率Ｄ＝９５％）を取得する。続いて、クラス比較部は、ＣＰＵ利用率２１とＣＰＵ利用率Ｄを比較する。本実施形態では、ＣＰＵ利用率Ｄの値の方が大きいため、クラス比較部は、連携タスク取得部に、割当許可信号を送信する。
【０２０２】
連携タスク取得部は、割当許可信号を受信すると、クラス割当管理部に、タスククラスＩＤ２１とタスククラスＩＤＤとタスクＩＤ２１とタスククラス変更信号を渡し、クラス割当記憶更新信号を受信するまで待つ。
【０２０３】
クラス割当管理部は、タスククラス変更信号を受信すると、クラス割当記憶部からタスククラスＩＤ２１と組みとなるタスクリスト（タスクリスト２１）を参照する。クラス割当管理部は、タスクリスト２１のＨＥＡＤポインタの内容を判定する。タスクリスト２１のＨＥＡＤポインタはタスクＩＤ２１を要素として持つリスト（リスト２１）を示しているため、クラス割当管理部は、ＨＥＡＤポインタにリスト２１の要素のポインタと同じ内容に設定する。つまり、ＨＥＡＤポインタにはタスクＩＤ２２を要素として持つリスト（リスト２２）を示されるように設定する。
【０２０４】
次に、クラス割当管理部は、タスククラスＩＤＤと組みとなるタスクリスト（タスクリストＤ）を参照する。クラス割当管理部は、タスクリストＤのＴＡＩＬポインタの内容を判定する。タスクリストＤのＴＡＩＬポインタは、リストＤを示しているため、クラス割当管理部は、ＴＡＩＬポインタとリストＤの要素のポインタにリスト２１を示されるように設定する。続いて、リスト２１の要素のポインタには、ＮＵＬＬポインタを設定する。続いて、クラス割当管理部は、連携タスク取得部に、クラス割当記憶更新信号を送信する。
【０２０５】
連携タスク取得部は、クラス割当記憶更新信号を受信すると、クラス再割当部に、タスクＩＤ２１とタスククラスＩＤＤを渡す。続いて、連携タスク取得部は、割当終了信号を受信するまで待つ。
【０２０６】
クラス再割当部は、タスククラスＩＤＤに該当するタスククラスを、タスクＩＤ２１に該当するタスクに割当て、連携タスク取得部に、割当終了信号を送信する。
【０２０７】
連携タスク取得部は、割当終了信号を受信すると、優先度に１を加え、優先度を１に設定する。続いて、連携タスク取得部は、連携タスク情報Ｄを参照し、優先度１と組みとなるタスク識別子とタスククラス識別子の組みが存在するか検索する。本実施形態では、優先度１と組みとなるタスク識別子（タスクＩＤ２２）とタスククラス識別子（タスククラスＩＤ２２）が存在するため、連携タスク取得部は、タスクＩＤ２２とタスククラスＩＤ２２を取得する。続いて、連携タスク取得部は、タスク検索部に、タスクＩＤ２２を渡し、検索成功信号または検索失敗信号を受信するまで待つ。
【０２０８】
タスク検索部は、起動タスク記憶部を参照し、タスクＩＤ２２が登録されているか否かを検索する。本実施形態では、起動タスク記憶部にタスクＩＤ２２が登録されているため、タスクＩＤ２２に該当するタスク（タスク２２）から、タスク２２が属するタスククラスのタスククラス識別子（タスククラスＩＤ２１）を取得し、連携タスク取得部に検索成功信号とタスククラスＩＤ２１を渡す。
【０２０９】
連携タスク取得部は、検索成功信号を受信すると、割当クラス記憶部を参照し、ＮＵＬＬ値が設定されているか否かを検索する。割当クラス記憶部には、ＮＵＬＬ値が設定されていないので、割当クラス記憶部に設定されているタスククラスＩＤＤを取得する。続いて、クラス比較部に、タスククラスＩＤ２１とタスククラスＩＤＤを渡す。続いて、連携タスク取得部は、割当許可信号または割当不許可信号を受信するまで待つ。
【０２１０】
クラス比較部は、連携タスク取得部からタスククラスＩＤ２１とタスククラスＩＤＤを渡されると、クラス定義記憶部を参照し、タスククラスＩＤ２１のＣＰＵ利用率（ＣＰＵ利用率２１＝９０％）とタスククラスＩＤＤのＣＰＵ利用率（ＣＰＵ利用率Ｄ＝９５％）を取得する。続いて、クラス比較部は、ＣＰＵ利用率２１とＣＰＵ利用率Ｄを比較する。本実施形態では、ＣＰＵ利用率Ｄの値の方が大きいため、クラス比較部は、連携タスク取得部に、割当許可信号を送信する。
【０２１１】
連携タスク取得部は、割当許可信号を受信すると、クラス割当管理部に、タスククラスＩＤ２１とタスククラスＩＤＤとタスクＩＤ２１とタスククラス変更信号を渡し、クラス割当記憶更新信号を受信するまで待つ。
【０２１２】
クラス割当管理部は、タスククラス変更信号を受信すると、クラス割当記憶部からタスククラスＩＤ２１と組みとなるタスクリスト（タスクリスト２１）を参照する。クラス割当管理部は、タスクリスト２１のＨＥＡＤポインタの内容を判定する。タスクリスト２１のＨＥＡＤポインタはタスクＩＤ２２を要素として持つリスト（リスト２２）を示しているため、クラス割当管理部は、ＨＥＡＤポインタにリスト２２の要素のポインタと同じ内容に設定する。つまり、ＨＥＡＤポインタにはＮＵＬＬポインタを設定する。クラス割当管理部は、ＨＥＡＤポインタに、ＮＵＬＬポインタを設定したため、ＴＡＩＬポインタにもＮＵＬＬポインタを設定する。
次に、クラス割当管理部は、タスククラスＩＤＤと組みとなるタスクリスト（タスクリストＤ）を参照する。クラス割当管理部は、タスクリストＤのＴＡＩＬポインタの内容を判定する。タスクリストＤのＴＡＩＬポインタは、リスト２１を示しているため、クラス割当管理部は、ＴＡＩＬポインタとリスト２１の要素のポインタにリスト２２を示されるように設定する。続いて、リスト２２の要素のポインタには、ＮＵＬＬポインタを設定する。続いて、クラス割当管理部は、連携タスク取得部に、クラス割当記憶更新信号を送信する。
【０２１３】
連携タスク取得部は、クラス割当記憶更新信号を受信すると、クラス再割当部に、タスクＩＤ２２とタスククラスＩＤＤを渡す。続いて、連携タスク取得部は、割当終了信号を受信するまで待つ。
【０２１４】
クラス再割当部は、タスククラスＩＤＤに該当するタスククラスを、タスクＩＤ２２に該当するタスクに割当て、連携タスク取得部に、割当終了信号を送信する。
【０２１５】
連携タスク取得部は、割当終了信号を受信すると、優先度に１を加え、優先度を２に設定する。続いて、連携タスク情報Ｄを参照し、優先度２と組みとなるタスク識別子とタスククラス識別子が存在するか否かを検索する。本実施形態では、連携タスク情報Ｄに、優先度２と組みとなるタスク識別子とタスククラス識別子は存在せず連携タスク情報取得部からタスク起動信号を受信しているので、クラス再割当処理を終了する。
【０２１６】
次に、タスクＤが終了したとする。
【０２１７】
終了タスク管理部は、タスクＤのタスク識別子（タスクＩＤＤ）とタスクＤが属するタスククラスのタスククラス識別子（タスククラスＩＤＤ）を取得し、起動タスク記憶部からタスクＩＤＤを削除する。続いて、終了タスク管理部は、クラス割当管理部に、タスククラスＩＤＤとタスクＩＤＤとタスク削除信号を渡し、クラス割当記憶更新信号を受信するまで待つ。
【０２１８】
クラス割当管理部は、タスク削除信号を受信すると、クラス割当記憶部を参照し、タスククラスＩＤＤと組みとなるタスクリスト（タスクリストＤ）を取得する。クラス割当管理部は、タスクリストＤのＨＥＡＤポインタの内容を判定する。タスクリストＤのＨＥＡＤポインタは、リストＤを示しているため、クラス割当管理部は、ＨＥＡＤポインタにリストＤの要素のポインタと同じ内容に設定する。つまり、ＨＥＡＤポインタには、リスト２１を示されるように設定する。続いて、クラス割当管理部は、終了タスク管理部に、クラス割当記憶更新信号を送信する。
【０２１９】
終了タスク管理部は、クラス割当記憶更新信号を受信すると、デフォルトクラス割当記憶部を参照し、タスククラスＩＤＤと組みとなるタスククラスＩＤＤを取得する。終了タスク管理部は、クラス割当記憶部からタスククラスＩＤＤと組みとなるタスクリストＤを参照する。終了タスク管理部は、タスクリストＤにタスク識別子が登録されているか否かを検索する。本実施形態では、タスクリストＤにタスク識別子が登録されているため、終了タスク管理部は、タスクリストＤを取得する。終了タスク管理部は、タスクリストＤのＨＥＡＤポインタが示すリスト２１を参照し、リスト２１の要素のタスクＩＤ２１を処理対象とする。終了タスク管理部は、デフォルトクラス割当記憶部を参照し、タスクＩＤ２１と組みとなるタスククラス識別子（タスククラスＩＤ２１）を取得し、クラス割当管理部に、タスククラスＩＤＤとタスククラスＩＤ２１とタスクＩＤ２１とタスククラス変更信号を渡し、クラス割当記憶更新信号を受信するまで待つ。
【０２２０】
クラス割当管理部は、タスククラス変更信号を受信すると、クラス割当記憶部からタスククラスＩＤＤと組みとなるタスクリスト（タスクリストＤ）を参照する。クラス割当管理部は、タスクリストＤのＨＥＡＤポインタの内容を判定する。タスクリストＤのＨＥＡＤポインタは、リスト２１を示されるように設定されているため、クラス割当管理部は、ＨＥＡＤポインタにリスト２１の要素のポインタと同じ内容に設定する。つまり、ＨＥＡＤポインタには、リスト２２を示されるように設定する。
次に、クラス割当管理部は、タスククラスＩＤ２１と組みとなるタスクリスト（タスクリスト２１）を参照する。クラス割当管理部は、タスクリスト２１のＴＡＩＬポインタの内容を判定する。タスクリスト２１のＴＡＩＬポインタは、ＮＵＬＬポインタが設定されているため、クラス割当管理部は、ＴＡＩＬポインタとＨＥＡＤポインタに、リスト２１を示されるように設定する。続いて、リスト２１の要素のポインタには、ＮＵＬＬポインタを設定する。続いて、クラス割当管理部は、終了タスク管理部に、クラス割当記憶更新信号を送信する。
【０２２１】
終了タスク管理部は、クラス割当記憶更新信号を受信すると、クラス再割当部に、タスクＩＤ２１とタスククラスＩＤ２１を渡し、割当終了信号を受信するまで待つ。
【０２２２】
クラス再割当部は、タスククラスＩＤ２１に該当するタスククラスを、タスクＩＤ２１に該当するタスクに割当て、終了タスク管理部に、割当終了信号を送信する。
【０２２３】
終了タスク管理部は、割当終了信号を受信すると、連携タスク情報取得部に、タスクＩＤ２１とタスククラスＩＤ２１とタスク終了信号を渡し、次タスク検索要求信号を受信するまで待つ。
【０２２４】
連携タスク情報取得部は、連携タスク記憶部を参照し、タスクＩＤ２１と組みとなる連携タスク情報（連携タスク情報２１）を取得する。続いて、連携タスク情報取得部は、連携タスク取得部に、タスクＩＤ２１とタスククラスＩＤ２１と連携タスク情報２１とタスク終了信号を渡す。連携タスク取得部は、初期化のために、割当クラス記憶部にＮＵＬＬ値を設定し、優先度を初期値０に設定する。連携タスク取得部は、連携タスク情報２１を参照し、優先度０と組みとなるタスク識別子とタスククラス識別子の組みが存在するか検索する。本実施形態では、優先度０と組みとなるタスク識別子（タスクＩＤＤ）とタスククラス識別子（タスククラスＩＤＤ）が存在するため、連携タスク取得部は、タスクＩＤＤとタスククラスＩＤＤを取得する。続いて、連携タスク取得部は、タスク検索部に、タスクＩＤＤを渡し、検索成功信号または検索失敗信号を受信するまで待つ。
【０２２５】
タスク検索部は、起動タスク記憶部を参照し、タスクＩＤＤが登録されているか否かを検索する。本実施形態では、起動タスク記憶部にタスクＩＤＤが登録されていないため、連携タスク取得部に検索失敗信号を送信する。
【０２２６】
連携タスク取得部は、検索失敗信号を受信すると、優先度に１を加え、優先度を１に設定する。続いて、連携タスク取得部は、連携タスク情報２１を参照し、優先度１と組みとなるタスク識別子とタスククラス識別子の組みが存在するか検索する。本実施形態では、優先度１と組みとなるタスク識別子（タスクＩＤ２２）とタスククラス識別子（タスククラスＩＤ２２）が存在するため、連携タスク取得部は、タスクＩＤ２２とタスククラスＩＤ２２を取得する。続いて、連携タスク取得部は、タスク検索部に、タスクＩＤ２２を渡し、検索成功信号または検索失敗信号を受信するまで待つ。
【０２２７】
タスク検索部は、起動タスク記憶部を参照し、タスクＩＤ２２が登録されているか否かを検索する。本実施形態では、起動タスク記憶部にタスクＩＤ２２が登録されているため、タスクＩＤ２２に該当するタスク（タスク２２）から、タスク２２が属するタスククラスのタスククラス識別子（タスククラスＩＤＤ）を取得し、連携タスク取得部に検索成功信号とタスククラスＩＤ２２を渡す。
【０２２８】
連携タスク取得部は、検索成功信号を受信すると、割当クラス記憶部を参照し、ＮＵＬＬ値が設定されているか否かを検索する。割当クラス記憶部には、ＮＵＬＬ値が設定されているので、連携タスク取得部は、割当クラス決定部に、タスククラスＩＤ２２とタスククラスＩＤ２１とタスクＩＤ２１を渡す。続いて、連携タスク取得部は、割当クラス決定信号を受信するまで待つ。
【０２２９】
割当クラス決定部は、クラス定義部を参照し、タスククラスＩＤ２２のＣＰＵ利用率（ＣＰＵ利用率２２＝８０％）とタスククラスＩＤ２１のＣＰＵ利用率（ＣＰＵ利用率２１＝９０％）を取得する。続いて、ＣＰＵ利用率２２とＣＰＵ利用率２１の値を比較する。本実施形態では、ＣＰＵ利用率２１の値の方が大きいため、割当クラス記憶部にタスククラスＩＤ２１を設定する。続いて、割当クラス決定部は、連携タスク取得部に、割当クラス決定信号を送信する。
【０２３０】
連携タスク取得部は、割当クラス決定信号を受信すると、クラス比較部に、タスククラスＩＤ２１とタスククラスＩＤＤを渡す。続いて、連携タスク取得部は、割当許可信号または割当不許可信号を受信するまで待つ。
【０２３１】
クラス比較部は、連携タスク取得部からタスククラスＩＤ２１とタスククラスＩＤＤを渡されると、クラス定義記憶部を参照し、タスククラスＩＤ２１のＣＰＵ利用率（ＣＰＵ利用率２１＝９０％）とタスククラスＩＤＤのＣＰＵ利用率（ＣＰＵ利用率Ｄ＝９５％）を取得する。続いて、クラス比較部は、ＣＰＵ利用率２１とＣＰＵ利用率Ｄを比較する。本実施形態では、ＣＰＵ利用率Ｄの値の方が大きいため、クラス比較部は、連携タスク取得部に、割当不許可信号を送信する。
【０２３２】
連携タスク取得部は、割当不許可信号を受信すると、優先度に１を加え、優先度を２に設定する。続いて、連携タスク情報２１を参照し、優先度２と組みとなるタスク識別子とタスククラス識別子が存在するか否かを検索する。本実施形態では、連携タスク情報２１に、優先度２と組みとなるタスク識別子とタスククラス識別子は存在しないため、終了タスク管理部に、次タスク検索要求信号を送信する。
【０２３３】
終了タスク管理部は、次タスク検索要求信号を受信すると、取得したタスクリストＤから、処理対象となっているタスクＩＤ２１を要素として持つリスト２１を参照し、リスト２１の要素のポインタの内容を判定する。リスト２１の要素のポインタはリスト２２を示しているため、リスト２２の要素のタスク識別子（タスクＩＤ２２）を新たな処理対象とする。終了タスク管理部は、デフォルトクラス割当記憶部を参照し、タスクＩＤ２２と組みとなるタスククラス識別子（タスククラスＩＤ２２）を取得し、クラス割当管理部に、タスククラスＩＤＤとタスククラスＩＤ２２とタスクＩＤ２２とタスククラス変更信号を渡し、クラス割当記憶更新信号を受信するまで待つ。
【０２３４】
クラス割当管理部は、タスククラス変更信号を受信すると、クラス割当記憶部からタスククラスＩＤＤと組みとなるタスクリスト（タスクリストＤ）を参照する。クラス割当管理部は、タスクリストＤのＨＥＡＤポインタの内容を判定する。タスクリストＤのＨＥＡＤポインタは、リスト２２を示されるように設定されているため、クラス割当管理部は、ＨＥＡＤポインタにリスト２２の要素のポインタと同じ内容に設定する。つまり、ＨＥＡＤポインタには、ＮＵＬＬポインタを設定する。クラス割当管理部は、ＨＥＡＤポインタにＮＵＬＬポインタを設定したため、ＴＡＩＬポインタにもＮＵＬＬポインタを設定する。
次に、クラス割当管理部は、タスククラスＩＤ２２と組みとなるタスクリスト（タスクリスト２２）を参照する。クラス割当管理部は、タスクリスト２２のＴＡＩＬポインタの内容を判定する。タスクリスト２２のＴＡＩＬポインタは、ＮＵＬＬポインタが設定されているため、クラス割当管理部は、ＴＡＩＬポインタとＨＥＡＤポインタに、リスト２２を示されるように設定する。続いて、リスト２２の要素のポインタには、ＮＵＬＬポインタを設定する。続いて、クラス割当管理部は、終了タスク管理部に、クラス割当記憶更新信号を送信する。
【０２３５】
終了タスク管理部は、クラス割当記憶更新信号を受信すると、クラス再割当部に、タスクＩＤ２２とタスククラスＩＤ２２を渡し、割当終了信号を受信するまで待つ。
【０２３６】
クラス再割当部は、タスククラスＩＤ２２に該当するタスククラスを、タスクＩＤ２２に該当するタスクに割当て、終了タスク管理部に、割当終了信号を送信する。
【０２３７】
終了タスク管理部は、割当終了信号を受信すると、連携タスク情報取得部に、タスクＩＤ２２とタスククラスＩＤ２２を渡し、次タスク検索要求信号を受信するまで待つ。
【０２３８】
連携タスク情報取得部は、連携タスク記憶部を参照し、タスクＩＤ２２と組みとなる連携タスク情報（連携タスク情報２２）を取得する。続いて、連携タスク情報取得部は、連携タスク取得部に、タスクＩＤ２２とタスククラスＩＤ２２と連携タスク情報２２を渡す。連携タスク取得部は、初期化のために、割当クラス記憶部にＮＵＬＬ値を設定し、優先度を初期値０に設定する。連携タスク取得部は、連携タスク情報２２を参照し、優先度０と組みとなるタスク識別子とタスククラス識別子の組みが存在するか検索する。本実施形態では、優先度０と組みとなるタスク識別子（タスクＩＤＤ）とタスククラス識別子（タスククラスＩＤＤ）が存在するため、連携タスク取得部は、タスクＩＤＤとタスククラスＩＤＤを取得する。続いて、連携タスク取得部は、タスク検索部に、タスクＩＤＤを渡し、検索成功信号または検索失敗信号を受信するまで待つ。
【０２３９】
タスク検索部は、起動タスク記憶部を参照し、タスクＩＤＤが登録されているか否かを検索する。本実施形態では、起動タスク記憶部にタスクＩＤＤが登録されていないため、連携タスク取得部に検索失敗信号を送信する。
【０２４０】
連携タスク取得部は、検索失敗信号を受信すると、優先度に１を加え、優先度を１に設定する。続いて、連携タスク取得部は、連携タスク情報２２を参照し、優先度１と組みとなるタスク識別子とタスククラス識別子の組みが存在するか検索する。本実施形態では、優先度１と組みとなるタスク識別子（タスクＩＤ２１）とタスククラス識別子（タスククラスＩＤ２１）が存在するため、連携タスク取得部は、タスクＩＤ２１とタスククラスＩＤ２１を取得する。続いて、連携タスク取得部は、タスク検索部に、タスクＩＤ２１を渡し、検索成功信号または検索失敗信号を受信するまで待つ。
【０２４１】
タスク検索部は、起動タスク記憶部を参照し、タスクＩＤ２１が登録されているか否かを検索する。本実施形態では、起動タスク記憶部にタスクＩＤ２１が登録されているため、タスクＩＤ２１に該当するタスク（タスク２１）から、タスク２１が属するタスククラスのタスククラス識別子（タスククラスＩＤ２１）を取得し、連携タスク取得部に検索成功信号とタスククラスＩＤ２１を渡す。
【０２４２】
連携タスク取得部は、検索成功信号を受信すると、割当クラス記憶部を参照し、ＮＵＬＬ値が設定されているか否かを検索する。割当クラス記憶部には、ＮＵＬＬ値が設定されているので、連携タスク取得部は、割当クラス決定部に、タスククラスＩＤ２１とタスククラスＩＤ２２とタスクＩＤ２２を渡す。続いて、連携タスク取得部は、割当クラス決定信号を受信するまで待つ。
【０２４３】
割当クラス決定部は、クラス定義部を参照し、タスククラスＩＤ２１のＣＰＵ利用率（ＣＰＵ利用率２１＝９０％）とタスククラスＩＤ２２のＣＰＵ利用率（ＣＰＵ利用率２２＝８０％）を取得する。続いて、ＣＰＵ利用率２１とＣＰＵ利用率２２の値を比較する。本実施形態では、ＣＰＵ利用率２１の値の方が大きいため、割当クラス記憶部にタスククラスＩＤ２１を設定する。続いて、割当クラス決定部は、クラス割当管理部に、タスククラスＩＤ２２とタスククラスＩＤ２１とタスクＩＤ２２とタスククラス変更信号を渡し、クラス割当記憶更新信号を受信するまで待つ。
【０２４４】
クラス割当管理部は、タスククラス変更信号を受信すると、クラス割当記憶部からタスククラスＩＤ２２と組みとなるタスクリスト（タスクリスト２２）を参照する。クラス割当管理部は、タスクリスト２２のＨＥＡＤポインタの内容を判定する。タスクリスト２２のＨＥＡＤポインタは、リスト２２を示されるように設定されているため、クラス割当管理部は、ＨＥＡＤポインタにリスト２２の要素のポインタと同じ内容に設定する。つまり、ＨＥＡＤポインタには、ＮＵＬＬポインタを設定する。クラス割当管理部は、ＨＥＡＤポインタにＮＵＬＬポインタを設定したため、ＴＡＩＬポインタにもＮＵＬＬポインタを設定する。
次に、クラス割当管理部は、タスククラスＩＤ２１と組みとなるタスクリスト（タスクリスト２１）を参照する。クラス割当管理部は、タスクリスト２１のＴＡＩＬポインタの内容を判定する。タスクリスト２１のＴＡＩＬポインタは、リスト２１を示されるように設定されているため、クラス割当管理部は、ＴＡＩＬポインタとリスト２１の要素のポインタに、リスト２２を示されるように設定する。続いて、リスト２２の要素のポインタには、ＮＵＬＬポインタを設定する。続いて、クラス割当管理部は、クラス割当管理部に、クラス割当記憶更新信号を送信する。クラス割当管理部は、クラス割当記憶更新信号を受信すると、クラス再割当部にタスクＩＤ２２とタスククラスＩＤ２１を渡す。続いて、割当クラス決定部は、割当終了信号を受信するまで待つ。
【０２４５】
クラス再割当部は、タスククラスＩＤ２１に該当するタスククラスを、タスクＩＤ２２に該当するタスク（タスク２２）に割当て、割当クラス決定部に、割当終了信号を送信する。
【０２４６】
割当クラス決定部は、割当終了信号を受信すると、連携タスク取得部に、割当クラス決定信号を送信する。
【０２４７】
連携タスク取得部は、割当クラス決定信号を受信すると、クラス比較部に、タスククラスＩＤ２１とタスククラスＩＤ２１を渡す。続いて、連携タスク取得部は、割当許可信号または割当不許可信号を受信するまで待つ。
【０２４８】
クラス比較部は、連携タスク取得部からタスククラスＩＤ２１とタスククラスＩＤ２１を渡されると、クラス定義記憶部を参照し、タスククラスＩＤ２１のＣＰＵ利用率（ＣＰＵ利用率２１＝９０％）とタスククラスＩＤ２１のＣＰＵ利用率（ＣＰＵ利用率２１＝９０％）を取得する。続いて、クラス比較部は、ＣＰＵ利用率２１とＣＰＵ利用率２１を比較する。本実施形態では、ＣＰＵ利用率の値が等しいため、クラス比較部は、連携タスク取得部に、割当不許可信号を送信する。
【０２４９】
連携タスク取得部は、割当不許可信号を受信すると、優先度に１を加え、優先度を２に設定する。続いて、連携タスク情報２１を参照し、優先度２と組みとなるタスク識別子とタスククラス識別子が存在するか否かを検索する。本実施形態では、連携タスク情報２１に、優先度２と組みとなるタスク識別子とタスククラス識別子は存在しないため、終了タスク管理部に、次タスク検索要求信号を送信する。
【０２５０】
終了タスク管理部は、次タスク検索要求信号を受信すると、取得したタスクリストＤから、処理対象となっているタスクＩＤ２２を要素として持つリスト２２を参照し、リスト２２の要素のポインタの内容を判定する。リスト２２の要素のポインタはＮＵＬＬポインタであるため、クラス再割当処理を終了する。
【０２５１】
次に、本発明の第２実施形態によるデータ処理システムのリソースＱｏＳ制御システムの第２具体例を図３９と図４０を参照して説明する。本具体例では、データ処理装置としてパーソナル・コンピュータを、記憶装置として磁気ディスク記憶装置を備えている。
【０２５２】
パーソナル・コンピュータは、連携タスク情報取得部、連携タスク取得部、タスク検索部、割当クラス決定部、クラス比較部、クラス再割当部、起動タスク管理部、終了タスク管理部、クラス割当管理部として機能する中央演算装置を有している。
磁気ディスクは、各タスクのタスク識別子と連携タスク情報の組みと、現在起動状態のタスク群と、タスクに割当てるタスククラスのタスククラス識別子と、各タスククラス識別子とそのタスククラスが利用可能なリソース割合値の組みと、各タスククラス識別子とそのタスククラス識別子に該当するタスククラスに属している起動状態のタスクのタスク識別子と、各タスク識別子とそのタスク識別子に該当するタスクに対して起動直後に割当てられるタスククラスのタスククラス識別子が記憶される。つまり、磁気ディスクは、連携タスク記憶部２１１、起動タスク記憶部２１２、割当クラス記憶部２１３、クラス定義記憶部２１４、クラス割当記憶部２１５、デフォルトクラス割当記憶部２１６として機能し、連携タスク記憶部と起動タスク記憶部とクラス定義記憶部とクラス割当記憶部には図３９と図４０に示す内容が記憶されている。
【０２５３】
本具体例では、タスクリストはリスト構造によって実現されており、各リストはタスククラス識別子と次リストへのポインタを要素として持つ。また、タスクリストには、先頭のリストを示すポインタ（ＨＥＡＤポインタ）と最後のリストを示すポインタ（ＴＡＩＬポインタ）が記憶されており、ＨＥＡＤポインタとＴＡＩＬポインタには、初期値としてＮＵＬＬポインタが設定されている。
【０２５４】
今、タスクＥが起動したとする。
起動タスク管理部はタスクＥのタスク識別子（タスクＩＤＥ）とタスクＥが属するタスククラスのタスククラス識別子（タスククラスＩＤＥ）を取得し、起動タスク記憶部にタスクＩＤＥを書き込む。続いて、クラス割当管理部に、タスククラスＩＤＥとタスクＩＤＥとタスク追加信号を渡し、クラス割当記憶更新信号を受信するまで待つ。
【０２５５】
クラス割当管理部は、タスク追加信号を受信すると、クラス割当記憶部からタスククラスＩＤＥと組みとなるタスクリスト（タスクリストＥ）を参照する。まず、クラス割当管理部は、タスクリストＥのＴＡＩＬポインタの内容を判別する。タスクリストＥのＴＡＩＬポインタはＮＵＬＬポインタが設定されているため、クラス割当管理部は、ＴＡＩＬポインタとＨＥＡＤポインタに、タスクＩＤＥを要素として持つリスト（リストＥ）を示されるように設定し、リストＥの要素のポインタにはＮＵＬＬポインタを設定する。続いて、クラス割当管理部は、起動タスク管理部に、クラス割当記憶更新信号を送信する。
【０２５６】
起動タスク管理部は、クラス割当記憶更新信号を受信すると、連携タスク情報取得部に、タスクＩＤＥとタスククラスＩＤＥとタスク起動信号を渡す。
【０２５７】
連携タスク情報取得部は、連携タスク記憶部を参照し、タスクＩＤＥと組みとなる連携タスク情報（連携タスク情報Ｅ）を取得する。続いて、連携タスク情報取得部は、連携タスク取得部に、タスクＩＤＥとタスククラスＩＤＥと連携タスク情報Ｅとタスク起動信号を渡す。
【０２５８】
連携タスク取得部は、初期化のために、割当クラス記憶部にＮＵＬＬ値を設定し、優先度を初期値０に設定する。連携タスク取得部は、連携タスク情報Ｅを参照し、優先度０と組みとなるタスク識別子とタスククラス識別子の組みが存在するか検索する。本実施形態では、優先度０と組みとなるタスク識別子（タスクＩＤ２５）とタスククラス識別子（タスククラスＩＤ２５）が存在するため、連携タスク取得部は、タスクＩＤ２５とタスククラスＩＤ２５を取得する。続いて、連携タスク取得部は、タスク検索部に、タスクＩＤ２５を渡し、検索成功信号または検索失敗信号を受信するまで待つ。
【０２５９】
タスク検索部は、起動タスク記憶部を参照し、タスクＩＤ２５が登録されているか否かを検索する。本実施形態では、起動タスク記憶部にタスクＩＤ２５が登録されているため、タスクＩＤ２５に該当するタスク（タスク２５）から、タスク２５が属するタスククラスのタスククラス識別子（タスククラスＩＤ２４）を取得し、連携タスク取得部に検索成功信号とタスククラスＩＤ２４を渡す。
【０２６０】
連携タスク取得部は、検索成功信号を受信すると、割当クラス記憶部を参照し、ＮＵＬＬ値が設定されているか否かを検索する。割当クラス記憶部には、ＮＵＬＬ値が設定されているので、連携タスク取得部は、割当クラス決定部に、タスククラスＩＤ２５とタスククラスＩＤＥとタスクＩＤＥを渡す。続いて、連携タスク取得部は、割当クラス決定信号を受信するまで待つ。
【０２６１】
割当クラス決定部は、クラス定義部を参照し、タスククラスＩＤ２５のＣＰＵ利用率（ＣＰＵ利用率２５＝５０％）とタスククラスＩＤＥのＣＰＵ利用率（ＣＰＵ利用率Ｅ＝７０％）を取得する。続いて、ＣＰＵ利用率２５とＣＰＵ利用率Ｅの値を比較する。本実施形態では、ＣＰＵ利用率Ｅの値の方が大きいため、割当クラス記憶部にタスククラスＩＤＥを設定する。続いて、割当クラス決定部は、連携タスク取得部に、割当クラス決定信号を送信する。
【０２６２】
連携タスク取得部は、割当クラス決定信号を受信すると、クラス比較部に、タスククラスＩＤ２４とタスククラスＩＤＥを渡す。続いて、連携タスク取得部は、割当許可信号または割当不許可信号を受信するまで待つ。
【０２６３】
クラス比較部は、連携タスク取得部からタスククラスＩＤ２４とタスククラスＩＤＥを渡されると、クラス定義記憶部を参照し、タスククラスＩＤ２４のＣＰＵ利用率（ＣＰＵ利用率２４＝６０％）とタスククラスＩＤＥのＣＰＵ利用率（ＣＰＵ利用率Ｅ＝７０％）を取得する。続いて、クラス比較部は、ＣＰＵ利用率２４とＣＰＵ利用率Ｅを比較する。本実施形態では、ＣＰＵ利用率Ｅの値の方が大きいため、クラス比較部は、連携タスク取得部に、割当許可信号を送信する。
【０２６４】
連携タスク取得部は、割当許可信号を受信すると、クラス割当管理部に、タスククラスＩＤ２４とタスククラスＩＤＥとタスクＩＤ２５とタスククラス変更信号を渡し、クラス割当記憶更新信号を受信するまで待つ。
【０２６５】
クラス割当管理部は、タスククラス変更信号を受信すると、クラス割当記憶部からタスククラスＩＤ２４と組みとなるタスクリスト（タスクリスト２４）を参照する。クラス割当管理部は、タスクリスト２４のＨＥＡＤポインタの内容を判定する。タスクリスト２４のＨＥＡＤポインタはタスクＩＤ２４を要素として持つリスト（リスト２４）を示しているため、クラス割当管理部は、リスト２４が要素として持つポインタの内容を判定する。リスト２４が要素として持つポインタは、タスクＩＤ２５を要素として持つリスト（リスト２５）を示しているため、リスト２４の要素のポインタに、リスト２５の要素のポインタと同じ内容に設定する。つまり、リスト２４の要素のポインタには、ＮＵＬＬポインタを設定する。クラス割当管理部は、リスト２５の要素のポインタがＮＵＬＬポインタとして設定されているため、タスクリスト２４のＴＡＩＬポインタを、リスト２４を示されるように設定する。
次に、クラス割当管理部は、タスククラスＩＤＥと組みとなるタスクリスト（タスクリストＥ）を参照する。クラス割当管理部は、タスクリストＥのＴＡＩＬポインタの内容を判定する。タスクリストＥのＴＡＩＬポインタは、リストＥを示しているため、クラス割当管理部は、ＴＡＩＬポインタとリストＥの要素のポインタにリスト２５を示されるように設定する。続いて、リスト２５の要素のポインタには、ＮＵＬＬポインタを設定する。続いて、クラス割当管理部は、連携タスク取得部に、クラス割当記憶更新信号を送信する。
【０２６６】
連携タスク取得部は、クラス割当記憶更新信号を受信すると、クラス再割当部に、タスクＩＤ２５とタスククラスＩＤＥを渡す。続いて、連携タスク取得部は、割当終了信号を受信するまで待つ。
【０２６７】
クラス再割当部は、タスククラスＩＤＥに該当するタスククラスを、タスクＩＤ２５に該当するタスクに割当て、連携タスク取得部に、割当終了信号を送信する。
【０２６８】
連携タスク取得部は、割当終了信号を受信すると、優先度に１を加え、優先度を１に設定する。続いて、連携タスク取得部は、連携タスク情報Ｅを参照し、優先度１と組みとなるタスク識別子とタスククラス識別子の組みが存在するか検索する。本実施形態では、優先度１と組みとなるタスク識別子（タスクＩＤ２６）とタスククラス識別子（タスククラスＩＤ２６）が存在するため、連携タスク取得部は、タスクＩＤ２６とタスククラスＩＤ２６を取得する。続いて、連携タスク取得部は、タスク検索部に、タスクＩＤ２６を渡し、検索成功信号または検索失敗信号を受信するまで待つ。
【０２６９】
タスク検索部は、起動タスク記憶部を参照し、タスクＩＤ２６が登録されているか否かを検索する。本実施形態では、起動タスク記憶部にタスクＩＤ２６が登録されているため、タスクＩＤ２６に該当するタスク（タスク２６）から、タスク２６が属するタスククラスのタスククラス識別子（タスククラスＩＤ２５）を取得し、連携タスク取得部に検索成功信号とタスククラスＩＤ２５を渡す。
【０２７０】
連携タスク取得部は、検索成功信号を受信すると、割当クラス記憶部を参照し、ＮＵＬＬ値が設定されているか否かを検索する。割当クラス記憶部には、ＮＵＬＬ値が設定されていないので、割当クラス記憶部に設定されているタスククラスＩＤＥを取得する。続いて、クラス比較部に、タスククラスＩＤ２５とタスククラスＩＤＥを渡す。続いて、連携タスク取得部は、割当許可信号または割当不許可信号を受信するまで待つ。
【０２７１】
クラス比較部は、連携タスク取得部からタスククラスＩＤ２５とタスククラスＩＤＥを渡されると、クラス定義記憶部を参照し、タスククラスＩＤ２５のＣＰＵ利用率（ＣＰＵ利用率２５＝５０％）とタスククラスＩＤＥのＣＰＵ利用率（ＣＰＵ利用率Ｅ＝７０％）を取得する。続いて、クラス比較部は、ＣＰＵ利用率２５とＣＰＵ利用率Ｅを比較する。本実施形態では、ＣＰＵ利用率Ｅの値の方が大きいため、クラス比較部は、連携タスク取得部に、割当許可信号を送信する。
【０２７２】
連携タスク取得部は、割当許可信号を受信すると、クラス割当管理部に、タスククラスＩＤ２５とタスククラスＩＤＥとタスクＩＤ２６とタスククラス変更信号を渡し、クラス割当記憶更新信号を受信するまで待つ。
【０２７３】
クラス割当管理部は、タスククラス変更信号を受信すると、クラス割当記憶部からタスククラスＩＤ２５と組みとなるタスクリスト（タスクリスト２５）を参照する。クラス割当管理部は、タスクリスト２５のＨＥＡＤポインタの内容を判定する。タスクリスト２５のＨＥＡＤポインタはタスクＩＤ２６を要素として持つリスト（リスト２６）を示しているため、クラス割当管理部は、ＨＥＡＤポインタにリスト２６の要素のポインタと同じ内容に設定する。つまり、ＨＥＡＤポインタにはＮＵＬＬポインタを設定する。クラス割当管理部は、ＨＥＡＤポインタに、ＮＵＬＬポインタを設定したため、ＴＡＩＬポインタにもＮＵＬＬポインタを設定する。
次に、クラス割当管理部は、タスククラスＩＤＥと組みとなるタスクリスト（タスクリストＥ）を参照する。クラス割当管理部は、タスクリストＥのＴＡＩＬポインタの内容を判定する。タスクリストＥのＴＡＩＬポインタは、リスト２５を示しているため、クラス割当管理部は、ＴＡＩＬポインタとリスト２５の要素のポインタにリスト２６を示されるように設定する。続いて、リスト２６の要素のポインタには、ＮＵＬＬポインタを設定する。続いて、クラス割当管理部は、連携タスク取得部に、クラス割当記憶更新信号を送信する。
【０２７４】
連携タスク取得部は、クラス割当記憶更新信号を受信すると、クラス再割当部に、タスクＩＤ２６とタスククラスＩＤＥを渡す。続いて、連携タスク取得部は、割当終了信号を受信するまで待つ。
【０２７５】
クラス再割当部は、タスククラスＩＤＥに該当するタスククラスを、タスクＩＤ２６に該当するタスクに割当て、連携タスク取得部に、割当終了信号を送信する。
【０２７６】
連携タスク取得部は、割当終了信号を受信すると、優先度に１を加え、優先度を２に設定する。続いて、連携タスク情報Ｅを参照し、優先度２と組みとなるタスク識別子とタスククラス識別子が存在するか否かを検索する。本実施形態では、連携タスク情報Ｅに、優先度２と組みとなるタスク識別子とタスククラス識別子は存在せず、連携タスク情報取得部からタスク起動信号を受信しているので、クラス再割当処理を終了する。
【０２７７】
次に、タスクＥが終了したとする。
【０２７８】
終了タスク管理部は、タスクＥのタスク識別子（タスクＩＤＥ）とタスクＥが属するタスククラスのタスククラス識別子（タスククラスＩＤＥ）を取得し、起動タスク記憶部からタスクＩＤＥを削除する。続いて、終了タスク管理部は、クラス割当管理部に、タスククラスＩＤＥとタスクＩＤＥとタスク削除信号を渡し、クラス割当記憶更新信号を受信するまで待つ。
【０２７９】
クラス割当管理部は、タスク削除信号を受信すると、クラス割当記憶部を参照し、タスククラスＩＤＥと組みとなるタスクリスト（タスクリストＥ）を取得する。クラス割当管理部は、タスクリストＥのＨＥＡＤポインタの内容を判定する。タスクリストＥのＨＥＡＤポインタは、リストＥを示しているため、クラス割当管理部は、ＨＥＡＤポインタにリストＥの要素のポインタと同じ内容に設定する。つまり、ＨＥＡＤポインタには、リスト２５を示されるように設定する。続いて、クラス割当管理部は、終了タスク管理部に、クラス割当記憶更新信号を送信する。
【０２８０】
終了タスク管理部は、クラス割当記憶更新信号を受信すると、デフォルトクラス割当記憶部を参照し、タスククラスＩＤＥと組みとなるタスククラスＩＤＥを取得する。終了タスク管理部は、クラス割当記憶部からタスククラスＩＤＥと組みとなるタスクリストＥを参照する。終了タスク管理部は、タスクリストＥにタスク識別子が登録されているか否かを検索する。本実施形態では、タスクリストＥにタスク識別子が登録されているため、終了タスク管理部は、タスクリストＥを取得する。終了タスク管理部は、タスクリストＥのＨＥＡＤポインタが示すリスト２５を参照し、リスト２５の要素のタスクＩＤ２５を処理対象とする。終了タスク管理部は、デフォルトクラス割当記憶部を参照し、タスクＩＤ２５と組みとなるタスククラス識別子（タスククラスＩＤ２５）を取得し、クラス割当管理部に、タスククラスＩＤＥとタスククラスＩＤ２５とタスクＩＤ２５とタスククラス変更信号を渡し、クラス割当記憶更新信号を受信するまで待つ。
【０２８１】
クラス割当管理部は、タスククラス変更信号を受信すると、クラス割当記憶部からタスククラスＩＤＥと組みとなるタスクリスト（タスクリストＥ）を参照する。クラス割当管理部は、タスクリストＥのＨＥＡＤポインタの内容を判定する。タスクリストＥのＨＥＡＤポインタは、リスト２５を示されるように設定されているため、クラス割当管理部は、ＨＥＡＤポインタにリスト２５の要素のポインタと同じ内容に設定する。つまり、ＨＥＡＤポインタには、リスト２６を示されるように設定する。
次に、クラス割当管理部は、タスククラスＩＤ２５と組みとなるタスクリスト（タスクリスト２５）を参照する。クラス割当管理部は、タスクリスト２５のＴＡＩＬポインタの内容を判定する。タスクリスト２５のＴＡＩＬポインタは、ＮＵＬＬポインタが設定されているため、クラス割当管理部は、ＴＡＩＬポインタとＨＥＡＤポインタに、リスト２５を示されるように設定する。続いて、リスト２５の要素のポインタには、ＮＵＬＬポインタを設定する。続いて、クラス割当管理部は、終了タスク管理部に、クラス割当記憶更新信号を送信する。
【０２８２】
終了タスク管理部は、クラス割当記憶更新信号を受信すると、クラス再割当部に、タスクＩＤ２５とタスククラスＩＤ２５を渡し、割当終了信号を受信するまで待つ。
【０２８３】
クラス再割当部は、タスククラスＩＤ２５に該当するタスククラスを、タスクＩＤ２５に該当するタスクに割当て、終了タスク管理部に、割当終了信号を送信する。
【０２８４】
終了タスク管理部は、割当終了信号を受信すると、連携タスク情報取得部に、タスクＩＤ２５とタスククラスＩＤ２５とタスク終了信号を渡し、次タスク検索要求信号を受信するまで待つ。
【０２８５】
連携タスク情報取得部は、連携タスク記憶部を参照し、タスクＩＤ２５と組みとなる連携タスク情報（連携タスク情報２５）を取得する。続いて、連携タスク情報取得部は、連携タスク取得部に、タスクＩＤ２５とタスククラスＩＤ２５と連携タスク情報２５とタスク終了信号を渡す。
【０２８６】
連携タスク取得部は、初期化のために、割当クラス記憶部にＮＵＬＬ値を設定し、優先度を初期値０に設定する。連携タスク取得部は、連携タスク情報２５を参照し、優先度０と組みとなるタスク識別子とタスククラス識別子の組みが存在するか検索する。本実施形態では、優先度０と組みとなるタスク識別子（タスクＩＤＥ）とタスククラス識別子（タスククラスＩＤＥ）が存在するため、連携タスク取得部は、タスクＩＤＥとタスククラスＩＤＥを取得する。続いて、連携タスク取得部は、タスク検索部に、タスクＩＤＥを渡し、検索成功信号または検索失敗信号を受信するまで待つ。
【０２８７】
タスク検索部は、起動タスク記憶部を参照し、タスクＩＤＥが登録されているか否かを検索する。本実施形態では、起動タスク記憶部にタスクＩＤＥが登録されていないため、連携タスク取得部に検索失敗信号を送信する。
【０２８８】
連携タスク取得部は、検索失敗信号を受信すると、優先度に１を加え、優先度を１に設定する。続いて、連携タスク取得部は、連携タスク情報２５を参照し、優先度１と組みとなるタスク識別子とタスククラス識別子の組みが存在するか検索する。本実施形態では、優先度１と組みとなるタスク識別子（タスクＩＤ２４）とタスククラス識別子（タスククラスＩＤ２４）が存在するため、連携タスク取得部は、タスクＩＤ２４とタスククラスＩＤ２４を取得する。続いて、連携タスク取得部は、タスク検索部に、タスクＩＤ２４を渡し、検索成功信号または検索失敗信号を受信するまで待つ。
【０２８９】
タスク検索部は、起動タスク記憶部を参照し、タスクＩＤ２４が登録されているか否かを検索する。本実施形態では、起動タスク記憶部にタスクＩＤ２４が登録されているため、タスクＩＤ２４に該当するタスク（タスク２４）から、タスク２４が属するタスククラスのタスククラス識別子（タスククラスＩＤ２４）を取得し、連携タスク取得部に検索成功信号とタスククラスＩＤ２４を渡す。
【０２９０】
連携タスク取得部は、検索成功信号を受信すると、割当クラス記憶部を参照し、ＮＵＬＬ値が設定されているか否かを検索する。割当クラス記憶部には、ＮＵＬＬ値が設定されているので、連携タスク取得部は、割当クラス決定部に、タスククラスＩＤ２４とタスククラスＩＤ２５とタスクＩＤ２５を渡す。続いて、連携タスク取得部は、割当クラス決定信号を受信するまで待つ。
【０２９１】
割当クラス決定部は、クラス定義部を参照し、タスククラスＩＤ２４のＣＰＵ利用率（ＣＰＵ利用率２４＝６０％）とタスククラスＩＤ２５のＣＰＵ利用率（ＣＰＵ利用率２５＝５０％）を取得する。続いて、ＣＰＵ利用率２４とＣＰＵ利用率２５の値を比較する。本実施形態では、ＣＰＵ利用率２４の値の方が大きいため、割当クラス記憶部にタスククラスＩＤ２４を設定する。続いて、割当クラス決定部は、クラス割当管理部に、タスククラスＩＤ２５とタスククラスＩＤ２４とタスクＩＤ２５とタスククラス変更信号を渡し、クラス割当記憶更新信号を受信するまで待つ。
【０２９２】
クラス割当管理部は、タスククラス変更信号を受信すると、クラス割当記憶部からタスククラスＩＤ２５と組みとなるタスクリスト（タスクリスト２５）を参照する。クラス割当管理部は、タスクリスト２５のＨＥＡＤポインタの内容を判定する。タスクリスト２５のＨＥＡＤポインタは、リスト２５を示されるように設定されているため、クラス割当管理部は、ＨＥＡＤポインタにリスト２５の要素のポインタと同じ内容に設定する。つまり、ＨＥＡＤポインタには、ＮＵＬＬポインタを設定する。クラス割当管理部は、ＨＥＡＤポインタにＮＵＬＬポインタを設定したため、ＴＡＩＬポインタにもＮＵＬＬポインタを設定する。
次に、クラス割当管理部は、タスククラスＩＤ２４と組みとなるタスクリスト（タスクリスト２４）を参照する。クラス割当管理部は、タスクリスト２４のＴＡＩＬポインタの内容を判定する。タスクリスト２４のＴＡＩＬポインタは、リスト２４を示されるように設定されているため、クラス割当管理部は、ＴＡＩＬポインタとリスト２４の要素のポインタに、リスト２５を示されるように設定する。続いて、リスト２５の要素のポインタには、ＮＵＬＬポインタを設定する。続いて、クラス割当管理部は、クラス割当管理部に、クラス割当記憶更新信号を送信する。クラス割当管理部は、クラス割当記憶更新信号を受信すると、クラス再割当部にタスクＩＤ２５とタスククラスＩＤ２４を渡す。続いて、割当クラス決定部は、割当終了信号を受信するまで待つ。
【０２９３】
クラス再割当部は、タスククラスＩＤ２４に該当するタスククラスを、タスクＩＤ２５に該当するタスク（タスク２５）に割当て、割当クラス決定部に、割当終了信号を送信する。
【０２９４】
割当クラス決定部は、割当終了信号を受信すると、連携タスク取得部に、割当クラス決定信号を送信する。
【０２９５】
連携タスク取得部は、割当クラス決定信号を受信すると、クラス比較部に、タスククラスＩＤ２４とタスククラスＩＤ２４を渡す。続いて、連携タスク取得部は、割当許可信号または割当不許可信号を受信するまで待つ。
【０２９６】
クラス比較部は、連携タスク取得部からタスククラスＩＤ２４とタスククラスＩＤ２４を渡されると、クラス定義記憶部を参照し、タスククラスＩＤ２４のＣＰＵ利用率（ＣＰＵ利用率２４＝６０％）とタスククラスＩＤ２４のＣＰＵ利用率（ＣＰＵ利用率２４＝６０％）を取得する。続いて、クラス比較部は、ＣＰＵ利用率２４とＣＰＵ利用率２４を比較する。本実施形態では、ＣＰＵ利用率の値の方が等しいため、クラス比較部は、連携タスク取得部に、割当不許可信号を送信する。
【０２９７】
連携タスク取得部は、割当不許可信号を受信すると、優先度に１を加え、優先度を２に設定する。続いて、連携タスク情報２５を参照し、優先度２と組みとなるタスク識別子とタスククラス識別子の組みが存在するか検索する。本実施形態では、優先度２と組みとなるタスク識別子（タスクＩＤ２６）とタスククラス識別子（タスククラスＩＤ２６）が存在するため、連携タスク取得部は、タスクＩＤ２６とタスククラスＩＤ２６を取得する。続いて、連携タスク取得部は、タスク検索部に、タスクＩＤ２６を渡し、検索成功信号または検索失敗信号を受信するまで待つ。
【０２９８】
タスク検索部は、起動タスク記憶部を参照し、タスクＩＤ２６が登録されているか否かを検索する。本実施形態では、起動タスク記憶部にタスクＩＤ２６が登録されているため、タスクＩＤ２６に該当するタスク（タスク２６）から、タスク２６が属するタスククラスのタスククラス識別子（タスククラスＩＤＥ）を取得し、連携タスク取得部に検索成功信号とタスククラスＩＤＥを渡す。
【０２９９】
連携タスク取得部は、検索成功信号を受信すると、割当クラス記憶部を参照し、ＮＵＬＬ値が設定されているか否かを検索する。割当クラス記憶部には、ＮＵＬＬ値が設定されていないため、割当クラス記憶部に設定されているタスククラスＩＤ２４を取得する。続いて、クラス比較部に、タスククラスＩＤ２４とタスククラスＩＤＥを渡す。続いて、連携タスク取得部は、割当許可信号または割当不許可信号を受信するまで待つ。
【０３００】
クラス比較部は、クラス定義部を参照し、タスククラスＩＤ２４のＣＰＵ利用率（ＣＰＵ利用率２４＝６０％）とタスククラスＩＤＥのＣＰＵ利用率（ＣＰＵ利用率Ｅ＝７０％）を取得する。続いて、ＣＰＵ利用率２４とＣＰＵ利用率Ｅの値を比較する。本実施形態では、ＣＰＵ利用率Ｅの値の方が大きいため、クラス比較部は、連携タスク取得部に、割当不許可信号を送信する。
【０３０１】
連携タスク取得部は、割当不許可信号を受信すると、優先度に１を加え、優先度を３に設定する。続いて、連携タスク情報２５を参照し、優先度３と組みとなるタスク識別子とタスククラス識別子が存在するか否かを検索する。本実施形態では、連携タスク情報２５に、優先度３と組みとなるタスク識別子とタスククラス識別子が存在せず連携タスク情報取得部からタスク終了信号を受信しているので、終了タスク管理部に、次タスク検索要求信号を送信する。
【０３０２】
終了タスク管理部は、次タスク検索要求信号を受信すると、取得したタスクリストＥから、処理対象となっているタスクＩＤ２５を要素として持つリスト２５を参照し、リスト２５の要素のポインタの内容を判定する。リスト２５の要素のポインタはリスト２６を示しているため、リスト２６の要素のタスク識別子（タスクＩＤ２６）を新たな処理対象とする。終了タスク管理部は、デフォルトクラス割当記憶部を参照し、タスクＩＤ２６と組みとなるタスククラス識別子（タスククラスＩＤ２６）を取得し、クラス割当管理部に、タスククラスＩＤＥとタスククラスＩＤ２６とタスクＩＤ２６とタスククラス変更信号を渡し、クラス割当記憶更新信号を受信するまで待つ。
【０３０３】
クラス割当管理部は、タスククラス変更信号を受信すると、クラス割当記憶部からタスククラスＩＤＥと組みとなるタスクリスト（タスクリストＥ）を参照する。クラス割当管理部は、タスクリストＥのＨＥＡＤポインタの内容を判定する。タスクリストＥのＨＥＡＤポインタは、リスト２６を示されるように設定されているため、クラス割当管理部は、ＨＥＡＤポインタにリスト２６の要素のポインタと同じ内容に設定する。つまり、ＨＥＡＤポインタには、ＮＵＬＬポインタを設定する。クラス割当管理部は、ＨＥＡＤポインタにＮＵＬＬポインタを設定したため、ＴＡＩＬポインタにもＮＵＬＬポインタを設定する。
次に、クラス割当管理部は、タスククラスＩＤ２６と組みとなるタスクリスト（タスクリスト２６）を参照する。クラス割当管理部は、タスクリスト２６のＴＡＩＬポインタの内容を判定する。タスクリスト２６のＴＡＩＬポインタは、ＮＵＬＬポインタが設定されているため、クラス割当管理部は、ＴＡＩＬポインタとＨＥＡＤポインタに、リスト２６を示されるように設定する。続いて、リスト２６の要素のポインタには、ＮＵＬＬポインタを設定する。続いて、クラス割当管理部は、終了タスク管理部に、クラス割当記憶更新信号を送信する。
【０３０４】
終了タスク管理部は、クラス割当記憶更新信号を受信すると、クラス再割当部に、タスクＩＤ２６とタスククラスＩＤ２６を渡し、割当終了信号を受信するまで待つ。
【０３０５】
クラス再割当部は、タスククラスＩＤ２６に該当するタスククラスを、タスクＩＤ２６に該当するタスクに割当て、終了タスク管理部に、割当終了信号を送信する。
【０３０６】
終了タスク管理部は、割当終了信号を受信すると、連携タスク情報取得部に、タスクＩＤ２６とタスククラスＩＤ２６を渡し、次タスク検索要求信号を受信するまで待つ。
【０３０７】
連携タスク情報取得部は、連携タスク記憶部を参照し、タスクＩＤ２６と組みとなる連携タスク情報（連携タスク情報２６）を取得する。続いて、連携タスク情報取得部は、連携タスク取得部に、タスクＩＤ２６とタスククラスＩＤ２６と連携タスク情報２６を渡す。
【０３０８】
連携タスク取得部は、初期化のために、割当クラス記憶部にＮＵＬＬ値を設定し、優先度を初期値０に設定する。連携タスク取得部は、連携タスク情報２６を参照し、優先度０と組みとなるタスク識別子とタスククラス識別子の組みが存在するか検索する。本実施形態では、優先度０と組みとなるタスク識別子（タスクＩＤＥ）とタスククラス識別子（タスククラスＩＤＥ）が存在するため、連携タスク取得部は、タスクＩＤＥとタスククラスＩＤＥを取得する。続いて、連携タスク取得部は、タスク検索部に、タスクＩＤＥを渡し、検索成功信号または検索失敗信号を受信するまで待つ。
【０３０９】
タスク検索部は、起動タスク記憶部を参照し、タスクＩＤＥが登録されているか否かを検索する。本実施形態では、起動タスク記憶部にタスクＩＤＥが登録されていないため、連携タスク取得部に検索失敗信号を送信する。
【０３１０】
連携タスク取得部は、検索失敗信号を受信すると、優先度に１を加え、優先度を１に設定する。続いて、連携タスク取得部は、連携タスク情報２６を参照し、優先度１と組みとなるタスク識別子とタスククラス識別子の組みが存在するか検索する。本実施形態では、優先度１と組みとなるタスク識別子（タスクＩＤ２５）とタスククラス識別子（タスククラスＩＤ２５）が存在するため、連携タスク取得部は、タスクＩＤ２５とタスククラスＩＤ２５を取得する。続いて、連携タスク取得部は、タスク検索部に、タスクＩＤ２５を渡し、検索成功信号または検索失敗信号を受信するまで待つ。
【０３１１】
タスク検索部は、起動タスク記憶部を参照し、タスクＩＤ２５が登録されているか否かを検索する。本実施形態では、起動タスク記憶部にタスクＩＤ２５が登録されているため、タスクＩＤ２５に該当するタスク（タスク２５）から、タスク２５が属するタスククラスのタスククラス識別子（タスククラスＩＤ２４）を取得し、連携タスク取得部に検索成功信号とタスククラスＩＤ２４を渡す。
【０３１２】
連携タスク取得部は、検索成功信号を受信すると、割当クラス記憶部を参照し、ＮＵＬＬ値が設定されているか否かを検索する。割当クラス記憶部には、ＮＵＬＬ値が設定されているので、連携タスク取得部は、割当クラス決定部に、タスククラスＩＤ２５とタスククラスＩＤ２６とタスクＩＤ２６を渡す。続いて、連携タスク取得部は、割当クラス決定信号を受信するまで待つ。
【０３１３】
割当クラス決定部は、クラス定義部を参照し、タスククラスＩＤ２５のＣＰＵ利用率（ＣＰＵ利用率２５＝５０％）とタスククラスＩＤ２６のＣＰＵ利用率（ＣＰＵ利用率２６＝４０％）を取得する。続いて、ＣＰＵ利用率２５とＣＰＵ利用率２６の値を比較する。本実施形態では、ＣＰＵ利用率２５の値の方が大きいため、割当クラス記憶部にタスククラスＩＤ２５を設定する。続いて、割当クラス決定部は、クラス割当管理部に、タスククラスＩＤ２６とタスククラスＩＤ２５とタスクＩＤ２６とタスククラス変更信号を渡し、クラス割当記憶更新信号を受信するまで待つ。
【０３１４】
クラス割当管理部は、タスククラス変更信号を受信すると、クラス割当記憶部からタスククラスＩＤ２６と組みとなるタスクリスト（タスクリスト２６）を参照する。クラス割当管理部は、タスクリスト２６のＨＥＡＤポインタの内容を判定する。タスクリスト２６のＨＥＡＤポインタは、リスト２６を示されるように設定されているため、クラス割当管理部は、ＨＥＡＤポインタにリスト２６の要素のポインタと同じ内容に設定する。つまり、ＨＥＡＤポインタには、ＮＵＬＬポインタを設定する。クラス割当管理部は、ＨＥＡＤポインタにＮＵＬＬポインタを設定したため、ＴＡＩＬポインタにもＮＵＬＬポインタを設定する。
次に、クラス割当管理部は、タスククラスＩＤ２５と組みとなるタスクリスト（タスクリスト２５）を参照する。クラス割当管理部は、タスクリスト２５のＴＡＩＬポインタの内容を判定する。タスクリスト２５のＴＡＩＬポインタは、ＮＵＬＬポインタに設定されているため、クラス割当管理部は、ＴＡＩＬポインタとＨＥＡＤポインタに、リスト２６を示されるように設定する。続いて、リスト２６の要素のポインタには、ＮＵＬＬポインタを設定する。続いて、クラス割当管理部は、クラス割当管理部に、クラス割当記憶更新信号を送信する。クラス割当管理部は、クラス割当記憶更新信号を受信すると、クラス再割当部にタスクＩＤ２６とタスククラスＩＤ２５を渡す。続いて、割当クラス決定部は、割当終了信号を受信するまで待つ。
【０３１５】
クラス再割当部は、タスククラスＩＤ２５に該当するタスククラスを、タスクＩＤ２６に該当するタスク（タスク２６）に割当て、割当クラス決定部に、割当終了信号を送信する。
【０３１６】
割当クラス決定部は、割当終了信号を受信すると、連携タスク取得部に、割当クラス決定信号を送信する。
【０３１７】
連携タスク取得部は、割当クラス決定信号を受信すると、クラス比較部に、タスククラスＩＤ２５とタスククラスＩＤ２４を渡す。続いて、連携タスク取得部は、割当許可信号または割当不許可信号を受信するまで待つ。
【０３１８】
クラス比較部は、連携タスク取得部からタスククラスＩＤ２５とタスククラスＩＤ２４を渡されると、クラス定義記憶部を参照し、タスククラスＩＤ２５のＣＰＵ利用率（ＣＰＵ利用率２５＝５０％）とタスククラスＩＤ２４のＣＰＵ利用率（ＣＰＵ利用率２４＝６０％）を取得する。続いて、クラス比較部は、ＣＰＵ利用率２５とＣＰＵ利用率２４を比較する。本実施形態では、ＣＰＵ利用率２４の値の方が大きいため、クラス比較部は、連携タスク取得部に、割当不許可信号を送信する。
【０３１９】
連携タスク取得部は、割当不許可信号を受信すると、優先度に１を加え、優先度を２に設定する。続いて、連携タスク情報２６を参照し、優先度２と組みとなるタスク識別子とタスククラス識別子が存在するか否かを検索する。本実施形態では、連携タスク情報２６に、優先度２と組みとなるタスク識別子とタスククラス識別子は存在せず連携タスク情報取得部からタスク終了信号を受信しているので、終了タスク管理部に、次タスク検索要求信号を送信する。
【０３２０】
終了タスク管理部は、次タスク検索要求信号を受信すると、取得したタスクリストＥから、処理対象となっているタスクＩＤ２６を要素として持つリスト２６を参照し、リスト２６の要素のポインタの内容を判定する。リスト２６の要素のポインタはＮＵＬＬポインタであるため、クラス再割当処理を終了する。
【０３２１】
次に、本発明の第３実施形態によるデータ処理システムのリソースＱｏＳ制御システムの第１具体例を、図４１を参照して説明する。本具体例では、データ処理装置としてパーソナル・コンピュータを、記憶装置として磁気ディスク記憶装置を備えている。
【０３２２】
パーソナル・コンピュータは、連携タスク情報取得部、連携タスク取得部、タスク検索部、クラス比較部、クラス再割当部、起動タスク管理部、終了タスク管理部、第２連携タスク情報取得部、第２連携タスク取得部、第２クラス比較部として機能する中央演算装置を有している。
磁気ディスクは、各タスクのタスク識別子と連携タスク情報の組みと、現在起動状態のタスク群と、各タスククラス識別子とそのタスククラスが利用可能なリソース割合値の組みと、各タスク識別子とそのタスク識別子に該当するタスクに対して起動直後に割当てられるタスククラスのタスククラス識別子が記憶される。つまり、磁気ディスクは、連携タスク記憶部３１１、起動タスク記憶部３１２、クラス定義記憶部３１４、デフォルトクラス割当記憶部３１６として機能し、連携タスク記憶部と起動タスク記憶部とクラス定義記憶部には図４１に示す内容が記憶されている。
【０３２３】
今、タスクＦが起動したとする。
起動タスク管理部は、タスクＦのタスク識別子（タスクＩＤＦ）とタスクＦが属するタスククラスのタスククラス識別子（タスククラスＩＤＦ）を取得し、起動タスク記憶部に、タスクＩＤＦ書き込む。続いて、起動タスク管理部は、連携タスク情報取得部に、タスクＩＤＦとタスククラスＩＤＦを渡す。
【０３２４】
連携タスク情報取得部は、起動タスク管理部からタスクＩＤＦとタスククラスＩＤＦを渡されると、連携タスク記憶部を参照し、タスクＩＤＦと組みとなる連携タスク情報（連携タスク情報Ｆ）を取得する。続いて、連携タスク情報取得部は、連携タスク取得部に、タスクＩＤＦとタスククラスＩＤＦと連携タスク情報Ｆを渡す。
【０３２５】
連携タスク取得部は、連携タスク情報取得部からタスクＩＤＦとタスククラスＩＤＦと連携タスク情報Ｆを渡されると、初期化のために、優先度を初期値０に設定する。連携タスク取得部は、連携タスク情報Ｆを参照し、優先度０と組みとなるタスク識別子とタスククラス識別子の組みが存在するか検索する。本実施形態では、連携タスク情報Ｆに優先度０と組みとなるタスク識別子（タスクＩＤ３１）とタスククラス識別子（タスククラスＩＤ３１）が存在するため、連携タスク取得部は、タスクＩＤ３１とタスククラスＩＤ３１を取得する。続いて、連携タスク取得部は、タスク検索部に、タスクＩＤ３１を渡し、検索成功信号または検索失敗信号を受信するまで待つ。
【０３２６】
タスク検索部は、連携タスク取得部からタスクＩＤ３１を渡されると、起動タスク記憶部を参照し、タスクＩＤ３１が登録されているか否かを検索する。本実施形態では、起動タスク記憶部にタスクＩＤ３１が登録されているため、タスクＩＤ３１に該当するタスク（タスク３１）から、タスク３１が属するタスククラスのタスククラス識別子（タスククラスＩＤ３１）を取得し、連携タスク取得部に検索成功信号とタスククラスＩＤ３１を渡す。連携タスク取得部は、検索成功信号を受信すると、クラス比較部にタスククラスＩＤＦとタスククラスＩＤ３１を渡す。続いて、連携タスク取得部は、割当許可信号または割当不許可信号を受信するまで待つ。
【０３２７】
クラス比較部は、連携タスク取得部からタスククラスＩＤＦとタスククラスＩＤ３１を渡されると、クラス定義記憶部を参照し、タスククラスＩＤＦのＣＰＵ利用率（ＣＰＵ利用率Ｆ＝９５％）とタスククラスＩＤ３１のＣＰＵ利用率（ＣＰＵ利用率３１＝９０％）を取得する。続いて、クラス比較部は、ＣＰＵ利用率ＦとＣＰＵ利用率３１を比較する。本実施形態では、ＣＰＵ利用率Ｆの値の方が大きいため、連携タスク取得部に、割当許可信号を送信する。
【０３２８】
連携タスク取得部は、割当許可信号を受信すると、クラス再割当部に、タスクＩＤ３１とタスククラスＩＤＦを渡す。続いて、連携タスク取得部は、割当終了信号を受信するまで待つ。
【０３２９】
クラス再割当部は、連携タスク取得部からタスクＩＤ３１とタスククラスＩＤＦを渡されると、タスククラスＩＤＦに該当するタスククラスを、タスクＩＤ３１に該当するタスクに割当て、連携タスク取得部に、割当終了信号を送信する。
【０３３０】
連携タスク取得部は、割当終了信号を受信すると、優先度に１を加え、優先度を１に設定する。続いて、連携タスク情報Ｆを参照し、優先度１と組みとなるタスク識別子とタスククラス識別子が存在するか否かを検索する。本実施形態では、連携タスク情報Ｆに優先度１と組みとなるタスク識別子（タスクＩＤ３２）とタスククラス識別子（タスククラスＩＤ３２）が存在するため、連携タスク取得部は、タスクＩＤ３２とタスククラスＩＤ３２を取得する。続いて、連携タスク取得部は、タスク検索部に、タスクＩＤ３２を渡し、検索成功信号または検索失敗信号を受信するまで待つ。
【０３３１】
タスク検索部は、連携タスク取得部からタスクＩＤ３２を渡されると、起動タスク記憶部を参照し、タスクＩＤ３２が登録されているか否かを検索する。本実施形態では、起動タスク記憶部にタスクＩＤ３２が登録されているため、タスクＩＤ３２に該当するタスク（タスク３２）から、タスク３２が属するタスククラスのタスククラス識別子（タスククラスＩＤ３２）を取得し、連携タスク取得部に検索成功信号とタスククラスＩＤ３２を渡す。
【０３３２】
連携タスク取得部は、検索成功信号を受信すると、クラス比較部にタスククラスＩＤＦとタスククラスＩＤ３２を渡す。続いて、連携タスク取得部は、割当許可信号または割当不許可信号を受信するまで待つ。
【０３３３】
クラス比較部は、連携タスク取得部からタスククラスＩＤＦとタスククラスＩＤ３２を渡されると、クラス定義記憶部を参照し、タスククラスＩＤＦのＣＰＵ利用率（ＣＰＵ利用率Ｆ＝９５％）とタスククラスＩＤ３２のＣＰＵ利用率（ＣＰＵ利用率３２＝８０％）を取得する。続いて、クラス比較部は、ＣＰＵ利用率ＦとＣＰＵ利用率３２を比較する。本実施形態では、ＣＰＵ利用率Ｆの値の方が大きいため、連携タスク取得部に、割当許可信号を送信する。
【０３３４】
連携タスク取得部は、割当許可信号を受信すると、クラス再割当部に、タスクＩＤ３２とタスククラスＩＤＦを渡す。続いて、連携タスク取得部は、割当終了信号を受信するまで待つ。
【０３３５】
クラス再割当部は、連携タスク取得部からタスクＩＤ３２とタスククラスＩＤＦを渡されると、タスククラスＩＤＦに該当するタスククラスを、タスクＩＤ３２に該当するタスクに割当て、連携タスク取得部に、割当終了信号を送信する。
【０３３６】
連携タスク取得部は、割当終了信号を受信すると、優先度に１を加え、優先度を２に設定する。続いて、連携タスク情報Ｆを参照し、優先度２と組みとなるタスク識別子とタスククラス識別子が存在するか否かを検索する。本実施形態では、連携タスク情報Ｆに優先度２と組みとなるタスク識別子とタスククラス識別子が存在しないため、クラス再割当処理を終了する。
【０３３７】
次に、タスクＦが終了したとする。
終了タスク管理部は、タスクＦが終了すると、タスクＦのタスク識別子（タスクＩＤＦ）を取得する。終了タスク管理部は、デフォルトクラス割当記憶部を参照し、タスクＩＤＦと組みとなるタスククラス識別子（タスククラスＩＤＦ）を取得する。終了タスク管理部は、連携タスク記憶部を参照し、タスクＩＤＦと組みとなる連携タスク情報（連携タスク情報Ｆ）を取得する。終了タスク管理部は、初期化のために、優先度を初期値０に設定する。終了タスク管理部は、連携タスク情報Ｆを参照し、優先度０と組みとなるタスク識別子とタスククラス識別子の組みが存在するか検索する。本実施形態では、連携タスク情報Ｆに優先度０と組みとなるタスク識別子（タスクＩＤ３１）とタスククラス識別子（タスククラスＩＤ３１）が存在するため、終了タスク管理部は、タスクＩＤ３１とタスククラスＩＤ３１を取得する。続いて、終了タスク管理部は、タスク検索部に、タスクＩＤ３１を渡し、検索成功信号または検索失敗信号を受信するまで待つ。
【０３３８】
タスク検索部は、終了タスク管理部からタスクＩＤ３１を渡されると、起動タスク記憶部を参照し、タスクＩＤ３１が登録されているか否かを検索する。本実施形態では、起動タスク記憶部にタスクＩＤ３１が登録されているため、タスクＩＤ３１に該当するタスク（タスク３１）から、タスク３１が属するタスククラスのタスククラス識別子（タスククラスＩＤＦ）を取得し、終了タスク管理部に検索成功信号とタスククラスＩＤ３１を渡す。
【０３３９】
終了タスク管理部は、検索成功信号を受信すると、第２クラス比較部にタスククラスＩＤＦとタスククラスＩＤＦとタスククラスＩＤ３１を渡す。続いて、終了タスク管理部は、割当許可信号または割当不許可信号を受信するまで待つ。
【０３４０】
第２クラス比較部は、終了タスク管理部からタスククラスＩＤＦとタスククラスＩＤＦとタスククラスＩＤ３１を渡されると、クラス定義記憶部を参照し、タスククラスＩＤＦのＣＰＵ利用率（ＣＰＵ利用率Ｆ＝９５％）とタスククラスＩＤＦのＣＰＵ利用率（ＣＰＵ利用率Ｆ＝９５％）を取得する。続いて、第２クラス比較部は、ＣＰＵ利用率ＦとＣＰＵ利用率Ｆを比較する。本実施形態では、ＣＰＵ利用率の値が等しいため、クラス定義記憶部を参照し、タスククラスＩＤＦのＣＰＵ利用率（ＣＰＵ利用率Ｆ＝９５％）とタスククラスＩＤ３１のＣＰＵ利用率（ＣＰＵ利用率３１＝９０％）を取得する。続いて、第２クラス比較部は、ＣＰＵ利用率ＦとＣＰＵ利用率３１を比較する。本実施形態では、ＣＰＵ利用率Ｆの値の方が大きいため、終了タスク管理部に割当許可信号を送信する。
【０３４１】
終了タスク管理部は、割当許可信号を受信すると、クラス再割当部に、タスクＩＤ３１とタスククラスＩＤ３１を渡す。続いて、終了タスク管理部は、割当終了信号を受信するまで待つ。
【０３４２】
クラス再割当部は、終了タスク管理部からタスクＩＤ３１とタスククラスＩＤ３１を渡されると、タスククラスＩＤ３１に該当するタスククラスを、タスクＩＤ３１に該当するタスクに割当て、終了タスク管理部に、割当終了信号を送信する。
【０３４３】
終了タスク管理部は、割当終了信号を受信すると、第２連携タスク情報取得部にタスクＩＤ３１とタスククラスＩＤ３１を渡す。続いて、終了タスク管理部は次タスク検索要求信号を受信するまで待つ。
【０３４４】
第２連携タスク情報取得部は、第２連携タスク取得部からタスクＩＤ３１とタスククラスＩＤ３１を渡されると、連携タスク記憶部を参照し、タスクＩＤ３１と組みとなる連携タスク情報（連携タスク情報３１）を取得する。続いて、第２連携タスク情報取得部は、第２連携タスク取得部に、タスクＩＤ３１とタスククラスＩＤ３１と連携タスク情報３１を渡す。
【０３４５】
第２連携タスク取得部は、第２連携タスク情報取得部からタスクＩＤ３１とタスククラスＩＤ３１と連携タスク情報３１を渡されると、初期化のために、優先度を初期値０に設定する。第２連携タスク取得部は、連携タスク情報３１を参照し、優先度０と組みとなるタスク識別子とタスククラス識別子の組みが存在するか検索する。本実施形態では、連携タスク情報３１に優先度０と組みとなるタスク識別子（タスクＩＤＦ）とタスククラス識別子（タスククラスＩＤＦ）が存在するため、第２連携タスク取得部は、タスクＩＤＦとタスククラスＩＤＦを取得する。続いて、第２連携タスク取得部は、タスク検索部に、タスクＩＤＦを渡し、検索成功信号または検索失敗信号を受信するまで待つ。
【０３４６】
タスク検索部は、第２連携タスク取得部からタスクＩＤＦを渡されると、起動タスク記憶部を参照し、タスクＩＤＦが登録されているか否かを検索する。本実施形態では、起動タスク記憶部にタスクＩＤＦが登録されていないため、タスク検索部は、第２連携タスク取得部に検索失敗信号を送信する。
【０３４７】
第２連携タスク取得部は、検索失敗信号を受信すると、優先度に１を加え、優先度を１に設定する。続いて、連携タスク情報３１を参照し、優先度１と組みとなるタスク識別子とタスククラス識別子が存在するか否かを検索する。本実施形態では、連携タスク情報３１に優先度１と組みとなるタスク識別子（タスクＩＤ３３）とタスククラス識別子（タスククラスＩＤ３３）が存在するため、第２連携タスク取得部は、タスクＩＤ３３とタスククラスＩＤ３３を取得する。続いて、第２連携タスク取得部は、タスク検索部に、タスクＩＤ３３を渡し、検索成功信号または検索失敗信号を受信するまで待つ。
【０３４８】
タスク検索部は、第２連携タスク取得部からタスクＩＤ３３を渡されると、起動タスク記憶部を参照し、タスクＩＤ３３が登録されているか否かを検索する。本実施形態では、起動タスク記憶部にタスクＩＤ３３が登録されているため、第２連携タスク取得部に検索成功信号を渡す。
【０３４９】
第２連携タスク取得部は、検索成功信号を受信すると、クラス比較部にタスククラスＩＤ３１とタスククラスＩＤ３３を渡す。続いて、第２連携タスク取得部は、割当許可信号または割当不許可信号を受信するまで待つ。
【０３５０】
クラス比較部は、第２連携タスク取得部からタスククラスＩＤ３１とタスククラスＩＤ３３を渡されると、クラス定義記憶部を参照し、タスククラスＩＤ３１のＣＰＵ利用率（ＣＰＵ利用率３１＝９０％）とタスククラスＩＤ３３のＣＰＵ利用率（ＣＰＵ利用率３３＝７０％）を取得する。続いて、クラス比較部は、ＣＰＵ利用率３１とＣＰＵ利用率３３を比較する。本実施形態では、ＣＰＵ利用率３１の値の方が大きいため、第２連携タスク取得部に、割当不許可信号を送信する。
【０３５１】
第２連携タスク取得部は、割当不許可信号を受信すると、終了タスク管理部に、次タスク検索要求信号を送信する。
【０３５２】
終了タスク管理部は、次タスク検索要求信号を受信すると、優先度に１を加え、優先度を１に設定する。続いて、連携タスク情報Ｆを参照し、優先度１と組みとなるタスク識別子とタスククラス識別子が存在するか否かを検索する。本実施形態では、連携タスク情報Ｆに優先度１と組みとなるタスク識別子（タスクＩＤ３２）とタスククラス識別子（タスククラスＩＤ３２）が存在するため、終了タスク管理部は、タスクＩＤ３２とタスククラスＩＤ３２を取得する。続いて、終了タスク管理部は、タスク検索部に、タスクＩＤ３２を渡し、検索成功信号または検索失敗信号を受信するまで待つ。
【０３５３】
タスク検索部は、終了タスク管理部からタスクＩＤ３２を渡されると、起動タスク記憶部を参照し、タスクＩＤ３２が登録されているか否かを検索する。本実施形態では、起動タスク記憶部にタスクＩＤ３２が登録されているため、タスクＩＤ３２に該当するタスク（タスク３２）から、タスク３１が属するタスククラスのタスククラス識別子（タスククラスＩＤＦ）を取得し、終了タスク管理部に検索成功信号とタスククラスＩＤ３２を渡す。
【０３５４】
終了タスク管理部は、検索成功信号を受信すると、第２クラス比較部にタスククラスＩＤＦとタスククラスＩＤＦとタスククラスＩＤ３２を渡す。続いて、終了タスク管理部は、割当許可信号または割当不許可信号を受信するまで待つ。
【０３５５】
第２クラス比較部は、終了タスク管理部からタスククラスＩＤＦとタスククラスＩＤＦとタスククラスＩＤ３２を渡されると、クラス定義記憶部を参照し、タスククラスＩＤＦのＣＰＵ利用率（ＣＰＵ利用率Ｆ＝９５％）とタスククラスＩＤＦのＣＰＵ利用率（ＣＰＵ利用率Ｆ＝９５％）を取得する。続いて、第２クラス比較部は、ＣＰＵ利用率ＦとＣＰＵ利用率Ｆを比較する。本実施形態では、ＣＰＵ利用率の値が等しいため、クラス定義記憶部を参照し、タスククラスＩＤＦのＣＰＵ利用率（ＣＰＵ利用率Ｆ＝９５％）とタスククラスＩＤ３２のＣＰＵ利用率（ＣＰＵ利用率３２＝８０％）を取得する。続いて、第２クラス比較部は、ＣＰＵ利用率ＦとＣＰＵ利用率３２を比較する。本実施形態では、ＣＰＵ利用率Ｆの値の方が大きいため、終了タスク管理部に割当許可信号を送信する。
【０３５６】
終了タスク管理部は、割当許可信号を受信すると、クラス再割当部に、タスクＩＤ３２とタスククラスＩＤ３２を渡す。続いて、終了タスク管理部は、割当終了信号を受信するまで待つ。
【０３５７】
クラス再割当部は、終了タスク管理部からタスクＩＤ３２とタスククラスＩＤ３２を渡されると、タスククラスＩＤ３２に該当するタスククラスを、タスクＩＤ３２に該当するタスクに割当て、終了タスク管理部に、割当終了信号を送信する。
【０３５８】
終了タスク管理部は、割当終了信号を受信すると、第２連携タスク情報取得部にタスクＩＤ３２とタスククラスＩＤ３２を渡す。続いて、終了タスク管理部は次タスク検索要求信号を受信するまで待つ。
【０３５９】
第２連携タスク情報取得部は、第２連携タスク取得部からタスクＩＤ３２とタスククラスＩＤ３２を渡されると、連携タスク記憶部を参照し、タスクＩＤ３２と組みとなる連携タスク情報（連携タスク情報３２）を取得する。続いて、第２連携タスク情報取得部は、第２連携タスク取得部に、タスクＩＤ３２とタスククラスＩＤ３２と連携タスク情報３２を渡す。
【０３６０】
第２連携タスク取得部は、第２連携タスク情報取得部からタスクＩＤ３２とタスククラスＩＤ３２と連携タスク情報３２を渡されると、初期化のために、優先度ｙを初期値０に設定する。第２連携タスク取得部は、連携タスク情報３２を参照し、優先度０と組みとなるタスク識別子とタスククラス識別子の組みが存在するか検索する。本実施形態では、連携タスク情報３２に優先度０と組みとなるタスク識別子（タスクＩＤＦ）とタスククラス識別子（タスククラスＩＤＦ）が存在するため、第２連携タスク取得部は、タスクＩＤＦとタスククラスＩＤＦを取得する。続いて、第２連携タスク取得部は、タスク検索部に、タスクＩＤＦを渡し、検索成功信号または検索失敗信号を受信するまで待つ。
【０３６１】
タスク検索部は、第２連携タスク取得部からタスクＩＤＦを渡されると、起動タスク記憶部を参照し、タスクＩＤＦが登録されているか否かを検索する。本実施形態では、起動タスク記憶部にタスクＩＤＦが登録されていないため、タスク検索部は、第２連携タスク取得部に検索失敗信号を送信する。
【０３６２】
第２連携タスク取得部は、検索失敗信号を受信すると、優先度に１を加え、優先度を１に設定する。続いて、連携タスク情報３２を参照し、優先度１と組みとなるタスク識別子とタスククラス識別子が存在するか否かを検索する。本実施形態では、連携タスク情報３２に優先度１と組みとなるタスク識別子とタスククラス識別子が存在しないため、第２連携タスク取得部は、終了タスク管理部に、次タスク検索要求信号を送信する。
【０３６３】
終了タスク管理部は、次タスク検索要求信号を受信すると、優先度に１を加え、優先度を２に設定する。続いて、連携タスク情報Ｆを参照し、優先度２と組みとなるタスク識別子とタスククラス識別子が存在するか否かを検索する。本実施形態では、連携タスク情報Ｆに優先度２と組みとなるタスク識別子とタスククラス識別子が存在しないため、クラス再割当処理を終了する。
【０３６４】
次に、本発明の第３実施形態によるデータ処理システムのリソースＱｏＳ制御システムの第２の具体例を、図４１を参照して説明する。本具体例では、データ処理装置としてパーソナル・コンピュータを、記憶装置として磁気ディスク記憶装置を備えている。
【０３６５】
パーソナル・コンピュータは、連携タスク情報取得部、連携タスク取得部、タスク検索部、クラス比較部、クラス再割当部、起動タスク管理部、終了タスク管理部、第２連携タスク情報取得部、第２連携タスク取得部、第２クラス比較部として機能する中央演算装置を有している。
磁気ディスクは、各タスクのタスク識別子と連携タスク情報の組みと、現在起動状態のタスク群と、各タスククラス識別子とそのタスククラスが利用可能なリソース割合値の組みと、各タスク識別子とそのタスク識別子に該当するタスクに対して起動直後に割当てられるタスククラスのタスククラス識別子が記憶される。つまり、磁気ディスクは、連携タスク記憶部３１１、起動タスク記憶部３１２、クラス定義記憶部３１４、デフォルトクラス割当記憶部３１６として機能し、連携タスク記憶部と起動タスク記憶部とクラス定義記憶部には図４１に示す内容が記憶されている。
【０３６６】
今、タスクＧが起動したとする。
起動タスク管理部は、タスクＧのタスク識別子（タスクＩＤＧ）とタスクＧが属するタスククラスのタスククラス識別子（タスククラスＩＤＧ）を取得し、起動タスク記憶部に、タスクＩＤＧ書き込む。続いて、起動タスク管理部は、連携タスク情報取得部に、タスクＩＤＧとタスククラスＩＤＧを渡す。
【０３６７】
連携タスク情報取得部は、起動タスク管理部からタスクＩＤＧとタスククラスＩＤＧを渡されると、連携タスク記憶部を参照し、タスクＩＤＧと組みとなる連携タスク情報（連携タスク情報Ｇ）を取得する。続いて、連携タスク情報取得部は、連携タスク取得部に、タスクＩＤＧとタスククラスＩＤＧと連携タスク情報Ｇを渡す。
【０３６８】
連携タスク取得部は、連携タスク情報取得部からタスクＩＤＧとタスククラスＩＤＧと連携タスク情報Ｇを渡されると、初期化のために、優先度を初期値０に設定する。連携タスク取得部は、連携タスク情報Ｇを参照し、優先度０と組みとなるタスク識別子とタスククラス識別子の組みが存在するか検索する。本実施形態では、連携タスク情報Ｇに優先度０と組みとなるタスク識別子（タスクＩＤ３５）とタスククラス識別子（タスククラスＩＤ３５）が存在するため、連携タスク取得部は、タスクＩＤ３５とタスククラスＩＤ３５を取得する。続いて、連携タスク取得部は、タスク検索部に、タスクＩＤ３５を渡し、検索成功信号または検索失敗信号を受信するまで待つ。
【０３６９】
タスク検索部は、連携タスク取得部からタスクＩＤ３５を渡されると、起動タスク記憶部を参照し、タスクＩＤ３５が登録されているか否かを検索する。本実施形態では、起動タスク記憶部にタスクＩＤ３５が登録されているため、タスクＩＤ３５に該当するタスク（タスク３５）から、タスク３５が属するタスククラスのタスククラス識別子（タスククラスＩＤ３５）を取得し、連携タスク取得部に検索成功信号とタスククラスＩＤ３５を渡す。
【０３７０】
連携タスク取得部は、検索成功信号を受信すると、クラス比較部にタスククラスＩＤＧとタスククラスＩＤ３５を渡す。続いて、連携タスク取得部は、割当許可信号または割当不許可信号を受信するまで待つ。
【０３７１】
クラス比較部は、連携タスク取得部からタスククラスＩＤＧとタスククラスＩＤ３５を渡されると、クラス定義記憶部を参照し、タスククラスＩＤＧのＣＰＵ利用率（ＣＰＵ利用率Ｇ＝４０％）とタスククラスＩＤ３５のＣＰＵ利用率（ＣＰＵ利用率３５＝５０％）を取得する。続いて、クラス比較部は、ＣＰＵ利用率ＧとＣＰＵ利用率３５を比較する。本実施形態では、ＣＰＵ利用率３５の値の方が大きいため、連携タスク取得部に、割当不許可信号を送信する。
【０３７２】
連携タスク取得部は、割当不許可信号を受信すると、優先度に１を加え、優先度を１に設定する。続いて、連携タスク情報Ｇを参照し、優先度１と組みとなるタスク識別子とタスククラス識別子の組みが存在するか検索する。本実施形態では、連携タスク情報Ｇに優先度１と組みとなるタスク識別子（タスクＩＤ３６）とタスククラス識別子（タスククラスＩＤ３６）が存在するため、連携タスク取得部は、タスクＩＤ３６とタスククラスＩＤ３６を取得する。続いて、連携タスク取得部は、タスク検索部に、タスクＩＤ３６を渡し、検索成功信号または検索失敗信号を受信するまで待つ。
【０３７３】
タスク検索部は、連携タスク取得部からタスクＩＤ３６を渡されると、起動タスク記憶部を参照し、タスクＩＤ３６が登録されているか否かを検索する。本実施形態では、起動タスク記憶部にタスクＩＤ３６が登録されているため、タスクＩＤ３６に該当するタスク（タスク３６）から、タスク３６が属するタスククラスのタスククラス識別子（タスククラスＩＤ３６）を取得し、連携タスク取得部に検索成功信号とタスククラスＩＤ３６を渡す。
【０３７４】
連携タスク取得部は、検索成功信号を受信すると、クラス比較部にタスククラスＩＤＧとタスククラスＩＤ３６を渡す。続いて、連携タスク取得部は、割当許可信号または割当不許可信号を受信するまで待つ。
【０３７５】
クラス比較部は、連携タスク取得部からタスククラスＩＤＧとタスククラスＩＤ３６を渡されると、クラス定義記憶部を参照し、タスククラスＩＤＧのＣＰＵ利用率（ＣＰＵ利用率Ｇ＝４０％）とタスククラスＩＤ３６のＣＰＵ利用率（ＣＰＵ利用率３６＝４０％）を取得する。続いて、クラス比較部は、ＣＰＵ利用率ＧとＣＰＵ利用率３６を比較する。本実施形態では、ＣＰＵ利用率の値が等しいため、連携タスク取得部に、割当不許可信号を送信する。
【０３７６】
連携タスク取得部は、割当不許可信号を受信すると、優先度に１を加え、優先度を２に設定する。続いて、連携タスク情報Ｇを参照し、優先度２と組みとなるタスク識別子とタスククラス識別子の組みが存在するか検索する。本実施形態では、連携タスク情報Ｇに優先度２と組みとなるタスク識別子（タスクＩＤ３７）とタスククラス識別子（タスククラスＩＤ３７）が存在するため、連携タスク取得部は、タスクＩＤ３７とタスククラスＩＤ３７を取得する。続いて、連携タスク取得部は、タスク検索部に、タスクＩＤ３７を渡し、検索成功信号または検索失敗信号を受信するまで待つ。
【０３７７】
タスク検索部は、連携タスク取得部からタスクＩＤ３７を渡されると、起動タスク記憶部を参照し、タスクＩＤ３７が登録されているか否かを検索する。本実施形態では、起動タスク記憶部にタスクＩＤ３７が登録されているため、タスクＩＤ３７に該当するタスク（タスク３７）から、タスク３７が属するタスククラスのタスククラス識別子（タスククラスＩＤ３８）を取得し、連携タスク取得部に検索成功信号とタスククラスＩＤ３８を渡す。
【０３７８】
連携タスク取得部は、検索成功信号を受信すると、クラス比較部にタスククラスＩＤＧとタスククラスＩＤ３８を渡す。続いて、連携タスク取得部は、割当許可信号または割当不許可信号を受信するまで待つ。
【０３７９】
クラス比較部は、連携タスク取得部からタスククラスＩＤＧとタスククラスＩＤ３８を渡されると、クラス定義記憶部を参照し、タスククラスＩＤＧのＣＰＵ利用率（ＣＰＵ利用率Ｇ＝４０％）とタスククラスＩＤ３８のＣＰＵ利用率（ＣＰＵ利用率３８＝３５％）を取得する。続いて、クラス比較部は、ＣＰＵ利用率ＧとＣＰＵ利用率３８を比較する。本実施形態では、ＣＰＵ利用率Ｇの値の方が大きいため、連携タスク取得部に、割当許可信号を送信する。
【０３８０】
連携タスク取得部は、割当許可信号を受信すると、クラス再割当部に、タスクＩＤ３７とタスククラスＩＤＧを渡す。続いて、連携タスク取得部は、割当終了信号を受信するまで待つ。
【０３８１】
クラス再割当部は、連携タスク取得部からタスクＩＤ３７とタスククラスＩＤＧを渡されると、タスククラスＩＤＧに該当するタスククラスを、タスクＩＤ３７に該当するタスクに割当て、連携タスク取得部に、割当終了信号を送信する。
【０３８２】
連携タスク取得部は、割当終了信号を受信すると、優先度に１を加え、優先度を３に設定する。続いて、連携タスク情報Ｇを参照し、優先度３と組みとなるタスク識別子とタスククラス識別子が存在するか否かを検索する。本実施形態では、連携タスク情報Ｇに、優先度３と組みとなるタスク識別子とタスククラス識別子が存在しないため、クラス再割当処理を終了する。
【０３８３】
次に、タスクＧが終了したとする。
終了タスク管理部は、タスクＧが終了すると、タスクＦのタスク識別子（タスクＩＤＧ）を取得する。終了タスク管理部は、デフォルトクラス割当記憶部を参照し、タスクＩＤＧと組みとなるタスククラス識別子（タスククラスＩＤＧ）を取得する。終了タスク管理部は、連携タスク記憶部を参照し、タスクＩＤＧと組みとなる連携タスク情報（連携タスク情報Ｇ）を取得する。終了タスク管理部は、初期化のために、優先度を初期値０に設定する。終了タスク管理部は、連携タスク情報Ｇを参照し、優先度０と組みとなるタスク識別子とタスククラス識別子の組みが存在するか検索する。本実施形態では、連携タスク情報Ｇに優先度０と組みとなるタスク識別子（タスクＩＤ３５）とタスククラス識別子（タスククラスＩＤ３５）が存在するため、終了タスク管理部は、タスクＩＤ３５とタスククラスＩＤ３５を取得する。続いて、終了タスク管理部は、タスク検索部に、タスクＩＤ３５を渡し、検索成功信号または検索失敗信号を受信するまで待つ。
【０３８４】
タスク検索部は、終了タスク管理部からタスクＩＤ３５を渡されると、起動タスク記憶部を参照し、タスクＩＤ３５が登録されているか否かを検索する。本実施形態では、起動タスク記憶部にタスクＩＤ３５が登録されているため、タスクＩＤ３５に該当するタスク（タスク３５）から、タスク３５が属するタスククラスのタスククラス識別子（タスククラスＩＤ３５）を取得し、終了タスク管理部に検索成功信号とタスククラスＩＤ３５を渡す。
【０３８５】
終了タスク管理部は、検索成功信号を受信すると、第２クラス比較部にタスククラスＩＤＧとタスククラスＩＤ３５とタスククラスＩＤ３５を渡す。続いて、終了タスク管理部は、割当許可信号または割当不許可信号を受信するまで待つ。
【０３８６】
第２クラス比較部は、終了タスク管理部からタスククラスＩＤＧとタスククラスＩＤ３５とタスククラスＩＤ３５を渡されると、クラス定義記憶部を参照し、タスククラスＩＤＧのＣＰＵ利用率（ＣＰＵ利用率Ｇ＝４０％）とタスククラスＩＤ３５のＣＰＵ利用率（ＣＰＵ利用率３５＝５０％）を取得する。続いて、第２クラス比較部は、ＣＰＵ利用率ＧとＣＰＵ利用率３５を比較する。本実施形態では、ＣＰＵ利用率の値が異なるため、終了タスク管理部に、割当不許可信号を送信する。
【０３８７】
終了タスク管理部は、割当不許可信号を受信すると、優先度に１を加え、優先度を１に設定する。続いて、連携タスク情報Ｇを参照し、優先度１と組みとなるタスク識別子とタスククラス識別子の組みが存在するか検索する。本実施形態では、連携タスク情報Ｇに優先度１と組みとなるタスク識別子（タスクＩＤ３６）とタスククラス識別子（タスククラスＩＤ３６）が存在するため、終了タスク管理部は、タスクＩＤ３６とタスククラスＩＤ３６を取得する。続いて、終了タスク管理部は、タスク検索部に、タスクＩＤ３６を渡し、検索成功信号または検索失敗信号を受信するまで待つ。
【０３８８】
タスク検索部は、終了タスク管理部からタスクＩＤ３６を渡されると、起動タスク記憶部を参照し、タスクＩＤ３６が登録されているか否かを検索する。本実施形態では、起動タスク記憶部にタスクＩＤ３６が登録されているため、タスクＩＤ３６に該当するタスク（タスク３６）から、タスク３６が属するタスククラスのタスククラス識別子（タスククラスＩＤ３６）を取得し、終了タスク管理部に検索成功信号とタスククラスＩＤ３６を渡す。
【０３８９】
終了タスク管理部は、検索成功信号を受信すると、第２クラス比較部にタスククラスＩＤＧとタスククラスＩＤ３６とタスククラスＩＤ３６を渡す。続いて、終了タスク管理部は、割当許可信号または割当不許可信号を受信するまで待つ。
【０３９０】
第２クラス比較部は、終了タスク管理部からタスククラスＩＤＧとタスククラスＩＤ３６とタスククラスＩＤ３６を渡されると、クラス定義記憶部を参照し、タスククラスＩＤＧのＣＰＵ利用率（ＣＰＵ利用率Ｇ＝４０％）とタスククラスＩＤ３６のＣＰＵ利用率（ＣＰＵ利用率３６＝４０％）を取得する。続いて、第２クラス比較部は、ＣＰＵ利用率ＧとＣＰＵ利用率３６を比較する。本実施形態では、ＣＰＵ利用率の値が等しいため、クラス定義記憶部を参照し、タスククラスＩＤＧのＣＰＵ利用率（ＣＰＵ利用率Ｇ＝４０％）とタスククラスＩＤ３６のＣＰＵ利用率（ＣＰＵ利用率３６＝４０％）を取得する。続いて、第２クラス比較部は、ＣＰＵ利用率ＧとＣＰＵ利用率３６を比較する。本実施形態では、ＣＰＵ利用率が等しいため、終了タスク管理部に、割当不許可信号を送信する。
【０３９１】
終了タスク管理部は、割当不許可信号を受信すると、優先度に１を加え、優先度を２に設定する。続いて、連携タスク情報Ｇを参照し、優先度２と組みとなるタスク識別子とタスククラス識別子の組みが存在するか検索する。本実施形態では、連携タスク情報Ｇに優先度２と組みとなるタスク識別子（タスクＩＤ３７）とタスククラス識別子（タスククラスＩＤ３７）が存在するため、終了タスク管理部は、タスクＩＤ３７とタスククラスＩＤ３７を取得する。続いて、終了タスク管理部は、タスク検索部に、タスクＩＤ３７を渡し、検索成功信号または検索失敗信号を受信するまで待つ。
【０３９２】
タスク検索部は、終了タスク管理部からタスクＩＤ３７を渡されると、起動タスク記憶部を参照し、タスクＩＤ３７が登録されているか否かを検索する。本実施形態では、起動タスク記憶部にタスクＩＤ３７が登録されているため、タスクＩＤ３７に該当するタスク（タスク３７）から、タスク３７が属するタスククラスのタスククラス識別子（タスククラスＩＤＧ）を取得し、終了タスク管理部に検索成功信号とタスククラスＩＤＧを渡す。
【０３９３】
終了タスク管理部は、検索成功信号を受信すると、第２クラス比較部にタスククラスＩＤＧとタスククラスＩＤＧとタスククラスＩＤ３７を渡す。続いて、終了タスク管理部は、割当許可信号または割当不許可信号を受信するまで待つ。
【０３９４】
第２クラス比較部は、終了タスク管理部からタスククラスＩＤＧとタスククラスＩＤＧとタスククラスＩＤ３７を渡されると、クラス定義記憶部を参照し、タスククラスＩＤＧのＣＰＵ利用率（ＣＰＵ利用率Ｇ＝４０％）とタスククラスＩＤＧのＣＰＵ利用率（ＣＰＵ利用率Ｇ＝４０％）を取得する。続いて、第２クラス比較部は、ＣＰＵ利用率ＧとＣＰＵ利用率Ｇを比較する。本実施形態では、ＣＰＵ利用率の値が等しいため、クラス定義記憶部を参照し、タスククラスＩＤＧのＣＰＵ利用率（ＣＰＵ利用率Ｇ＝４０％）とタスククラスＩＤ３７のＣＰＵ利用率（ＣＰＵ利用率３７＝３０％）を取得する。続いて、第２クラス比較部は、ＣＰＵ利用率ＧとＣＰＵ利用率３７を比較する。本実施形態では、ＣＰＵ利用率が異なるため、終了タスク管理部に、割当許可信号を送信する。
【０３９５】
終了タスク管理部は、割当許可信号を受信すると、クラス再割当部に、タスクＩＤ３７とタスククラスＩＤ３７を渡す。続いて、終了タスク管理部は、割当終了信号を受信するまで待つ。
【０３９６】
クラス再割当部は、終了タスク管理部からタスクＩＤ３７とタスククラスＩＤ３７を渡されると、タスククラスＩＤ３７に該当するタスククラスを、タスクＩＤ３７に該当するタスクに割当て、終了タスク管理部に、割当終了信号を送信する。
【０３９７】
終了タスク管理部は、割当終了信号を受信すると、第２連携タスク情報取得部にタスクＩＤ３７とタスククラスＩＤ３７を渡す。続いて、終了タスク管理部は次タスク検索要求信号を受信するまで待つ。
【０３９８】
第２連携タスク情報取得部は、第２連携タスク取得部からタスクＩＤ３７とタスククラスＩＤ３７を渡されると、連携タスク記憶部を参照し、タスクＩＤ３７と組みとなる連携タスク情報（連携タスク情報３７）を取得する。続いて、第２連携タスク情報取得部は、第２連携タスク取得部に、タスクＩＤ３７とタスククラスＩＤ３７と連携タスク情報３７を渡す。第２連携タスク取得部は、第２連携タスク情報取得部からタスクＩＤ３７とタスククラスＩＤ３７と連携タスク情報３７を渡されると、初期化のために、優先度を初期値０に設定する。第２連携タスク取得部は、連携タスク情報３７を参照し、優先度０と組みとなるタスク識別子とタスククラス識別子の組みが存在するか検索する。本実施形態では、連携タスク情報３７に優先度０と組みとなるタスク識別子（タスクＩＤＧ）とタスククラス識別子（タスククラスＩＤＧ）が存在するため、第２連携タスク取得部は、タスクＩＤＧとタスククラスＩＤＧを取得する。続いて、第２連携タスク取得部は、タスク検索部に、タスクＩＤＧを渡し、検索成功信号または検索失敗信号を受信するまで待つ。
【０３９９】
タスク検索部は、第２連携タスク取得部からタスクＩＤＧを渡されると、起動タスク記憶部を参照し、タスクＩＤＧが登録されているか否かを検索する。本実施形態では、起動タスク記憶部にタスクＩＤＧが登録されていないため、タスク検索部は、第２連携タスク取得部に検索失敗信号を送信する。
【０４００】
第２連携タスク取得部は、検索失敗信号を受信すると、優先度に１を加え、優先度を１に設定する。続いて、連携タスク情報３７を参照し、優先度１と組みとなるタスク識別子とタスククラス識別子が存在するか否かを検索する。本実施形態では、連携タスク情報３７に優先度１と組みとなるタスク識別子（タスクＩＤ３８）とタスククラス識別子（タスククラスＩＤ３８）が存在するため、第２連携タスク取得部は、タスクＩＤ３８とタスククラスＩＤ３８を取得する。続いて、第２連携タスク取得部は、タスク検索部に、タスクＩＤ３８を渡し、検索成功信号または検索失敗信号を受信するまで待つ。
【０４０１】
タスク検索部は、第２連携タスク取得部からタスクＩＤ３８を渡されると、起動タスク記憶部を参照し、タスクＩＤ３８が登録されているか否かを検索する。本実施形態では、起動タスク記憶部にタスクＩＤ３８が登録されているため、第２連携タスク取得部に検索成功信号を渡す。
【０４０２】
第２連携タスク取得部は、検索成功信号を受信すると、クラス比較部にタスククラスＩＤ３７とタスククラスＩＤ３８を渡す。続いて、第２連携タスク取得部は、割当許可信号または割当不許可信号を受信するまで待つ。
【０４０３】
クラス比較部は、第２連携タスク取得部からタスククラスＩＤ３７とタスククラスＩＤ３８を渡されると、クラス定義記憶部を参照し、タスククラスＩＤ３７のＣＰＵ利用率（ＣＰＵ利用率３７＝３０％）とタスククラスＩＤ３８のＣＰＵ利用率（ＣＰＵ利用率３８＝３５％）を取得する。続いて、クラス比較部は、ＣＰＵ利用率３７とＣＰＵ利用率３８を比較する。本実施形態では、ＣＰＵ利用率３８の値の方が大きいため、第２連携タスク取得部に割当許可信号を送信する。
【０４０４】
第２連携タスク取得部は、割当許可信号を受信すると、クラス再割当部に、タスクＩＤ３７とタスククラスＩＤ３８を渡す。続いて、第２連携タスク取得部は、割当終了信号を受信するまで待つ。
【０４０５】
クラス再割当部は、第２連携タスク取得部からタスクＩＤ３７とタスククラスＩＤ３８を渡されると、タスククラスＩＤ３８に該当するタスククラスを、タスクＩＤ３７に該当するタスクに割当て、終了タスク管理部に、割当終了信号を送信する。
【０４０６】
第２連携タスク取得部は、割当終了信号を受信すると、終了タスク管理部に、次タスク検索要求信号を送信する。
【０４０７】
終了タスク管理部は、次タスク検索要求信号を受信すると、優先度に１を加え、優先度を３に設定する。続いて、連携タスク情報Ｇを参照し、優先度３と組みとなるタスク識別子とタスククラス識別子が存在するか否かを検索する。本実施形態では、連携タスク情報Ｇに優先度３と組みとなるタスク識別子とタスククラス識別子が存在しないため、クラス再割当処理を終了する。
【０４０８】
本発明によれば、各タスクが使用するリソース量を制御するリソース制御装置や、リソース制御装置をコンピュータに実現するためのプログラムといった用途に適用できる。
【図面の簡単な説明】
【０４０９】
【図１】図１は、従来技術の構成を示すブロック図である。
【図２】図２は、本発明の第１実施形態による情報処理システムのリソースＱｏＳ制御システムの構成を示すブロック図である。
【図３】図３は、本発明の第１実施形態によるリソースＱｏＳ制御システムの連携タスク情報取得部の動作を示す流れ図である。
【図４Ａ】図４Ａは、本発明の第１実施形態によるリソースＱｏＳ制御システムの連携タスク取得部の動作を示す流れ図である。
【図４Ｂ】図４Ｂは、本発明の第１実施形態によるリソースＱｏＳ制御システムの連携タスク取得部の動作を示す流れ図である。
【図５】図５は、本発明の第１実施形態によるリソースＱｏＳ制御システムのタスク検索部の動作を示す流れ図である。
【図６】図６は、本発明の第１実施形態によるリソースＱｏＳ制御システムの割当クラス決定部の動作を示す流れ図である。
【図７】図７は、本発明の第１実施形態によるリソースＱｏＳ制御システムのクラス比較部の動作を示す流れ図である。
【図８】図８は、本発明の第１実施形態によるリソースＱｏＳ制御システムのクラス再割当部の動作を示す流れ図である。
【図９】図９は、本発明の第２実施形態による情報処理システムのリソースＱｏＳ制御システムの構成を示すブロック図である
【図１０】図１０は、本発明の第２実施形態によるリソースＱｏＳ制御システムの連携タスク情報取得部の動作を示す流れ図である。
【図１１Ａ】図１１Ａは、本発明の第２実施形態によるリソースＱｏＳ制御システムの連携タスク取得部の動作を示す流れ図である。
【図１１Ｂ】図１１Ｂは、本発明の第２実施形態によるリソースＱｏＳ制御システムの連携タスク取得部の動作を示す流れ図である。
【図１２】図１２は、本発明の第２実施形態によるリソースＱｏＳ制御システムのタスク検索部の動作を示す流れ図である。
【図１３】図１３は、本発明の第２実施形態によるリソースＱｏＳ制御システムの割当クラス決定部の動作を示す流れ図である。
【図１４】図１４は、本発明の第２実施形態によるリソースＱｏＳ制御システムの起動タスク管理部の動作を示す流れ図である。
【図１５Ａ】図１５Ａは、本発明の第２実施形態によるリソースＱｏＳ制御システムの終了タスク管理部の動作を示す流れ図である。
【図１５Ｂ】図１５Ｂは、本発明の第２実施形態によるリソースＱｏＳ制御システムの終了タスク管理部の動作を示す流れ図である。
【図１６】図１６は、本発明の第２実施形態によるリソースＱｏＳ制御システムのクラス割当管理部の動作を示す流れ図である。
【図１７】図１７は、本発明の第２実施形態によるリソースＱｏＳ制御システムのクラス割当管理部の動作を示す流れ図である。
【図１８】図１８は、本発明の第３実施形態による情報処理システムのリソースＱｏＳ制御システムの構成を示すブロック図である。
【図１９】図１９は、本発明の第３実施形態によるリソースＱｏＳ制御システムの連携タスク情報取得部の動作を示す流れ図である。
【図２０Ａ】図２０Ａは、本発明の第３実施形態によるリソースＱｏＳ制御システムの連携タスク取得部の動作を示す流れ図である。
【図２０Ｂ】図２０Ｂは、本発明の第３実施形態によるリソースＱｏＳ制御システムの連携タスク取得部の動作を示す流れ図である。
【図２１】図２１は、本発明の第３実施形態によるリソースＱｏＳ制御システムのタスク検索部の動作を示す流れ図である。
【図２２】図２２は、本発明の第３実施形態によるリソースＱｏＳ制御システムのタスク検索部の動作を示す流れ図である。
【図２３】図２３は、本発明の第３実施形態によるリソースＱｏＳ制御システムのタスク検索部の動作を示す流れ図である。
【図２４】図２４は、本発明の第３実施形態によるリソースＱｏＳ制御システムのタスク検索部の動作を示す流れ図である。
【図２５】図２５は、本発明の第３実施形態によるリソースＱｏＳ制御システムのクラス比較部の動作を示す流れ図である。
【図２６】図２６は、本発明の第３実施形態によるリソースＱｏＳ制御システムのクラス比較部の動作を示す流れ図である。
【図２７】図２７は、本発明の第３実施形態によるリソースＱｏＳ制御システムのクラス比較部の動作を示す流れ図である。
【図２８】図２８は、本発明の第３実施形態によるリソースＱｏＳ制御システムのクラス再割当部の動作を示す流れ図である。
【図２９】図２９は、本発明の第３実施形態によるリソースＱｏＳ制御システムの起動タスク管理部の動作を示す流れ図である。
【図３０Ａ】図３０Ａは、本発明の第３実施形態によるリソースＱｏＳ制御システムの終了タスク管理部の動作を示す流れ図である。
【図３０Ｂ】図３０Ｂは、本発明の第３実施形態によるリソースＱｏＳ制御システムの終了タスク管理部の動作を示す流れ図である。
【図３１】図３１は、本発明の第３実施形態によるリソースＱｏＳ制御システムの第２連携タスク情報取得部の動作を示す流れ図である。
【図３２Ａ】図３２Ａは、本発明の第３実施形態によるリソースＱｏＳ制御システムの第２連携タスク取得部の動作を示す流れ図である。
【図３２Ｂ】図３２Ｂは、本発明の第３実施形態によるリソースＱｏＳ制御システムの第２連携タスク取得部の動作を示す流れ図である。
【図３３】図３３は、本発明の第３実施形態によるリソースＱｏＳ制御システムの第２クラス比較部の動作を示す流れ図である。
【図３４】図３４は、本発明の第１実施形態による情報処理システムのリソースＱｏＳ制御システムの動作の第１具体例を示す図である。
【図３５】図３５は、本発明の第１実施形態による情報処理システムのリソースＱｏＳ制御システムの動作の第２具体例を示す図である。
【図３６】図３６は、本発明の第１実施形態による情報処理システムのリソースＱｏＳ制御システムの動作の第３具体例を示す図である。
【図３７】図３７は、本発明の第２実施形態による情報処理システムのリソースＱｏＳ制御システムの動作の第１具体例を示す図である。
【図３８】図３８は、本発明の第２実施形態による情報処理システムのリソースＱｏＳ制御システムの動作の第１具体例を示す図である。
【図３９】図３９は、本発明の第２実施形態による情報処理システムのリソースＱｏＳ制御システムの動作の第２具体例を示す図である。
【図４０】図４０は、本発明の第２実施形態による情報処理システムのリソースＱｏＳ制御システムの動作の第２具体例を示す図である。
【図４１】図４１は、本発明の第３実施形態による情報処理システムのリソースＱｏＳ制御システムの動作の第１具体例を示す図である。
【図４２】図４２は、本発明の第３実施形態による情報処理システムのリソースＱｏＳ制御システムの動作の第２具体例を示す図である。
【符号の説明】
【０４１０】
１データ処理装置
１１実行タスク選択部
１２実行タスククラス切替え部
１３切替え時間検知部
２記憶装置
２１レディキュー
２２タスククラスキュー
２３タスククラス切替え時間テーブル
１００、２００、３００データ処理装置
１０１、２０１、３０１連携タスク情報取得部
１０２、２０２、３０２連携タスク取得部
１０３、２０３、３０３タスク検索部
１０４、２０４割当クラス決定部
１０５、２０５、３０５クラス比較部
１０６、２０６、３０６クラス再割当部
２０７、３０７起動タスク管理部
２０８、３０８終了タスク管理部
２０９クラス割当管理部
１１０、２１０、３１０記憶装置
１１１、２１１、３１１連携タスク記憶部
１１２レディキュー
１１３、２１３割当クラス記憶部
１１４、２１４、３１４クラス定義記憶部
２１２、３１２起動タスク記憶部
２１５クラス割当記憶部
２１６、３１６デフォルトクラス割当記憶部
３２１第２連携タスク情報取得部
３２２第２連携タスク取得部
３２５第２クラス比較部
【図１】
2007183733.tif 000003
【図２】
2007183733.tif 000004
【図３】
2007183733.tif 000005
【図４Ａ】
2007183733.tif 000006
【図４Ｂ】
2007183733.tif 000007
【図５】
2007183733.tif 000008
【図６】
2007183733.tif 000009
【図７】
2007183733.tif 000010
【図８】
2007183733.tif 000011
【図９】
2007183733.tif 000012
【図１０】
2007183733.tif 000013
【図１１Ａ】
2007183733.tif 000014
【図１１Ｂ】
2007183733.tif 000015
【図１２】
2007183733.tif 000016
【図１３】
2007183733.tif 000017
【図１４】
2007183733.tif 000018
【図１５Ａ】
2007183733.tif 000019
【図１５Ｂ】
2007183733.tif 000020
【図１６】
2007183733.tif 000021
【図１７】
2007183733.tif 000022
【図１８】
2007183733.tif 000023
【図１９】
2007183733.tif 000024
【図２０Ａ】
2007183733.tif 000025
【図２０Ｂ】
2007183733.tif 000026
【図２１】
2007183733.tif 000027
【図２２】
2007183733.tif 000028
【図２３】
2007183733.tif 000029
【図２４】
2007183733.tif 000030
【図２５】
2007183733.tif 000031
【図２６】
2007183733.tif 000032
【図２７】
2007183733.tif 000033
【図２８】
2007183733.tif 000034
【図２９】
2007183733.tif 000035
【図３０Ａ】
2007183733.tif 000036
【図３０Ｂ】
2007183733.tif 000037
【図３１】
2007183733.tif 000038
【図３２Ａ】
2007183733.tif 000039
【図３２Ｂ】
2007183733.tif 000040
【図３３】
2007183733.tif 000041
【図３４】
2007183733.tif 000042
【図３５】
2007183733.tif 000043
【図３６】
2007183733.tif 000044
【図３７】
2007183733.tif 000045
【図３８】
2007183733.tif 000046
【図３９】
2007183733.tif 000047
【図４０】
2007183733.tif 000048
【図４１】
2007183733.tif 000049
【図４２】
2007183733.tif 000050