(57)【要約】【課題】各タスクの優先度の変更を柔軟に行うタスク制御装置、及びタスク制御方法を提供すること。【解決手段】本発明のタスク制御装置１は、優先度に基づいて複数のタスクの処理順序を制御するものである。実行中のタスク有する複数桁のビットデータである原優先度を格納する実行中タスク優先度レジスタ１１と、実行待ちのタスクが原優先度を格納する実行待ちタスク優先度レジスタ１２と、有効無効が桁単位に設定された複数桁のビットデータであるマスクデータを格納する優先度階層マスクレジスタ１６と、実行中タスクの原優先度と、マスクデータとからマスク演算して第１の優先度を算出するマスク手段１３と、実行待ちタスクの原優先度と、マスクデータとからマスク演算して第２の優先度を算出するマスク手段１４と、第１の優先度と、第２の優先度とを比較し、優先度の高いタスクを判定する判定手段１５とを備える。【選択図】図１
2009169790.tif 000002
【特許請求の範囲】
【請求項１】
優先度に基づいて複数のタスクの処理順序を制御するタスク制御装置であって、
第１のタスクが有する複数桁のビットデータである原優先度を格納する第１の原優先度格納部と、
第２のタスクが有する複数桁のビットデータである原優先度を格納する第２の原優先度格納部と、
有効無効が桁単位に設定された複数桁のビットデータであるマスクデータを格納するマスクデータ格納部と、
前記第１の原優先度格納部に格納された原優先度から、前記マスクデータ格納部に格納された前記マスクデータにおける有効と設定された桁に対応する桁を抽出して第１の優先度を算出し、前記第２の原優先度格納部に格納された原優先度から、前記マスクデータにおける有効と設定された桁に対応する桁を抽出して第２の優先度を算出する優先度算出部と、
前記第１の優先度と前記第２の優先度とを比較し、優先度の高いタスクを判定する判定部とを備える、タスク制御装置。
【請求項２】
前記原優先度は、
タスクグループ内の優先度を示す第１の領域と、
タスクグループの間の優先度を示す第２の領域と、
を含む、請求項１に記載のタスク制御装置。
【請求項３】
前記原優先度は、特定のタスクを指定するための識別子に割り当てられる第３の領域をさらに含む、請求項２に記載のタスク制御装置。
【請求項４】
前記原優先度は、複数の前記第３の領域をさらに含む、請求項３に記載のタスク制御装置。
【請求項５】
前記優先度算出部は、前記マスクデータと前記原優先度とのマスク演算により当該タスクの優先度を算出する、請求項１乃至４のいずれか１項に記載のタスク制御装置。
【請求項６】
前記原優先度は、桁単位で階層化されたものである、請求項１乃至５のいずれか１項に記載のタスク制御装置。
【請求項７】
複数の実行待ちのタスクを記憶する実行待ちタスク記憶部をさらに備え、
前記実行待ちタスク記憶部は、
複数の前記実行待ちのタスクが原優先度に基づいてソートされる、請求項１乃至６のいずれか１項に記載のタスク制御装置。
【請求項８】
前記マスクデータを更新するマスクデータ更新部をさらに備える、請求項１乃至７のいずれか１項に記載のタスク制御装置。
【請求項９】
優先度に基づいて複数のタスクの処理順序を制御するタスク制御方法であって、
第１のタスクが有する複数桁のビットデータである原優先度から、有効無効が桁単位に設定された複数桁のビットデータであるマスクデータにおける有効と設定された桁に対応する桁を抽出して第１の優先度を算出するステップと、
第２のタスクが有する前記原優先度から、前記マスクデータにおける有効と設定された桁に対応する桁を抽出して第２の優先度を算出するステップと、
前記第１の優先度と前記第２の優先度とを比較し、優先度の高いタスクを判定するステップと、を備えるタスク制御方法。
【請求項１０】
前記原優先度は、
タスクグループ内の優先度を示す第１の領域と、
タスクグループの間の優先度を示す第２の領域と、
を含む、請求項９に記載のタスク制御方法。
【請求項１１】
前記原優先度は、特定のタスクを指定するための識別子に割り当てられる第３の領域をさらに含む、請求項１０に記載のタスク制御方法。
【請求項１２】
前記原優先度は、複数の前記第３の領域をさらに含む、請求項１１に記載のタスク制御方法。
【請求項１３】
前記第１の優先度を算出するステップ、及び前記第２の優先度を算出するステップは、
前記マスクデータと前記原優先度とのマスク演算により当該タスクの優先度を算出する、請求項９乃至１２のいずれか１項に記載のタスク制御方法。
【請求項１４】
前記原優先度は、桁単位で階層化されたものである、請求項９乃至１３のいずれか１項に記載のタスク制御方法。
【請求項１５】
複数の実行待ちのタスクを原優先度でソートするステップをさらに備える、請求項９乃至１４のいずれか１項に記載のタスク制御方法。
【請求項１６】
前記マスクデータを更新するマスクデータ更新ステップをさらに備える、請求項９乃至１５のいずれか１項に記載のタスク制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、タスク制御装置、及びタスク制御方法に関し、特に優先度に基づいて複数のタスクの処理順序を制御することで、各タスクが有機的に実行されることにより、ある所定の機能を実現する処理システムにおけるタスク制御装置、及びタスク制御方法に関する。
【背景技術】
【０００２】
処理システムにおけるある機能として録音機能を考えた場合、タスクとしては入力処理タスク、音声圧縮処理タスク、出力処理タスクの３つのタスクが有機的に動作することで録音機能を実現する。この様にある機能は複数のタスクが有機的に実行されることで所定の機能を実現するのが一般的である。
【０００３】
また、機能によっては、パフォーマンスを保証しなければならないものもある。ここで言うパフォーマンスとは、処理時間や処理精度などである。例えば、前述の録音機能の場合、リアルタイム録音を行うためには、３つのタスク全てが一定時間内に処理を完了しなければならない。そのため、リアルタイム録音を実現するためには、各タスクの処理時間を保証しなければならない。
【０００４】
また、処理システムにおいて、全てのタスクに優先度を付け、優先度の高い順にタスクを実行するタスク制御方法を、一般的には優先度ベースのスケジューリングと呼ぶ。優先度は処理システムの設計段階にて決定され、一元管理される。
【０００５】
特許文献１には、タスクをグループ化してグループ単位で優先度を持たせるようにすることで、機能としてのパフォーマンスを維持する方法が提示されている。特許文献１では、主優先度テーブル（グループ０）と従優先度テーブル（グループ１、グループ２）を作成し、通常は主優先度テーブルにより定められたタスク優先度によりタスク処理が実行され、グループ１、グループ２に属するタスクが最優先となると、それぞれの従優先度テーブルにより定められたタスク優先度によりタスク処理が実行される。これにより、グループ１、グループ２でグループ化された機能が他のタスク、グループに影響されずに機能としてのパフォーマンスを得ることができる。
【０００６】
また、特許文献２は、プログラム処理の実行単位であるタスクが複数存在し、前記各タスクは優先順位を示す実行優先度情報を有し、それらのタスクを複数のグループに分けてこのタスクグループごとにタスクの実行を管理するタスク管理装置に関するものである。特許文献２におけるタスク管理装置の備えるタスクグループ切り替え手段は、各タスクグループの実行を有効とする順序、及び割り当てる実行時間のデータ、並びに、指令タイミングに応じて、実行を有効とするタスクグループを決定する。そして、当該タスク管理装置の備えるタスクグループ切り替え手段は、実行状態、実行可能状態、及び実行待ち状態の全てタスクに対して、実行を有効にするタスクグループに所属する各タスクの実行優先度を高くし、実行を無効にするタスクグループに所属する各タスクの実行優先度を低くする。これにより、実行状態、及び実行可能状態のタスクの中から実行優先度の最も高いタスクを選択して実行することができる。
【特許文献１】特開２００２−１６３１２０号公報
【特許文献２】特開２００４−３２６４８６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
しかしながら、特許文献２では、優先度を変更させるタスクのグループが固定的であるという問題点がある。それは、特許文献２では、予め定めたタスクグループ単位で優先度を変更させるものだからである。また、特許文献１には、タスクの優先度を変更することが考慮されていない。
【０００８】
しかし、当該タスクグループ自体におけるパフォーマンスを保証できても、処理システム全体では、パフォーマンスを保証できない可能性もある。これは、対象とする処理システムが大規模であるほど、顕著となる。
【０００９】
また、ＱｏＳ（Quality of Service）の概念を用いると、機能やタスクは、あるタイミングではパフォーマンスが必要であるし、別のタイミングではパフォーマンスを必要としない場合もある。すなわち、処理システムの状況に応じて必要なパフォーマンスは一定ではない。
【００１０】
すなわち、処理システムにおけるタスクの実行順序は、固定的なグループ分けだけで、要求されるパフォーマンスを保証できるものではなく、状況に応じて柔軟にタスクの優先度を変更できる必要がある。
【課題を解決するための手段】
【００１１】
本発明の第１の態様にかかるタスク制御装置（例えば、本発明の実施の形態１におけるタスク制御装置１）は、優先度に基づいて複数のタスクの処理順序を制御するものであって、第１のタスクが有する複数桁のビットデータである原優先度を格納する第１の原優先度格納部（例えば、本発明の実施の形態１における実行中タスク優先度レジスタ１１）と、第２のタスクが有する複数桁のビットデータである原優先度を格納する第２の原優先度格納部（例えば、本発明の実施の形態１における実行待ちタスク優先度レジスタ１２）と、有効無効が桁単位に設定された複数桁のビットデータであるマスクデータを格納するマスクデータ格納部（例えば、本発明の実施の形態１における優先度階層マスクレジスタ１６）と、前記第１の原優先度格納部に格納された原優先度から、前記マスクデータ格納部に格納された前記マスクデータにおける有効と設定された桁に対応する桁を抽出して第１の優先度を算出し、前記第２の原優先度格納部に格納された原優先度から、前記マスクデータにおける有効と設定された桁に対応する桁を抽出して第２の優先度を算出する優先度算出部（例えば、本発明の実施の形態１におけるマスク手段１３、及びマスク手段１４）と、前記第１の優先度と、前記第２の優先度とを比較し、優先度の高いタスクを判定する判定部（例えば、本発明の実施の形態１における判定手段１５）とを備える。
【００１２】
このように、本発明の第１の態様にかかるタスク制御装置は、各タスクの原優先度のそれぞれの各桁に意味を持たせて設定しておくことで、マスクデータに有効と設定された桁に対応する桁を抽出する処理により優先度を算出することができる。そのため、タスクの優先度の変更を柔軟に行うことができる。
【００１３】
本発明の第２の態様にかかるタスク制御方法は、優先度に基づいて複数のタスクの処理順序を制御するものであって、第１のタスクが有する複数桁のビットデータである原優先度から、有効無効が桁単位に設定された複数桁のビットデータであるマスクデータにおける有効と設定された桁に対応する桁を抽出して第１の優先度を算出するステップと、第２のタスクが有する前記原優先度から、前記マスクデータにおける有効と設定された桁に対応する桁を抽出して第２の優先度を算出するステップと、前記第１の優先度と、前記第２の優先度とを比較し、優先度の高いタスクを判定するステップと、を備える。
【００１４】
本発明の第２の態様にかかるタスク制御方法は、第１のタスク、及び第２のタスクの優先度をそれぞれマスクデータから算出することができる。これにより、タスクの優先度の変更を簡易に行うことができる。
【発明の効果】
【００１５】
本発明により、各タスクの桁ごとに意味を持たせた優先度を付けることで、状況に応じて、各タスクの優先度の変更を柔軟に行うタスク制御装置、及びタスク制御方法を提供することができる。
【発明を実施するための最良の形態】
【００１６】
以下では、本発明を適用した具体的な実施の形態について、図面を参照しながら詳細に説明する。各図面において、同一要素には同一の符号が付されており、説明の明確化のため、必要に応じて重複説明は省略する。
【００１７】
発明の実施の形態１．
本発明の実施の形態１で対象とするタスクは、優先度を算出するための原優先度を有するものである。原優先度は、複数ビットのデータであり、ここでは、原優先度の桁数は、８ビットであるとする。但し、原優先度の桁数は、これに限定されず、例えば、１６ビット、３２ビット、その他であって構わない。
【００１８】
また、以降の説明の前提として、優先度の値は絶対値が小さい方を高優先度とする。すなわち、０が最高優先度となる。
【００１９】
図１は、本発明の実施の形態１にかかるタスク制御装置１の構成例を示すブロック図である。タスク制御装置１は、実行タスク切り替え手段１０と、タスク実行手段２０と、実行待ちタスクキュー３０と、優先度階層選択手段４０とを備える。
【００２０】
実行タスク切り替え手段１０は、タスク実行手段２０により実行されるタスクと、実行待ちタスクキュー３０に格納されたタスクとを切り替える手段である。実行タスク切り替え手段１０は、実行中タスク優先度レジスタ１１と、実行待ちタスク優先度レジスタ１２と、マスク手段１３と、マスク手段１４と、判定手段１５と、優先度階層マスクレジスタ１６とを備える。
【００２１】
実行中タスク優先度レジスタ１１は、タスク実行手段２０により実行されるタスクの原優先度が格納されるレジスタである。実行待ちタスク優先度レジスタ１２は、実行待ちタスクキュー３０に格納された実行待ちのタスクの内、先頭のタスクの原優先度が格納されるレジスタである。優先度階層マスクレジスタ１６は、優先度階層選択手段４０により設定される複数ビットのデータであるマスクデータが格納されるレジスタである。ここで、マスクデータの桁数は、８ビットとする。但し、マスクデータの桁数は、原優先度の桁数と同様に、これに限定されない。
【００２２】
マスク手段１３は、実行中タスク優先度レジスタ１１に格納された原優先度と、優先度階層マスクレジスタ１６に格納されたマスクデータとをＡＮＤ演算し、第１の演算結果を算出する手段である。マスク手段１４は、実行待ちタスク優先度レジスタ１２に格納された原優先度と、優先度階層マスクレジスタ１６に格納されたマスクデータとをＡＮＤ演算し、第２の演算結果を算出する手段である。判定手段１５は、第１の演算結果と第２の演算結果とを比較し、第２の演算結果の絶対値の方が小さい場合、実行待ちタスク優先度レジスタ１２の値を実行中タスク優先度レジスタ１１に格納する手段である。
【００２３】
実行タスク切り替え手段１０は、タスクの制御タイミングにより処理を開始する。ここで、制御タイミングとは、例えば、割り込みや、タスク実行手段２０によるタスク実行終了などのイベントである。また、実行タスク切り替え手段１０は、処理の終了後にその旨をタスク実行手段２０へ通知する。
【００２４】
タスク実行手段２０は、実行待ちタスクキュー３０に格納されるタスクを取得し、当該タスクを実行状態とし、実行する手段である。タスク実行手段２０は、通常、実行待ちタスクキュー３０のキューの先頭のタスクから順番に取得する。また、タスク実行手段２０は、実行タスク切り替え手段１０の処理の終了の通知を受けて起動する。その場合、タスク実行手段２０は、実行対象のタスクの原優先度と、実行中タスク優先度レジスタ１１の値とを比較する。そして、一致しない場合、タスク実行手段２０は、実行中タスク優先度レジスタ１１の値を原優先度とするタスクを実行待ちタスクキュー３０から検索し、検索されたタスクをタスク実行手段２０の実行対象のタスクとして取得し、実行する。また、タスク実行手段２０は、処理の終了後にその旨を実行タスク切り替え手段１０へ通知する。尚、具体的なタスクの切り替え手段は、公知技術としてよく知られているものであるから、ここでは詳細な説明を省略する。
【００２５】
実行待ちタスクキュー３０は、実行可能な状態となり、実行待ちとなっているタスクを格納するキューである。
【００２６】
優先度階層選択手段４０は、マスクデータの有効とする桁を選択し、優先度階層マスクレジスタ１６へ格納された当該マスクデータを更新する手段である。
【００２７】
図２は、本発明の実施の形態１にかかる優先度階層選択手段４０と優先度階層マスクレジスタ１６の構成例を示すブロック図である。図２に示すように、優先度階層選択手段４０は、各階層の設定ＳＷ（スイッチ）であるＬａｙｅｒ１設定ＳＷ４１、Ｌａｙｅｒ２設定ＳＷ４２、及びＬａｙｅｒ３設定ＳＷ４３を備える。Ｌａｙｅｒ１設定ＳＷ４１、Ｌａｙｅｒ２設定ＳＷ４２、及びＬａｙｅｒ３設定ＳＷ４３は、それぞれ１ビットの情報を保持する手段であり、優先度階層マスクレジスタ１６の各ビットに接続される。
【００２８】
図２では、Ｌａｙｅｒ１設定ＳＷ４１は、優先度階層マスクレジスタ１６のマスクレジスタ第０ビット１６０、マスクレジスタ第１ビット１６１、マスクレジスタ第２ビット１６２、マスクレジスタ第３ビット１６３の４ビット分に接続される。Ｌａｙｅｒ２設定ＳＷ４２は、優先度階層マスクレジスタ１６のマスクレジスタ第４ビット１６４、マスクレジスタ第５ビット１６５、マスクレジスタ第６ビット１６６の３ビット分に接続される。Ｌａｙｅｒ３設定ＳＷ４３は、優先度階層マスクレジスタ１６のマスクレジスタ第７ビット１６７の１ビット分に接続される。
【００２９】
例えば、優先度階層選択手段４０において、Ｌａｙｅｒ１設定ＳＷ４１の設定値を「１」、Ｌａｙｅｒ２設定ＳＷ４２の設定値を「１」、Ｌａｙｅｒ３設定ＳＷ４３の設定値を「０」とした場合、優先度階層マスクレジスタ１６に格納されるマスクデータの値は、「０１１１１１１１」となり、１６進数で表すと「７Ｆ」となる。以下、１６進数を表わすものにはｈを付加する。例えば、上記の例では「７Ｆｈ」と表現する。
【００３０】
ここで、本発明の実施の形態１にかかる原優先度、及びマスクデータの桁の定義について例を挙げて説明する。例えば、原優先度の桁について、第０ビット〜第３ビットの４桁をタスクのグループ内における個別の優先度を表わす個別優先度（第１の領域）とする。これは、同一グループ内における優先度が、１６段階で設定できることを示す。
【００３１】
また、原優先度の桁について、第４ビット〜第６ビットの３桁をグループ間の優先度表わすグループ優先度（第２の領域）とする。これは、グループ間の優先度が、８段階で設定できることを示す。
【００３２】
そして、原優先度の桁について、第７ビットの１桁を特定の場合に、優先させるためのフラグを表わす特定優先度（第３の領域）とする。これは、グループに関わらず優先させる特定のタスクであるか否かを（２段階で）設定できることを示す。または、特定優先度は、グループ優先度の上位又は下位階層のグループとして用いることができる。さらに、特定優先度は、グループ優先度で定めたグループとは別のグループとして、用いることもできる。
【００３３】
また、マスクデータについては、上記の原優先度の桁に対応させて、Ｌａｙｅｒ１設定ＳＷ４１を個別優先度、Ｌａｙｅｒ２設定ＳＷ４２をグループ優先度、Ｌａｙｅｒ３設定ＳＷ４３を特定優先度に割り当てればよい。
【００３４】
このように、優先度階層選択手段４０により各設定ＳＷを都度切り替えることで、優先度の変更が容易となる。つまり、各タスクをグループごとに管理する場合は、予め、同じグループのタスクにおけるグループ優先度を同じ値にしておく。そして、Ｌａｙｅｒ２設定ＳＷ４２の設定値を「１」にすることで、グループ優先度を有効にして、タスクの実行順序を決定することができる。
【００３５】
また、グループ優先度とは別に、特定のタスクを優先させる場合には、特定優先度を用いればよい。その場合、Ｌａｙｅｒ３設定ＳＷ４３を「１」にすることで、特定優先度を有効にして、タスクの実行順序を決定することができる。
【００３６】
尚、第１の領域、第２の領域、及び第３の領域は、相互に接続するビットの位置、及び桁数を入れ替えても構わない。
【００３７】
尚、優先度階層選択手段４０における設定ＳＷの種類、また、各設定ＳＷに接続されたビットの桁数は、上述したものに限定されない。さらに、特定優先度に対応する設定ＳＷは複数存在しても構わない。また、グループ優先度を複数の設定ＳＷにより表わしても構わない。
【００３８】
以下に、本発明の実施の形態１にかかるタスク制御装置１の処理について具体的に説明する。まず、以降で用いられるデータについて説明する。ここでは、原優先度、及びマスクデータの桁の定義については、上述した例を用いるものとする。
【００３９】
図３は、本発明の実施の形態１にかかるタスク制御装置１において実行されるタスクの名称、及び原優先度の例を示した図である。図３に示すように、グループ１に属するタスクのグループ優先度は、"００１"であり、グループ２に属するタスクのグループ優先度は、"０１０"である。つまり、グループ１は、グループ２に比べ、優先度が高いことを示す。また、タスクＹのみ特定優先度に"０"が設定してあり、他のタスクＡ〜Ｄ、Ｘ、Ｚでは、特定優先度に"１"が設定されている。
【００４０】
図４は、本発明の実施の形態１にかかる実行待ちタスクキュー３０のキュー状態の例を示した図である。ここでは、タスク実行手段２０で実行されているタスクをタスクＸとし、他のタスクは図４に示す順で実行待ちタスクキュー３０に入っているとする。
【００４１】
また、優先度階層マスクレジスタ１６に格納されるマスクデータの値は、「７Ｆｈ」とする。すなわち、個別優先度、及びグループ優先度を有効とし、特定優先度を無効としている。
【００４２】
次に、図７は、本発明の実施の形態１にかかる実行タスク切り替え手段１０の処理の流れ示すフローチャート図である。まず、制御タイミングとなり、実行タスク切り替え手段１０が起動する。そこで、実行タスク切り替え手段１０は、タスク実行手段２０より、実行中のタスクの原優先度を実行中タスク優先度レジスタ１１に格納する（Ｓ１１）。ここでは、実行中タスク優先度レジスタ１１に格納された値は、実行中のタスクＸの原優先度である「Ａ０ｈ」となる。
【００４３】
次に、実行タスク切り替え手段１０は、実行待ちタスクキュー３０に未処理のタスクが存在するか否かを判定する（Ｓ１２）。つまり、実行タスク切り替え手段１０は、実行待ちタスクキュー３０の全てのタスクに対して、ステップＳ１２乃至Ｓ１７を繰り返す。
【００４４】
実行待ちタスクキュー３０に未処理のタスクが存在する場合、ステップＳ１３へ進み、存在しない場合、すなわち、実行待ちタスクキュー３０の全てのタスクに対して、実行タスク切り替え手段１０による処理が行われた場合、実行タスク切り替え手段１０は、処理を終了する。ここでは、実行待ちタスクキュー３０に図４に示すタスクが存在するため、ステップＳ１３へ進む。
【００４５】
そして、実行タスク切り替え手段１０のマスク手段１３は、優先度階層マスクレジスタ１６に格納されたマスクデータと、実行中タスク優先度レジスタ１１に格納された値とからＡＮＤ演算により第１の演算結果を算出する（Ｓ１３）。具体的には、第１の演算結果は、式（１）により求められる。
７Ｆｈ  ＆  Ａ０ｈ＝２０ｈ  ・・・（１）
【００４６】
続いて、実行タスク切り替え手段１０は、実行待ちタスクキュー３０に格納された未処理のタスクの内、先頭のタスクの原優先度を実行待ちタスク優先度レジスタ１２に格納する（Ｓ１４）。ここでは、図４に示すように、タスクＢの原優先度「９１ｈ」が実行待ちタスク優先度レジスタ１２に格納される。
【００４７】
そして、実行タスク切り替え手段１０のマスク手段１４は、優先度階層マスクレジスタ１６に格納されたマスクデータと、実行待ちタスク優先度レジスタ１２に格納された値とからＡＮＤ演算により第２の演算結果を算出する（Ｓ１５）。具体的には、第２の演算結果は、式（２）により求められる。
７Ｆｈ  ＆  ９１ｈ＝１１ｈ  ・・・（２）
【００４８】
その後、実行タスク切り替え手段１０の判定手段１５は、第１の演算結果と第２の演算結果とを比較し、絶対値の大小を判定する（Ｓ１６）。第１の演算結果の絶対値に比べ、第２の演算結果の絶対値が小さい場合、ステップＳ１７へ進み、第２の演算結果の絶対値が大きいか等しい場合、ステップＳ１２へ戻る。ここでは、２０ｈ  ＞  １１ｈとなり、第２の演算結果の絶対値が小さいと判定され、ステップＳ１７へ進む。
【００４９】
判定手段１５は、実行待ちタスク優先度レジスタ１２の値を実行中タスク優先度レジスタ１１に格納する（Ｓ１７）。ここでは、実行中タスク優先度レジスタ１１の値が、タスクＸの原優先度「Ａ０ｈ」からタスクＢの原優先度「９１ｈ」へ書き換わることになる。
【００５０】
以降、実行タスク切り替え手段１０は、実行待ちタスクキュー３０の全てのタスクに対して、ステップＳ１２乃至Ｓ１７を繰り返す。ここでは、図４に示す実行待ちタスクキュー３０の残りのタスクについて実行される。その結果、実行中タスク優先度レジスタ１１には、タスクＡの原優先度「９０ｈ」が格納される。
【００５１】
実行タスク切り替え手段１０は、処理の終了後にその旨をタスク実行手段２０へ通知する。タスク実行手段２０は、処理を開始し、上述したように実行中タスクの原優先度と実行中タスク優先度レジスタ１１の原優先度とを比較する。ここでは、実行中のタスクＸの原優先度「Ａ０ｈ」と、実行中タスク優先度レジスタ１１に格納された「９０ｈ」が一致しないため、タスク実行手段２０は、実行待ちタスクキュー３０の中から原優先度が「９０ｈ」であるタスクＡを検索し、実行対象のタスクとして取得し、実行する。
【００５２】
これにより、タスク実行手段２０は、実行権をタスクＸからタスクＡに切り替えることができる。また、実行権を失ったタスクＸは、実行待ちタスクキュー３０に入れられる。
【００５３】
そして、タスク実行手段２０によりタスクＡの処理が終了すると、再度、実行タスク切り替え手段１０が起動し、以後、実行待ちタスクキュー３０の残りのタスクに対しても同様に優先度に基づき実行順序が決定され、実行される。その結果、タスクの実行順序は、図５に示すように、グループ１からグループ２のグループ優先度に基づいた順序となり、グループ１及びグループ２内の各タスクは、個別優先度に基づいた順序となる。すなわち、タスクの実行順序は、グループ単位でスケジューリングされることとなる。
【００５４】
ここで、マスクデータの設定を変更した場合について説明する。以下では、優先度階層マスクレジスタ１６に格納されるマスクデータの値は、「ＦＦｈ」とする。すなわち、個別優先度、及びグループ優先度に加え、特定優先度を有効としている。マスクデータの値を「ＦＦｈ」とし、図４の実行待ちタスクキュー３０に対して、図７の処理を適用した場合、タスクの実行順序は図６のようになる。これにより、優先度階層選択手段４０により、Ｌａｙｅｒ３設定ＳＷ４３の設定値を「１」と変更することで、特定優先度が"０"であるタスクＹのみを最高優先度で処理させることができる。
【００５５】
以上のように、本発明の実施の形態１にかかるタスク制御装置１により、予め、各タスクに原優先度として、複数の桁を一つの領域とし、領域ごとに異なる意味を持たせて設定しておき、当該領域に対応させて有効無効を設定したマスクデータを用いることで、マスク演算により柔軟に優先度の算出を行うことができる。
【００５６】
また、原優先度の桁を階層化して設定することで、グループ単位でタスクを管理することができる。さらに、マスクデータを任意に変更することで、特定タスク、グループのみの優先度を容易に変更することができる。
【００５７】
また、処理システムの状況に応じて必要なパフォーマンスは一定ではないため、ある状況では、グループ単位で最高のパフォーマンスを発揮させ、別の状況では、グループにとらわれず、特定のタスクのみを優先させることでパフォーマンスを向上できる場合にも対応することができる。
【００５８】
また、本発明の実施の形態１にかかる実行タスク切り替え手段１０では、１回のマスク演算のみにより最終的な優先度を決定できるため、優先度を算出するステップ数はタスク、グループに依存せず一定であり、パフォーマンスへの影響が少ない。
【００５９】
その他の発明の実施の形態．
尚、本発明の実施の形態１におけるタスクは、情報処理装置などにおける複数の実行処理単位であるため、タスクに限定されない。すなわち、タスクは、ジョブ、又は、プロセスと呼ばれるものであっても構わない。
【００６０】
本発明の実施の形態１にかかるタスク制御装置１において、実行待ちのタスクを原優先度に従ってソートして、実行待ちタスクキュー３０へ登録する手段を持つようにしてもよい。例えば、各タスクが実行可能状態となり、実行待ちタスクキュー３０に登録される都度、原優先度に従ってソートを行うようにすることで実現できる。
【００６１】
これにより、タスク実行手段２０が、実行中タスク優先度レジスタ１１の値を原優先度とするタスクを実行待ちタスクキュー３０から検索する時間を短縮することができる。ひいては、本発明の実施の形態１にかかるタスク制御装置１におけるタスクの処理順序をスケジューリングに要する時間も短縮することができる。
【００６２】
本発明の実施の形態１にかかる優先度階層選択手段４０は、ユーザからの指示に基づき設定してもよい。または、優先度階層選択手段４０は、所定のアルゴリズムに基づき変更するようにしてもよい。例えば、一定時間経過後に変更する、又は、特定のタスクが実行待ちタスクキュー３０に入ったら変更するなどとしてもよい。
【００６３】
本発明の実施の形態１にかかるマスク手段１３、及びマスク手段１４は、ＡＮＤ演算としたが、これに限定されない。マスクデータのビットの値が"１"となっている原優先度の対応する桁を抽出できればよい。
【００６４】
さらに、本発明は上述した実施の形態のみに限定されるものではなく、既に述べた本発明の要旨を逸脱しない範囲において種々の変更が可能であることは勿論である。
【図面の簡単な説明】
【００６５】
【図１】本発明の実施の形態１にかかるタスク制御装置１の構成例を示すブロック図である。
【図２】本発明の実施の形態１にかかる優先度階層選択手段４０と優先度階層マスクレジスタ１６の構成例を示すブロック図である。
【図３】本発明の実施の形態１にかかるタスク制御装置１において実行されるタスクの名称、及び原優先度の例を示した図である。
【図４】本発明の実施の形態１にかかる実行待ちタスクキュー３０のキュー状態の例を示した図である。
【図５】本発明の実施の形態１にかかるタスク制御装置１によるタスク実行順序の例を示した図（その１）である。
【図６】本発明の実施の形態１にかかるタスク制御装置１によるタスク実行順序の例を示した図（その２）である。
【図７】本発明の実施の形態１にかかるタスク制御方法の処理の流れ示すフローチャート図である。
【符号の説明】
【００６６】
１  タスク制御装置
１０  実行タスク切り替え手段
１１  実行中タスク優先度レジスタ
１２  実行待ちタスク優先度レジスタ
１３  マスク手段
１４  マスク手段
１５  判定手段
１６  優先度階層マスクレジスタ
２０  タスク実行手段
３０  実行待ちタスクキュー
４０  優先度階層選択手段
４１  Ｌａｙｅｒ１設定ＳＷ
４２  Ｌａｙｅｒ２設定ＳＷ
４３  Ｌａｙｅｒ３設定ＳＷ
１６０  マスクレジスタ第０ビット
１６１  マスクレジスタ第１ビット
１６２  マスクレジスタ第２ビット
１６３  マスクレジスタ第３ビット
１６４  マスクレジスタ第４ビット
１６５  マスクレジスタ第５ビット
１６６  マスクレジスタ第６ビット
１６７  マスクレジスタ第７ビット
【図１】
2009169790.tif 000003
【図２】
2009169790.tif 000004
【図３】
2009169790.tif 000005
【図４】
2009169790.tif 000006
【図５】
2009169790.tif 000007
【図６】
2009169790.tif 000008
【図７】
2009169790.tif 000009