(57)【要約】【課題】オペレーティングシステム（例えばリアルタイムＯＳ）のカーネルを修正することなく、タスク管理方式（例えばＱｏＳ制御を実現するタスク管理方式）をそのオペレーティングシステムに実装する。【解決手段】複数のタスクの実行を制御するためのタスク管理システムであって、優先度が設定されている複数のタスクと、前記複数のタスクのうちの最も高い優先度が設定されているタスクを実行する優先度制御機能を有するオペレーティングシステムとを備え、前記複数のタスクのうちの少なくとも一つは、最も高い優先度が設定されるとともに、他のタスクの実行制御を行うスケジューラタスクである。【選択図】    図１
2004157737.tif 000002
【特許請求の範囲】
【請求項１】
複数のタスクの実行を制御するためのタスク管理システムであって、
優先度が設定されている複数のタスクと、
前記複数のタスクのうちの最も高い優先度が設定されているタスクを実行する優先度制御機能を有するオペレーティングシステムとを備え、
前記複数のタスクのうちの少なくとも一つは、最も高い優先度が設定されるとともに、他のタスクの実行制御を行うスケジューラタスクである、タスク管理システム。
【請求項２】
前記スケジューラタスクは、所定期間ごとに実行状態へ遷移して他のタスクの実行制御を行い、
前記オペレーティングシステムは、前記スケジューラタスクが実行状態以外の状態から実行状態へ遷移するまでの間は、前記他のタスクのうちの最も高い優先度が設定されているタスクを実行する、請求項１に記載のタスク管理システム。
【請求項３】
前記スケジューラタスクは、前記他のタスクの実行制御として他のタスクの優先度を変更する、請求項１又は２に記載のタスク管理システム。
【請求項４】
前記他のタスクはその所要リソース量を制御可能な可変タスクである、請求項１に記載のタスク管理システム。
【請求項５】
前記スケジューラタスクは、前記他のタスクの実行制御として他のタスクの所要リソース量を制御する、請求項４に記載のタスク管理システム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、複数のタスクの実行を制御するための技術に関する。
【０００２】
【従来の技術】
従来、一定時間間隔で繰り返し実行される定周期タスクをスケジューリングするオペレーティングシステム（リアルタイムＯＳ）が知られている（例えば、特許文献１参照）。
【０００３】
【特許文献１】
特開２００１−２３６２３６号公報
【０００４】
【発明が解決しようとする課題】
上記従来のオペレーティングシステムにおいて、タスクの周期的な実行等、タスクスケジューリングに関する方式を実装する場合、オペレーティングシステムが持つスケジューラを修正することになる。この場合、オペレーティングシステムの中心となるカーネル部分を修正することになるが、カーネルの修正においては、通常のアプリケーション開発で使用する開発ツール等が使用できないことが多く、実装作業が困難となる。
【０００５】
本発明の課題は、オペレーティングシステム（例えばリアルタイムＯＳ）のカーネルを修正することなく、タスク管理方式（例えばＱｏＳ制御を実現するタスク管理方式）をそのオペレーティングシステムに実装することにある。
【０００６】
【課題を解決するための手段】
本発明は、上記課題を解決するためになされたものであり、複数のタスクの実行を制御するためのタスク管理システムであって、優先度が設定されている複数のタスクと、前記複数のタスクのうちの最も高い優先度が設定されているタスクを実行する優先度制御機能を有するオペレーティングシステムとを備え、前記複数のタスクのうちの少なくとも一つは、最も高い優先度が設定されるとともに、他のタスクの実行制御を行うスケジューラタスクである、構成とした。
【０００７】
本発明によれば、オペレーティングシステムによって優先度制御されるタスクの一つとしてスケジューラタスクを備えているので、オペレーティングシステム（例えばリアルタイムＯＳ）のカーネルを修正することなく、タスク管理方式（例えばＱｏＳ制御を実現するタスク管理方式）を実装することが可能となる。
【０００８】
上記タスク管理システムにおいては、例えば、前記スケジューラタスクは、所定期間ごとに実行状態へ遷移して他のタスクの実行制御を行い、前記オペレーティングシステムは、前記スケジューラタスクが実行状態以外の状態から実行状態へ遷移するまでの間は、前記他のタスクのうちの最も高い優先度が設定されているタスクを実行する。このようにすれば、オペレーティングシステムは、スケジューラタスクと他のタスクとを切り替えながら両者を実行することが可能となる。
【０００９】
上記タスク管理システムにおいては、例えば、前記スケジューラタスクは、前記他のタスクの実行制御として他のタスクの優先度を変更する。このようにすれば、オペレーティングシステムは、その優先度が変更された他のタスクを実行することが可能となる。
【００１０】
上記タスク管理システムにおいては、例えば、前記他のタスクはその所要リソース量を制御可能な可変タスクである。このようにすれば、他のタスクの品質を制御することが可能となる。
【００１１】
上記タスク管理システムにおいては、例えば、前記スケジューラタスクは、前記他のタスクの実行制御として他のタスクの所要リソース量を制御する。このようにすれば、他のタスクの品質を制御することが可能となる。
【００１２】
【発明の実施の形態】
以下、本発明の実施の形態であるタスク管理システムについて図面を参照しながら説明する。図１は、本発明の実施の形態であるタスク管理システムの概略システム構成を説明するための図である。
【００１３】
タスク管理システムは、ＰＤＡ（Ｐｅｒｓｏｎａｌ  Ｄｉｇｉｔａｌ  Ａｓｓｉｓｔａｎｔｓ）やパーソナルコンピュータ等の情報処理端末１００により実現される。図１に示すように、情報処理端末１００は、ＣＰＵ１１０、ハードディスク装置等の記憶装置１２０、及び、ＲＡＭ等のメモリ１３０等を備えている。また、情報処理端末１００は、液晶ディスプレイ等の画像表示装置やスピーカ等の音声出力装置等も備えている（いずれも図示せず）。これら各要素はバス等を介して相互に接続されている。
【００１４】
記憶装置１２０にはリアルタイムＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）、そのリアルタイムＯＳ上で実行される各種プログラム（優先度が設定されている複数のタスク等）、及び、タスク情報テーブル等がインストールされている。これらのリアルタイムＯＳ等は適宜、記憶装置１２０からメモリ１３０へ読み出される。図１は、これらのリアルタイムＯＳ等がメモリ１３０へ読み出された状態を示している。
【００１５】
リアルタイムＯＳは、複数のタスクのうちの最も高い優先度が設定されているタスクを実行する優先度制御機能（又はタスク管理機能ともいう）を有するオペレーティングシステムである。優先度制御機能は、リアルタイムＯＳが有するスケジューラ１３１によって実現される。
【００１６】
スケジューラ１３１は、各タスクに設定されている優先度に基づいて複数のタスクのうちの最も高い優先度が設定されているタスクを実行するためのものである。スケジューラ１３１は、アプリケーションプログラム群（これらは優先度が設定されている複数のタスクとして把握される）や各種デバイスの制御などの処理のタイミングやどの処理を動かすかを決定する。具体的には、スケジューラ１３１は、終了または待ち状態でないタスクのうちの最も高い優先度が設定されているタスクを継続して実行（処理）する。リアルタイムＯＳにおいては、低い優先度が設定されているタスクは全く動作しない可能性もある。スケジューラ１３１はまた、各タスクの状態（実行可能状態、実行状態、待ち状態等）も管理している。
【００１７】
スケジューラ１３１によって優先度制御される複数のタスクとしては、スケジューラタスク１３２、時間起動通知用タスク１３３、及び、ＱｏＳ（Ｑｕａｌｉｔｙ  ｏｆ  Ｓｅｒｖｉｃｅ）タスク１３４等がある。これらのタスクには優先度が設定されている。スケジューラタスク１３２には最も高い優先度（他のタスク１３３、１３４等と比較して高い優先度）が設定される。
【００１８】
スケジューラタスク１３２は、他のタスク（ＱｏＳタスク１３４）の実行制御を行うためのタスクである。スケジューラタスク１３２は、他のタスクの実行制御として、ＱｏＳタスク１３４の中から実行タスクの決定、実行タスクの優先度の変更、及び、実行タスクの所要リソース量の制御（リソース割り当て）等を行う。
【００１９】
時間起動通知用タスク１３３は、スケジューラタスク１３２を実行状態（Ｒｕｎｎｉｎｇ状態）へ遷移させるためのものである。そのために、時間起動通知用タスク１３３は、所定期間（一定周期または設定時間）ごとに所定通知（イベントフラグまたはセマフォ等）をスケジューラタスク１３２へ通知する。所定通知を受けると、スケジューラタスク１３２は、実行状態へ遷移して他のタスク（ＱｏＳタスク１３４）の実行制御を行う。
【００２０】
ＱｏＳタスク１３４はその所要リソース量を制御可能な可変タスクである。所要リソース量を最低限保証すべき保証部分と制御可能部分とに分けることで、最低限の品質（保証部分）が保たれるようになっている。
【００２１】
タスク情報テーブル１３５は、ＱｏＳタスク１３４に関する情報を管理するためのテーブルである。タスク情報テーブル１３５は、タスク識別子１３５ａ、起動タイミング１３５ｂ、及び、実行割り当て時間１３５ｃ等の項目によって構成される。タスクＩＤ１３５ａは、ＱｏＳタスクを識別するための識別子である。起動タイミング１３５ｂは、ＱｏＳタスクにおける実行開始時点から次の実行開始時点までの時間（周期）である。あるＱｏＳタスクが実行されると、設定された周期の間、このタスクが新たに実行されることはない。実行割り当て時間１３５ｃは、ＱｏＳタスクに割り当てられたリソース量（ここでは、ＣＰＵの使用時間）である。
【００２２】
次に、上記構成のタスク管理システムの動作について図面を参照しながら説明する。図２は、タスク管理システムの動作を説明するためのフローチャートである。以下、時間起動通知用タスク１３３を用いないで、複数のタスクの実行を制御する動作について説明する。
【００２３】
スケジューラ１３１は、終了または待ち状態でないタスクのうちの最も高い優先度が設定されているタスクを実行する。ここでは、スケジューラタスク１３２に最も高い優先度が設定されているので、スケジューラ１３１は、スケジューラタスク１３２を実行する。これにより、スケジューラタスク１３２は、初期化され（Ｓ１００）、ＱｏＳタスク１３４の中から実行タスクを決定する（Ｓ１０１）。具体的には、スケジューラタスク１３２は、タスク情報テーブル１３５中のタスク情報（起動タイミング１３５ｂ等）に基づいて、ＱｏＳタスクスケジュール計算等の処理を行うことで実行タスクを決定する。
【００２４】
次に、スケジューラタスク１３２は、実行タスクとして決定したＱｏＳタスク１３４がスケジューラ１３１によって実行されるように、所定のアルゴリズムに従い、そのＱｏＳタスク１３４の優先度を変更する。例えば、そのＱｏＳタスク１３４の優先度をそれ以外のタスク（ＱｏＳ設定されていないタスク、Ｗａｉｔ状態（待ち状態）のＱｏＳタスク、又は、割り当て待ちのタスク等）の優先度よりも高く設定する。
【００２５】
これととともに、スケジューラタスク１３２は、そのＱｏＳタスク１３４の所要リソース量の制御を行う（Ｓ１０２）。例えば、タスク情報テーブル１３５（実行割当時間１３５ｃ）へＣＰＵ使用時間を設定する（ＱｏＳ制御）。
【００２６】
次に、スケジューラタスク１３２は、次回スケジューラ起動時刻を計算し設定する（Ｓ１０３）。この設定が完了すると、スケジューラタスク１３２は、実行状態以外の状態（スリープ状態または待ち状態等）へ遷移する（Ｓ１０４）。実行状態以外の状態は設定時刻に達して再度実行状態へ遷移するまで継続する（Ｓ１０５）。
【００２７】
リアルタイムＯＳ（スケジューラ１３１）は、スケジューラタスク１３２が実行状態以外の状態から実行状態へ遷移するまでの間は、他のタスク（スケジューラタスク１３２以外のタスク１３３、１３４等）のうちの最も高い優先度が設定されているタスクを実行する。具体的には、スケジューラ１３１は、終了または待ち状態でない他のタスクのうちの最も高い優先度が設定されているタスクを実行する。ここでは、Ｓ１０１で実行タスクとして決定されたＱｏＳタスク１３４の優先度がスケジューラ１３１によって実行されるように変更されているため、スケジューラ１３１は、その変更された優先度が設定されているＱｏＳタスク１３４等を実行する。
【００２８】
スケジューラタスク１３２は、Ｓ１０３で設定した設定時刻に達すると、実行状態以外の状態から実行状態へ遷移する。即ち、スリープ状態等が解除される（Ｓ１０６）。そして、スケジューラタスク１３２は、タスク情報管理テーブル１３５（タスク情報ともいう）を更新する（Ｓ１０７）。
【００２９】
次に、スケジューラ１３１は、終了または待ち状態でないタスクのうちの最も高い優先度が設定されているタスクを実行する。ここでは、スケジューラタスク１３２に最も高い優先度が設定されており、しかも、スケジューラタスクのスリープ状態等が解除されているので、スケジューラ１３１は、スケジューラタスク１３２を実行する。以下、スケジューラタスク１３２は実行状態へ遷移して、上記Ｓ１００〜Ｓ１０７の処理を繰り返す。
【００３０】
以上述べたように、本実施形態においては、最も高い優先度が設定されるとともに、他のタスク（ＱｏＳタスク１３４）の実行制御を行うスケジューラタスク１３２を設けたので、リアルタイムＯＳのカーネル部分を修正することなく、タスク管理方式をそのリアルタイムＯＳに実装することが可能となる。
【００３１】
また、本実施形態においては、スケジューラタスク１３２は、所定期間ごとに（設定時刻に達するごとに）実行状態へ遷移して、タスク情報テーブル１３５中のタスク情報に基づいて、他のタスク（ＱｏＳタスク１３４等）の実行制御を行う。
【００３２】
これにより、タスクの実行におけるリソース割当制御が可能となり、アプリケーション（例えばＱｏＳタスクを含む）実行におけるサービス品質の制御を実現することができる。また、リアルタイムＯＳにおいて、各タスク（ＱｏＳタスク）毎のリソース割当制御が可能となることで、優先度に依らず、タスクの実行を適切なタイミングで必要とされる時間の実行が可能となり、アプリケーションの開発およびデバックの効率が向上する。さらに、カーネル内部を修正せずに、優先度制御機能を持つリアルタイムＯＳ自体の機能を用いて、リソース割当制御を実現することで、リソース割当制御における実装の容易性と移植性が高まる。
【００３３】
次に、上記構成のタスク管理システムにおいて、時間起動通知用タスク１３３を用いて、複数のタスクの実行を制御する動作について説明する。図３は、複数のタスクに設定されている優先度を説明するための図である。縦軸が優先度を示しており、各タスクにはその位置に応じた優先度が設定されている。図４及び図５は、タスク管理システムの動作を説明するための図である。図５中、縦軸が優先度を、横軸が時間の経過を、それぞれ表している。
【００３４】
複数のタスクに設定されている優先度は当初、図３に示すように、時間起動通知用タスク１３３が最も高く、スケジューラタスク１３２、ＱｏＳタスク１３４、その他のタスク（ＱｏＳ設定されていないタスク、Ｗａｉｔ状態のＱｏＳタスク、割当待ちのタスク）の順に低くなっている。
【００３５】
スケジューラ１３１は、終了または待ち状態でないタスクのうちの最も高い優先度が設定されているタスクを実行する。ここでは、図３に示すように、時間起動通知用タスク１３３に最も高い優先度が設定されているので、スケジューラ１０３は、時間起動通知用タスク１３３を実行する。時間起動通知用タスク１３３は、所定期間（一定周期または設定時間）ごとに、所定通知をスケジューラタスク１３２へ通知等することで、スケジューラタスク１３２の優先度を他のタスク１３３、１３４等の優先度よりも高く設定する。これとともに、スケジューラタスク１３２の実行状態以外の状態（スリープ状態または待ち状態等）を解除する。
【００３６】
この状態の下で、スケジューラ１３１は、終了又は待ち状態でないタスクのうちの最も高い優先度が設定されているタスクを実行する。ここでは、スケジューラタスク１３２に最も高い優先度が設定されており、しかも、スケジューラタスク１３２のスリープ状態等が解除されているので、スケジューラ１３１は、スケジューラタスク１３２を実行する。これにより、スケジューラタスク１３２は、初期化され（Ｓ２００）、ＱｏＳタスク１３４の中から実行タスクを決定する（Ｓ２０１）。具体的には、スケジューラタスク１３２は、タスク情報テーブル１３５中の起動タイミング１３５ｂ等に基づいて、ＱｏＳタスクスケジュール計算等の処理を行うことで実行タスクを決定する。
【００３７】
次に、スケジューラタスク１３２は、実行タスクとして決定したＱｏＳタスク１３４がスケジューラ１３１によって実行されるように、所定のアルゴリズムに従い、そのＱｏＳタスク１３４の優先度を変更する。例えば、そのＱｏＳタスク１３４の優先度をそれ以外のタスク（ＱｏＳ設定されていないタスク、Ｗａｉｔ状態（待ち状態）のＱｏＳタスク、又は、割り当て待ちのタスク等）の優先度よりも高く設定する。
【００３８】
これととともに、スケジューラタスク１３２は、そのＱｏＳタスク１３４の所要リソース量の制御を行う（Ｓ２０２）。例えば、タスク情報テーブル１３５（実行割当時間１３５ｃ）へＣＰＵ使用時間を設定する（ＱｏＳ制御）。
【００３９】
次に、スケジューラタスク１３２の優先度が他のタスク１３３、１３４等の優先度よりも低く設定される。これとともに、スケジューラタスク１３２は、実行状態以外の状態（スリープ状態またはＲｅｄｙ状態（待ち状態））へ遷移する（Ｓ２０３）。実行状態以外の状態は時間起動通知用タスク１３３から所定通知等が通知され再度実行状態へ遷移するまで継続する（Ｓ２０４）。なお、ＱｏＳタスク割り当てが無いときは、スケジューラタスク１３２は、Ｓｕｓｐｅｎｄ状態に遷移する。この場合、スケジューラタスク１３２の優先度を低く設定する必要はない。
【００４０】
リアルタイムＯＳ（スケジューラ１３１）は、スケジューラタスク１３２が実行状態以外の状態から実行状態へ遷移するまでの間は、他のタスク（スケジューラタスク１３２以外のタスク１３３、１３４等）のうちの最も高い優先度が設定されているタスクを実行する。具体的には、スケジューラ１３１は、終了または待ち状態でない他のタスクのうちの最も高い優先度が設定されているタスクを実行する。ここでは、Ｓ２０１で実行タスクとして決定されたＱｏＳタスク１３４の優先度がスケジューラ１３１によって実行されるように変更されているため、スケジューラ１３１は、その変更された優先度が設定されているＱｏＳタスク１３４等を実行する。
【００４１】
次に、所定期間（一定周期又は設定時刻）が経過すると、時間起動通知用タスク１３３は、所定通知をスケジューラタスク１３２に通知等することで、スケジューラタスク１３２の優先度を他のタスクの優先度よりも高く設定する。これとともに、スケジューラタスク１３２は、実行状態以外の状態から実行状態へ遷移する（起動）。即ち、Ｒｅａｄｙ状態（待ち状態）が解除される（Ｓ２０５）。なお、ＱｏＳタスク１３４の割当中に起動された場合は、他のタスクが動作可能となる処理が行われる。
そして、スケジューラタスク１３２は、タスク情報管理テーブル１３５（タスク情報ともいう）を更新する（Ｓ２０６）。
【００４２】
次に、スケジューラ１３１は、終了または待ち状態でないタスクのうちの最も高い優先度が設定されているタスクを実行する。ここでは、スケジューラタスク１３２に最も高い優先度が設定されており、しかも、スケジューラタスクの待ち状態等が解除されているので、スケジューラ１３１は、スケジューラタスク１３２を実行する。以下、スケジューラタスク１３２は実行状態へ遷移して、上記Ｓ２００〜Ｓ２０６の処理を繰り返す。
【００４３】
以上のようにして、スケジューラタスク１３２は、所定期間ごとに（設定時刻に達するごとに）実行状態へ遷移して他のタスクの実行制御を行う。これにより、上記動作と同様の効果が得られる。
【００４４】
本発明は、その精神または主要な特徴から逸脱することなく、他の様々な形で実施することができる。このため、上記の実施形態はあらゆる点で単なる例示にすぎず、これらの記載によって本発明が限定的に解釈されるものではない。
【００４５】
【発明の効果】
本発明によれば、オペレーティングシステム（例えばリアルタイムＯＳ）のカーネルを修正することなく、タスク管理方式（例えばＱｏＳ制御を実現するタスク管理方式）をそのオペレーティングシステムに実装することが可能になる。
【図面の簡単な説明】
【図１】本発明の実施の形態であるタスク管理システムの概略システム構成を説明するための図である。
【図２】本発明の実施の形態であるタスク管理システムの動作を説明するためのフローチャートである。
【図３】複数のタスクに設定されている優先度を説明するための図である。
【図４】本発明の実施の形態であるタスク管理システムの動作を説明するためのフローチャートである。
【図５】本発明の実施の形態であるタスク管理システムの動作を説明するためのフローチャートである。
【符号の説明】
１００      情報処理端末
１１０      ＣＰＵ
１２０      記憶装置
１３０      メモリ
１３１      スケジューラ
１３２      スケジューラタスク
１３３      時間起動通知用タスク
１３４      ＱｏＳタスク
１３５      タスク情報テーブル
【図１】
2004157737.tif 000003
【図２】
2004157737.tif 000004
【図３】
2004157737.tif 000005
【図４】
2004157737.tif 000006
【図５】
2004157737.tif 000007