JP2004070579A - タスクスケジューリング装置、タスクスケジューリング方法、プログラム - Google Patents
タスクスケジューリング装置、タスクスケジューリング方法、プログラム Download PDFInfo
- Publication number
- JP2004070579A JP2004070579A JP2002227433A JP2002227433A JP2004070579A JP 2004070579 A JP2004070579 A JP 2004070579A JP 2002227433 A JP2002227433 A JP 2002227433A JP 2002227433 A JP2002227433 A JP 2002227433A JP 2004070579 A JP2004070579 A JP 2004070579A
- Authority
- JP
- Japan
- Prior art keywords
- task
- time
- time limit
- scheduling
- limit
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Abstract
【課題】処理量を抑えることができるタスクスケジューリング装置等を提供する。
【解決手段】タスク起動要求時に、その時点のタイマ機構90のカウントするシステム時間と、制限時間初期値テーブル60に記憶された余裕時間の初期値とを加算して、制限時間テーブル20へ記憶する。デッドライン違反検知機構200は、デッドラインまでの余裕時間を「制限時間テーブル20に記憶された各タスクの制限時間−システム時間」として求め、それぞれのタスクについてこの余裕時間が0以上か否かに基づきデッドライン違反を判定する。そして時限優先スケジューリング機構100は、制限時間テーブル20に登録されている各タスクの制限時間を比較し、最も制限時間の小さいタスクを最優先の実行優先度として、そのタスクを次の実行タスクとする。
【選択図】図1
【解決手段】タスク起動要求時に、その時点のタイマ機構90のカウントするシステム時間と、制限時間初期値テーブル60に記憶された余裕時間の初期値とを加算して、制限時間テーブル20へ記憶する。デッドライン違反検知機構200は、デッドラインまでの余裕時間を「制限時間テーブル20に記憶された各タスクの制限時間−システム時間」として求め、それぞれのタスクについてこの余裕時間が0以上か否かに基づきデッドライン違反を判定する。そして時限優先スケジューリング機構100は、制限時間テーブル20に登録されている各タスクの制限時間を比較し、最も制限時間の小さいタスクを最優先の実行優先度として、そのタスクを次の実行タスクとする。
【選択図】図1
Description
【0001】
【発明の属する技術分野】
マルチタスク処理等を実現するためのタスクスケジューリング装置およびタスクスケジューリング方法等に関する。
【0002】
【従来の技術】
マルチタスク処理を実現するためのプログラムのスケジューリング方法として、時限優先スケジューリング(EDF(Earliest Deadline First)スケジューリング)が知られている。このスケジューリング方法は、実行可能なタスクのうちデッドラインまでの余裕時間が最も少ないタスクを実行タスクとして決定する方法である。
【0003】
こうしたデッドラインまでの余裕時間は、例えば特開平9−319596号公報および特開2001−236236号公報に記載のように、初期値をテーブル等に静的に記憶しておき、この記憶された初期値を時間の経過に伴って減算していくことで求めている。
【0004】
こうした従来のタスクスケジューリング装置の例を図7に示して説明する。
図7に示すタスクスケジューリング装置は、タスク毎のデッドラインまでの余裕時間の初期値を制限時間初期値テーブル560に記憶している。そして、新たなタスクの起動要求が発生した場合、タスク登録機構550が、CPUからの起動要求があったタスクに対応する制限時間・状態記憶機構521,522,…に対して、そのタスクの状態を起動状態とし、制限時間初期値テーブル560から読み出したデッドラインまでの余裕時間の初期値をそのタスクの制限時間として設定した上で、時限優先スケジューリング機構600を起動する。
【0005】
そして、時間減算機構511,512,…は、制限時間・状態記憶機構521,522,…に設定された余裕時間を、例えばタスクの起動時や削除時のような所定の事象発生時に、タイマ機構90のカウント値に基づいて所定の間隔分ずつ、デクリメントする。例えば、時間減算機構511,512,…は、それぞれ図8に示すように、タスクの起動要求やタスクの削除要求など、制限時間の更新の要求があった場合(S11:YES)、制限時間テーブル520の制限時間・状態記憶機構521,522,…に登録されている各タスクの制限時間から、前回の制限時間の更新時のシステム時間から現在までのシステム時間の変化量(すなわち、前回の更新からの時間間隔)を差し引いて、新たな制限時間をそれぞれ求める(S12)。そして、この新たな制限時間をそれぞれ制限時間・状態記憶機構521,522,…へ登録する(S13)。なお、制限時間の値を無効に設定することが可能であり、制限時間が無効に設定されているタスクに関しては、この処理を行わない。
【0006】
また、時限優先スケジューリング機構600は、スケジューリング要求があった場合に、制限時間・状態記憶機構521、522、…の値をチェックして、起動状態にあるすべてのタスクの中でデッドラインまでの余裕時間(制限時間)が最も少ないタスクを次の実行タスクとするスケジューリング処理を行う。(この様子を図7では、タスクA610〜タスクD640,…で模式的に示している。例えばタスクA用制限時間・状態記憶機構521に記憶された余裕時間が制限時間テーブル520の制限時間・状態記憶機構521、522、…の中で最も小さい場合には、時限優先スケジューリング機構600は、タスクA610を、CPUが実行すべきタスクとして決定する。そして、CPUは、時限優先スケジューリング機構600によって決定されたタスクをディスパッチする。)
一方、CPUからタスクの終了要求が発生した場合、タスク削除機構570が、終了要求のあるタスクの制限時間・状態記憶機構521,522,…のデッドラインまでの余裕時間(制限時間)のデータを無効にし、タスクの状態を「終了」に更新した後、時限優先スケジューリング機構600を起動する。そして、時限優先スケジューリング機構600は、前述したスケジューリング処理を行う。
【0007】
こうした従来のタスクスケジューリング装置の動作の具体例を図9に示して説明する。図9は、タイマ機構90のカウントするシステム時間tの経過に伴って、各システム時間で発生したイベント(事象)の内容と、そのときの制限時間テーブル520の各タスクの制限時間のデータ(値)と、時限優先スケジューリング機構600が決定した実行優先度との関係を示す図である。この例は、タスクA〜Dの4つのタスクについてスケジューリングを行う例である。なお、実行優先度の値は、「1」が最も優先度が高く、「2」「3」と続く。そして、時限優先スケジューリング機構600は、実行優先度が最も高いタスク(すなわち実行優先度が「1」のタスク)をCPUが次に実行すべきタスクとして決定する。また、制限時間初期値テーブル560に記憶された各タスクの制限時間の初期値は、図4に示すように、タスクAについては30、タスクBは50、タスクCは25、タスクDは15とする。
【0008】
(1)図9のt=0の行に示すように、タスクスケジューリング装置の初期状態として、タイマ機構90のカウントするシステム時間tが0(t=0)の時、制限時間が存在し起動されているタスクは無いものとする。すなわち、制限時間・状態記憶機構521,522,523,524の制限時間の値は無効とする。図9では無効であることを斜線で示している。
【0009】
(2)図9のt=10の行に示すように、システム時間t=10で、タスクAの起動要求が発生すると、タスク登録機構550は、タスクA用制限時間・状態記憶機構521へ、制限時間初期値テーブル560に記憶されたタスクAの制限時間の初期値「30」を記憶し、タスクAの状態を起動状態として記憶する。なお、ここでは、前回更新時(t=0)からシステム時間が「10」経過しているものの、タスクB〜Dの制限時間の値は「無効」であるので、図8に示した制限時間の減算は行わず、値は「無効」のままとなる。そしてこの時点で制限時間の更新があったものとする。
【0010】
(3)図9のt=20の行に示すように、システム時間t=20で、タスクBの起動要求が発生すると、タスク登録機構550は、制限時間初期値テーブル560に記憶されたタスクBの制限時間の初期値「50」をタスクB用制限時間・状態記憶機構522の制限時間とし、タスクBの状態を起動状態として記憶する。また、時間減算機構511は、図8に示した処理によって、新たな制限時間を制限時間テーブル520へ登録(記憶)する。すなわち、タスクAの時間減算機構511は、前回更新時のシステム時間(t=10)と現在のシステム時間(t=20)との変化量(20−10=10)を、タスクA用制限時間・状態記憶機構521に記憶された値「30」から差し引いて、新たな制限時間「20」を求め、タスクA用制限時間・状態記憶機構521へ登録する。その結果、タスクAの制限時間が20,タスクBの制限時間が50となり、実行優先度が最も高いタスクは制限時間が最も小さいタスクAと決定される。
【0011】
(4)図9のt=30の行に示すように、システム時間t=30で、タスクCの起動要求が発生すると、タスク登録機構550は、制限時間初期値テーブル560に記憶されたタスクCの制限時間の初期値「25」をタスクC用制限時間・状態記憶機構523へ記憶し、時間減算機構511,512は、それぞれ、タスクA用制限時間・状態記憶機構521,タスクB用制限時間・状態記憶機構522に記憶された制限時間から、前回更新時からのシステム時間の変化量(30ー20=10)を差し引いて、新たな制限時間を求めて更新する。その結果、タスクAの制限時間が10,タスクBの制限時間が40,タスクCの制限時間が25となり、実行優先度が最も高いタスクはタスクAと決定される。
【0012】
(5)図9のt=35の行に示すように、システム時間t=35で、タスクAの終了要求が発生すると、タスク削除機構570は、タスクA用制限時間・状態記憶機構521の制限時間のデータを無効にし、タスクの状態を終了状態へ更新する。また、時間減算機構512,513は、それぞれ、タスクB用制限時間・状態記憶機構522,タスクC用制限時間・状態記憶機構523に記憶された制限時間から、前回更新時からのシステム時間の変化量(35ー30=5)を差し引いて、新たな制限時間を求めて更新する。その結果、タスクAの制限時間が無効,タスクBの制限時間が35,タスクCの制限時間が20となり、実行優先度が最も高いタスクはタスクCと決定される。
【0013】
(6)図9のt=50の行に示すように、システム時間t=50で、タスクDの起動要求が発生すると、タスク登録機構550は、制限時間初期値テーブル560に記憶されたタスクDの制限時間の初期値「15」をタスクD用制限時間・状態記憶機構524へ記憶し、時間減算機構512,513は、それぞれ、タスクB用制限時間・状態記憶機構522,タスクC用制限時間・状態記憶機構523に記憶された制限時間から、前回更新時からのシステム時間の変化量(50ー35=15)を差し引いて、新たな制限時間を求めて更新する。その結果、タスクBの制限時間が20,タスクCの制限時間が5となり、実行優先度が最も高いタスクはタスクCと決定される。
【0014】
(7)システム時間t=55では、図9のt=55の行に示すように、タスクC用制限時間・状態記憶機構523に記憶された制限時間が、0となりデッドラインに到達する。
(8)システム時間t=60で、タスクCの終了要求が発生すると、タスク削除機構570は、タスクC用制限時間・状態記憶機構523の制限時間のデータを無効にし、タスクの状態を「終了」に更新する。また、時間減算機構512,514は、それぞれ、タスクB用制限時間・状態記憶機構522,タスクD用制限時間・状態記憶機構524に記憶された制限時間から、前回更新時からのシステム時間の変化量(55−60=5)を差し引いて、新たな制限時間を求めて更新する。その結果、タスクAの制限時間が無効,タスクBの制限時間が10,タスクDの制限時間が5となり、実行優先度が最も高いタスクはタスクDと決定される。
【0015】
【発明が解決しようとする課題】
このように従来のスケジューリング装置では、各タスク毎にそれぞれデッドラインまでの余裕時間を管理している。そのため、前述したタスクの起動要求時・タスクの終了要求時・デッドライン到達時などのスケジューリングの必要な事象発生毎に、時間減算機構511,512,…が、前回の制限時間の更新時からの時間間隔分の値を、制限時間・状態記憶機構521,522,…に保持された値から減算して更新する必要がある。
【0016】
この更新の処理には「1タスクの制限時間・状態記憶機構の更新(設定されているデッドラインまでの余裕時間−所定の時間)×起動状態にあるタスク数」分の時間が必要であり、起動状態のタスクの数が増えるほどその処理時間が増加するという問題がある。
【0017】
また、タスク毎にデッドラインまでの余裕時間を管理しているため、少なくとも同時に起動状態になり得るタスク数分だけ時間減算機構511,512,…が必要であり、タスクの数が増えるほど処理量(例えば回路規模、プログラムによる処理量など)が増加してしまうという問題がある。
【0018】
そこで、本発明は、処理量を抑えることができるタスクスケジューリング装置等を提供することを目的とする。
【0019】
【課題を解決するための手段及び発明の効果】
上述した問題点を解決するためになされた請求項1に記載のタスクスケジューリング装置は、タスクの起動要求時に、予め設定されたそのタスクのデッドラインまでの余裕時間の初期値と時間の経過に伴いカウントされるシステム時間とを加算して制限時間として保持しておく。そして、このように保持されたタスク毎の制限時間に基づいてスケジューリングを行う。
【0020】
こうして、制限時間は、タスクの起動要求時のシステム時間を加算したものとして保持されるため、従来のように事象発生毎に制限時間保持手段に保持された制限時間を更新する必要がなくなる。そのため、従来のように制限時間を各タスク毎に減算するための時間減算機構を設ける必要がなくなる。よって、処理量の増加を抑えることができる。特にタスク数が増えるほど事象発生毎の処理量が増えるという問題を解決することが可能であり、事象発生毎の処理時間を一定にする事も容易にできる。
【0021】
したがって、例えばタスクスケジューリング装置をハードウェアで構成する場合には、回路規模の増加を防ぐことができ、必要な回路面積を低減できる。またタスクスケジューリング装置をソフトウェア(プログラム)とコンピュータ(処理装置)で構成する場合にも処理量を削減することができ、処理時間を短縮できる。
【0022】
こうしたスケジューリング手段によるスケジューリングの方法としては、例えば、請求項2に示すように、タスク毎の制限時間のうち、最も制限時間が小さいタスク(制限時間の厳しいタスク)から順に実行優先度の高いタスクとしたり、請求項3に示すように、タスク毎の制限時間のうち、制限時間の最も少ないタスクを次の実行タスクとしたり、請求項4に示すように、システム時間に最も近い制限時間を持つタスクを次の実行タスクとたりする方法をとることができる。また、請求項5に示すように、タスク毎にタスクの状態を保持しておき、このタスクの状態が、起動状態のタスクについてのみスケジューリングを行うようにしてもよい。例えば、いわゆる実行状態または実行可能状態のタスクを起動状態のタスクとすることができる。
【0023】
ところで、システム時間や制限時間の最大値は有限であり、これらの時間は、例えば所定のサイズの記憶領域に保持することとなる。そのためこのサイズを超えると値がオーバーフローしてしまう。そこで、請求項6に示すように、保持されたタスク毎の制限時間と、システム時間に対し、所定の時間を減算することで、時間の更正をおこなうとよい。このようにすれば、これらの時間の最大値を超える前に、所定の時間を減算することによって、オーバーフローを防ぐことができる。
【0024】
タスク毎の制限時間とシステム時間とは、異なる時点で更正するようにしてもよいが、請求項7に示すように、保持されたタスク毎の制限時間と、システム時間に対し、同時に時間の更正を行うとよい。このようにすれば、制限時間とシステム時間のずれを加味した処理等を行う必要がなくなって、処理が容易になり、例えば必要な回路規模や処理量などを減らすことが可能となる。
【0025】
また、減算する所定の時間は例えば適応的に変化させるなどしてもよいが、請求項8に示すように、予め定めた時間を減算するとよい。また、請求項9に示すように、システム時間に対する更正時間と、前記タスクの制限時間に対する更正時間とを同じ値とするとよい。このようにすれば、更正を容易に行うことができ、例えば必要な回路規模や処理量などを減らすことが可能となる。
【0026】
このような「減算する所定の時間」は、その値が大きければ大きいほど、次に更正するまでの時間間隔が長くなって更正の必要頻度を低くすることができ、更正のために費やす処理時間を減らすことができる。そこで、減算する所定の時間は、請求項10に示すように、システム時間と各タスクの制限時間との中で最小の値とするとよい。
【0027】
また、請求項11に示すように、保持されたタスク毎の制限時間とシステム時間とに基づいてデッドライン違反を検知する手段を備えるとよい。例えば請求項12に示すように、タスクの制限時間がシステム時間より小さくなった場合にデッドライン違反であると判定する。
【0028】
なお、請求項13は、請求項1のスケジューリング装置にて実現されるスケジューリング方法の請求項であり、このスケジューリング方法によれば、上述した請求項1の効果と同様の効果を奏する。同様にして、請求項2〜12の構成に記載のスケジューリング方法を含む請求項を挙げることも可能である。
【0029】
そして、請求項1〜12に記載のタスクスケジューリング装置は、回路として実現してもよいし、コンピュータによって実行される処理として実現してもよい。
請求項1〜12のいずれかに記載のタスクスケジューリング装置としての機能をコンピュータで実現する場合、請求項14に示すように、例えば、コンピュータで起動するプログラムとして備えることができる。このようなプログラムの場合、例えば、フレキシブルディスク、光磁気ディスク、CD−ROM、ハードディスク、ROM、RAM等のコンピュータ読み取り可能な記録媒体に記録し、必要に応じてコンピュータシステムにロードして起動することにより用いることができ、また、ネットワークを介してロードして起動することにより用いることもできる。
【0030】
【発明の実施の形態】
以下、本発明が適用された実施例について図面を用いて説明する。なお、本発明の実施の形態は、下記の実施例に何ら限定されることなく、本発明の技術的範囲に属する限り種々の形態を採りうることは言うまでもない。
【0031】
図1は本実施例のタスクスケジューリング装置の構成を示すブロック図である。このタスクスケジューリング装置は、タスク毎の制限時間とタスクの状態を記憶する各タスク用制限時間・状態記憶機構(図1には、タスクA用制限時間・状態記憶機構21〜タスクD用制限時間・状態記憶機構24を図示している)を備える制限時間テーブル20と、時間の経過とともに値をインクリメントすることでシステム時間を出力するタイマ機構90と、各タスクの制限時間の初期値を記憶する制限時間初期値テーブル60と、CPUからのタスク登録要求(例えばタスクの起動などの事象発生)に応じて、要求されたタスクの制限時間をタスクの状態とともに制限時間テーブル20へ記憶させるタスク登録機構50と、CPUからのタスク削除要求に応じて要求されたタスクの制限時間・状態記憶機構の制限時間を削除するタスク削除機構70と、制限時間テーブル20の中で最も制限時間が少ないタスクの制限時間とそのタスクの状態をCPUに対して出力する時限優先スケジューリング機構100とを備える。また、システム時間と制限時間テーブル20の各タスク用制限時間・状態記憶機構に記憶された制限時間を更正する時間更正機構80と、制限時間テーブル20に記憶された制限時間とタイマ機構90の値に基づいてデッドライン違反を検知するデッドライン違反検知機構200を備える。
【0032】
CPUから新たなタスクの起動要求が発生した場合、タスク登録機構50によって、起動要求のあるタスクの制限時間の初期値を制限時間初期値テーブル60から読み出し、時間加算機構10はこの制限時間初期値とタイマ機構90のシステム時間とを加算して、制限時間テーブル20のそのタスク用の制限時間・状態記憶機構に登録する。そして、時限優先スケジューリング機構100を起動し、時限優先スケジューリング機構100は、制限時間テーブル20の中の制限時間・状態記憶機構21、22、…の値をチェックし、起動状態にあるすべてのタスクの中で制限時間が最も少ないタスクを次の実行タスクとして出力する処理(スケジューリング処理)を行う。(図1には、この様子をタスクA110〜タスクD140,…で模式的に示している。例えばタスクAの状態が起動状態であり、タスクA用制限時間・状態記憶機構21に記憶された制限時間が制限時間テーブル20の制限時間・状態記憶機構21、22、…の中で最も小さい場合には、時限優先スケジューリング機構100は、タスクA110を、CPUが実行するタスクとして出力する。)
また、CPUからのタスクの終了要求が発生した場合、タスク削除機構70は、終了要求のあるタスクの制限時間・状態記憶機構21、22、…の制限時間のデータを無効にし、タスクの状態を「終了」に更新した後、時限優先スケジューリング機構100を起動して、前記同様にスケジューリング処理をする。この時、従来のように制限時間テーブル20に登録されている起動状態のタスクに対して、制限時間のデータを更新する必要は無い。
【0033】
ここで、システム時間がある一定以上の値になると、加算した値がオーバーフローしてしまい制限時間・状態記憶機構21、22、…に制限時間を登録できない状態が発生してしまう。そのため、時間更正機構80は、オーバーフローしない範囲の所定のシステム時間において、タイマ機構90のシステム時間と各タスクの制限時間・状態記憶機構21、22、…に格納されている制限時間とを、同じ値だけデクリメントする事により、時間の更正を行う。こうすることで、システム時間や制限時間のオーバーフローを防止することができる。
【0034】
またデッドライン違反検知機構200は、制限時間・状態記憶機構21、22、…に記憶された制限時間のデータからシステム時間を差し引くことでデッドラインまでの余裕時間を求める。そして、求めた値が0より大きい場合にはデッドラインに至っていないと判定し、0の場合にはデッドラインであると判定し、0より小さい場合にはデッドライン違反であると判定する。
【0035】
ここで、さらに具体例を示して、このタスクスケジューリング装置の動作を説明する。
図4は、制限時間初期値テーブル60に記憶された各タスクの制限時間の初期値を示す図である。図4に示すように、タスクAについては制限時間の初期値として30、タスクBは50、タスクCは25、タスクDは15がそれぞれ記憶されている。
【0036】
図5は、システム時間tの経過に伴って、各システム時間で発生したイベントの内容と、そのときの制限時間テーブル20の各タスクの制限時間のデータ(値)と、時限優先スケジューリング機構100が決定した実行優先度との関係を示す図である。なお、実行優先度は値「1」が最も優先度が高く、「2」「3」と続く。そして、時限優先スケジューリング機構100は、実行優先度が最も高い(すなわち実行優先度が「1」)のタスクをCPUへ出力する。この図5に示した具体例は、従来の技術の欄で図9を参照して説明した従来例に対応する実施例である。
【0037】
図6は、図5に示したイベント内容によるタスクの状態を時間軸(横軸)に沿って示した図であり、各システム時間におけるタスクの起動、タスクの終了、タスクのデッドライン、CPUによるタスクの実行状態、時間の構成要求の発生の様子を示している。こうしたタスクの起動の要求や終了の要求等のタスクの実行に伴う処理は、CPUにより行われる。
【0038】
(1)システム時間t=0
タスクスケジューリング装置の初期状態として、図5のt=0の行に示すように、タイマ機構90のカウントするシステム時間tが0(t=0)で、制限時間が存在する起動されているタスクは無いものとする。そして時間更正機構80によるタイマ機構及び制限時間の更正は、t=40で行うものとする。
【0039】
(2)システム時間t=10
図5及び図6に示すように、t=10でタスクAの起動要求が発生した場合、時間加算機構10は、図4に示した制限時間初期値テーブル60に記憶されたタスクAの制限時間初期値(静的に与えられるデッドラインまでの余裕時間)「30」を、タスク登録機構50を経由して取得する。同じく、システム時間「10」をタイマ機構90から取得する。そして、これら取得したタスクAの制限時間初期値とシステム時間とを加算し(30+10=40)、その加算結果の値「40」を制限時間としてタスクA用制限時間・状態記憶機構21へ記憶し、タスクAの状態を起動状態として記憶する。
【0040】
その結果、図5のt=10の行に示すように、制限時間テーブル20は、タスクA用制限時間・状態記憶機構21の制限時間のデータ=40,タスクB用制限時間・状態記憶機構22の制限時間のデータ=無し,タスクC用制限時間・状態記憶機構23の制限時間のデータ=無し,タスクD用制限時間・状態記憶機構(24)の制限時間のデータ=無しとなる。また、時間更正機構80はt=10であるので、ここでは動作しない。
【0041】
デッドライン違反検知機構200は、システム時間tが「10」、タスクAの制限時間であるタスクA用制限時間・状態記憶機構21の値が「40」であることから、デッドラインまでの時間を「タスクA用制限時間・状態記憶機構の制限時間のデータ−システム時間」である「40−10=30」として求める。このようにデッドラインまでの余裕時間が「30」であるのでデッドライン違反は発生していないと判定する。
【0042】
時限優先スケジューリング機構100は、各タスクの制限時間記憶機構の値をもとに、登録されているタスクのうち最も制限時間が少ない(すなわち、制限時間テーブル20へ登録されている値が小さい)ものから順に実行優先度を高く設定し、最も実行優先度の高いタスクを、次の実行タスクとしてスケジューリングする。t=10の時間においては、タスクAのみが制限時間テーブル20に記憶されているので、タスクAの実行優先度を最も高い「1」とし、次の実行タスクは「タスクA」となる。
【0043】
(3)システム時間t=20
t=20でタスクBの起動要求が発生した場合、時間加算機構10は、図4に示した制限時間初期値テーブル60に記憶されたタスクBの制限時間初期値「50」をタスク登録機構50を経由して取得する。同じく、システム時間「20」をタイマ機構90から取得し、タスクBの制限時間初期値とシステム時間とを加算し(50+20=70)、その結果である「70」をタスクB用制限時間・状態記憶機構22へ登録する。
【0044】
その結果、図5のt=20の行に示すように、制限時間テーブル20は、タスクA用制限時間・状態記憶機構21の制限時間のデータ=40,タスクB用制限時間・状態記憶機構22の制限時間のデータ=70,タスクC用制限時間・状態記憶機構23の制限時間のデータ=無し,タスクD用制限時間・状態記憶機構24の制限時間のデータ=無しとなる。また、時間更正機構80はt=20であるので、ここでは動作しない。
【0045】
デッドライン違反検知機構200は、システム時間tが「20」、タスクAの制限時間はタスクA用制限時間・状態記憶機構21より「40」であることから、デッドラインまでの時間を「タスクA用制限時間・状態記憶機構の制限時間のデータ−システム時間」である「40−20=20」として求める。また同様に、タスクBのデッドラインまでの時間は「70−20=50」と求める。したがって、タスクA,タスクBの双方のデッドラインまでの余裕時間が0より大きいのでデッドライン違反はいずれのタスクでも発生していないと判定する。
【0046】
時限優先スケジューリング機構100は、制限時間テーブル20に登録されているタスクAの制限時間「40」とタスクBの制限時間「70」を比較し、値の小さいタスクAの実行優先度を「1」とし、タスクBの実行優先度を「2」とする。そして、最も実行優先度の高いタスクAを次の実行タスクとする。このように、タスクB起動後も引き続き実行タスクは「タスクA」であるためCPUによるディスパッチは発生しない(図6参照)。
【0047】
(4)システム時間t=30
t=30でタスクCの起動要求が発生した場合、時間加算機構10は、図4に示した制限時間初期値テーブル60に記憶されたタスクCの制限時間初期値「25」をタスク登録機構50を経由して取得する。同じく、システム時間「30」をタイマ機構90から取得し、タスクCの制限時間初期値とシステム時間とを加算し(25+30=55)、その結果である「55」をタスクC用制限時間・状態記憶機構23へ登録する。
【0048】
その結果、図5のt=30の行に示すように、制限時間テーブル20は、タスクA用制限時間・状態記憶機構21の制限時間のデータ=40,タスクB用制限時間・状態記憶機構22の制限時間のデータ=70,タスクC用制限時間・状態記憶機構23の制限時間のデータ=55,タスクD用制限時間・状態記憶機構24の制限時間のデータ=無しとなる。また、時間更正機構80はt=30であるので、ここでは動作しない。
【0049】
デッドライン違反検知機構200は、システム時間tが「30」、タスクAの制限時間はタスクA用制限時間・状態記憶機構21より「40」であることから、デッドラインまでの時間を「タスクA用制限時間・状態記憶機構の制限時間のデータ−システム時間」である「40−30=10」として求める。また同様にタスクBのデッドラインまでの時間は「70−30=40」と求め、タスクCのデッドライまでの時間は、「55ー30=25」と求める。したがって、タスクA〜Cのすべてについてデッドラインまでの余裕時間が0より大きいので、デッドライン違反はいずれのタスクでも発生していないと判定する。
【0050】
時限優先スケジューリング機構100は、制限時間テーブル20に登録されているタスクAの制限時間「40」とタスクBの制限時間「70」、タスクCの制限時間「55」を比較し、最も制限時間の小さいタスクAを最優先の実行優先度である「1」とし、続いてタスクCの実行優先度を「2」として、タスクDの実行優先度を「1」とする。そして、実行優先度が最も高いタスクAを次の実行タスクとする。このように、これまでの実行タスクは「タスクA」であり、タスクC起動後も引き続き実行タスクは「タスクA」となったためCPUによるディスパッチは発生しないが(図6参照)、実行の優先順位は「t=20」の時と異なり、前述のように、優先度が高い方から「タスクA」「タスクC」「タスクB」となる。
【0051】
(5)システム時間t=35
そして、t=35でタスクAの終了要求が発生した場合、タスク削除機構70は、終了要求のあるタスクA用制限時間・状態記憶機構21の制限時間のデータを無効にし、タスクの状態を「終了」に更新する。このとき、時間更正機構80はt=35であるので動作しない。
【0052】
その結果、制限時間テーブル20は、タスクA用制限時間・状態記憶機構21の制限時間のデータ=無し(データ削除後),タスクB用制限時間・状態記憶機構22の制限時間のデータ=70,タスクC用制限時間・状態記憶機構23の制限時間のデータ=55,タスクD用制限時間・状態記憶機構24の制限時間のデータ=無しとなる。
【0053】
デッドライン違反検知機構200は、システム時間tが「35」、タスクAの制限時間はタスクA用制限時間・状態記憶機構21より「40」(データ削除前)であることから、デッドラインまでの時間を「タスクA用制限時間・状態記憶機構の制限時間のデータ−システム時間」である「40−35=5」として求める。こうして求めたデッドラインまでの余裕時間は0より大きいので、タスクAはデッドライン違反を犯さず終了したと判定する。また、タスクBのデッドラインまでの時間は「70−35=35」、タスクCのデッドラインまでの時間は「55−35=20」と求められる。
【0054】
時限優先スケジューリング機構100は制限時間テーブル20に登録されているタスクBの制限時間「70」、タスクCの制限時間「55」を比較し、値の小さいタスクCから順に高い実行優先度を設定する。そして、最も実行優先度の高い(すなわち制限時間が最も小さい)タスクCを次の実行タスクとする。このように、これまでの実行タスクは「タスクA」であり、タスクA終了後の実行タスクは「タスクC」と判定されたためCPUはタスクCのディスパッチを行う。そして実行の優先順位は、優先度が高い方から「タスクC」「タスクB」となる。
【0055】
(6)システム時間t=40(図5のt=0※0)
t=40(図5のt=0※0)では時間の更正を行う。すなわち、時間更正機構80が、制限時間テーブル20の起動状態にあるタスクの制限時間のデータとシステム時間に対して、時間の更正を行う。つまり、各タスクの制限時間とシステム時間から所定の時間(ここでは「40」)を減算する。
【0056】
なお、このとき、更正できる時間の最大値は、システム時間と制限時間テーブル20に登録されている各タスクの制限時間の中の最小値である。システム時間t=40において、制限時間テーブル20に登録されているデータはタスクBが「70」、タスクCが「55」であり、更正できる時間の最大値はシステム時間の「40」となるのである。
【0057】
更正をするには、システム時間、タスクB用制限時間・状態記憶機構22の制限時間のデータ、タスクC用制限時間・状態記憶機構23の制限時間のデータに対して更正する時間分「40」だけ減算する。このように減算して更正すると、更正後はシステム時間「t=0」、タスクB用制限時間・状態記憶機構22の制限時間のデータ「30」、タスクC用制限時間・状態記憶機構23の制限時間のデータ「15」となる。
【0058】
時間の更正においては、タスク間で制限時間のデータの値は変化するが、実行の優先順位(データの大小関係)は不変であるため時限優先スケジューリング機構100を起動させる必要は無い。すなわち、t=40において時間加算機構10やデッドライン違反検知機構200は、動作しない。
【0059】
結果、図5のt=0※0の行に示すように、制限時間テーブル20は、タスクA用制限時間・状態記憶機構21の制限時間のデータ=無し,タスクB用制限時間・状態記憶機構22の制限時間のデータ=30(更正後),タスクC用制限時間・状態記憶機構23の制限時間のデータ=15(更正後),タスクD用制限時間・状態記憶機構24の制限時間のデータ=無しとなる。
【0060】
このようにしてタイマ機構90の時間t=40において、時間の更正を行うことで、システム時間や制限時間のオーバーフローを防ぐことができる。
(7)システム時間t=10※1(時間更正前の時間ではt=50)
そして、図5に示すように、t=10※1(時間更正前の時間ではt=50)で、タスクDの起動要求が発生した場合、時間加算機構10は、図4に示した制限時間初期値テーブル60に記憶されたタスクDの制限時間初期値「15」をタスク登録機構50を経由して取得する。同じく、システム時間「10」をタイマ機構90から取得し、タスクDの制限時間初期値とシステム時間を加算し(15+10=25)、その結果である「25」をタスクD用制限時間・状態記憶機構24へ登録する。
【0061】
その結果、図5のt=10※1の行に示すように、制限時間テーブル20は、タスクA用制限時間・状態記憶機構21の制限時間のデータ=無し,タスクB用制限時間・状態記憶機構22の制限時間のデータ=30,タスクC用制限時間・状態記憶機構23の制限時間のデータ=15,タスクD用制限時間・状態記憶機構24の制限時間のデータ=25となる。また、時間更正機構80はt=10であるので、ここでは動作しない。
【0062】
デッドライン違反検知機構200は、システム時間tが「10」、タスクBの制限時間はタスクB用制限時間・状態記憶機構22より「30」であることから、デッドラインまでの時間は「タスクB用制限時間・状態記憶機構の制限時間のデータ−システム時間」である「30−10=20」と求める。また同様に、タスクCのデッドラインまでの時間は「15−10=5」、タスクDのデッドラインまでの時間は「25−10=15」と求める。したがって、タスクB〜Cのすべてについてデッドラインまでの余裕時間が0より大きいので、デッドライン違反はいずれのタスクでも発生していないと判定する。
【0063】
時限優先スケジューリング機構100は、制限時間テーブル20に登録されているタスクBの制限時間「30」(時間更正前のデータ「70」に相当)とタスクCの制限時間「15」(時間更正前のデータ「55」に相当)とを比較し、値の小さいタスクCの方が制限時間が小さいと判断して、タスクCを次の実行タスクとする。これまでの実行タスクは「タスクC」であり、タスクD起動後も実行タスクは「タスクC」であるためCPUによるディスパッチは発生しない。しかし、実行の優先順位はt=0(時間更正前の時間ではt=40)の時と異なり、優先度が高い方から「タスクC」「タスクD」「タスクB」となる。
【0064】
(8)システム時間t=15※1(時間更正前の時間ではt=55)
t=15※2(時間更正前の時間ではt=55)では、デッドライン違反検知機構200は、システム時間がt=15、タスクCの制限時間は「15」であり、「タスクC用制限時間・状態記憶機構の制限時間のデータ−システム時間」は「15−15=0」であることから、デッドラインに達したことを検知する。なお、タスクBのデッドラインまでの時間は「30−15=15」、タスクDのデッドラインまでの時間は「25−15=10」である。ここでは、時間加算機構10,時間更正機構80は、動作せず、制限時間テーブル20は、タスクA用制限時間・状態記憶機構21の制限時間のデータ=無し,タスクB用制限時間・状態記憶機構22の制限時間のデータ=30,タスクC用制限時間・状態記憶機構23の制限時間のデータ=15,タスクD用制限時間・状態記憶機構24の制限時間のデータ=25のままとなる。
【0065】
このようにして、デッドライン違反検知機構200により、タスクCがデッドラインに到達したことが検知される。このように検知された情報をもとに、CPUは、タスクCを終了する等の処理をするなど、デッドライン違反時の処理を行うことができる。
【0066】
(9)システム時間t=20※2(時間更正前の時間ではt=60)
そして、図5に示すように、タイマ機構90の時間t=20※2(時間更正前の時間ではt=60)において、タスクCの終了要求があった場合、タスク削除機構70がタスクC用制限時間・状態記憶機構23のデータ(この場合はタスクCの制限時間「15」)を削除して、状態を「終了」にする。そして、時限優先スケジューリング機構100を起動する。ここで、時限優先スケジューリング機構100は制限時間テーブル20に登録されているタスクBの制限時間「30」、タスクDの制限時間「25」を比較し、値の小さいタスクDを次の実行タスクとする。これまでの実行タスクは「タスクC」であり、タスクC終了後の実行タスクは「タスクD」となったためCPUによるディスパッチが発生する(図6参照)。そして実行の優先順位は、優先度が高い方から「タスクD」「タスクB」となる。
【0067】
なお、ここでは時間加算機構10,時間更正機構80は、動作せず、制限時間テーブル20は、タスクA用制限時間・状態記憶機構21の制限時間のデータ=無し,タスクB用制限時間・状態記憶機構22の制限時間のデータ=30,タスクC用制限時間・状態記憶機構23の制限時間のデータ=無し(データ削除後),タスクD用制限時間・状態記憶機構24の制限時間のデータ=25となる。
【0068】
そして、デッドライン違反検知機構200は、システム時間「t=20」、タスクCの制限時間は「15」(データ削除前)であり、デッドラインまでの時間は「タスクC用制限時間・状態記憶機構の制限時間のデータ−システム時間」である「15−20=−5」であり、タスクCについてデッドライン違反が発生したことを検知する。
【0069】
以上が、具体例の説明である。
このように本実施例のスケジューリング装置は、タスク起動要求時(例えば図5のt=10,20,30など)に、その時点のタイマ機構90のカウントするシステム時間と、制限時間初期値テーブル60に記憶された余裕時間の初期値とを加算して、制限時間テーブル20へ記憶(登録)する。そして、この記憶された値は、時間の更正時(例えば図5のt=40)以外には、そのまま保持され、従来の図9に示した減算は行わない。
【0070】
すなわち、従来は、図9に示したように、タスク毎にデッドラインまでの余裕時間を制限時間テーブルで管理していたのに対し、本実施例では、図5に示したように、全てのタスクで共通のシステム時間を加算した値として制限時間を管理する。これにより、全てのタスクで1つの時間管理で済むこととなり、制限時間の更新をスケジューリング要求毎に行う必要も無くなる。そのため、従来のように制限時間を各タスク毎に減算するための時間減算機構を設ける必要がなくなる。よって、処理量の増加を抑えることができる。特に従来の構成におけるタスク数が増えるほど処理量が増えるという問題を解決することが可能となり、処理時間を一定にする事も容易にできる。
【0071】
なお、図1のタスクスケジューリング装置は、ハードウェア(電子回路)として構成することも、ソフトウェア(プログラム)とコンピュータで構成することもできる。ハードウェアで構成する場合には、回路規模の増加を防ぐことができ、必要な回路面積を低減できる。ソフトウェア(プログラム)で構成する場合には、コンピュータでの処理量を削減することができ、処理時間を短縮できる。
【0072】
例えば、回路規模に関しては、従来技術では、減算機構である時間減算機構511、512、…がタスク数分必要であるのに対し、本実施例では、加算機構である時間加算機構10が全てのタスクに対して1つと、システム時間の更正をする時間更正機構80が1つ必要なだけである。例えば時間更正機構80は、制限時間テーブル20に記憶された制限時間とタイマ機構90のカウントするシステム時間の中のすべてのものについて、予め定められたビットがセットされたことを検知した場合に、これらすべての時間についてそのビットをリセットすることにより、時間を更正するように構成するとよい。このようにすれば、従来のような減算機構による任意の時間の減算を行うための回路に比べ、大幅に回路規模を削減することができる。また、処理時間に関しては、従来技術ではスケジューリングのためのデッドラインまでの余裕時間の計算量は「起動しているタスク数×減算時間×スケジューリング要求数」であり、本実施例では、タスク起動時のみその起動したタスクに対してだけ処理をすればよいため「起動しているタスク数×加算時間+更新時間」だけでよい。以上のように、タスクスケジューリング装置の処理量を低減でき、高速化を実現できる。
【0073】
なお、時限優先スケジューリング機構100で判定される実行優先度はCPUから参照可能とするとよい。また、時限優先スケジューリング機構100では、実行優先度は求めずに単に最も制限時間の短いタスクを次に実行するタスクとして決定してもよい。
【0074】
また、本実施例では、制限時間テーブル20に各タスクの制限時間と、状態とを記憶することとしたが、その他のタスク関連情報を記憶するようにしてもよい。例えば、タスクコントロールブロック(TCB)を記憶するようにしてもよい。
【図面の簡単な説明】
【図1】実施例のタスクスケジューリング装置の構成を示すブロック図である。
【図2】時間加算機構の処理の流れを示すフローチャートである。
【図3】時間更正機構の処理の流れを示すフローチャートである。
【図4】制限時間初期値テーブルに記憶されたタスクの制限時間初期値を示す説明図である。
【図5】実施例における、各システム時間で発生したイベントの内容と各タスクの制限時間のデータと実行優先度との関係を示す説明図である。
【図6】図5に示したイベント内容によるタスクの状態を時間軸に沿って示した説明図である。
【図7】従来技術におけるタスクスケジューリング装置の構成を示すブロック図である。
【図8】従来技術におけるタスクスケジューリング装置の時間減算機構の処理の流れを示すフローチャートである。
【図9】従来の技術における、各システム時間で発生したイベントの内容と各タスクの制限時間のデータと実行優先度との関係を示す説明図である。
【符号の説明】
10…時間加算機構
20…制限時間テーブル
21…タスクA用制限時間・状態記憶機構
22…タスクB用制限時間・状態記憶機構
23…タスクC用制限時間・状態記憶機構
24…タスクD用制限時間・状態記憶機構
50…タスク登録機構
60…制限時間初期値テーブル
70…タスク削除機構
80…時間更正機構
90…タイマ機構
100…時限優先スケジューリング機構
200…デッドライン違反検知機構
511,512,513,514…時間減算機構
520…制限時間テーブル
521…タスクA用制限時間・状態記憶機構
522…タスクB用制限時間・状態記憶機構
523…タスクC用制限時間・状態記憶機構
524…タスクD用制限時間・状態記憶機構
550…タスク登録機構
560…制限時間初期値テーブル
570…タスク削除機構
600…時限優先スケジューリング機構
【発明の属する技術分野】
マルチタスク処理等を実現するためのタスクスケジューリング装置およびタスクスケジューリング方法等に関する。
【0002】
【従来の技術】
マルチタスク処理を実現するためのプログラムのスケジューリング方法として、時限優先スケジューリング(EDF(Earliest Deadline First)スケジューリング)が知られている。このスケジューリング方法は、実行可能なタスクのうちデッドラインまでの余裕時間が最も少ないタスクを実行タスクとして決定する方法である。
【0003】
こうしたデッドラインまでの余裕時間は、例えば特開平9−319596号公報および特開2001−236236号公報に記載のように、初期値をテーブル等に静的に記憶しておき、この記憶された初期値を時間の経過に伴って減算していくことで求めている。
【0004】
こうした従来のタスクスケジューリング装置の例を図7に示して説明する。
図7に示すタスクスケジューリング装置は、タスク毎のデッドラインまでの余裕時間の初期値を制限時間初期値テーブル560に記憶している。そして、新たなタスクの起動要求が発生した場合、タスク登録機構550が、CPUからの起動要求があったタスクに対応する制限時間・状態記憶機構521,522,…に対して、そのタスクの状態を起動状態とし、制限時間初期値テーブル560から読み出したデッドラインまでの余裕時間の初期値をそのタスクの制限時間として設定した上で、時限優先スケジューリング機構600を起動する。
【0005】
そして、時間減算機構511,512,…は、制限時間・状態記憶機構521,522,…に設定された余裕時間を、例えばタスクの起動時や削除時のような所定の事象発生時に、タイマ機構90のカウント値に基づいて所定の間隔分ずつ、デクリメントする。例えば、時間減算機構511,512,…は、それぞれ図8に示すように、タスクの起動要求やタスクの削除要求など、制限時間の更新の要求があった場合(S11:YES)、制限時間テーブル520の制限時間・状態記憶機構521,522,…に登録されている各タスクの制限時間から、前回の制限時間の更新時のシステム時間から現在までのシステム時間の変化量(すなわち、前回の更新からの時間間隔)を差し引いて、新たな制限時間をそれぞれ求める(S12)。そして、この新たな制限時間をそれぞれ制限時間・状態記憶機構521,522,…へ登録する(S13)。なお、制限時間の値を無効に設定することが可能であり、制限時間が無効に設定されているタスクに関しては、この処理を行わない。
【0006】
また、時限優先スケジューリング機構600は、スケジューリング要求があった場合に、制限時間・状態記憶機構521、522、…の値をチェックして、起動状態にあるすべてのタスクの中でデッドラインまでの余裕時間(制限時間)が最も少ないタスクを次の実行タスクとするスケジューリング処理を行う。(この様子を図7では、タスクA610〜タスクD640,…で模式的に示している。例えばタスクA用制限時間・状態記憶機構521に記憶された余裕時間が制限時間テーブル520の制限時間・状態記憶機構521、522、…の中で最も小さい場合には、時限優先スケジューリング機構600は、タスクA610を、CPUが実行すべきタスクとして決定する。そして、CPUは、時限優先スケジューリング機構600によって決定されたタスクをディスパッチする。)
一方、CPUからタスクの終了要求が発生した場合、タスク削除機構570が、終了要求のあるタスクの制限時間・状態記憶機構521,522,…のデッドラインまでの余裕時間(制限時間)のデータを無効にし、タスクの状態を「終了」に更新した後、時限優先スケジューリング機構600を起動する。そして、時限優先スケジューリング機構600は、前述したスケジューリング処理を行う。
【0007】
こうした従来のタスクスケジューリング装置の動作の具体例を図9に示して説明する。図9は、タイマ機構90のカウントするシステム時間tの経過に伴って、各システム時間で発生したイベント(事象)の内容と、そのときの制限時間テーブル520の各タスクの制限時間のデータ(値)と、時限優先スケジューリング機構600が決定した実行優先度との関係を示す図である。この例は、タスクA〜Dの4つのタスクについてスケジューリングを行う例である。なお、実行優先度の値は、「1」が最も優先度が高く、「2」「3」と続く。そして、時限優先スケジューリング機構600は、実行優先度が最も高いタスク(すなわち実行優先度が「1」のタスク)をCPUが次に実行すべきタスクとして決定する。また、制限時間初期値テーブル560に記憶された各タスクの制限時間の初期値は、図4に示すように、タスクAについては30、タスクBは50、タスクCは25、タスクDは15とする。
【0008】
(1)図9のt=0の行に示すように、タスクスケジューリング装置の初期状態として、タイマ機構90のカウントするシステム時間tが0(t=0)の時、制限時間が存在し起動されているタスクは無いものとする。すなわち、制限時間・状態記憶機構521,522,523,524の制限時間の値は無効とする。図9では無効であることを斜線で示している。
【0009】
(2)図9のt=10の行に示すように、システム時間t=10で、タスクAの起動要求が発生すると、タスク登録機構550は、タスクA用制限時間・状態記憶機構521へ、制限時間初期値テーブル560に記憶されたタスクAの制限時間の初期値「30」を記憶し、タスクAの状態を起動状態として記憶する。なお、ここでは、前回更新時(t=0)からシステム時間が「10」経過しているものの、タスクB〜Dの制限時間の値は「無効」であるので、図8に示した制限時間の減算は行わず、値は「無効」のままとなる。そしてこの時点で制限時間の更新があったものとする。
【0010】
(3)図9のt=20の行に示すように、システム時間t=20で、タスクBの起動要求が発生すると、タスク登録機構550は、制限時間初期値テーブル560に記憶されたタスクBの制限時間の初期値「50」をタスクB用制限時間・状態記憶機構522の制限時間とし、タスクBの状態を起動状態として記憶する。また、時間減算機構511は、図8に示した処理によって、新たな制限時間を制限時間テーブル520へ登録(記憶)する。すなわち、タスクAの時間減算機構511は、前回更新時のシステム時間(t=10)と現在のシステム時間(t=20)との変化量(20−10=10)を、タスクA用制限時間・状態記憶機構521に記憶された値「30」から差し引いて、新たな制限時間「20」を求め、タスクA用制限時間・状態記憶機構521へ登録する。その結果、タスクAの制限時間が20,タスクBの制限時間が50となり、実行優先度が最も高いタスクは制限時間が最も小さいタスクAと決定される。
【0011】
(4)図9のt=30の行に示すように、システム時間t=30で、タスクCの起動要求が発生すると、タスク登録機構550は、制限時間初期値テーブル560に記憶されたタスクCの制限時間の初期値「25」をタスクC用制限時間・状態記憶機構523へ記憶し、時間減算機構511,512は、それぞれ、タスクA用制限時間・状態記憶機構521,タスクB用制限時間・状態記憶機構522に記憶された制限時間から、前回更新時からのシステム時間の変化量(30ー20=10)を差し引いて、新たな制限時間を求めて更新する。その結果、タスクAの制限時間が10,タスクBの制限時間が40,タスクCの制限時間が25となり、実行優先度が最も高いタスクはタスクAと決定される。
【0012】
(5)図9のt=35の行に示すように、システム時間t=35で、タスクAの終了要求が発生すると、タスク削除機構570は、タスクA用制限時間・状態記憶機構521の制限時間のデータを無効にし、タスクの状態を終了状態へ更新する。また、時間減算機構512,513は、それぞれ、タスクB用制限時間・状態記憶機構522,タスクC用制限時間・状態記憶機構523に記憶された制限時間から、前回更新時からのシステム時間の変化量(35ー30=5)を差し引いて、新たな制限時間を求めて更新する。その結果、タスクAの制限時間が無効,タスクBの制限時間が35,タスクCの制限時間が20となり、実行優先度が最も高いタスクはタスクCと決定される。
【0013】
(6)図9のt=50の行に示すように、システム時間t=50で、タスクDの起動要求が発生すると、タスク登録機構550は、制限時間初期値テーブル560に記憶されたタスクDの制限時間の初期値「15」をタスクD用制限時間・状態記憶機構524へ記憶し、時間減算機構512,513は、それぞれ、タスクB用制限時間・状態記憶機構522,タスクC用制限時間・状態記憶機構523に記憶された制限時間から、前回更新時からのシステム時間の変化量(50ー35=15)を差し引いて、新たな制限時間を求めて更新する。その結果、タスクBの制限時間が20,タスクCの制限時間が5となり、実行優先度が最も高いタスクはタスクCと決定される。
【0014】
(7)システム時間t=55では、図9のt=55の行に示すように、タスクC用制限時間・状態記憶機構523に記憶された制限時間が、0となりデッドラインに到達する。
(8)システム時間t=60で、タスクCの終了要求が発生すると、タスク削除機構570は、タスクC用制限時間・状態記憶機構523の制限時間のデータを無効にし、タスクの状態を「終了」に更新する。また、時間減算機構512,514は、それぞれ、タスクB用制限時間・状態記憶機構522,タスクD用制限時間・状態記憶機構524に記憶された制限時間から、前回更新時からのシステム時間の変化量(55−60=5)を差し引いて、新たな制限時間を求めて更新する。その結果、タスクAの制限時間が無効,タスクBの制限時間が10,タスクDの制限時間が5となり、実行優先度が最も高いタスクはタスクDと決定される。
【0015】
【発明が解決しようとする課題】
このように従来のスケジューリング装置では、各タスク毎にそれぞれデッドラインまでの余裕時間を管理している。そのため、前述したタスクの起動要求時・タスクの終了要求時・デッドライン到達時などのスケジューリングの必要な事象発生毎に、時間減算機構511,512,…が、前回の制限時間の更新時からの時間間隔分の値を、制限時間・状態記憶機構521,522,…に保持された値から減算して更新する必要がある。
【0016】
この更新の処理には「1タスクの制限時間・状態記憶機構の更新(設定されているデッドラインまでの余裕時間−所定の時間)×起動状態にあるタスク数」分の時間が必要であり、起動状態のタスクの数が増えるほどその処理時間が増加するという問題がある。
【0017】
また、タスク毎にデッドラインまでの余裕時間を管理しているため、少なくとも同時に起動状態になり得るタスク数分だけ時間減算機構511,512,…が必要であり、タスクの数が増えるほど処理量(例えば回路規模、プログラムによる処理量など)が増加してしまうという問題がある。
【0018】
そこで、本発明は、処理量を抑えることができるタスクスケジューリング装置等を提供することを目的とする。
【0019】
【課題を解決するための手段及び発明の効果】
上述した問題点を解決するためになされた請求項1に記載のタスクスケジューリング装置は、タスクの起動要求時に、予め設定されたそのタスクのデッドラインまでの余裕時間の初期値と時間の経過に伴いカウントされるシステム時間とを加算して制限時間として保持しておく。そして、このように保持されたタスク毎の制限時間に基づいてスケジューリングを行う。
【0020】
こうして、制限時間は、タスクの起動要求時のシステム時間を加算したものとして保持されるため、従来のように事象発生毎に制限時間保持手段に保持された制限時間を更新する必要がなくなる。そのため、従来のように制限時間を各タスク毎に減算するための時間減算機構を設ける必要がなくなる。よって、処理量の増加を抑えることができる。特にタスク数が増えるほど事象発生毎の処理量が増えるという問題を解決することが可能であり、事象発生毎の処理時間を一定にする事も容易にできる。
【0021】
したがって、例えばタスクスケジューリング装置をハードウェアで構成する場合には、回路規模の増加を防ぐことができ、必要な回路面積を低減できる。またタスクスケジューリング装置をソフトウェア(プログラム)とコンピュータ(処理装置)で構成する場合にも処理量を削減することができ、処理時間を短縮できる。
【0022】
こうしたスケジューリング手段によるスケジューリングの方法としては、例えば、請求項2に示すように、タスク毎の制限時間のうち、最も制限時間が小さいタスク(制限時間の厳しいタスク)から順に実行優先度の高いタスクとしたり、請求項3に示すように、タスク毎の制限時間のうち、制限時間の最も少ないタスクを次の実行タスクとしたり、請求項4に示すように、システム時間に最も近い制限時間を持つタスクを次の実行タスクとたりする方法をとることができる。また、請求項5に示すように、タスク毎にタスクの状態を保持しておき、このタスクの状態が、起動状態のタスクについてのみスケジューリングを行うようにしてもよい。例えば、いわゆる実行状態または実行可能状態のタスクを起動状態のタスクとすることができる。
【0023】
ところで、システム時間や制限時間の最大値は有限であり、これらの時間は、例えば所定のサイズの記憶領域に保持することとなる。そのためこのサイズを超えると値がオーバーフローしてしまう。そこで、請求項6に示すように、保持されたタスク毎の制限時間と、システム時間に対し、所定の時間を減算することで、時間の更正をおこなうとよい。このようにすれば、これらの時間の最大値を超える前に、所定の時間を減算することによって、オーバーフローを防ぐことができる。
【0024】
タスク毎の制限時間とシステム時間とは、異なる時点で更正するようにしてもよいが、請求項7に示すように、保持されたタスク毎の制限時間と、システム時間に対し、同時に時間の更正を行うとよい。このようにすれば、制限時間とシステム時間のずれを加味した処理等を行う必要がなくなって、処理が容易になり、例えば必要な回路規模や処理量などを減らすことが可能となる。
【0025】
また、減算する所定の時間は例えば適応的に変化させるなどしてもよいが、請求項8に示すように、予め定めた時間を減算するとよい。また、請求項9に示すように、システム時間に対する更正時間と、前記タスクの制限時間に対する更正時間とを同じ値とするとよい。このようにすれば、更正を容易に行うことができ、例えば必要な回路規模や処理量などを減らすことが可能となる。
【0026】
このような「減算する所定の時間」は、その値が大きければ大きいほど、次に更正するまでの時間間隔が長くなって更正の必要頻度を低くすることができ、更正のために費やす処理時間を減らすことができる。そこで、減算する所定の時間は、請求項10に示すように、システム時間と各タスクの制限時間との中で最小の値とするとよい。
【0027】
また、請求項11に示すように、保持されたタスク毎の制限時間とシステム時間とに基づいてデッドライン違反を検知する手段を備えるとよい。例えば請求項12に示すように、タスクの制限時間がシステム時間より小さくなった場合にデッドライン違反であると判定する。
【0028】
なお、請求項13は、請求項1のスケジューリング装置にて実現されるスケジューリング方法の請求項であり、このスケジューリング方法によれば、上述した請求項1の効果と同様の効果を奏する。同様にして、請求項2〜12の構成に記載のスケジューリング方法を含む請求項を挙げることも可能である。
【0029】
そして、請求項1〜12に記載のタスクスケジューリング装置は、回路として実現してもよいし、コンピュータによって実行される処理として実現してもよい。
請求項1〜12のいずれかに記載のタスクスケジューリング装置としての機能をコンピュータで実現する場合、請求項14に示すように、例えば、コンピュータで起動するプログラムとして備えることができる。このようなプログラムの場合、例えば、フレキシブルディスク、光磁気ディスク、CD−ROM、ハードディスク、ROM、RAM等のコンピュータ読み取り可能な記録媒体に記録し、必要に応じてコンピュータシステムにロードして起動することにより用いることができ、また、ネットワークを介してロードして起動することにより用いることもできる。
【0030】
【発明の実施の形態】
以下、本発明が適用された実施例について図面を用いて説明する。なお、本発明の実施の形態は、下記の実施例に何ら限定されることなく、本発明の技術的範囲に属する限り種々の形態を採りうることは言うまでもない。
【0031】
図1は本実施例のタスクスケジューリング装置の構成を示すブロック図である。このタスクスケジューリング装置は、タスク毎の制限時間とタスクの状態を記憶する各タスク用制限時間・状態記憶機構(図1には、タスクA用制限時間・状態記憶機構21〜タスクD用制限時間・状態記憶機構24を図示している)を備える制限時間テーブル20と、時間の経過とともに値をインクリメントすることでシステム時間を出力するタイマ機構90と、各タスクの制限時間の初期値を記憶する制限時間初期値テーブル60と、CPUからのタスク登録要求(例えばタスクの起動などの事象発生)に応じて、要求されたタスクの制限時間をタスクの状態とともに制限時間テーブル20へ記憶させるタスク登録機構50と、CPUからのタスク削除要求に応じて要求されたタスクの制限時間・状態記憶機構の制限時間を削除するタスク削除機構70と、制限時間テーブル20の中で最も制限時間が少ないタスクの制限時間とそのタスクの状態をCPUに対して出力する時限優先スケジューリング機構100とを備える。また、システム時間と制限時間テーブル20の各タスク用制限時間・状態記憶機構に記憶された制限時間を更正する時間更正機構80と、制限時間テーブル20に記憶された制限時間とタイマ機構90の値に基づいてデッドライン違反を検知するデッドライン違反検知機構200を備える。
【0032】
CPUから新たなタスクの起動要求が発生した場合、タスク登録機構50によって、起動要求のあるタスクの制限時間の初期値を制限時間初期値テーブル60から読み出し、時間加算機構10はこの制限時間初期値とタイマ機構90のシステム時間とを加算して、制限時間テーブル20のそのタスク用の制限時間・状態記憶機構に登録する。そして、時限優先スケジューリング機構100を起動し、時限優先スケジューリング機構100は、制限時間テーブル20の中の制限時間・状態記憶機構21、22、…の値をチェックし、起動状態にあるすべてのタスクの中で制限時間が最も少ないタスクを次の実行タスクとして出力する処理(スケジューリング処理)を行う。(図1には、この様子をタスクA110〜タスクD140,…で模式的に示している。例えばタスクAの状態が起動状態であり、タスクA用制限時間・状態記憶機構21に記憶された制限時間が制限時間テーブル20の制限時間・状態記憶機構21、22、…の中で最も小さい場合には、時限優先スケジューリング機構100は、タスクA110を、CPUが実行するタスクとして出力する。)
また、CPUからのタスクの終了要求が発生した場合、タスク削除機構70は、終了要求のあるタスクの制限時間・状態記憶機構21、22、…の制限時間のデータを無効にし、タスクの状態を「終了」に更新した後、時限優先スケジューリング機構100を起動して、前記同様にスケジューリング処理をする。この時、従来のように制限時間テーブル20に登録されている起動状態のタスクに対して、制限時間のデータを更新する必要は無い。
【0033】
ここで、システム時間がある一定以上の値になると、加算した値がオーバーフローしてしまい制限時間・状態記憶機構21、22、…に制限時間を登録できない状態が発生してしまう。そのため、時間更正機構80は、オーバーフローしない範囲の所定のシステム時間において、タイマ機構90のシステム時間と各タスクの制限時間・状態記憶機構21、22、…に格納されている制限時間とを、同じ値だけデクリメントする事により、時間の更正を行う。こうすることで、システム時間や制限時間のオーバーフローを防止することができる。
【0034】
またデッドライン違反検知機構200は、制限時間・状態記憶機構21、22、…に記憶された制限時間のデータからシステム時間を差し引くことでデッドラインまでの余裕時間を求める。そして、求めた値が0より大きい場合にはデッドラインに至っていないと判定し、0の場合にはデッドラインであると判定し、0より小さい場合にはデッドライン違反であると判定する。
【0035】
ここで、さらに具体例を示して、このタスクスケジューリング装置の動作を説明する。
図4は、制限時間初期値テーブル60に記憶された各タスクの制限時間の初期値を示す図である。図4に示すように、タスクAについては制限時間の初期値として30、タスクBは50、タスクCは25、タスクDは15がそれぞれ記憶されている。
【0036】
図5は、システム時間tの経過に伴って、各システム時間で発生したイベントの内容と、そのときの制限時間テーブル20の各タスクの制限時間のデータ(値)と、時限優先スケジューリング機構100が決定した実行優先度との関係を示す図である。なお、実行優先度は値「1」が最も優先度が高く、「2」「3」と続く。そして、時限優先スケジューリング機構100は、実行優先度が最も高い(すなわち実行優先度が「1」)のタスクをCPUへ出力する。この図5に示した具体例は、従来の技術の欄で図9を参照して説明した従来例に対応する実施例である。
【0037】
図6は、図5に示したイベント内容によるタスクの状態を時間軸(横軸)に沿って示した図であり、各システム時間におけるタスクの起動、タスクの終了、タスクのデッドライン、CPUによるタスクの実行状態、時間の構成要求の発生の様子を示している。こうしたタスクの起動の要求や終了の要求等のタスクの実行に伴う処理は、CPUにより行われる。
【0038】
(1)システム時間t=0
タスクスケジューリング装置の初期状態として、図5のt=0の行に示すように、タイマ機構90のカウントするシステム時間tが0(t=0)で、制限時間が存在する起動されているタスクは無いものとする。そして時間更正機構80によるタイマ機構及び制限時間の更正は、t=40で行うものとする。
【0039】
(2)システム時間t=10
図5及び図6に示すように、t=10でタスクAの起動要求が発生した場合、時間加算機構10は、図4に示した制限時間初期値テーブル60に記憶されたタスクAの制限時間初期値(静的に与えられるデッドラインまでの余裕時間)「30」を、タスク登録機構50を経由して取得する。同じく、システム時間「10」をタイマ機構90から取得する。そして、これら取得したタスクAの制限時間初期値とシステム時間とを加算し(30+10=40)、その加算結果の値「40」を制限時間としてタスクA用制限時間・状態記憶機構21へ記憶し、タスクAの状態を起動状態として記憶する。
【0040】
その結果、図5のt=10の行に示すように、制限時間テーブル20は、タスクA用制限時間・状態記憶機構21の制限時間のデータ=40,タスクB用制限時間・状態記憶機構22の制限時間のデータ=無し,タスクC用制限時間・状態記憶機構23の制限時間のデータ=無し,タスクD用制限時間・状態記憶機構(24)の制限時間のデータ=無しとなる。また、時間更正機構80はt=10であるので、ここでは動作しない。
【0041】
デッドライン違反検知機構200は、システム時間tが「10」、タスクAの制限時間であるタスクA用制限時間・状態記憶機構21の値が「40」であることから、デッドラインまでの時間を「タスクA用制限時間・状態記憶機構の制限時間のデータ−システム時間」である「40−10=30」として求める。このようにデッドラインまでの余裕時間が「30」であるのでデッドライン違反は発生していないと判定する。
【0042】
時限優先スケジューリング機構100は、各タスクの制限時間記憶機構の値をもとに、登録されているタスクのうち最も制限時間が少ない(すなわち、制限時間テーブル20へ登録されている値が小さい)ものから順に実行優先度を高く設定し、最も実行優先度の高いタスクを、次の実行タスクとしてスケジューリングする。t=10の時間においては、タスクAのみが制限時間テーブル20に記憶されているので、タスクAの実行優先度を最も高い「1」とし、次の実行タスクは「タスクA」となる。
【0043】
(3)システム時間t=20
t=20でタスクBの起動要求が発生した場合、時間加算機構10は、図4に示した制限時間初期値テーブル60に記憶されたタスクBの制限時間初期値「50」をタスク登録機構50を経由して取得する。同じく、システム時間「20」をタイマ機構90から取得し、タスクBの制限時間初期値とシステム時間とを加算し(50+20=70)、その結果である「70」をタスクB用制限時間・状態記憶機構22へ登録する。
【0044】
その結果、図5のt=20の行に示すように、制限時間テーブル20は、タスクA用制限時間・状態記憶機構21の制限時間のデータ=40,タスクB用制限時間・状態記憶機構22の制限時間のデータ=70,タスクC用制限時間・状態記憶機構23の制限時間のデータ=無し,タスクD用制限時間・状態記憶機構24の制限時間のデータ=無しとなる。また、時間更正機構80はt=20であるので、ここでは動作しない。
【0045】
デッドライン違反検知機構200は、システム時間tが「20」、タスクAの制限時間はタスクA用制限時間・状態記憶機構21より「40」であることから、デッドラインまでの時間を「タスクA用制限時間・状態記憶機構の制限時間のデータ−システム時間」である「40−20=20」として求める。また同様に、タスクBのデッドラインまでの時間は「70−20=50」と求める。したがって、タスクA,タスクBの双方のデッドラインまでの余裕時間が0より大きいのでデッドライン違反はいずれのタスクでも発生していないと判定する。
【0046】
時限優先スケジューリング機構100は、制限時間テーブル20に登録されているタスクAの制限時間「40」とタスクBの制限時間「70」を比較し、値の小さいタスクAの実行優先度を「1」とし、タスクBの実行優先度を「2」とする。そして、最も実行優先度の高いタスクAを次の実行タスクとする。このように、タスクB起動後も引き続き実行タスクは「タスクA」であるためCPUによるディスパッチは発生しない(図6参照)。
【0047】
(4)システム時間t=30
t=30でタスクCの起動要求が発生した場合、時間加算機構10は、図4に示した制限時間初期値テーブル60に記憶されたタスクCの制限時間初期値「25」をタスク登録機構50を経由して取得する。同じく、システム時間「30」をタイマ機構90から取得し、タスクCの制限時間初期値とシステム時間とを加算し(25+30=55)、その結果である「55」をタスクC用制限時間・状態記憶機構23へ登録する。
【0048】
その結果、図5のt=30の行に示すように、制限時間テーブル20は、タスクA用制限時間・状態記憶機構21の制限時間のデータ=40,タスクB用制限時間・状態記憶機構22の制限時間のデータ=70,タスクC用制限時間・状態記憶機構23の制限時間のデータ=55,タスクD用制限時間・状態記憶機構24の制限時間のデータ=無しとなる。また、時間更正機構80はt=30であるので、ここでは動作しない。
【0049】
デッドライン違反検知機構200は、システム時間tが「30」、タスクAの制限時間はタスクA用制限時間・状態記憶機構21より「40」であることから、デッドラインまでの時間を「タスクA用制限時間・状態記憶機構の制限時間のデータ−システム時間」である「40−30=10」として求める。また同様にタスクBのデッドラインまでの時間は「70−30=40」と求め、タスクCのデッドライまでの時間は、「55ー30=25」と求める。したがって、タスクA〜Cのすべてについてデッドラインまでの余裕時間が0より大きいので、デッドライン違反はいずれのタスクでも発生していないと判定する。
【0050】
時限優先スケジューリング機構100は、制限時間テーブル20に登録されているタスクAの制限時間「40」とタスクBの制限時間「70」、タスクCの制限時間「55」を比較し、最も制限時間の小さいタスクAを最優先の実行優先度である「1」とし、続いてタスクCの実行優先度を「2」として、タスクDの実行優先度を「1」とする。そして、実行優先度が最も高いタスクAを次の実行タスクとする。このように、これまでの実行タスクは「タスクA」であり、タスクC起動後も引き続き実行タスクは「タスクA」となったためCPUによるディスパッチは発生しないが(図6参照)、実行の優先順位は「t=20」の時と異なり、前述のように、優先度が高い方から「タスクA」「タスクC」「タスクB」となる。
【0051】
(5)システム時間t=35
そして、t=35でタスクAの終了要求が発生した場合、タスク削除機構70は、終了要求のあるタスクA用制限時間・状態記憶機構21の制限時間のデータを無効にし、タスクの状態を「終了」に更新する。このとき、時間更正機構80はt=35であるので動作しない。
【0052】
その結果、制限時間テーブル20は、タスクA用制限時間・状態記憶機構21の制限時間のデータ=無し(データ削除後),タスクB用制限時間・状態記憶機構22の制限時間のデータ=70,タスクC用制限時間・状態記憶機構23の制限時間のデータ=55,タスクD用制限時間・状態記憶機構24の制限時間のデータ=無しとなる。
【0053】
デッドライン違反検知機構200は、システム時間tが「35」、タスクAの制限時間はタスクA用制限時間・状態記憶機構21より「40」(データ削除前)であることから、デッドラインまでの時間を「タスクA用制限時間・状態記憶機構の制限時間のデータ−システム時間」である「40−35=5」として求める。こうして求めたデッドラインまでの余裕時間は0より大きいので、タスクAはデッドライン違反を犯さず終了したと判定する。また、タスクBのデッドラインまでの時間は「70−35=35」、タスクCのデッドラインまでの時間は「55−35=20」と求められる。
【0054】
時限優先スケジューリング機構100は制限時間テーブル20に登録されているタスクBの制限時間「70」、タスクCの制限時間「55」を比較し、値の小さいタスクCから順に高い実行優先度を設定する。そして、最も実行優先度の高い(すなわち制限時間が最も小さい)タスクCを次の実行タスクとする。このように、これまでの実行タスクは「タスクA」であり、タスクA終了後の実行タスクは「タスクC」と判定されたためCPUはタスクCのディスパッチを行う。そして実行の優先順位は、優先度が高い方から「タスクC」「タスクB」となる。
【0055】
(6)システム時間t=40(図5のt=0※0)
t=40(図5のt=0※0)では時間の更正を行う。すなわち、時間更正機構80が、制限時間テーブル20の起動状態にあるタスクの制限時間のデータとシステム時間に対して、時間の更正を行う。つまり、各タスクの制限時間とシステム時間から所定の時間(ここでは「40」)を減算する。
【0056】
なお、このとき、更正できる時間の最大値は、システム時間と制限時間テーブル20に登録されている各タスクの制限時間の中の最小値である。システム時間t=40において、制限時間テーブル20に登録されているデータはタスクBが「70」、タスクCが「55」であり、更正できる時間の最大値はシステム時間の「40」となるのである。
【0057】
更正をするには、システム時間、タスクB用制限時間・状態記憶機構22の制限時間のデータ、タスクC用制限時間・状態記憶機構23の制限時間のデータに対して更正する時間分「40」だけ減算する。このように減算して更正すると、更正後はシステム時間「t=0」、タスクB用制限時間・状態記憶機構22の制限時間のデータ「30」、タスクC用制限時間・状態記憶機構23の制限時間のデータ「15」となる。
【0058】
時間の更正においては、タスク間で制限時間のデータの値は変化するが、実行の優先順位(データの大小関係)は不変であるため時限優先スケジューリング機構100を起動させる必要は無い。すなわち、t=40において時間加算機構10やデッドライン違反検知機構200は、動作しない。
【0059】
結果、図5のt=0※0の行に示すように、制限時間テーブル20は、タスクA用制限時間・状態記憶機構21の制限時間のデータ=無し,タスクB用制限時間・状態記憶機構22の制限時間のデータ=30(更正後),タスクC用制限時間・状態記憶機構23の制限時間のデータ=15(更正後),タスクD用制限時間・状態記憶機構24の制限時間のデータ=無しとなる。
【0060】
このようにしてタイマ機構90の時間t=40において、時間の更正を行うことで、システム時間や制限時間のオーバーフローを防ぐことができる。
(7)システム時間t=10※1(時間更正前の時間ではt=50)
そして、図5に示すように、t=10※1(時間更正前の時間ではt=50)で、タスクDの起動要求が発生した場合、時間加算機構10は、図4に示した制限時間初期値テーブル60に記憶されたタスクDの制限時間初期値「15」をタスク登録機構50を経由して取得する。同じく、システム時間「10」をタイマ機構90から取得し、タスクDの制限時間初期値とシステム時間を加算し(15+10=25)、その結果である「25」をタスクD用制限時間・状態記憶機構24へ登録する。
【0061】
その結果、図5のt=10※1の行に示すように、制限時間テーブル20は、タスクA用制限時間・状態記憶機構21の制限時間のデータ=無し,タスクB用制限時間・状態記憶機構22の制限時間のデータ=30,タスクC用制限時間・状態記憶機構23の制限時間のデータ=15,タスクD用制限時間・状態記憶機構24の制限時間のデータ=25となる。また、時間更正機構80はt=10であるので、ここでは動作しない。
【0062】
デッドライン違反検知機構200は、システム時間tが「10」、タスクBの制限時間はタスクB用制限時間・状態記憶機構22より「30」であることから、デッドラインまでの時間は「タスクB用制限時間・状態記憶機構の制限時間のデータ−システム時間」である「30−10=20」と求める。また同様に、タスクCのデッドラインまでの時間は「15−10=5」、タスクDのデッドラインまでの時間は「25−10=15」と求める。したがって、タスクB〜Cのすべてについてデッドラインまでの余裕時間が0より大きいので、デッドライン違反はいずれのタスクでも発生していないと判定する。
【0063】
時限優先スケジューリング機構100は、制限時間テーブル20に登録されているタスクBの制限時間「30」(時間更正前のデータ「70」に相当)とタスクCの制限時間「15」(時間更正前のデータ「55」に相当)とを比較し、値の小さいタスクCの方が制限時間が小さいと判断して、タスクCを次の実行タスクとする。これまでの実行タスクは「タスクC」であり、タスクD起動後も実行タスクは「タスクC」であるためCPUによるディスパッチは発生しない。しかし、実行の優先順位はt=0(時間更正前の時間ではt=40)の時と異なり、優先度が高い方から「タスクC」「タスクD」「タスクB」となる。
【0064】
(8)システム時間t=15※1(時間更正前の時間ではt=55)
t=15※2(時間更正前の時間ではt=55)では、デッドライン違反検知機構200は、システム時間がt=15、タスクCの制限時間は「15」であり、「タスクC用制限時間・状態記憶機構の制限時間のデータ−システム時間」は「15−15=0」であることから、デッドラインに達したことを検知する。なお、タスクBのデッドラインまでの時間は「30−15=15」、タスクDのデッドラインまでの時間は「25−15=10」である。ここでは、時間加算機構10,時間更正機構80は、動作せず、制限時間テーブル20は、タスクA用制限時間・状態記憶機構21の制限時間のデータ=無し,タスクB用制限時間・状態記憶機構22の制限時間のデータ=30,タスクC用制限時間・状態記憶機構23の制限時間のデータ=15,タスクD用制限時間・状態記憶機構24の制限時間のデータ=25のままとなる。
【0065】
このようにして、デッドライン違反検知機構200により、タスクCがデッドラインに到達したことが検知される。このように検知された情報をもとに、CPUは、タスクCを終了する等の処理をするなど、デッドライン違反時の処理を行うことができる。
【0066】
(9)システム時間t=20※2(時間更正前の時間ではt=60)
そして、図5に示すように、タイマ機構90の時間t=20※2(時間更正前の時間ではt=60)において、タスクCの終了要求があった場合、タスク削除機構70がタスクC用制限時間・状態記憶機構23のデータ(この場合はタスクCの制限時間「15」)を削除して、状態を「終了」にする。そして、時限優先スケジューリング機構100を起動する。ここで、時限優先スケジューリング機構100は制限時間テーブル20に登録されているタスクBの制限時間「30」、タスクDの制限時間「25」を比較し、値の小さいタスクDを次の実行タスクとする。これまでの実行タスクは「タスクC」であり、タスクC終了後の実行タスクは「タスクD」となったためCPUによるディスパッチが発生する(図6参照)。そして実行の優先順位は、優先度が高い方から「タスクD」「タスクB」となる。
【0067】
なお、ここでは時間加算機構10,時間更正機構80は、動作せず、制限時間テーブル20は、タスクA用制限時間・状態記憶機構21の制限時間のデータ=無し,タスクB用制限時間・状態記憶機構22の制限時間のデータ=30,タスクC用制限時間・状態記憶機構23の制限時間のデータ=無し(データ削除後),タスクD用制限時間・状態記憶機構24の制限時間のデータ=25となる。
【0068】
そして、デッドライン違反検知機構200は、システム時間「t=20」、タスクCの制限時間は「15」(データ削除前)であり、デッドラインまでの時間は「タスクC用制限時間・状態記憶機構の制限時間のデータ−システム時間」である「15−20=−5」であり、タスクCについてデッドライン違反が発生したことを検知する。
【0069】
以上が、具体例の説明である。
このように本実施例のスケジューリング装置は、タスク起動要求時(例えば図5のt=10,20,30など)に、その時点のタイマ機構90のカウントするシステム時間と、制限時間初期値テーブル60に記憶された余裕時間の初期値とを加算して、制限時間テーブル20へ記憶(登録)する。そして、この記憶された値は、時間の更正時(例えば図5のt=40)以外には、そのまま保持され、従来の図9に示した減算は行わない。
【0070】
すなわち、従来は、図9に示したように、タスク毎にデッドラインまでの余裕時間を制限時間テーブルで管理していたのに対し、本実施例では、図5に示したように、全てのタスクで共通のシステム時間を加算した値として制限時間を管理する。これにより、全てのタスクで1つの時間管理で済むこととなり、制限時間の更新をスケジューリング要求毎に行う必要も無くなる。そのため、従来のように制限時間を各タスク毎に減算するための時間減算機構を設ける必要がなくなる。よって、処理量の増加を抑えることができる。特に従来の構成におけるタスク数が増えるほど処理量が増えるという問題を解決することが可能となり、処理時間を一定にする事も容易にできる。
【0071】
なお、図1のタスクスケジューリング装置は、ハードウェア(電子回路)として構成することも、ソフトウェア(プログラム)とコンピュータで構成することもできる。ハードウェアで構成する場合には、回路規模の増加を防ぐことができ、必要な回路面積を低減できる。ソフトウェア(プログラム)で構成する場合には、コンピュータでの処理量を削減することができ、処理時間を短縮できる。
【0072】
例えば、回路規模に関しては、従来技術では、減算機構である時間減算機構511、512、…がタスク数分必要であるのに対し、本実施例では、加算機構である時間加算機構10が全てのタスクに対して1つと、システム時間の更正をする時間更正機構80が1つ必要なだけである。例えば時間更正機構80は、制限時間テーブル20に記憶された制限時間とタイマ機構90のカウントするシステム時間の中のすべてのものについて、予め定められたビットがセットされたことを検知した場合に、これらすべての時間についてそのビットをリセットすることにより、時間を更正するように構成するとよい。このようにすれば、従来のような減算機構による任意の時間の減算を行うための回路に比べ、大幅に回路規模を削減することができる。また、処理時間に関しては、従来技術ではスケジューリングのためのデッドラインまでの余裕時間の計算量は「起動しているタスク数×減算時間×スケジューリング要求数」であり、本実施例では、タスク起動時のみその起動したタスクに対してだけ処理をすればよいため「起動しているタスク数×加算時間+更新時間」だけでよい。以上のように、タスクスケジューリング装置の処理量を低減でき、高速化を実現できる。
【0073】
なお、時限優先スケジューリング機構100で判定される実行優先度はCPUから参照可能とするとよい。また、時限優先スケジューリング機構100では、実行優先度は求めずに単に最も制限時間の短いタスクを次に実行するタスクとして決定してもよい。
【0074】
また、本実施例では、制限時間テーブル20に各タスクの制限時間と、状態とを記憶することとしたが、その他のタスク関連情報を記憶するようにしてもよい。例えば、タスクコントロールブロック(TCB)を記憶するようにしてもよい。
【図面の簡単な説明】
【図1】実施例のタスクスケジューリング装置の構成を示すブロック図である。
【図2】時間加算機構の処理の流れを示すフローチャートである。
【図3】時間更正機構の処理の流れを示すフローチャートである。
【図4】制限時間初期値テーブルに記憶されたタスクの制限時間初期値を示す説明図である。
【図5】実施例における、各システム時間で発生したイベントの内容と各タスクの制限時間のデータと実行優先度との関係を示す説明図である。
【図6】図5に示したイベント内容によるタスクの状態を時間軸に沿って示した説明図である。
【図7】従来技術におけるタスクスケジューリング装置の構成を示すブロック図である。
【図8】従来技術におけるタスクスケジューリング装置の時間減算機構の処理の流れを示すフローチャートである。
【図9】従来の技術における、各システム時間で発生したイベントの内容と各タスクの制限時間のデータと実行優先度との関係を示す説明図である。
【符号の説明】
10…時間加算機構
20…制限時間テーブル
21…タスクA用制限時間・状態記憶機構
22…タスクB用制限時間・状態記憶機構
23…タスクC用制限時間・状態記憶機構
24…タスクD用制限時間・状態記憶機構
50…タスク登録機構
60…制限時間初期値テーブル
70…タスク削除機構
80…時間更正機構
90…タイマ機構
100…時限優先スケジューリング機構
200…デッドライン違反検知機構
511,512,513,514…時間減算機構
520…制限時間テーブル
521…タスクA用制限時間・状態記憶機構
522…タスクB用制限時間・状態記憶機構
523…タスクC用制限時間・状態記憶機構
524…タスクD用制限時間・状態記憶機構
550…タスク登録機構
560…制限時間初期値テーブル
570…タスク削除機構
600…時限優先スケジューリング機構
Claims (14)
- タスク毎の制限時間を保持する制限時間保持手段と、
前記制限時間保持手段に保持されたタスク毎の制限時間に基づいてスケジューリングを行うスケジューリング手段と
を備えるタスクスケジューリング装置において、
時間の経過に伴いシステム時間のカウントを行うタイマ手段と、
タスクの起動要求があった場合、前記タイマ手段によってカウントされたシステム時間と予め設定された当該タスクのデッドラインまでの余裕時間の初期値とを加算して求めた当該タスクの制限時間を前記制限時間保持手段へ登録する時間加算手段を備えること
を特徴とするタスクスケジューリング装置。 - 請求項1に記載のタスクスケジューリング装置において、
前記スケジューリング手段は、前記タスク毎の制限時間のうち、最も制限時間が小さいタスクから順に実行優先度の高いタスクとするスケジューリングを行うこと
を特徴とするタスクスケジューリング装置。 - 請求項1または2に記載のタスクスケジューリング装置において、
前記スケジューリング手段は、前記タスク毎の制限時間のうち、制限時間の最も少ないタスクを次の実行タスクとするスケジューリングを行うこと
を特徴とするタスクスケジューリング装置。 - 請求項1または2に記載のタスクスケジューリング装置において、
前記スケジューリング手段は、前記タスク毎の制限時間のうち、前記システム時間に最も近い前記制限時間を持つタスクを次の実行タスクとするスケジューリングを行うこと
を特徴とするタスクスケジューリング装置。 - 請求項1〜4のいずれかに記載のタスクスケジューリング装置において、
タスク毎にタスクの状態を保持するタスク状態保持手段を備え、
前記スケジューリング手段は、前記スケジューリングを、前記タスク状態保持手段に保持されたタスクの状態が、起動状態のタスクについてのみ行うこと
を特徴とするタスクスケジューリング装置。 - 請求項1〜5のいずれかに記載のタスクスケジューリング装置において、
前記制限時間保持手段に保持されたタスク毎の制限時間と前記タイマ手段によってカウントされるシステム時間に対し、所定の時間を減算することで、時間の更正をおこなう時間更正手段を備えること
を特徴とするタスクスケジューリング装置。 - 請求項6に記載のタスクスケジューリング装置において、
前記時間更正手段は、前記時間の更正を、前記タスク毎の制限時間と前記システム時間に対して同時に行うこと
を特徴とするタスクスケジューリング装置。 - 請求項6または7に記載のタスクスケジューリング装置において、
前記時間更正手段は、前記時間の更正を、前記所定の時間として予め定めた時間を減算することにより行うこと
を特徴とするタスクスケジューリング装置。 - 請求項6〜8のいずれかに記載のタスクスケジューリング装置において、
前記時間更正手段における、前記システム時間に対する前記所定の時間と、前記タスクの制限時間に対する前記所定の時間とを同じ値とすること
を特徴とするタスクスケジューリング装置。 - 請求項6〜9のいずれかに記載のタスクスケジューリング装置において、
前記時間更正手段は、前記所定の時間を、前記システム時間と前記各タスクの制限時間との中で最小の値とすること
を特徴とするタスクスケジューリング装置。 - 請求項1〜10のいずれかに記載のタスクスケジューリング装置において、
前記制限時間保持手段に保持されたタスク毎の制限時間と前記システム時間とに基づいてデッドライン違反を検知するデッドライン違反検知手段を備えること
を特徴とするタスクスケジューリング装置。 - 請求項11に記載のタスクスケジューリング装置において、
前記デッドライン違反検知手段は、前記制限時間保持手段に保持されたタスクの制限時間がシステム時間より小さくなった場合にデッドライン違反であると判定すること
を特徴とするタスクスケジューリング装置。 - タスク毎の制限時間に基づいてスケジューリングを行うスケジューリング方法において、
タスクの起動要求があった場合、当該タスクの制限時間を、時間の経過に伴ってカウントされるシステム時間と予め設定された当該タスクのデッドラインまでの余裕時間の初期値とを加算した値とすること
を特徴とするタスクスケジューリング方法。 - 請求項1〜12のいずれかに記載のタスクスケジューリング装置の機能をコンピュータに実現させるためのプログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002227433A JP2004070579A (ja) | 2002-08-05 | 2002-08-05 | タスクスケジューリング装置、タスクスケジューリング方法、プログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002227433A JP2004070579A (ja) | 2002-08-05 | 2002-08-05 | タスクスケジューリング装置、タスクスケジューリング方法、プログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2004070579A true JP2004070579A (ja) | 2004-03-04 |
Family
ID=32014471
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002227433A Pending JP2004070579A (ja) | 2002-08-05 | 2002-08-05 | タスクスケジューリング装置、タスクスケジューリング方法、プログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2004070579A (ja) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008033896A (ja) * | 2006-07-04 | 2008-02-14 | Canon Inc | バスシステム |
US7420115B2 (en) | 2004-12-28 | 2008-09-02 | Yamaha Corporation | Memory access controller for musical sound generating system |
CN103365711A (zh) * | 2013-07-03 | 2013-10-23 | 南京邮电大学 | 应用于物联网业务平台的任务调度机制和方法 |
JP2014225137A (ja) * | 2013-05-16 | 2014-12-04 | 株式会社デンソー | タスクスケジューラ,マイクロプロセッサ及びタスクスケジューリング方法 |
KR101752807B1 (ko) * | 2009-06-16 | 2017-06-30 | 어플라이드 머티어리얼스, 인코포레이티드 | 카운터 및 타이머 제약들 |
-
2002
- 2002-08-05 JP JP2002227433A patent/JP2004070579A/ja active Pending
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7420115B2 (en) | 2004-12-28 | 2008-09-02 | Yamaha Corporation | Memory access controller for musical sound generating system |
JP2008033896A (ja) * | 2006-07-04 | 2008-02-14 | Canon Inc | バスシステム |
KR101752807B1 (ko) * | 2009-06-16 | 2017-06-30 | 어플라이드 머티어리얼스, 인코포레이티드 | 카운터 및 타이머 제약들 |
JP2014225137A (ja) * | 2013-05-16 | 2014-12-04 | 株式会社デンソー | タスクスケジューラ,マイクロプロセッサ及びタスクスケジューリング方法 |
US9274833B2 (en) | 2013-05-16 | 2016-03-01 | Denso Corporation | Task scheduler, microprocessor, and task scheduling method |
CN103365711A (zh) * | 2013-07-03 | 2013-10-23 | 南京邮电大学 | 应用于物联网业务平台的任务调度机制和方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9870369B2 (en) | Distributed resource contention detection and handling | |
JP4870047B2 (ja) | エラーハンドリング及びファームウェア更新を調停するための方法及びシステム | |
Stanovich et al. | Defects of the POSIX sporadic server and how to correct them | |
US8229961B2 (en) | Management of latency and throughput in a cluster file system | |
US9009714B2 (en) | Method, medium and apparatus scheduling tasks in a real time operating system | |
JPWO2009150815A1 (ja) | マルチプロセッサシステム | |
US20130125131A1 (en) | Multi-core processor system, thread control method, and computer product | |
JP2004070579A (ja) | タスクスケジューリング装置、タスクスケジューリング方法、プログラム | |
JP2007164421A (ja) | 並列処理装置及び並列処理方法及び並列処理プログラム | |
US20020124043A1 (en) | Method of and system for withdrawing budget from a blocking task | |
JP7335502B2 (ja) | 情報処理システム、情報処理方法および情報処理プログラム | |
JP2007280253A (ja) | 情報処理装置及び情報処理方法 | |
JP2005149312A (ja) | タスク管理システム | |
JPH03147157A (ja) | 情報処理装置 | |
JP2007323256A (ja) | 割込制御方法および情報処理装置 | |
US7793295B2 (en) | Setting bandwidth limiter and adjusting execution cycle of second device using one of the GBL classes selected based on priority of task from first device | |
Lee et al. | Interrupt handler migration and direct interrupt scheduling for rapid scheduling of interrupt-driven tasks | |
CN114706671B (zh) | 一种多处理器调度优化方法与系统 | |
CN113381941B (zh) | 一种任务调度方法、装置、电子设备和计算机存储介质 | |
WO2000050991A2 (en) | Method and apparatus for scheduling program code in a computer system | |
CN108475197B (zh) | 用于嵌套抢占的高速缓存结构 | |
JP3043265B2 (ja) | タイマー制御方法 | |
WO2021175431A1 (en) | System and method for handling kernel level events | |
JPS6236262B2 (ja) | ||
JP2007128396A (ja) | 割込制御方法および情報処理装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20040826 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20061114 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20061128 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20070327 |