説明

時刻補正方法

【課題】マルチタスクシステムにおいて、他のタスクへのプロセッサ割当時間に影響を与えることなくシステム時刻を補正する技術を提供する。
【解決手段】 基準時刻を取得するステップと、取得された基準時刻とシステム時刻との時刻差を算出するステップと、周期的に実行される時刻補正タスクによって、算出された時刻差に基づいて、システム時刻を補正するステップとを含む方法によって時刻補正を行う。この際、算出された時刻差が、時刻補正タスクの1回の実行に割当てられるプロセッサ割当て時間より小さい値としてあらかじめ定められた最大補正量より大きい場合には、時刻補正タスクは、複数回の実行によってシステム時刻を補正し、1回の実行に係る時刻補正量を最大補正量以内とする。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、マルチタスクシステムにおける時刻補正方法に関する。
【背景技術】
【0002】
複数のコンピュータがネットワークを介して協調動作しているコンピュータシステムにおいては、各コンピュータが有する時刻機能(時計)を同期させることが重要である。
【0003】
時刻同期の方法として、NTP(Network Time Protocol)サーバとの通信による標準時刻合わせ、GPS(Global Positioning System)衛星電波を受信することによる標準時刻合わせ、標準時刻電波を受信することによる標準時刻合わせ、時刻配信サービスによる標準時刻合わせが知られている(特許文献1)。
【0004】
また、動画や音声などのリアルタイム情報を処理する装置では、これらの情報を処理するタスクやその他のタスクを並列的に実行しつつ、各タスクを要求された時間内に完了する必要がある。このようなマルチタスクシステムでは、各タスクの所要リソース量(プロセッサ使用時間、メモリ使用量など)を考慮して各タスクの優先度や実行順序などを決定することによって、各タスクが要求時間内に終了することを保証している(特許文献2)。
【特許文献1】特開2004−152120号公報
【特許文献2】特開2003−280929号公報
【発明の開示】
【発明が解決しようとする課題】
【0005】
しかしながら、上記のようなマルチタスクシステムにおいて時刻補正を行う場合、以下のような問題が生じていた。すなわち、システム時刻を補正することにより、タスクへのプロセッサ割当時間にずれが生じ、その結果、タスクが実行されなかったり、タスクの実行が要求時間内に完了されなかったりする可能性がある。
【0006】
例えば、図7(a)のように、タスク1およびタスク2が周期的に実行されるようにスケジューリングされていたときに、時刻t1において時刻補正を行い、システム時刻がt2に補正されたとする。この場合、図7(b)に示すように、時刻補正前の時刻t1および時刻t2の間の時刻txで割当てられるはずだったタスク1へのプロセッサ時間の割当が行われなくなってしまうという問題が生じる。
【0007】
本発明は上記実情に鑑みてなされたものであって、その目的とするところは、マルチタスクシステムにおいて他のタスクへのプロセッサ割当時間に影響を与えることなく時刻を補正する技術を提供することにある。
【課題を解決するための手段】
【0008】
上記目的を達成するために本発明は以下のような構成をとる。
【0009】
本発明に係る時刻補正方法は、マルチタスクシステムにおける時刻補正方法であって、基準時刻を取得するステップと、取得された基準時刻とシステム時刻との時刻差を算出するステップと、周期的に実行される時刻補正タスクによって、算出された時刻差に基づいて、システム時刻を補正するステップとを含み、算出された時刻差が、時刻補正タスクの1回の実行に割当てられるプロセッサ割当て時間より小さい値としてあらかじめ定められ
た最大補正量より大きい場合には、時刻補正タスクは、複数回の実行によってシステム時刻を補正し、1回の実行に係る時刻補正量を最大補正量以内とすることを特徴とする。
【0010】
マルチタスクシステムでは、タスクスケジューラが、複数の処理(タスク)に対して短い単位に分割したプロセッサの処理時間を順次割当てて、複数の処理を並列的に実行する。タスクスケジューラは、タスクのスケジュール管理において、各タスクの終了時刻が要求された時間内に収まるように管理している。
【0011】
基準時刻は、時刻補正の基準となる時刻であり、マルチタスクシステムが有するシステム時刻は基準時刻と同期される。基準時刻は、UTC(Coordinated Universal Time:協定世界時)などの正確な時刻であることが好ましいが、これに限られるものではない。
【0012】
時刻補正タスクは周期的に実行され、それぞれの実行に対して所定のプロセッサ割当て時間がタスクスケジューラによって割当てられる。時刻補正タスクは、周期的な実行の各回において、基準時刻とシステム時刻にずれがある場合は、システム時刻の補正を行う。
【0013】
その際、1回の実行において行う補正の量には上限値が設けられる。この最大補正量となる上限値は、時刻補正タスクに割当てられるプロセッサ割当時間より小さい値である。時刻補正タスクは、1回の実行において、この最大補正量の範囲内で、システム時刻を進めたり遅らせたりする補正をする。
【0014】
したがって、基準時刻とシステム時刻との時刻差が、上述の最大補正量よりも大きい場合には、時刻補正タスクの1回の実行で行う補正量を最大補正量以内として、複数回の実行に分けて最大補正量ずつ基準時刻に合わせていく。
【0015】
なお、最大補正量は、時刻補正タスクに割当てられたプロセッサ割当て時間から、時刻補正タスクが行う処理に要する時間を引いたものであることが好ましい。
【0016】
このように、本発明に係る時刻補正方法は、時刻補正タスクに割当てられるプロセッサ割当時間より短い時間を一度の補正で用いる最大補正量とし、システム時刻を徐々に補正する構成をとることによって、他のタスクへのプロセッサ割当時間に影響を与えることなくシステム時刻を補正することが可能となる。すなわち、本発明に係る時刻補正方法では、補正後のシステム時刻が時刻補正タスクに割当てられたプロセッサ割当時間を超えることがないため、他のタスクについてのプロセッサ割当時間に影響を与えることがない。したがって、時刻補正があっても、タスクスケジューラのスケジューリングどおり各タスクを実行することが可能となる。
【0017】
本発明における時刻補正タスクは、最も高い優先度で実行されることが好ましい。また、本発明における時刻補正タスクは、プリエンプトされない長さのプロセッサ割当時間を割当てられて実行されることも好ましい。このようにすることで、時刻補正タスクは、実行中に他のタスクにプリエンプトされることなく処理を実行することができる。したがって、時刻補正中に他のタスクが実行されることによって生じ得る不整合を防止することができる。
【0018】
また、本発明における時刻補正タスクは、システム時刻を遅らせる補正を行い、時刻補正タスクの開始時刻よりも前の時刻にシステム時刻を補正した場合には、時刻補正タスクの開始時刻が経過するのを待つことが好ましい。このようにすることで、システム時刻が戻されることで同じ時刻が2回カウントされてしまい同じタスクが2度実行されることを防止することができる。
【0019】
基準時刻を取得するステップでは、ネットワークを介して接続された他の情報処理装置から基準時刻が取得されても良い。また、GPS衛星電波や基準時刻電波を受信することによって基準時刻が取得されても良い。また、バスを介して接続された、時刻補正の対象とするタイマと異なる基準タイマから基準時刻が取得されても良い。基準時刻は、その他どのような方法で取得されても良い。
【発明の効果】
【0020】
本発明によれば、マルチタスクシステムにおいて他のタスクへのプロセッサ割当時間に影響を与えることなく時刻を補正することが可能となる。
【発明を実施するための最良の形態】
【0021】
以下に図面を参照して、この発明の好適な実施の形態を例示的に詳しく説明する。
【0022】
<システム構成>
図1は本発明の一実施形態に係るマルチタスクシステムの構成を示す概略図である。マルチタスクシステム1は、中央演算処理装置(CPU)2、タイマ3、ハードディスク装置などの補助記憶装置4、読み書き可能メモリ(RAM)などのメモリ5、およびネットワーク制御部6を有する。これらのそれぞれの要素は、バスを介して互いに接続されている。
【0023】
タイマ3は、マルチタスクシステムにおける現在時刻(システム時刻)を刻むものである。後述するタスクスケジューラはこのタイマ3のシステム時刻に基づいてタスクの実行等を管理する。
【0024】
補助記憶装置4には、タスクスケジューラや、後述する時刻補正タスクと基準時刻取得タスクとを含む複数のタスクのプログラムが格納されている。これらのソフトウェアは、補助記憶装置4からメモリ5に、必要に応じて適宜読み出され、CPU2によって実行される。メモリ5には、その他に、タスクスケジューラが複数のタスクを管理するために、これら各タスクの実行順序や優先度などの情報を格納しておくためのタスク管理テーブルが格納される。
【0025】
ネットワーク制御部6は、ネットワーク10に接続されている。マルチタスクシステム1は、ネットワーク制御部6を介して、他のコンピュータと通信することが可能である。
【0026】
図2は、マルチタスクシステム1上で実行されるプログラムの相互関連を示す図である。
【0027】
タスクスケジューラ7は、基準時刻取得タスク8と時刻補正タスク9の実行を管理する。その他、要求された時間内に処理を完了する必要があるタスク11a,b,cの実行も管理する。これら各タスクは、タスクスケジューラ7によって、周期的に実行される。
【0028】
タスクスケジューラ7のタスク管理は、各タスクの実行周期が短いものほど優先度が高く設定されるRate Monotonic法(RM法)に基づいて管理される。ただし、タスクスケジューラ7のタスク管理方法は、これ以外に、デッドラインが早いタスクに高い優先度を設定するEarliest Deadline First法(EDF法)や、各タスクの実行周期とデッドラインとに基づいて優先度を設定するDeadline
Monotonic法(DM法)や、その他の方法であっても良い。
【0029】
タスクスケジューラ7は、時刻補正タスク9がプリエンプトされないように、最も優先
度の高いタスクとしたり、割当てるCPU時間をプリエンプトされないような短い時間にしておく。時刻補正タスク9が実行中にプリエンプトされて他のタスクが実行されると、処理に不整合が起きる場合があり、これを回避するためである。
【0030】
基準時刻取得タスク8は、ネットワーク制御部6を介してネットワーク10に接続されているNTPサーバから基準時刻を取得する。
【0031】
時刻補正タスク9は、基準時刻取得タスク8が取得した基準時刻とタイマ3が刻むシステム時刻の差に基づいて、タイマ3の時刻を補正する。
【0032】
時刻補正タスク9は、他のタスクと同様、タスクスケジューラ7によって所定のプロセッサ割当時間が割当てられて実行される。時刻補正タスク9は、プロセッサ割当時間よりも小さい値を、1回の実行で行う時刻補正の最大量とする。より具体的には、最大補正量と時刻補正タスク9の処理に必要なプロセッサ使用時間とを合計した時間が、時刻補正タスク9に割当てられたプロセッサ割当時間内になるように、最大補正量を決定する。
【0033】
<時刻補正処理>
時刻補正処理の処理内容について、図を用いて詳細に説明する。
【0034】
図3は、基準時刻取得タスク8の処理の流れを示すフローチャートである。
【0035】
ステップS101で、基準時刻取得タスク8は、基準時刻を読み込む。基準時刻は、ネットワーク制御部6を介して、ネットワーク10に接続されたNTPサーバから取得される。
【0036】
ステップS102で、タイマ3から、システム時刻を読み込む。ステップS103で、取得した基準時刻とシステム時刻の時刻差を求める。ステップS104で、この時刻差をメモリ5に格納する。本実施形態では、時刻差は、(基準時刻)−(システム時刻)の値とし、システム時刻が基準時刻より遅れている場合は正の値をとり、システム時刻が基準時刻より進んでいる場合は負の値をとるものとする。もっとも、時刻差は、システム時刻と基準時刻の差の絶対値と、システム時刻が基準時刻に対して進んでいるか遅れているかをあらわすフラグとで管理されても良い。
【0037】
このように、基準時刻取得タスク8が、システム時刻と基準時刻の時刻差を求めメモリ5に格納することで、時刻補正タスク9は、格納された時刻差に基づいてシステム時刻を補正することが可能となる。
【0038】
図4は、時刻補正タスク9の処理の流れを示すフローチャートである。時刻補正タスク9は処理開始時(ステップS201)に、その時のシステム時刻を自タスクの開始時刻として取得する。
【0039】
ステップS202で、メモリ5に格納された時刻差と、上述した最大補正量とを比較する。
【0040】
時刻差の絶対値が最大補正量以下であれば、ステップS203へ進み、時刻補正量をこの時刻差とする。そして、ステップS204で、次に補正すべき時刻差を0とする。すなわち、一回の補正により基準時刻と同期するので、補正後の時刻差は0となる。
【0041】
ステップS202で、メモリ5に格納された時刻差が最大補正量よりも大きい場合には、ステップS205へ進み、時刻補正量として最大補正量を使用する。より詳細には、時
刻補正量として、最大補正量に時刻差の符号(正負)を掛けたものを使用する。そして、ステップS206で、補正後の時刻差を、今回の時刻差から算出した時刻補正量を引いたものとする。
【0042】
なお、ステップS204およびステップS206において新たに算出した時刻差はメモリ5に格納される。時刻補正タスク9の次回以降の実行においては、メモリ5に格納された時刻差に基づいて時刻補正を行うことが可能となる。
【0043】
ステップS207で、時刻補正タスク9はシステム時刻の補正を行う。すなわち、システム時刻を、現在のシステム時刻に時刻補正量を足したものとする。
【0044】
ここで、時刻補正の最大補正量は、時刻補正タスク9に割当てられたプロセッサ割当時間よりも小さい値なので、補正後のシステム時刻はタスクスケジューラ7が時刻補正タスク9に割当てたプロセッサ割当時間を越えることがなく、他のタスクへのプロセッサ割り当て時間に影響を与えることがない。
【0045】
ステップS207で時刻を遅らせる(戻す)補正を行った場合は、ステップS208において、補正後のシステム時刻が、時刻補正タスク9の開始時刻を超えるまで待機する。すなわち、補正後のシステム時刻が、ステップS201で取得した時刻補正タスク9の開始時刻を超えるまで待つ。これにより、同じ時刻が2回カウントされてしまって、同じタスクが2度実行されることを回避することができる。
【0046】
<実施形態の作用・効果>
本実施形態における時刻補正方法を用いてシステム時刻を補正した場合の効果を図を用いて説明する。図5(a)は、時刻補正前にタスクスケジューラ7によって管理されているタスクのスケジュールである。タスク1、タスク2および時刻補正タスク9が周期的に実行されるようスケジューリングされている。
【0047】
システム時刻は、t2−t1で表される時間だけ基準時刻よりも遅れており、これを本実施形態における時刻補正方法を用いて補正した図が図5(b)である。時刻補正タスク9は、基準時刻とシステム時刻の差を一度に補正せずに、最大補正量ずつ補正していく。すなわち、時刻補正タスク9は、まず時刻taにおいて、システム時刻をta’へと補正する。そして、次の実行時に、時刻tbにおいて時刻tb’へと補正する。それぞれの補正において、補正後のシステム時刻は、時刻補正タスク9へ割当てられたプロセッサ時間内に収まる。これにより、他のタスクへのプロセッサ割当時間に影響を与えることがなく、したがって、タスクスケジューラ7が保証するタスク1,2の処理終了時刻にも影響を与えることがない。
【0048】
また、時刻補正タスク9がシステム時刻を遅らせる場合も、上述したように時刻補正タスク9の開始時刻まで待って処理を終了するため、同一時刻が2重にカウントされて同一タスクが2回実行されることを防ぐことができる。
【0049】
また、時刻補正タスク9は、システム時刻を補正した後の、基準時刻とシステム時刻の差をメモリ5に格納するため、時刻補正タスク9が再度実行される際に基準時刻取得タスクを実行することなく、時刻補正タスク9の実行が可能である。すなわち、基準時刻取得タスク8と時刻補正タスク9の実行の頻度を等しくする必要はない。
【0050】
<変形例>
本実施形態において、基準時刻取得タスク8は、ネットワーク制御部6を介してネットワーク10に接続されたNTPサーバから基準時刻を取得しているが、基準時刻取得タス
ク8は基準時刻をどのように取得しても良い。例えば、マルチタスクシステム1に電波受信部を設け、基準時刻取得タスク8はこの電波受信部によって、GPS衛星電波や基準時刻電波を受信しても良い。
【0051】
また、本発明に係る時刻補正方法は、図6に示すような複数のプロセッサおよびタイマを有するシステムにおいても適用可能である。CPU2a,2b,2cはそれぞれOSを実行しており、各OSのシステム時刻は、各CPUに接続されたタイマ3a,3b,3cによって決定されている。この場合、CPU2bおよび2cによって実行される各OSは、タイマ2b、2cのシステム時刻を補正する際に、CPU2aに接続されたタイマ3aの時刻を取得し、基準時刻として使用しても良い。このようにすることで、タイマ3b、3cの時刻を、タイマ3aと同期することが可能となる。
【0052】
この際、タイマ3aは別途、NTPサーバ等を利用して標準時刻と同期させることも好ましい。このような構成では、全てのCPUが標準時刻を取得することなく、全てのタイマを標準時刻に同期させることが可能となる。
【図面の簡単な説明】
【0053】
【図1】本実施形態におけるマルチタスクシステムの構成を示す図である。
【図2】本実施形態におけるマルチタスクシステムで実行されるプログラムの関連を示す図である。
【図3】本実施形態における基準時刻取得タスクの処理の流れを示すフローチャートである。
【図4】本実施形態における時刻補正タスクの処理の流れを示すフローチャートである。
【図5】本実施形態に係る時刻補正方法を適用したときのタスクスケジューリングに与える影響を示す図である。
【図6】他の実施形態におけるマルチタスクシステムの構成を示す図である。
【図7】従来の時刻補正方法を適用したときのタスクスケジューリングに与える影響を示す図である。
【符号の説明】
【0054】
1 マルチタスクシステム
2,2a,2b,2c CPU
3,3a,3b,3c タイマ
4 補助記憶装置
5 メモリ
6 ネットワーク制御部
7 タスクスケジューラ
8 基準時刻取得タスク
9 時刻補正タスク
10 ネットワーク
11a,11b,11c タスク

【特許請求の範囲】
【請求項1】
マルチタスクシステムにおける時刻補正方法であって、
基準時刻を取得するステップと、
取得された基準時刻とシステム時刻との時刻差を算出するステップと、
周期的に実行される時刻補正タスクによって、算出された時刻差に基づいて、システム時刻を補正するステップと、
を含み、
前記算出された時刻差が、前記時刻補正タスクの1回の実行に割当てられるプロセッサ割当時間より小さい値としてあらかじめ定められた最大補正量より大きい場合には、前記時刻補正タスクは、複数回の実行によってシステム時刻を補正し、1回の実行に係る時刻補正量を前記最大補正量以内とする
ことを特徴とする時刻補正方法。
【請求項2】
前記時刻補正タスクは、最も高い優先度で実行される
ことを特徴とする請求項1に記載の時刻補正方法。
【請求項3】
前記時刻補正タスクは、プリエンプトされない長さのプロセッサ割当時間を割当てられて実行される
ことを特徴とする請求項1又は2に記載の時刻補正方法。
【請求項4】
前記基準時刻を取得するステップでは、ネットワークを介して接続された他の情報処理装置から基準時刻が取得される
ことを特徴とする請求項1〜3のいずれかに記載の時刻補正方法。
【請求項5】
前記基準時刻を取得するステップでは、バスを介して接続された、時刻補正の対象とするタイマと異なる基準タイマから基準時刻が取得される
ことを特徴とする請求項1〜3のいずれかに記載の時刻補正方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate


【公開番号】特開2006−349364(P2006−349364A)
【公開日】平成18年12月28日(2006.12.28)
【国際特許分類】
【出願番号】特願2005−172393(P2005−172393)
【出願日】平成17年6月13日(2005.6.13)
【出願人】(502087460)株式会社トヨタIT開発センター (232)
【出願人】(000003207)トヨタ自動車株式会社 (59,920)
【Fターム(参考)】