(57)【要約】【課題】優先的に処理すべきタスクと、より優先度の低いタスクとのバランスを図った処理を実現すると同時に、ＣＰＵ資源を有効に利用することを可能にするタスクスケジューリング技術を提供する。【解決手段】周期的高優先度設定部１０２は、周期Ｔ毎に特定タスクテーブル１１０に記録される特定タスク＃１の高優先度を、タスク優先度テーブル１１１にタスク＃１の優先度として書き込む。その後、周期Ｔよりも短い時間ＴＨが経過したときに、周期的低優先度設定部１０３は、特定タスクテーブル１１０に記録される特定タスク＃１の低優先度を、タスク優先度テーブル１１１にタスク＃１の優先度として書き込む。低優先度は高優先度よりも低く設定されている。タスク選択部１０１は、タスク優先度テーブル１１１に記録されている複数のタスク１０のうち優先度が最も高いものを実行対象として選択する。【選択図】図１
2007519060.tif 000002
【特許請求の範囲】
【請求項１】
複数のタスクのスケジューリングを行うことによりマルチタスク処理を実現するタスクスケジューリング装置であって、
前記複数のタスクのうち優先度が最も高いものを実行対象として選択するタスク選択部と、
所定の周期Ｔ毎に前記複数のタスクのうちの特定のタスクの優先度を所定の第１優先度に設定する周期的高優先度設定部と、
前記周期的高優先度設定部が前記特定のタスクの優先度を前記第１優先度に設定してから前記周期Ｔが経過する前に、前記特定のタスクの優先度を前記第１優先度よりも低い第２優先度に設定する周期的低優先度設定部とを備えるタスクスケジューリング装置。
【請求項２】
前記周期的低優先度設定部は、前記周期的高優先度設定部が前記特定のタスクの優先度を前記第１優先度に設定してから前記周期Ｔよりも短い所定の時間ＴＨが経過したときに、前記特定のタスクの優先度を前記第２優先度に設定する請求項１に記載のタスクスケジューリング装置。
【請求項３】
前記周期的高優先度設定部が前記特定のタスクの優先度を前記第１優先度に設定してから、前記特定のタスクの処理量が所定の規定量に達したか否かを判別する処理量判別部を更に備え、
前記周期的低優先度設定部は、前記処理量が前記規定量に達したものと前記処理量判別部が判別したときに、前記特定のタスクの優先度を前記第２優先度に設定する請求項１に記載のタスクスケジューリング装置。
【請求項４】
前記処理量判別部は、
前記特定のタスクの実行にともなって値が変化する変数と所定の規定値とを比較することにより前記処理量が前記規定量に達したか否かを判別する処理量比較部を備える請求項３記載のタスクスケジューリング装置。
【請求項５】
前記特定のタスクが出力するデータを一時保持するバッファを更に備え、
前記処理量判別部は、
前記特定のタスクの実行にともなって前記バッファに書き込まれるデータ量と所定の規定値とを比較することにより前記処理量が前記規定量に達したか否かを判別する処理量比較部を備える請求項３記載のタスクスケジューリング装置。
【請求項６】
前記複数のタスクの各々とその優先度とを対応付けて記録するためのタスク優先度テーブルを更に備え、
前記周期的高優先度設定部は、前記タスク優先度テーブルに前記特定のタスクに対応する優先度として前記第１優先度を書き込むことにより、前記特定のタスクの優先度を前記第１優先度に設定し、
前記周期的低優先度設定部は、前記タスク優先度テーブルに前記特定のタスクに対応する優先度として前記第２優先度を書き込むことにより、前記特定のタスクの優先度を前記第２優先度に設定し、
前記タスク選択部は前記タスク優先度テーブルを参照し、前記タスク優先度テーブルに記録された複数の優先度のうちの最も高い優先度に対応するタスクを前記実行対象として選択する請求項１ないし５の何れかに記載のタスクスケジューリング装置。
【請求項７】
前記特定のタスクと前記第１優先度と前記第２優先度とを対応付けて記録するための特定タスクテーブルを更に備え、
前記周期的高優先度設定部は、前記特定タスクテーブルを参照し、前記特定のタスクに関する情報が記録されておれば、記録されている前記第１優先度を読み出し、前記タスク優先度テーブルに前記特定のタスクに対応する優先度として、読み出した前記第１優先度を書き込み、
前記周期的低優先度設定部は、前記特定タスクテーブルを参照し、前記特定のタスクに関する情報が記録されておれば、記録されている前記第２優先度を読み出し、前記タスク優先度テーブルに前記特定のタスクに対応する優先度として、読み出した前記第２優先度を書き込む請求項６記載のタスクスケジューリング装置。
【請求項８】
前記特定のタスクは、前記特定タスクテーブルの記録内容を書き込み及び削除する請求項７記載のタスクスケジューリング装置。
【請求項９】
前記周期的高優先度設定部と前記周期的低優先度設定部とのうち少なくとも一方の設定部が、オペレーティングシステムの機能として実現されている請求項１ないし８の何れかに記載のタスクスケジューリング装置。
【請求項１０】
前記少なくとも一方の設定部が、割り込みハンドラとして実現されている請求項９記載のタスクスケジューリング装置。
【請求項１１】
前記周期的高優先度設定部と前記周期的低優先度設定部とのうち少なくとも一方の設定部が、前記特定のタスクの機能として実現されている請求項１ないし８の何れかに記載のタスクスケジューリング装置。
【請求項１２】
前記少なくとも一方の設定部が、シグナルハンドラとして実現されている請求項１１記載のタスクスケジューリング装置。
【請求項１３】
複数のタスクのスケジューリングを行うことによりマルチタスク処理を実現するタスクスケジューリング方法であって、
前記複数のタスクのうち優先度が最も高いものを実行対象として選択するタスク選択工程と、
所定の周期Ｔ毎に前記複数のタスクのうちの特定のタスクの優先度を所定の第１優先度に設定する周期的高優先度設定工程と、
前記周期的高優先度設定部が前記特定のタスクの優先度を前記第１優先度に設定してから前記周期Ｔが経過する前に、前記特定のタスクの優先度を前記第１優先度よりも低い第２優先度に設定する周期的低優先度設定工程とを備えるタスクスケジューリング方法。
【請求項１４】
複数のタスクのスケジューリングを行うことによりマルチタスク処理を実現するタスクスケジューリング装置としてコンピュータを機能させるタスクスケジューリングプログラムであって、
前記複数のタスクのうち優先度が最も高いものを実行対象として選択するタスク選択手段と、
所定の周期Ｔ毎に前記複数のタスクのうちの特定のタスクの優先度を所定の第１優先度に設定する周期的高優先度設定手段と、
前記周期的高優先度設定部が前記特定のタスクの優先度を前記第１優先度に設定してから前記周期Ｔが経過する前に、前記特定のタスクの優先度を前記第１優先度よりも低い第２優先度に設定する周期的低優先度設定手段として前記コンピュータを機能させるタスクスケジューリングプログラム。
【請求項１５】
複数のタスクのスケジューリングを行うことによりマルチタスク処理を実現するタスクスケジューリング装置としてコンピュータを機能させるタスクスケジューリングプログラムを記録したコンピュータ読み取り可能な記録媒体であって、
前記複数のタスクのうち優先度が最も高いものを実行対象として選択するタスク選択手段と、
所定の周期Ｔ毎に前記複数のタスクのうちの特定のタスクの優先度を所定の第１優先度に設定する周期的高優先度設定手段と、
前記周期的高優先度設定部が前記特定のタスクの優先度を前記第１優先度に設定してから前記周期Ｔが経過する前に、前記特定のタスクの優先度を前記第１優先度よりも低い第２優先度に設定する周期的低優先度設定手段として前記コンピュータを機能させるタスクスケジューリングプログラムを記録したコンピュータ読み取り可能な記録媒体。
【請求項１６】
複数のタスクのスケジューリングを行うことによりマルチタスク処理を実現するタスクスケジューリング装置としてコンピュータを機能させるタスクスケジューリングプログラムを保持する伝送媒体であって、
前記複数のタスクのうち優先度が最も高いものを実行対象として選択するタスク選択手段と、
所定の周期Ｔ毎に前記複数のタスクのうちの特定のタスクの優先度を所定の第１優先度に設定する周期的高優先度設定手段と、
前記周期的高優先度設定部が前記特定のタスクの優先度を前記第１優先度に設定してから前記周期Ｔが経過する前に、前記特定のタスクの優先度を前記第１優先度よりも低い第２優先度に設定する周期的低優先度設定手段として前記コンピュータを機能させるタスクスケジューリングプログラムを保持する伝送媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はマルチタスク環境においてタスクスケジューリングを行うタスクスケジューリング装置、方法、プログラム、記録媒体、及び伝送媒体に関する。
【背景技術】
【０００２】
計算機装置（コンピュータ）は、大型計算機やパーソナルコンピュータのような情報処理を主目的とした装置形態のみならず、各種家電機器、携帯電話などの応用機器へも利用が進んでいる。計算機装置を搭載した家電機器などでは、一定の時間毎に一定の処理を行うことを保証したい場合がある。例えば、映像や音声などのストリーミングデータを扱う場合では、１０ｍｓなどの時間単位でストリーミングデータのフレームが設定されている。この場合、個々のフレーム毎に必要なデータを確実に処理しないと映像や音声が途切れることになる。
【０００３】
マルチタスク型の計算機において一定の時間毎に一定の処理を必ず行うことの保証は、処理を行うタスクの優先度を十分高く設定することで達成可能である。例えば特許文献１は、入力されたコマンドに対応するプロセスの優先度を、一定時間にわたって固定的に高く設定することにより、コマンドの即時性能を保証する技術を開示している。
【０００４】
しかしながら、ストリーミングデータを扱う場合には、各フレームに対応する一定量のデータを処理する必要があるが、一定量を超えるデータの処理は不可欠ではない。最低限必要な量のデータの処理が終われば、他のタスクを実行することが望ましい場合もある。例えば、ユーザの入力に対して応答を返すタスクは、実行開始が余りにも遅れると、ユーザに不快感を与える恐れがある。したがって、映像及び音声が途切れないための最低限度の処理が終われば、応答を返すタスクが実行されるのが望ましい。特許文献１に開示される技術では、特定のタスクが高い優先度で実行される場合には、その期間において、優先度の低いタスクは全く実行されないこととなる。
【０００５】
この不都合を避けるものとして、優先度の高いタスクを通常はスリープ状態にし、周期的に起床させる技術を想定することができる。しかしながら、この想定技術では、一定周期毎に起床・スリープする特定タスクはスリープ中には一切実行されない。すなわち、特定タスクがスリープ中に他のタスクの処理が不要である場合、アクティブなタスクが存在しない空き時間が発生し、ＣＰＵのリソースを有効に使用できないという問題があった。
【特許文献１】特開平４−３３５４４１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
本発明は上記課題を鑑みてなされたものであり、優先的に処理すべきタスクと、より優先度の低いタスクとのバランスを図った処理を実現すると同時に、ＣＰＵ資源を有効に利用することを可能にするタスクスケジューリング技術を提供するものである。
【課題を解決するための手段】
【０００７】
上記課題を解決し上記目的を達成するために、本発明の一態様に係るものは、複数のタスクのスケジューリングを行うことによりマルチタスク処理を実現するタスクスケジューリング装置であって、前記複数のタスクのうち優先度が最も高いものを実行対象として選択するタスク選択部と、所定の周期Ｔ毎に前記複数のタスクのうちの特定のタスクの優先度を所定の第１優先度に設定する周期的高優先度設定部と、前記周期的高優先度設定部が前記特定のタスクの優先度を前記第１優先度に設定してから前記周期Ｔが経過する前に、前記特定のタスクの優先度を前記第１優先度よりも低い第２優先度に設定する周期的低優先度設定部とを備えるものである。
【０００８】
本発明の目的、特徴、局面、及び利点は、以下の詳細な説明と添付図面とによって、より明白となる。
【発明を実施するための最良の形態】
【０００９】
以下本発明の実施の形態について、図面を参照にしながら説明する。
【００１０】
（実施の形態１）
図１は、本発明の実施の形態１によるタスクスケジューリング装置の構成を示すブロック図である。このタスクスケジューリング装置５１は、計算機装置（コンピュータ）の一部を構成している。計算機装置は、少なくとも１つの中央演算装置（ＣＰＵ）１、メモリ装置２、及びタイマー回路３を備えている。また、図示しないが、計算機装置は、入力装置、出力装置のような他の機器を備えていてもよい。
【００１１】
ＣＰＵ１は、処理性能が十分であれば任意のタイプのものを用いることができる。メモリ装置２には、一つ以上のタスク１０、計算機装置のオペレーティングシステム（ＯＳ）１００を含むプログラムやデータが格納されている。タスク１０に含まれる個々のタスク＃１、＃２等は、一つのプログラム即ちプロセスであっても良く、プログラムの一部であるスレッドであっても良い。メモリ装置２は、十分な機能及び容量があればランダムアクセスメモリ（ＲＡＭ）、フラッシュメモリのような任意のタイプのものを使用することができる。また、メモリ装置２は、単一のメモリ装置で構成されている必要はなく、同種の複数のメモリ装置、又はリードオンリーメモリ（ＲＯＭ）を含む、異なる種類のメモリ装置の組み合わせであってもよい。計算機装置は、メモリ装置２以外に、例えばハードディスクのような外部記憶装置を備えていてもよく、計算機装置の動作に問題の無い範囲で外部記憶装置にプログラムやデータを移動させてもよい。
【００１２】
上記のプログラム及びデータは、ＲＯＭ、フレキシブルディスク、ＣＤ−ＲＯＭ等の記録媒体３１を通じて供給することも、電話回線、ネットワーク等の伝送媒体３３を通じて供給することも可能である。図１には、記録媒体３１としてＣＤ−ＲＯＭが描かれており、伝送媒体３３として電話回線が描かれている。ＣＤ−ＲＯＭに記録されたプログラム及びデータは、例えば計算装置の外部装置としてのＣＤ−ＲＯＭ読取装置３２を計算装置本体へ接続することによって読み出すことができ、例えばＲＡＭ或いは不図示のハードディスクに格納することができる。記録媒体３１としてＲＯＭの形態でプログラム及びデータが供給される場合には、当該ＲＯＭを計算装置に搭載することにより、計算装置はプログラム及びデータに従った処理を実行可能となる。この場合、当該ＲＯＭはメモリ装置２に含まれる。伝送媒体３３を通じて供給されるプログラム及びデータは、通信装置３４を通じて受信され、例えばＲＡＭ或いは不図示のハードディスクに格納される。伝送媒体３３は、有線の伝送媒体に限らず無線の伝送媒体であっても良い。
【００１３】
タスク１０に含まれる各タスク＃１、＃２等は、通常のマルチタスク型の計算機装置において管理されるタスクと同様に、それぞれ優先度を持ち、優先度に応じた順番で時分割的に並列処理される。図１では各タスクを＃１、＃２・・・、＃Ｎ（Ｎは自然数）のように表している。
【００１４】
ＯＳ１００は、ＣＰＵ１と協働してタスクスケジューリング装置５１を実現するために、主要な要素として、タスク選択部１０１、周期的高優先度設定部１０２、及び周期的低優先度設定部１０３を備えている。
【００１５】
タスク選択部１０１は、通常の優先度を用いたスケジューリング装置と同様に、タスク１０の各々に付与された優先度に応じてタスク１０をスケジューリングする。すなわち、タスク選択部１０１は、最も優先度の高いタスクを選択し、選択したタスクをＣＰＵ１に実行させることにより、タスク１０を優先度の高い順に処理する。タスク選択部１０１は、後述の周期的高優先度設定部１０２、周期的低優先度設定部１０３と連動して本実施の形態に特徴的なタスクスケジューリングを行うが、それとは独立して通常の優先度を用いたスケジューリングを行うため、適時必要に応じて呼び出される。
【００１６】
周期的高優先度設定部１０２は、一定時間（Ｔとする）毎に特定のタスク（ここではタスク＃１とする）の優先度を十分高く設定する。本実施の形態において十分高い優先度とは、あるタスクがその優先度に設定されている期間、原則的にそのタスクの実行が必ず行われる優先度とする。例えば、ＯＳ１００が取り扱う優先度の内で最高の値を用いることができる。但し、計算装置を応用したシステムの設計によっては、本実施の形態に特徴的なタスクスケジューリング方法を適用する特定タスクの処理より優先すべきタスクが存在する場合もある。この様な場合は、最高の優先度は用いず、それより低い優先度を用いる必要がある。また、例えば、優先度の範囲を通常のタスクに付与される範囲と優先的に処理すべきタスクに付与される範囲の２つに分け、優先的に処理すべきタスクに付与される範囲の優先度を十分高い優先度として用いても良い。優先度の値はシステムの要求に応じて設計すれば良い。なお、タスクのスケジューリングに関し、優先度だけでなく、例えばスケジューリングクラスのような別のパラメータをあわせて用いるＯＳも知られている。本実施の形態及び以下の実施の形態における優先度の設定は、その様なパラメータ設定全てを含むものとする。
【００１７】
周期的低優先度設定部１０３は、周期的高優先度設定部１０２によりタスク＃１が高優先度に設定されたのち一定時間（ＴＨとする）後にタスク＃１の優先度を十分低く設定する。本実施の形態及び以下の実施の形態において十分低い優先度とは、処理を遅らせても大きな問題のないタスクと同程度の優先度とする。例えば、優先度の範囲を通常のタスクに付与される範囲と優先的に処理すべきタスクに付与される範囲の２つに分ける場合では、通常のタスクに付与される範囲の優先度を十分低い優先度として用いても良い。この様に、優先度の値はシステムの要求に応じて設計すれば良い。
【００１８】
優先度を低く設定されたタスク＃１の処理は、タスク＃１以上に優先度の高いタスクが存在しなければ続行される。タスク＃１以上に優先度の高いタスクが存在すれば、タスク選択部１０１によるスケジューリングが行われ、タスク＃１以外のタスクの処理が実行される。
【００１９】
周期的高優先度設定部１０２及び周期的低優先度設定部１０３を所定の時期に起動するために、タスクスケジューリング装置５１は以下のように構成される。周期的高優先度設定部１０２は、例えば、タイマー回路３によるタイマー割り込みとして処理を実行する割り込みハンドラで実現することができる。この場合、タイマー３から周期Ｔ毎にＣＰＵ１へ割り込みをかける、すなわち割り込み要求信号を伝えるようにし、割り込み要求に対応した割り込みハンドラとしての周期的高優先度設定部１０２によりタスク＃１の優先度を変更させれば良い。
【００２０】
周期的低優先度設定部１０３も周期的高優先度設定部１０２と同様に、例えば、タイマー回路３によるタイマー割り込みとして処理を実行する割り込みハンドラで実現することができる。この場合、周期的高優先度設定部１０２を起動するための割り込みの時期から時間ＴＨ後に、周期的低優先度設定部１０３を起動するための割り込みを、タイマー３からＣＰＵ１へかけるようにすると良い。すなわち、タイマー回路３は、周期的高優先度設定部１０２と周期的低優先度設定部１０３とを個別に起動するための２種類の割り込み要求信号をＣＰＵ１へ伝えると良い。
【００２１】
別の形態として、図１に例示するように、ＯＳ１００がタイマー部１０４を備え、タイマー部１０４が周期Ｔ毎に周期的高優先度設定部１０２を起動し、それよりも時間ＴＨ遅れた時期に周期的低優先度設定部１０３を起動するように、タスクスケジューリング装置５１を構成しても良い。タイマー部１０４は、例えばタイマー回路３によるタイマー割り込みとして処理を実行する割り込みハンドラで実現することができる。この場合には例えば、タイマー回路３は周期Ｔよりも短い周期Ｔ０（例えば周期Ｔの１００分の１）ごとにＣＰＵ１へ割り込みをかけ、タイマー部１０４は、周期Ｔ０ごとに時間をカウントアップするカウンタを有する。タイマー部１０４は、計数値が周期Ｔに達すると周期的高優先度設定部１０２を起動するとともに計数値をリセットする。タイマー部１０４は、更に、計数値が時間ＴＨに達するごとに周期的低優先度設定部１０３を起動する。
【００２２】
なお、周期的高優先度設定部１０２及び周期的低優先度設定部１０３を、割り込みハンドラとして実現する場合には、タイマー部１０４は不要である。
【００２３】
周期的高優先度設定部１０２及び周期的低優先度設定部１０３が、特定タスクの優先度を設定することを可能にするために、ＯＳ１００は例えば、特定タスクテーブル１１０及びタスク優先度テーブル１１１を備えている。特定タスクテーブル１１０は、特定タスク（図１の例ではタスク＃１）に対応付けて、本実施の形態に特徴的なスケジューリングを実現するためのパラメータを記録するためのテーブルである。特定タスクテーブル１１０に記録される内容は、特定タスクを識別するための標識（「特定タスク標識」と仮称する）、周期Ｔ、時間ＴＨ、高優先度、及び低優先度である。
【００２４】
特定タスクテーブル１１０に記録される高優先度及び低優先度は、本実施の形態に特徴的なスケジューリングにおいて特定タスクに付与される高優先度及び低優先度を意味する。以下の説明の便宜上、一例として、特定タスク標識はタスク＃１を識別するための符号「＃１」であり、周期Ｔは１０ｍｓであり、時間ＴＨは４ｍｓであり、高優先度は優先度「１」であり、低優先度は優先度「３」であるとする。ここで、優先度を示す数値が低いほど優先度は高いものとし、優先度「１」は優先度が最高であることを意味するものとする。但し、一般にはこれに限定されるものではない。本発明においては、優先度は高低の区別がつくのであれば、任意の形式で表現しても良い。このことは、図１の例だけでなく、以下の全ての図についても同様である。
【００２５】
一方、タスク優先度テーブル１１１は、タスク１０の各々に対応付けて、各タスクの優先度を記録するためのテーブルである。したがって、タスク優先度テーブル１１１に記録される内容は、タスクを識別するための標識（「タスク標識」と仮称する）、及び優先度である。タスク選択部１０１は、タスク優先度テーブル１１１を参照することにより、タスク優先度テーブル１１１に記録されている優先度のうち、参照した時点で最も優先度の高いタスクを選択して実行する。以下の説明の便宜上、一例として、タスク＃１の優先度は１であり、タスク＃２の優先度は２であるとする。
【００２６】
特定タスクテーブル１１０の内容は、あるタスクがメモリ装置２へ書き込まれた以後において、当該タスクを特定タスクとして本実施の形態に特徴的なスケジューリングの対象とすべき時に、当該タスクがＯＳ１００へ記録要求を送ることにより記録される。また、特定タスクテーブル１１０に記録されている特定タスクを、本実施の形態に特徴的なスケジューリングの対象から外すべき時には、当該特定タスクがＯＳ１００へ削除要求を送ることにより記録が抹消される。
【００２７】
例えば、タスク＃１がメモリ装置２へ書き込まれた以後、タスク＃１が特定タスクとしての扱いを受けるべき時期が到来したときに、タスク＃１に関する内容が、特定タスクテーブル１１０に書き込まれる。また、タスク＃１が特定タスクとしての扱いを受けるべき時期が終了したときに、タスク＃１に関する内容が、特定タスクテーブル１１０から削除される。このように、特定タスクテーブル１１０の内容は適時に変更することができる。
【００２８】
一方、タスク優先度テーブル１１１の内容は、新たなタスクがメモリ装置２へ書き込まれたとき、あるいはそれ以後であって当該新たなタスクの本来の処理が最初に実行される時までに、新たなタスクがＯＳ１００へ記録要求を送ることにより記録される。例えば、タスク＃１及び＃２が、メモリ装置２へ書き込まれたときに、タスク＃１及び＃２に関する内容が、タスク優先度テーブル１１１へ記録される。その後、新たにタスク＃３がメモリ装置２へ書き込まれると、その時にタスク＃３に関する内容がタスク優先度テーブル１１１へ記録される。
【００２９】
特定タスクテーブル１１０及びタスク優先度テーブル１１１への記録は、例えばＯＳ１００が、特定タスクテーブル１１０及びタスク優先度テーブル１１１に付随して、それぞれの内容を書き換えるためのシステムコールを有することにより実現される。すなわち、タスク＃１が、特定タスクテーブル１１０に付随するシステムコールを呼出し、特定タスク標識、周期Ｔ等の記録すべき内容を引数として当該システムコールへ引き渡すと、当該システムコールは引き渡された内容を特定タスクテーブル１１０へ記録する。また、タスク＃１が、タスク優先度テーブル１１１に付随するシステムコールを呼出し、記録すべき内容を引数として当該システムコールへ引き渡すと、当該システムコールは引き渡された内容をタスク優先度テーブル１１１へ記録する。
【００３０】
タイマー部１０４は例えば、時間Ｔ０毎に特定タスクテーブル１１０を参照し、特定タスクについての記録があれば、周期Ｔ及び時間ＴＨを取得する。既述のようにタイマー部１０４は、計数値が周期Ｔに達する毎に、周期的高優先度設定部１０２を起動するとともに計数値をリセットし、計数値が時間ＴＨに達する毎に周期的低優先度設定部１０３を起動する。
【００３１】
起動された周期的高優先度設定部１０２は、特定タスクテーブル１１０を参照し、特定タスク標識「＃１」と高優先度「１」とを取得する。つづいて周期的高優先度設定部１０２は、タスク優先度テーブル１１１の内容のうち、取得した特定タスク標識「＃１」に標識が一致するタスク＃１に対応する優先度「１」を、取得した高優先度「１」で書き換える。図１の例では、書き換えの前と後との間で優先度は変わらない。
【００３２】
起動された周期的低優先度設定部１０３は、特定タスクテーブル１１０を参照し、特定タスク標識「＃１」と低優先度「１」とを取得する。つづいて周期的低優先度設定部１０３は、タスク優先度テーブル１１１の内容のうち、取得した特定タスク標識「＃１」に標識が一致するタスク＃１に対応する優先度「１」を、取得した低優先度「３」で書き換える。
【００３３】
周期的高優先度設定部１０２は、周期Ｔ毎の一連の起動のうち最初の起動時に限って、タスク優先度テーブル１１１の内容のうちの書き換える前の優先度の値である優先度の初期値を、例えばタスク優先度テーブル１１１内の別の欄に保存しておく。タイマー部１０４は、時間Ｔ０毎に特定タスクテーブル１１０を参照したときに、特定タスクテーブル１１０に記録された内容がなければ、周期的高優先度設定部１０２及び周期的低優先度設定部１０３の何れをも起動しない。但し、タイマー部１０４は、時間Ｔ０毎に特定タスクテーブル１１０を参照したときに、それまでに記録されていた特定タスクについての記録が無くなった時に限り、例えば周期的高優先度設定部１０２を起動することにより、タスク優先度テーブル１１１に保存される優先度の初期値「１」を、対応するタスク＃１の優先度「１」へ移動させる。
【００３４】
タスクスケジューリング装置５１が以上の構成を採ることにより、タスク選択部１０１は、本実施の形態に特徴的なタイムスケジューリングと、優先度の初期値に基づく通常のタイムスケジューリングとを、タスク１０の必要に応じて適時に実現する。
【００３５】
図２は、本実施の形態に特徴的なタスクスケジューリングが行われるときの主要な処理の流れを示すフローチャートである。特定タスクテーブル１１０にはタスク＃１を特定タスクとして、特定タスク標識等のパラメータが記録されているものとする。
【００３６】
ステップＳ１において、タイマー部１０４は周期的高優先度設定部１０２を起動する。それにより周期的高優先度設定部１０２が処理を開始する。既に述べたように、周期的高優先度設定部１０２は、タイマー回路３によるタイマー割り込みによって起動されてもよい。ステップＳ１の処理は既に述べた通り、周期Ｔ毎に行われる。
【００３７】
次に、ステップＳ２において、周期的高優先度設定部１０２は、特定タスクテーブル１１０を参照することにより、特定タスク（タスク＃１）の優先度を高く変更する。即ち、周期的高優先度設定部１０２は、タスク優先度テーブル１１１の内容のうち、特定タスク（タスク＃１）に対応する優先度を、特定タスクテーブル１１０に記録される高優先度で書き換える。
【００３８】
続いてステップＳ３において、タスク選択部１０１は、タスク優先度テーブル１１１に従ってタスク１０のスケジューリングを行う。ステップＳ２でタスク＃１の優先度は十分高く設定されているので、通常ここではタスク＃１が、実行すべきタスクとして選択される。
【００３９】
ステップＳ４において、ＣＰＵ１はタスク選択部１０１が選択したタスクを実行する。続くステップＳ５では、タイマー部１０４は、ステップＳ１より時間ＴＨが経過したかどうかを判定する。時間ＴＨが経過するまでは、ステップＳ３で選択されたタスク（タスク＃１）の実行、即ちステップＳ４の処理が続けられる。時間ＴＨが経過すると、ステップＳ６において、周期的低優先度設定部１０３は、例えばタイマー部１０４により起動され、タスク＃１の優先度を低く設定する。即ち、周期的低優先度設定部１０３は、タスク優先度テーブル１１１の内容のうち、特定タスク（タスク＃１）に対応する優先度（高優先度が書き込まれている）を、特定タスクテーブル１１０に記録される低優先度で書き換える。
【００４０】
ステップＳ７では、タスク選択部１０１は、再びタスク１０のスケジューリングを行う。タスク＃１の優先度はステップＳ６で低く設定されているので、他に優先度の高いタスクが存在すれば、タスク選択部１０１はそのタスクを選択する。一方、他に優先度の高いタスクがなければ、タスク選択部１０１は、タスク＃１を継続して選択する。次に、ステップＳ８において、ＣＰＵ１は、タスク選択部１０１が選択したタスクを実行する。以上のように、特定タスクテーブル１１０に特定タスクに関するパラメータが記録されているときには、ステップＳ１〜Ｓ８の処理が、周期Ｔ毎に反復される。
【００４１】
図３は、本実施の形態における処理の一例を説明するタイミングチャートである。図３の例では、タスク１０としてタスク＃１とタスク＃２との２つがメモリ装置２に存在するものとしている。また、特定タスクテーブル１１０の内容及びタスク優先度テーブル１１１の初期の内容は、図１に例示したとおりであるとする。したがってタスク＃１は、本実施の形態に特徴的なスケジューリングを適用する特定タスクである。タスク優先度テーブル１１１に記録されるタスク＃１の優先度は変動するが、時刻０においては低優先度に対応する優先度「３」に設定されているものとする。タスク＃２は通常のタスク、すなわち特定タスクでないタスクであり、タスク優先度テーブル１１１に記録される優先度は２に固定されている。なお、太実線は、対応するタスクがＣＰＵ１を確保することにより実行されている状態であることを示している。また、白抜き太線は、ＯＳ１００の処理がＣＰＵ１により実行されていることを示している。
【００４２】
時刻０では優先度の高いタスク＃２が実行されているが、時刻ｔ１から図２のステップＳ１、Ｓ２が実行され、それによりタスク＃１の高優先度への変更が行われる。また、時刻ｔ２よりステップＳ３、つまりタスク１０のスケジューリングが行われる。その結果、優先度「１」のタスク＃１が選択され、時刻ｔ３よりタスク＃１が実行される（ステップＳ４及びＳ５）。時刻ｔ１より時間ＴＨ後の時刻ｔ４から図２のステップＳ６が実行されることにより、タスク＃１の優先度は３に変更される。その後、タスク１０のスケジューリングが行われる（ステップＳ７）。その結果、時刻ｔ５より優先度「２」のタスク＃２が実行される（ステップＳ８）。
【００４３】
時刻ｔ６にタスク＃２が全ての処理を終了した場合には、再びタスクスケジューリングが行われる。即ち、タスク選択部１０１によるタスク１０のスケジューリング、即ちステップＳＳ２又はＳ７と同様の処理が改めて行われる。その結果、この時点で優先度の最も高いタスク＃１が選択される。それにより、時刻ｔ７よりｔ８までの期間ではタスク＃１が実行される。
【００４４】
時刻ｔ１よりｔ８までの１周期Ｔの間の処理を見ると、ｔ１からｔ４までの時間ＴＨの間にわたって、タスク＃１が実行される。この間、タスク＃１の優先度はタスク＃２より高く設定されているので、タスク＃１の処理が時間ＴＨにわたって保証される。但しここではＯＳ１００の処理が行われる時刻ｔ１からｔ２までの期間は、十分短時間であるとして無視している。ＯＳ１００の処理に無視できない時間を要する場合は、その分を計算した上で周期Ｔ及び時間ＴＨを設計すれば良い。
【００４５】
ＯＳ１００の処理に要する時間を無視すると、周期Ｔから時間ＴＨを除いた時刻ｔ４からｔ８にわたる期間のうち、時刻ｔ４からｔ６まではタスク＃２が実行され、タスク＃２の終了後の時刻ｔ６からｔ８まではタスク＃１が実行される。タスク＃１以外で実行すべきタスクであるタスク＃２が存在する場合はタスク＃２が実行され、タスク＃２が存在しない場合はタスク＃１が実行される。この様に、１周期に相当する決まった時間区間Ｔの内で決まった時間ＴＨ（図３ではｔ１からｔ４間）では、タスク＃１の実行を保証しつつ、残りの時間（ｔ４からｔ８）において他に処理すべきタスクが無い場合にはタスク＃１の処理を続けるタスクスケジューリングが実現されている。
【００４６】
以上のように、本実施の形態のタスクスケジューリング装置５１によれば、決まった周期Ｔ毎に特定のタスクの一定量の処理を保証しつつ、残りの時間も他に処理すべきタスクが無い場合にはその特定タスクの処理を続けることが可能となり、ＣＰＵ１のリソースを有効に利用することができる。
【００４７】
（実施の形態１の更に具体的な形態）
図４は、実施の形態１によるタスクスケジューリング装置５１の更に具体的な形態を例示したブロック図である。このタスクスケジューリング装置５１Ａを含む計算装置は、図１の計算装置に加えて入力装置４、入力インタフェース５及び出力装置６を備えている。入力装置４は、例えばキーボードである。出力装置５は、例えば音声を出力するとともに画像を表示する表示装置である。
【００４８】
タスクスケジューリング装置５１ＡをＣＰＵ１と協働して実現するＯＳ１００Ａは、ＯＳ１００の各要素（図１）に加えて、バッファ管理部１３０及びデバイスドライバ１４０を備えている。バッファ管理部１３０は、メモリ装置２のメモリ領域内に確保されたバッファ１３１を管理する。バッファ１３１は、タスク＃１から出力装置５へ出力されるデータを一時的に保持する。バッファ管理部１３０は、例えばシステムコールとして構成されている。その場合には、タスク＃１は、バッファ１３１へデータを書き込むときには、システムコールとしてのバッファ管理部１３０を呼出し、書き込むべきデータを引数としてバッファ管理部１３０へ引き渡す。バッファ管理部１３０は引き渡されたデータをバッファ１３１へ書き込む。
【００４９】
デバイスドライバ１４０は、入力装置４を管理するＯＳ１００Ａの部分であり、外部入力優先度設定部１４１を有している。外部入力優先度設定部１４１は、ユーザによる入力装置４の入力操作に応答して、所定のタスクの優先度を設定する。
【００５０】
図４においてタスク＃１は、データをバッファ１３１へ書き込む処理を行うタスクである。タスク＃１は、バッファ１３１から出力装置６へデータが読み出される速度以上の速度で、データをバッファ１３１へ供給する必要がある。さもなければ、バッファ１３１内のデータが尽きてしまい、出力装置６へのデータの出力が停止する。
【００５１】
特定タスクテーブル１１０には、タスク＃１が特定タスクとして記録されているものとする。すると、タスク＃１の優先度は、周期Ｔの期間のうち時間ＴＨの間において高優先度に保たれるので、通常において、バッファ１３１へのデータの書き込みの速度は一定に保たれる。この一定の速度は、周期Ｔに対する時間ＴＨ内の処理量の比率に該当する。周期Ｔのうちの時間ＴＨを除いた時間Ｔ−ＴＨにおいては、タスク＃１の優先度は低優先度となるので、他に実行すべきタスクが無い場合に限り、タスク＃１はバッファ１３１への書き込みを行う。
【００５２】
このように、タスクスケジューリング装置５１Ａは、時間ＴＨにおいてタスク＃１の優先度を高優先度に保つことにより、必要とされるバッファ１３１へのデータの書き込み速度を確保している。時間Ｔ−ＴＨにおいては、タスク＃１の優先度は低優先度に設定されるので、ＣＰＵ１は他のタスクを実行可能である。このため、必要な他のタスクの実行が長時間待たされることを回避することができる。
【００５３】
更に、タスク＃１以外には実行すべきタスクが無い場合には、時間Ｔ−ＴＨにおいても、タスク＃１は、バッファ１３１へのデータの書き込みを継続して行う。それにより、割り込みの多発等によりタスク＃１の実行のために十分な時間を確保できない場合に備えて、バッファ１３１へデータを蓄積しておくことができる。
【００５４】
図５及び図６は、タスクスケジューリング装置５１Ａによる処理を説明するタイミングチャートである。図５及び図６の例では、特定タスクテーブル１１０及びタスク優先度テーブル１１１の内容は、図４に例示される通りであると仮定している。更に、図５及び図６の例では、タスク＃２はユーザが入力装置４を操作することにより実行されるタスクであると仮定している。すなわち、入力装置４に対して所定の操作が行われると、これに応答して外部入力優先度設定部１４１は、タスク優先度テーブル１１１に記録されるタスク＃２の優先度を、例えば「２」に設定する。図４に例示するタスク優先度テーブル１１１の内容は、タスク＃２の優先度が「２」に設定された後のものに該当する。
【００５５】
外部入力優先度設定部１４１が、タスク＃２の優先度を「２」に設定するまでは、タスク優先度テーブル１１１にはタスク＃２についての記録は存在しない。また、タスク＃２の処理が終了すると、タスク優先度テーブル１１１からタスク＃２についての記録が削除される。そのためには例えば、タスク＃２は処理の終了とともにタスク優先度テーブル１１１に付随するシステムコールを呼出し、呼び出された当該システムコールがタスク優先度テーブル１１１内のタスク＃２に関する記録を削除すると良い。
【００５６】
したがって、入力装置４に対する所定の操作が行われるまでは、タスク選択部１０１は実行対象としてタスク＃２を選択することはない。その結果、図５に示すように、タスク＃１による処理が継続して行われる。それにより、バッファ１３１へデータが蓄積されることとなり、出力装置６から出力される映像及び音声に途切れが生じる危険性が低減される。
【００５７】
入力装置４に対する所定の操作が行われると、タスク選択部１０１は、タスク＃２を優先度「２」のタスクとして取り扱う。したがって、図６に例示するように、タスク＃１に対して所定量の処理を保証するとともに、入力装置４への所定の操作が行われてから時間ＴＨ以内に、タスク＃２が実行を開始してユーザに応答を返すことができる。ユーザによる所定の操作からタスク＃２の実行開始までの時間、すなわち応答時間が長いと、ユーザに不快感を与える恐れがある。タスクスケジューリング装置５１Ａは、タスク＃１の所定量の処理を保証しつつ、時間ＴＨ以内という短い応答時間を実現することができる。
【００５８】
タスク＃２の処理が終了すると、タスク選択部１０１はタスク＃２を実行対象として選択しない。したがって、図５に示すように、タスク＃１による処理が継続して行われる。
【００５９】
図７〜図９は、本実施の形態に特徴的なタスクスケジューリングを行わない場合の各タスクの処理を説明するタイミングチャートである。すなわち、図７〜図９は、従来のタスクスケジューリングに基づくタスクの処理を例示している。図７の例では、タスク＃１の優先度は、最も高い「１」に固定されている。この場合には、ユーザによる所定の操作が行われ、それによってタスク＃２の優先度が「２」に設定されても、バッファ１３１がデータで一杯になるまでタスク＃１の実行が継続され、それまではタスク＃２の実行が待たされることとなる。すなわち、応答時間が長くなり、そのことがユーザに不快感を与える恐れがある。
【００６０】
図８の例では、タスク＃１の優先度が低い値、例えば「３」に固定されている。この場合には、ユーザによる所定の操作が行われ、それによってタスク＃２の優先度が「２」に設定されると、直ちにタスク＃１の実行が停止されるとともにタスク＃２の実行が開始される。すなわち、応答時間が短くなるのでユーザに不快感を与える恐れはない。しかしながら、タスク＃２の処理が終了するまで、タスク＃１の実行は再開されない。その結果、バッファ１３１に蓄積されるデータが尽きてしまう恐れがある。
【００６１】
図９の例では、タスク＃１は、スリープと高優先度「１」での起床とを周期的に反復する。この場合には、ユーザによる所定の操作がないときには、タスク＃１がスリープしている時間では、ＣＰＵ１はアイドル状態となって何れのタスクも実行することがない。すなわち、資源としてのＣＰＵ１が空いているにも拘わらず、バッファ１３１へのデータの蓄積が行われないという、資源の無駄が発生する。
【００６２】
これに対して、本実施の形態に特徴的なタスクスケジューリングを行うことにより、上記の通り、応答時間を短くしつつ、映像及び音声の出力の途切れの危険を低減することができる。
【００６３】
なお、特定タスクテーブル１１０の内容を変更するための構成として、特定タスクテーブル１１０に付随するシステムコールをタスク＃１が呼び出すという既述の形態の他に、例えばバッファ１３１への書き込みを要求したタスクを、バッファ管理部１３０が特定タスクであると判定し、特定タスクテーブル１１０の内容を書き換える形態を採ることも可能である。この場合には、バッファ管理部１３０は、特定タスクテーブル１１０に記録すべき周期Ｔ、時間ＴＨ、高優先度、及び低優先度として、例えば予め定められた値を記録する。
【００６４】
（実施の形態１の変形形態）
図１０は、実施の形態１の変形形態によるタスクスケジューリング装置の構成を示すブロック図である。このタスクスケジューリング装置５１Ｂは、周期的高優先度設定部１０２及び周期的低優先度設定部１０３が、それぞれ周期的高優先度設定部１０２Ａ及び周期的低優先度設定部１０３Ａとして、タスク＃１内に設けられており、それに伴ってタイマー部１０４がタイマー部１０４Ａへ置き換えられている点において、タスクスケジューリング装置５１（図１）とは異なっている。タスクスケジューリング装置５１Ｂは、ＯＳ１００Ｂの各部とともに、タスク＃１内の周期的高優先度設定部１０２Ａ及び周期的低優先度設定部１０３Ａをも加えたプログラム内の各部が、ＣＰＵ１と協働することにより実現される。
【００６５】
周期的高優先度設定部１０２Ａ及び周期的低優先度設定部１０３Ａは、ＯＳ１００Ｂからタスク＃１へ送られるシグナルに応答して処理を実行するシグナルハンドラとして実現されている。シグナルとは一般にＯＳよりタスクに通知を行う仕組みであり、例えば、タスク毎に用意された変数を変更することで実現される。
【００６６】
タイマー部１０４Ａは、タイマー部１０４と同様に時間Ｔ０毎に特定タスクテーブル１１０を参照し、特定タスクについての記録があれば、周期Ｔ及び時間ＴＨを取得する。タイマー部１０４Ａは、タイマー部１０４と同様にカウンタを有しており、計数値が周期Ｔに達する毎に、周期的高優先度設定部１０２Ａへシグナルを送ることにより周期的高優先度設定部１０２Ａを起動する。タイマー部１０４Ａは、それと同時に計数値をリセットする。タイマー部１０４Ａは更に、計数値が時間ＴＨに達する毎に周期的低優先度設定部１０３Ａへシグナルを送ることにより、周期的低優先度設定部１０３Ａを起動する。
【００６７】
起動された周期的高優先度設定部１０２Ａは、タスク優先度テーブル１１１の内容のうち、タスク＃１に対応する優先度「１」を、タスク＃１自身が特定タスクテーブル１１０に設定した高優先度「１」で書き換える。起動された周期的低優先度設定部１０３Ａは、タスク優先度テーブル１１１の内容のうち、タスク＃１に対応する優先度「１」を、タスク＃１自身が特定タスクテーブル１１０に設定した低優先度「３」で書き換える。
【００６８】
タスクスケジューリング装置５１Ｂが以上の構成を採ることにより、タスクスケジューリング装置５１と同様のタスクスケジューリングが実現される。すなわち、タスク選択部１０１は、本実施の形態に特徴的なタイムスケジューリングと、優先度の初期値に基づく通常のタイムスケジューリングとを、タスク１０の必要に応じて適時に実現する。
【００６９】
（実施の形態２）
図１１は、本発明の実施の形態２によるタスクスケジューリング装置の構成を示すブロック図である。このタスクスケジューリング装置５２は、計算機装置（コンピュータ）の一部を構成している。実施の形態１と同様に、計算機装置は少なくとも１つの中央演算装置（ＣＰＵ）１、メモリ装置２、及びタイマー回路３を備えている。また、図示しないが、計算機装置は入力装置、出力装置のような他の機器を備えていてもよい。更に、プログラム及びデータの供給経路に関して、実施の形態１によるタスクスケジューリング装置５１と同様の構成を採ることができる。図１１では、当該供給経路の図示を略している。
【００７０】
タスクスケジューリング装置５２は、特定タスクに対して周期Ｔ毎に、一定の時間ＴＨの経過を条件とするのではなく、所定量の処理が終了することを条件として、高優先度から低優先度への切替を行う点において、タスクスケジューリング装置５１とは異なっている。それにより、特定タスクの必要量の処理がより精度良く確保される。この目的のために、タスクスケジューリング装置５２では、メモリ装置２に処理量判別部１２０が書き込まれている。それに伴って、タスクスケジューリング装置５１における特定タスクテーブル１１０は特定タスクテーブル１１０Ａに置き換えられ、タイマー部１０４はタイマー部１０４Ｂに置き換えられている。図１１の例では、処理量判別部１２０は特定タスクとなるべきタスク＃１内に設けられているが、後述のようにＯＳ内に設けられても良い。
【００７１】
処理量判別部１２０は、本実施の形態に特徴的なタスクスケジューリングの対象である特定タスク（タスク＃１とする）の処理量が予め定められた量に達したか否かを判別する。例えば、タスク＃１が映像のストリーミングデータを扱うタスクであれば、タスク＃１が処理したデータ量が映像１フレームの量に達したかどうかの判定を行う。処理量判別部１２０は、タスク＃１の処理量が予め定められた量に達すると、周期的低優先度設定部１０３へ通知を行う。周期的低優先度設定部１０３は、処理量判別部１２０から通知を受けると、周期的高優先度設定部１０２によってタスク優先度テーブル１１１に記録されているタスク＃１の高優先度を、特定タスクテーブル１１０Ａに記録されている低優先度へ低く設定する。タスクスケジューリング装置５１Ｂは一定の時間ＴＨに基づく制御を行わないので、特定タスクとなるべきタスク＃１は、特定タスクテーブル１１０Ａに時間ＴＨを記録する必要はない。
【００７２】
図１２は、タスクスケジューリング装置５２のうち、特定タスクの優先度を高優先度から低優先度へ変更する処理に関わる部分の構成を例示するブロック図である。処理量判別部１２０は、処理量リセット部１２１及び処理量比較部１２２を有している。また、タスク＃１は、変数１２５と、定数としての規定値１２７とを有している。タイマー部１０４Ｂは、タイマ部１０４と同様に、例えば周期Ｔよりも十分に短い（例えば、１００分の１の）周期Ｔ０で割り込み処理を実行する割り込みハンドラとして実現される。タイマー部１０４Ｂは、タイマ部１０４と同様にカウンタを有しており、周期Ｔ毎にタスク＃１内の処理量リセット部１２１へシグナルを送る。処理量リセット部１２１は、タスク＃１の処理に伴って数値が変化する変数１２５を、シグナルに応答してリセットする。変数１２５は、例えばタスク＃１が映像データ等を出力するループを反復して実行する毎に、インクリメントされる変数である。例えば、１ループの処理が行われる毎に１ＫＢのデータの出力処理が行われると、変数１２５は、１ＫＢに対応する数値（例えば１、１０００、１０２４、或いは８１９２など）だけインクリメントされる。また、変数１２５は、リセットによって例えば０に戻される。
【００７３】
処理量比較部１２２は、周期的に変数１２５と規定値１２７とを比較する。処理量比較部１２２は、例えばタスク＃１がループを反復する毎に比較を行う。変数１２５が規定値１２７以上になれば、処理量比較部１２２は周期的低優先度設定部１０３へ優先度の変更を指示する。規定値１２７は、周期Ｔ毎にタスク＃１が処理すべき規定の処理量に対応する値に予め設定されている。
【００７４】
図１３は、本実施の形態に特徴的なタスクスケジューリングが行われるときの主要な処理の流れを示すフローチャートである。図２と同様に、特定タスクテーブル１１０にはタスク＃１を特定タスクとして、特定タスク標識等のパラメータが記録されているものとする。図１３において、図２の処理と同様の処理には同一の符号を付している。
【００７５】
ステップＳ１において、タイマー部１０４Ｂは周期的高優先度設定部１０２を起動する。それにより周期的高優先度設定部１０２が処理を開始する。ステップＳ１の処理は、周期Ｔ毎に行われる。次に、ステップＳ２において、周期的高優先度設定部１０２は、特定タスクテーブル１１０を参照し、タスク優先度テーブル１１１に記録されている特定タスク（タスク＃１）の優先度を、特定タスクテーブル１１０に記録される高優先度で書き換える。
【００７６】
続いてステップＳ３において、タスク選択部１０１は、タスク優先度テーブル１１１に従ってタスク１０のスケジューリングを行う。ステップＳ２でタスク＃１の優先度は十分高く設定されているので、通常ここではタスク＃１が、実行すべきタスクとして選択される。ステップＳ４において、ＣＰＵ１はタスク選択部１０１が選択したタスクを実行する。
【００７７】
続くステップＳ１５では、処理量判別部１２０はタスク＃１の処理量が規定量に達したか否かを判定する。処理量が規定量に達するまでは、ステップＳ３で選択されたタスク（タスク＃１）の実行、即ちステップＳ４の処理が続けられる。処理量が規定量に達すると、ステップＳ６において、周期的低優先度設定部１０３が処理量判別部１２０からの指示によって起動され、タスク＃１の優先度を低く設定する。即ち、周期的低優先度設定部１０３は、タスク優先度テーブル１１１の内容のうち、特定タスク（タスク＃１）に対応する優先度（高優先度が書き込まれている）を、特定タスクテーブル１１０に記録される低優先度で書き換える。
【００７８】
ステップＳ７では、タスク選択部１０１は、再びタスク１０のスケジューリングを行う。タスク＃１の優先度はステップＳ６で低く設定されているので、他に優先度の高いタスクが存在すれば、タスク選択部１０１はそのタスクを選択する。一方、他に優先度の高いタスクがなければ、タスク選択部１０１は、タスク＃１を継続して選択する。次に、ステップＳ８において、ＣＰＵ１は、タスク選択部１０１が選択したタスクを実行する。以上のように、特定タスクテーブル１１０Ａに特定タスクに関するパラメータが記録されているときには、ステップＳ１〜Ｓ４、Ｓ１５、Ｓ６〜Ｓ８の処理が、周期Ｔ毎に反復される。
【００７９】
図１４は、本実施の形態における処理の一例を説明するタイミングチャートである。図１４の例では、タスク１０としてタスク＃１とタスク＃２との２つがメモリ装置２に存在するものとしている。また、特定タスクテーブル１１０Ａの内容及びタスク優先度テーブル１１１の初期の内容は、図１１に例示したとおりであるとする。したがってタスク＃１は、本実施の形態に特徴的なスケジューリングを適用する特定タスクである。タスク優先度テーブル１１１に記録されるタスク＃１の優先度は変動するが、時刻０においては低優先度に対応する優先度「３」に設定されているものとする。タスク＃２は通常のタスク、すなわち特定タスクでないタスクであり、タスク優先度テーブル１１１に記録される優先度は２に固定されている。なお、図３と同様に、太実線は、対応するタスクがＣＰＵ１を確保することにより実行されている状態であることを示している。また、白抜き太線は、ＯＳ１００Ｃの処理がＣＰＵ１により実行されていることを示している。
【００８０】
時刻０において優先度の高いタスク＃２が実行されているが、時刻ｔ１１から図１３のステップＳ１、Ｓ２、Ｓ３が実行され、タスク＃１の高優先度への変更とタスク１０のスケジューリングとが行われる。その結果、優先度「１」のタスク＃１が選択され、時刻ｔ１２よりタスク＃１が実行される（ステップＳ４及びＳ５）。時刻ｔ１１より時間ＴＨ１後の時刻ｔ１３にタスク＃１の処理量が規定量に達すると、図１３のステップＳ６が実行されることにより、タスク＃１の優先度は３に変更される。その後、タスク１０のスケジューリングが行われる（ステップＳ７）。その結果、時刻ｔ１４より優先度「２」のタスク＃２が実行される（ステップＳ８）。
【００８１】
時刻ｔ１５にタスク＃２が全ての処理を終了した場合には、タスク選択部１０１によるタスク１０のスケジューリング、即ちステップＳＳ２又はＳ７と同様の処理が改めて行われる。その結果、この時点で優先度の最も高いタスク＃１が選択される。それにより、時刻ｔ１６よりｔ１７までの期間ではタスク＃１が実行される。
【００８２】
時刻ｔ１７より再びステップＳ１、Ｓ２、Ｓ３が実行され、時刻ｔ１８より優先度「１」に設定されたタスク＃１が実行される。図１４の例では、時刻ｔ１９に割り込みが発生し、その結果ＯＳ１００Ｃ内の割り込みハンドラが実行される。割り込みハンドラによる処理が終了した後の時刻ｔ２０にタスク＃１の実行が再開される。時刻ｔ１７より時間ＴＨ２後の時刻ｔ２１に処理量が規定量に達することにより、タスク＃１の優先度が３に設定される。
【００８３】
時間ＴＨ２は、時刻ｔ１９からｔ２０の間の割り込みハンドラの実行時間を含んでいる。その為、タスク＃１の処理量は同じであっても、時間ＴＨ１に比べると時間ＴＨ２は長くなっている。この様に、本実施の形態ではタスク＃１が高優先度に設定されている時間は不定である。図１４の例では、時刻ｔ１１からｔ１３まで、及び時刻ｔ１７からｔ２１までの期間、すなわちタスク＃１の処理量が規定量に達するまでの期間において、タスク＃１の優先度は高く設定されており、この期間にわたってタスク＃１の実行が保証されている。また、時刻ｔ１３からｔ１７までの期間において、実施の形態１と同様に他に優先すべきタスクが存在するなら当該タスクが実行され、存在しなければタスク＃１が実行されている。
【００８４】
以上のように、本実施の形態のタスクスケジューリング装置５２によれば、決まった周期Ｔ毎に特定のタスクの一定量の処理を保証しつつ、残りの時間も他に処理すべきタスクが無い場合にはその特定タスクの処理を続けることが可能となり、ＣＰＵ１のリソースを有効に利用することができる。
【００８５】
（実施の形態２の様々な変形形態）
特定タスクの優先度を高優先度から低優先度へ変更する処理に関わる部分の構成として、図１２に例示した形態以外に、図１５〜図１８に例示する様々な形態を採ることができる。図１５に示すタスクスケジューリング装置５２Ａでは、処理量判別部１２０ＡはＯＳ１００Ｄとタスク＃１との双方に跨っている。処理量リセット部１２１ＡはＯＳ１００Ｄに設けられ、処理量比較部１２２はタスク＃１に設けられている。タイマー部１０４Ｃは、タイマ部１０４と同様に、例えば周期Ｔ０毎に割り込み処理を実行する割り込みハンドラとして実現される。タイマー部１０４Ｃは、周期Ｔ毎にＯＳ１００Ｄ内の処理量リセット部１２１Ａを起動する。或いは、処理量リセット部１２１Ａ自体が、周期Ｔ毎に割り込み処理を実行する割り込みハンドラとして実現されてもよい。
【００８６】
起動された処理量リセット部１２１Ａは、タスク＃１の処理に伴って数値が変化する変数１２５をリセットする。処理量比較部１２２は、周期的に変数１２５と規定値１２７とを比較する。変数１２５が規定値１２７以上になれば、処理量比較部１２２は周期的低優先度設定部１０３へ優先度の変更を指示する。
【００８７】
図１５の形態では、処理量比較部１２２はタスク＃１内に設けられたが、図１６に示すタスクスケジューリング装置５２Ｂのように、処理量比較部１２２ＡをＯＳ１００Ｅの中に設けてもよい。すなわち、処理量判別部１２０ＢをＯＳ１００Ｅ内に設けることも可能である。タイマ部１０４Ｄは、タイマ部１０４と同様に、例えば周期Ｔ０毎に割り込み処理を実行する割り込みハンドラとして実現される。タイマー部１０４Ｄは、タイマー部１０４と同様にカウンタを有することにより、周期Ｔ毎にＯＳ１００Ｄ内の処理量リセット部１２１Ａを起動するとともに、ある周期Ｔ１毎に処理量比較部１２２Ａを起動する。周期Ｔ１は、周期Ｔ０の整数倍であり、且つ周期Ｔよりも十分に短い周期である。周期Ｔ１は周期Ｔ０と同一であっても良い。タイマー部１０４Ｄは、タイマー部１０４と同様に、周期Ｔ０ごとに時間をカウントアップするカウンタを有する。
【００８８】
起動された処理量リセット部１２１Ａは、タスク＃１の処理に伴って数値が変化する変数１２５をリセットする。起動された処理量比較部１２２Ａは、変数１２５と規定値１２７とを比較する。変数１２５が規定値１２７以上になれば、処理量比較部１２２Ａは周期的低優先度設定部１０３へ優先度の変更を指示する。タイマー部１０４Ｄにより起動される形態に代えて、処理量リセット部１２１Ａ及び処理量比較部１２２Ａ自体が、それぞれ周期Ｔ及び周期Ｔ１毎に割り込み処理を実行する割り込みハンドラとして実現されてもよい。
【００８９】
図１７に示すタスクスケジューリング装置５２Ｃでは、ＯＳ１００Ｆ内に設けられる処理量判別部１２０Ｃは、処理量を計るためにタスク＃１内の変数を参照するのではなく、バッファ１３１に書き込まれたデータ量を参照する。そのために、バッファ管理部１３０は、バッファ１３１にデータが新たに書き込まれる毎に、書き込まれたデータ量に対応した値だけ変数１３２をインクリメントする。また、処理量判別部１２０Ｃは、処理量リセット部１２１Ａと処理量比較部１２２Ａとを有している。タイマ部１０４Ｅは、タイマ部１０４Ｄと同様に、例えば周期Ｔ０毎に割り込み処理を実行する割り込みハンドラとして実現される。
【００９０】
タイマー部１０４Ｅは、周期Ｔ毎に処理量リセット部１２０Ａを起動する。また、タイマー部１０４Ｅは、周期Ｔ１毎に処理量比較部１２２Ａを起動する。起動された処理量リセット部１２１Ａは、変数１３２をリセットする。また、起動された処理量比較部１２２Ａは、変数１３２を規定値１２７と比較し、変数１３２が規定値１２７に達しておれば周期的低優先度設定部１０３へ優先度の変更を指示する。
【００９１】
タイマー部１０４Ｅにより起動される形態に代えて、処理量リセット部１２１Ａ及び処理量比較部１２２Ａ自体が、それぞれ周期Ｔ及び周期Ｔ１毎に割り込み処理を実行する割り込みハンドラとして実現されてもよい。さらに別の形態として、タスク＃１からバッファ１３１へのデータの新たな書き込みが発生する毎に、バッファ管理部１３０が処理量比較部１２２Ａを起動してもよい。
【００９２】
図１８に示すタスクスケジューリング装置５２Ｄでは、周期的高優先度設定部１０２Ａがタスク＃１内に設けられている点において、図１２のタスクスケジューリング装置５２とは異なっている。図１８の周期的高優先度設定部１０２Ａは、図１０の周期的高優先度設定部１０２Ａと同様に、ＯＳ１００Ｆからタスク＃１へ送られるシグナルに応答して処理を実行するシグナルハンドラとして実現されている。
【００９３】
タイマー部１０４Ｆは、タイマー部１０４Ｂ（図１２）と同様に、例えば周期Ｔ０で割り込み処理を実行する割り込みハンドラとして実現される。タイマー部１０４Ｆは、タイマー部１０４Ｂと同様にカウンタを有しており、計数値が周期Ｔに達する毎に、周期的高優先度設定部１０２Ａへシグナルを送ることにより周期的高優先度設定部１０２Ａを起動する。起動された周期的高優先度設定部１０２Ａは、タスク優先度テーブル１１１の内容のうち、タスク＃１に対応する優先度を、タスク＃１自身が特定タスクテーブル１１０Ａに設定した高優先度で書き換える。さらに、タイマー部１０４Ｆは、タイマー部１０４Ｂ（図１２）と同様に、周期Ｔ毎にタスク＃１内の処理量リセット部１２１へシグナルを送り、処理量リセット部１２１を起動する。
【００９４】
なお、図１８のタスクスケジューリング装置５２Ｄでは、周期的低優先度設定部１０３はＯＳ１００Ｆ内に設けられたが、図１０のタスクスケジューリング装置５１Ｂと同様に、周期的低優先度設定部１０３Ａとしてタスク＃１内に設けることも可能である。
【００９５】
（実施の形態の概要）
本発明の実施の形態の概要を以下に記載する。
【００９６】
（１）  あるタスクスケジューリング装置は、複数のタスクのスケジューリングを行うことによりマルチタスク処理を実現するタスクスケジューリング装置であって、前記複数のタスクのうち優先度が最も高いものを実行対象として選択するタスク選択部と、所定の周期Ｔ毎に前記複数のタスクのうちの特定のタスクの優先度を所定の第１優先度に設定する周期的高優先度設定部と、前記周期的高優先度設定部が前記特定のタスクの優先度を前記第１優先度に設定してから前記周期Ｔが経過する前に、前記特定のタスクの優先度を前記第１優先度よりも低い第２優先度に設定する周期的低優先度設定部とを備えるものである。
【００９７】
この構成によれば、特定のタスクについて周期Ｔ毎に優先度が第１優先度に設定され、それ以後周期Ｔが経過する前に、特定のタスクについて優先度が第２優先度に低く設定される。従って、特定のタスクについて周期Ｔ毎に、相対的に高い優先度に設定される期間と相対的に低い優先度に設定される期間とが与えられる。このため、タスク選択部は、特定のタスクについて周期Ｔごとに、ある期間にわたって相対的に高い優先度で特定のタスクを扱うとともに、残る期間にわたって相対的に低い優先度で特定のタスクを扱う。したがって、第１優先度を十分に高い優先度に設定することにより、周期Ｔ毎にある期間にわたって特定のタスクの処理を保証しつつ、残る時間にも他に処理すべきタスクがなければ特定タスクの実行を継続することが可能となる。すなわち、この構成は、優先的に処理すべきタスクと、より優先度の低いタスクとのバランスを図った処理を実現すると同時に、ＣＰＵ資源を有効に利用することを可能にする。
【００９８】
（２）  あるタスクスケジューリング装置は、タスクスケジューリング装置（１）であって、前記周期的低優先度設定部は、前記周期的高優先度設定部が前記特定のタスクの優先度を前記第１優先度に設定してから前記周期Ｔよりも短い所定の時間ＴＨが経過したときに、前記特定のタスクの優先度を前記第２優先度に設定するものである。
【００９９】
この構成によれば、特定のタスクの優先度が第１優先度に設定されてから、周期Ｔより短い所定の時間ＴＨが経過したときに、周期的低優先度設定部が特定のタスクの優先度を第２優先度に設定するので、簡素な構成で特定タスクの優先度の切替えを行うことができる。
【０１００】
（３）  あるタスクスケジューリング装置は、タスクスケジューリング装置（１）であって、前記周期的高優先度設定部が前記特定のタスクの優先度を前記第１優先度に設定してから、前記特定のタスクの処理量が所定の規定量に達したか否かを判別する処理量判別部を更に備え、前記周期的低優先度設定部は、前記処理量が前記規定量に達したものと前記処理量判別部が判別したときに、前記特定のタスクの優先度を前記第２優先度に設定するものである。
【０１０１】
この構成によれば、処理量判別部が特定のタスクの処理量が所定の規定量に達したものと判別したときに、周期的低優先度設定部が特定のタスクの優先度を第２優先度に設定するので、第１優先度を十分に高い優先度に設定した場合に、特定タスクの必要量の処理をより精度良く確保することができる。
【０１０２】
（４）  あるタスクスケジューリング装置は、タスクスケジューリング装置（３）であって、前記処理量判別部は、前記特定のタスクの実行にともなって値が変化する変数と所定の規定値とを比較することにより前記処理量が前記規定量に達したか否かを判別する処理量比較部を備えるものである。
【０１０３】
この構成によれば、処理量判別部が、特定のタスクの実行にともなって値が変化する変数と所定の規定値とを比較することにより処理量が規定量に達したか否かを判別するので、処理量判別部を簡素に構成することができる。
【０１０４】
（５）  あるタスクスケジューリング装置は、タスクスケジューリング装置（３）であって、前記特定のタスクが出力するデータを一時保持するバッファを更に備え、前記処理量判別部は、前記特定のタスクの実行にともなって前記バッファに書き込まれるデータ量と所定の規定値とを比較することにより前記処理量が前記規定量に達したか否かを判別する処理量比較部を備えるものである。
【０１０５】
この構成によれば、処理量判別部は、特定のタスクの実行にともなってバッファに書き込まれるデータ量と所定の規定値とを比較することにより処理量が規定量に達したか否かを判別するので、特定のタスクがデータを出力する処理を行うタスクである場合に、処理量が規定量に達したか否かの判別を精度良く、かつ容易に行うことができる。
【０１０６】
（６）  あるタスクスケジューリング装置は、タスクスケジューリング装置（１）ないし（５）の何れかであって、前記複数のタスクの各々とその優先度とを対応付けて記録するためのタスク優先度テーブルを更に備え、前記周期的高優先度設定部は、前記タスク優先度テーブルに前記特定のタスクに対応する優先度として前記第１優先度を書き込むことにより、前記特定のタスクの優先度を前記第１優先度に設定し、前記周期的低優先度設定部は、前記タスク優先度テーブルに前記特定のタスクに対応する優先度として前記第２優先度を書き込むことにより、前記特定のタスクの優先度を前記第２優先度に設定し、前記タスク選択部は前記タスク優先度テーブルを参照し、前記タスク優先度テーブルに記録された複数の優先度のうちの最も高い優先度に対応するタスクを前記実行対象として選択するものである。
【０１０７】
この構成によれば、周期的高優先度設定部及び周期的低優先度設定部は、タスク優先度テーブルに優先度を書き込むことにより優先度を設定し、タスク選択部はタスク優先度テーブルに記録されている優先度に従ってタスクの選択を行うので、実施の形態に特徴的なタスクスケジューリングを簡素な構成で実現することができる。
【０１０８】
（７）  あるタスクスケジューリング装置は、タスクスケジューリング装置（６）であって、前記特定のタスクと前記第１優先度と前記第２優先度とを対応付けて記録するための特定タスクテーブルを更に備え、前記周期的高優先度設定部は、前記特定タスクテーブルを参照し、前記特定のタスクに関する情報が記録されておれば、記録されている前記第１優先度を読み出し、前記タスク優先度テーブルに前記特定のタスクに対応する優先度として、読み出した前記第１優先度を書き込み、前記周期的低優先度設定部は、前記特定タスクテーブルを参照し、前記特定のタスクに関する情報が記録されておれば、記録されている前記第２優先度を読み出し、前記タスク優先度テーブルに前記特定のタスクに対応する優先度として、読み出した前記第２優先度を書き込むものである。
【０１０９】
この構成によれば、周期的高優先度設定部及び周期的低優先度設定部は、特定タスクテーブルを参照し、記録されている優先度をタスク優先度テーブルへ書き込むことにより、優先度を設定するので、特定のタスクの優先度の設定をより簡素な構成で実現することができる。更に、特定タスクテーブルに特定タスクに関する情報を記録したり削除したりすることにより、必要に応じて実施の形態に特徴的なタスクスケジューリングの実行及び停止を制御することが可能となる。
【０１１０】
（８）  あるタスクスケジューリング装置は、タスクスケジューリング装置（７）であって、前記特定のタスクは、前記特定タスクテーブルの記録内容を書き込み及び削除するものである。
【０１１１】
この構成によれば、特定のタスクが、特定タスクテーブルの記録内容を書き込み及び削除するので、特定のタスクの側から実施の形態に特徴的なタスクスケジューリングの実行及び停止を制御することが可能となる。
【０１１２】
（９）  あるタスクスケジューリング装置は、タスクスケジューリング装置（１）ないし（８）の何れかであって、前記周期的高優先度設定部と前記周期的低優先度設定部とのうち少なくとも一方の設定部が、オペレーティングシステムの機能として実現されているものである。
【０１１３】
この構成によれば、周期的高優先度設定部と周期的低優先度設定部とのうち少なくとも一方の設定部が、オペレーティングシステムの機能として実現されているので、当該少なくとも一方の設定部をタスク側において設ける必要がない。すなわち、幅広いタスクを実施の形態に特徴的なタスクスケジューリングの対象とすることができる。
【０１１４】
（１０）  あるタスクスケジューリング装置は、タスクスケジューリング装置（９）であって、前記少なくとも一方の設定部が、割り込みハンドラとして実現されているものである。
【０１１５】
この構成によれば、少なくとも一方の設定部が割り込みハンドラとして実現されているので、当該少なくとも一方の設定部が周期的に動作する構成を簡素に実現することができる。
【０１１６】
（１１）  あるタスクスケジューリング装置は、タスクスケジューリング装置（１）ないし（８）の何れかであって、前記周期的高優先度設定部と前記周期的低優先度設定部とのうち少なくとも一方の設定部が、前記特定のタスクの機能として実現されているものである。
【０１１７】
この構成によれば、少なくとも一方の設定部が、前記特定のタスクの機能として実現されているので、オペレーティングシステムが当該設定部を提供していなくとも、実施の形態に特徴的なタスクスケジューリングを実現することができる。
【０１１８】
（１２）  あるタスクスケジューリング装置は、タスクスケジューリング装置（１１）であって、前記少なくとも一方の設定部が、シグナルハンドラとして実現されているものである。
【０１１９】
この構成によれば、少なくとも一方の設定部が、シグナルハンドラとして実現されているので、当該少なくとも一方の設定部が周期的に動作する構成を簡素に実現することができる。
【０１２０】
（１３）  あるタスクスケジューリング方法は、複数のタスクのスケジューリングを行うことによりマルチタスク処理を実現するタスクスケジューリング方法であって、前記複数のタスクのうち優先度が最も高いものを実行対象として選択するタスク選択工程と、所定の周期Ｔ毎に前記複数のタスクのうちの特定のタスクの優先度を所定の第１優先度に設定する周期的高優先度設定工程と、前記周期的高優先度設定部が前記特定のタスクの優先度を前記第１優先度に設定してから前記周期Ｔが経過する前に、前記特定のタスクの優先度を前記第１優先度よりも低い第２優先度に設定する周期的低優先度設定工程とを備えるものである。
【０１２１】
この構成は、装置（１）について述べたと同様の理由により、優先的に処理すべきタスクと、より優先度の低いタスクとのバランスを図った処理を実現すると同時に、ＣＰＵ資源を有効に利用することを可能にする。
【０１２２】
（１４）  あるタスクスケジューリングプログラムは、複数のタスクのスケジューリングを行うことによりマルチタスク処理を実現するタスクスケジューリング装置としてコンピュータを機能させるタスクスケジューリングプログラムであって、前記複数のタスクのうち優先度が最も高いものを実行対象として選択するタスク選択手段と、所定の周期Ｔ毎に前記複数のタスクのうちの特定のタスクの優先度を所定の第１優先度に設定する周期的高優先度設定手段と、前記周期的高優先度設定部が前記特定のタスクの優先度を前記第１優先度に設定してから前記周期Ｔが経過する前に、前記特定のタスクの優先度を前記第１優先度よりも低い第２優先度に設定する周期的低優先度設定手段として前記コンピュータを機能させるものである。
【０１２３】
この構成は、装置（１）について述べたと同様の理由により、優先的に処理すべきタスクと、より優先度の低いタスクとのバランスを図った処理を実現すると同時に、ＣＰＵ資源を有効に利用することを可能にする。
【０１２４】
（１５）  ある記録媒体は、複数のタスクのスケジューリングを行うことによりマルチタスク処理を実現するタスクスケジューリング装置としてコンピュータを機能させるタスクスケジューリングプログラムを記録したコンピュータ読み取り可能な記録媒体であって、前記複数のタスクのうち優先度が最も高いものを実行対象として選択するタスク選択手段と、所定の周期Ｔ毎に前記複数のタスクのうちの特定のタスクの優先度を所定の第１優先度に設定する周期的高優先度設定手段と、前記周期的高優先度設定部が前記特定のタスクの優先度を前記第１優先度に設定してから前記周期Ｔが経過する前に、前記特定のタスクの優先度を前記第１優先度よりも低い第２優先度に設定する周期的低優先度設定手段として前記コンピュータを機能させるタスクスケジューリングプログラムを記録したものである。
【０１２５】
この構成は、装置（１）について述べたと同様の理由により、優先的に処理すべきタスクと、より優先度の低いタスクとのバランスを図った処理を実現すると同時に、ＣＰＵ資源を有効に利用することを可能にする。
【０１２６】
（１６）  ある伝送媒体は、複数のタスクのスケジューリングを行うことによりマルチタスク処理を実現するタスクスケジューリング装置としてコンピュータを機能させるタスクスケジューリングプログラムを保持する伝送媒体であって、前記複数のタスクのうち優先度が最も高いものを実行対象として選択するタスク選択手段と、所定の周期Ｔ毎に前記複数のタスクのうちの特定のタスクの優先度を所定の第１優先度に設定する周期的高優先度設定手段と、前記周期的高優先度設定部が前記特定のタスクの優先度を前記第１優先度に設定してから前記周期Ｔが経過する前に、前記特定のタスクの優先度を前記第１優先度よりも低い第２優先度に設定する周期的低優先度設定手段として前記コンピュータを機能させるタスクスケジューリングプログラムを保持するものである。
【０１２７】
この構成は、装置（１）について述べたと同様の理由により、優先的に処理すべきタスクと、より優先度の低いタスクとのバランスを図った処理を実現すると同時に、ＣＰＵ資源を有効に利用することを可能にする。
【０１２８】
本願は、日本国特許出願である特願２００３−４０５３７６号（２００３年１２月４日出願）を基礎としている。本基礎出願の内容は本願に合体される。
【０１２９】
本発明は詳細に説明されたが、上記した説明は、全ての局面において例示であって、本発明がそれに限定されるものではない。例示されていない無数の変形例が、この発明の範囲から外れることなく想定され得るものと解される。
【産業上の利用可能性】
【０１３０】
本発明のタスクスケジューリング装置、タスクスケジューリング方法、タスクスケジューリングプログラム、記録媒体、及び伝送媒体は、優先的に処理すべきタスクと、より優先度の低いタスクとのバランスを図った処理を実現すると同時に、ＣＰＵ資源を有効に利用することを可能にするので、産業上有用である。
【図面の簡単な説明】
【０１３１】
【図１】本発明の実施の形態１によるタスクスケジューリング装置の構成を示すブロック図である。
【図２】図１の装置による主要な処理の流れを示すフローチャートである。
【図３】図１の装置による処理の一例を説明するタイミングチャートである。
【図４】図１の装置の更に具体的な形態を例示するブロック図である。
【図５】図４の装置による処理を説明するタイミングチャートである。
【図６】図４の装置による処理を説明するタイミングチャートである。
【図７】図５及び図６の比較例を示すタイミングチャートである。
【図８】図５及び図６の比較例を示すタイミングチャートである。
【図９】図５及び図６の比較例を示すタイミングチャートである。
【図１０】図１の装置の変形形態を例示するブロック図である。
【図１１】本発明の実施の形態２によるタスクスケジューリング装置の構成を示すブロック図である。
【図１２】図１１の装置のうち、特定タスクの優先度を高優先度から低優先度へ変更する処理に関わる部分の構成を例示するブロック図である。
【図１３】図１１の装置による主要な処理の流れを示すフローチャートである。
【図１４】図１１の装置による処理の一例を説明するタイミングチャートである。
【図１５】図１１の装置の変形形態を例示するブロック図である。
【図１６】図１１の装置の変形形態を例示するブロック図である。
【図１７】図１１の装置の変形形態を例示するブロック図である。
【図１８】図１１の装置の変形形態を例示するブロック図である。
【図１】
2007519060.tif 000003
【図２】
2007519060.tif 000004
【図３】
2007519060.tif 000005
【図４】
2007519060.tif 000006
【図５】
2007519060.tif 000007
【図６】
2007519060.tif 000008
【図７】
2007519060.tif 000009
【図８】
2007519060.tif 000010
【図９】
2007519060.tif 000011
【図１０】
2007519060.tif 000012
【図１１】
2007519060.tif 000013
【図１２】
2007519060.tif 000014
【図１３】
2007519060.tif 000015
【図１４】
2007519060.tif 000016
【図１５】
2007519060.tif 000017
【図１６】
2007519060.tif 000018
【図１７】
2007519060.tif 000019
【図１８】
2007519060.tif 000020
【国際調査報告】
2007519060.tif 000021
2007519060.tif 000022
2007519060.tif 000023