(57)【要約】【課題】マルチタスクシステムにおいて、他のタスクへのプロセッサ割当時間に影響を与えることなくシステム時刻を補正する技術を提供する。【解決手段】  基準時刻を取得するステップと、取得された基準時刻とシステム時刻との時刻差を算出するステップと、周期的に実行される時刻補正タスクによって、算出された時刻差に基づいて、システム時刻を補正するステップとを含む方法によって時刻補正を行う。この際、算出された時刻差が、時刻補正タスクの１回の実行に割当てられるプロセッサ割当て時間より小さい値としてあらかじめ定められた最大補正量より大きい場合には、時刻補正タスクは、複数回の実行によってシステム時刻を補正し、１回の実行に係る時刻補正量を最大補正量以内とする。【選択図】  図４
2006349364.tif 000002
【特許請求の範囲】
【請求項１】
マルチタスクシステムにおける時刻補正方法であって、
基準時刻を取得するステップと、
取得された基準時刻とシステム時刻との時刻差を算出するステップと、
周期的に実行される時刻補正タスクによって、算出された時刻差に基づいて、システム時刻を補正するステップと、
を含み、
前記算出された時刻差が、前記時刻補正タスクの１回の実行に割当てられるプロセッサ割当時間より小さい値としてあらかじめ定められた最大補正量より大きい場合には、前記時刻補正タスクは、複数回の実行によってシステム時刻を補正し、１回の実行に係る時刻補正量を前記最大補正量以内とする
ことを特徴とする時刻補正方法。
【請求項２】
前記時刻補正タスクは、最も高い優先度で実行される
ことを特徴とする請求項１に記載の時刻補正方法。
【請求項３】
前記時刻補正タスクは、プリエンプトされない長さのプロセッサ割当時間を割当てられて実行される
ことを特徴とする請求項１又は２に記載の時刻補正方法。
【請求項４】
前記基準時刻を取得するステップでは、ネットワークを介して接続された他の情報処理装置から基準時刻が取得される
ことを特徴とする請求項１〜３のいずれかに記載の時刻補正方法。
【請求項５】
前記基準時刻を取得するステップでは、バスを介して接続された、時刻補正の対象とするタイマと異なる基準タイマから基準時刻が取得される
ことを特徴とする請求項１〜３のいずれかに記載の時刻補正方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マルチタスクシステムにおける時刻補正方法に関する。
【背景技術】
【０００２】
複数のコンピュータがネットワークを介して協調動作しているコンピュータシステムにおいては、各コンピュータが有する時刻機能（時計）を同期させることが重要である。
【０００３】
時刻同期の方法として、ＮＴＰ（Ｎｅｔｗｏｒｋ  Ｔｉｍｅ  Ｐｒｏｔｏｃｏｌ）サーバとの通信による標準時刻合わせ、ＧＰＳ（Ｇｌｏｂａｌ  Ｐｏｓｉｔｉｏｎｉｎｇ  Ｓｙｓｔｅｍ）衛星電波を受信することによる標準時刻合わせ、標準時刻電波を受信することによる標準時刻合わせ、時刻配信サービスによる標準時刻合わせが知られている（特許文献１）。
【０００４】
また、動画や音声などのリアルタイム情報を処理する装置では、これらの情報を処理するタスクやその他のタスクを並列的に実行しつつ、各タスクを要求された時間内に完了する必要がある。このようなマルチタスクシステムでは、各タスクの所要リソース量（プロセッサ使用時間、メモリ使用量など）を考慮して各タスクの優先度や実行順序などを決定することによって、各タスクが要求時間内に終了することを保証している（特許文献２）。
【特許文献１】特開２００４−１５２１２０号公報
【特許文献２】特開２００３−２８０９２９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、上記のようなマルチタスクシステムにおいて時刻補正を行う場合、以下のような問題が生じていた。すなわち、システム時刻を補正することにより、タスクへのプロセッサ割当時間にずれが生じ、その結果、タスクが実行されなかったり、タスクの実行が要求時間内に完了されなかったりする可能性がある。
【０００６】
例えば、図７（ａ）のように、タスク１およびタスク２が周期的に実行されるようにスケジューリングされていたときに、時刻ｔ１において時刻補正を行い、システム時刻がｔ２に補正されたとする。この場合、図７（ｂ）に示すように、時刻補正前の時刻ｔ１および時刻ｔ２の間の時刻ｔｘで割当てられるはずだったタスク１へのプロセッサ時間の割当が行われなくなってしまうという問題が生じる。
【０００７】
本発明は上記実情に鑑みてなされたものであって、その目的とするところは、マルチタスクシステムにおいて他のタスクへのプロセッサ割当時間に影響を与えることなく時刻を補正する技術を提供することにある。
【課題を解決するための手段】
【０００８】
上記目的を達成するために本発明は以下のような構成をとる。
【０００９】
本発明に係る時刻補正方法は、マルチタスクシステムにおける時刻補正方法であって、基準時刻を取得するステップと、取得された基準時刻とシステム時刻との時刻差を算出するステップと、周期的に実行される時刻補正タスクによって、算出された時刻差に基づいて、システム時刻を補正するステップとを含み、算出された時刻差が、時刻補正タスクの１回の実行に割当てられるプロセッサ割当て時間より小さい値としてあらかじめ定められ
た最大補正量より大きい場合には、時刻補正タスクは、複数回の実行によってシステム時刻を補正し、１回の実行に係る時刻補正量を最大補正量以内とすることを特徴とする。
【００１０】
マルチタスクシステムでは、タスクスケジューラが、複数の処理（タスク）に対して短い単位に分割したプロセッサの処理時間を順次割当てて、複数の処理を並列的に実行する。タスクスケジューラは、タスクのスケジュール管理において、各タスクの終了時刻が要求された時間内に収まるように管理している。
【００１１】
基準時刻は、時刻補正の基準となる時刻であり、マルチタスクシステムが有するシステム時刻は基準時刻と同期される。基準時刻は、ＵＴＣ（Ｃｏｏｒｄｉｎａｔｅｄ  Ｕｎｉｖｅｒｓａｌ  Ｔｉｍｅ：協定世界時）などの正確な時刻であることが好ましいが、これに限られるものではない。
【００１２】
時刻補正タスクは周期的に実行され、それぞれの実行に対して所定のプロセッサ割当て時間がタスクスケジューラによって割当てられる。時刻補正タスクは、周期的な実行の各回において、基準時刻とシステム時刻にずれがある場合は、システム時刻の補正を行う。
【００１３】
その際、１回の実行において行う補正の量には上限値が設けられる。この最大補正量となる上限値は、時刻補正タスクに割当てられるプロセッサ割当時間より小さい値である。時刻補正タスクは、１回の実行において、この最大補正量の範囲内で、システム時刻を進めたり遅らせたりする補正をする。
【００１４】
したがって、基準時刻とシステム時刻との時刻差が、上述の最大補正量よりも大きい場合には、時刻補正タスクの１回の実行で行う補正量を最大補正量以内として、複数回の実行に分けて最大補正量ずつ基準時刻に合わせていく。
【００１５】
なお、最大補正量は、時刻補正タスクに割当てられたプロセッサ割当て時間から、時刻補正タスクが行う処理に要する時間を引いたものであることが好ましい。
【００１６】
このように、本発明に係る時刻補正方法は、時刻補正タスクに割当てられるプロセッサ割当時間より短い時間を一度の補正で用いる最大補正量とし、システム時刻を徐々に補正する構成をとることによって、他のタスクへのプロセッサ割当時間に影響を与えることなくシステム時刻を補正することが可能となる。すなわち、本発明に係る時刻補正方法では、補正後のシステム時刻が時刻補正タスクに割当てられたプロセッサ割当時間を超えることがないため、他のタスクについてのプロセッサ割当時間に影響を与えることがない。したがって、時刻補正があっても、タスクスケジューラのスケジューリングどおり各タスクを実行することが可能となる。
【００１７】
本発明における時刻補正タスクは、最も高い優先度で実行されることが好ましい。また、本発明における時刻補正タスクは、プリエンプトされない長さのプロセッサ割当時間を割当てられて実行されることも好ましい。このようにすることで、時刻補正タスクは、実行中に他のタスクにプリエンプトされることなく処理を実行することができる。したがって、時刻補正中に他のタスクが実行されることによって生じ得る不整合を防止することができる。
【００１８】
また、本発明における時刻補正タスクは、システム時刻を遅らせる補正を行い、時刻補正タスクの開始時刻よりも前の時刻にシステム時刻を補正した場合には、時刻補正タスクの開始時刻が経過するのを待つことが好ましい。このようにすることで、システム時刻が戻されることで同じ時刻が２回カウントされてしまい同じタスクが２度実行されることを防止することができる。
【００１９】
基準時刻を取得するステップでは、ネットワークを介して接続された他の情報処理装置から基準時刻が取得されても良い。また、ＧＰＳ衛星電波や基準時刻電波を受信することによって基準時刻が取得されても良い。また、バスを介して接続された、時刻補正の対象とするタイマと異なる基準タイマから基準時刻が取得されても良い。基準時刻は、その他どのような方法で取得されても良い。
【発明の効果】
【００２０】
本発明によれば、マルチタスクシステムにおいて他のタスクへのプロセッサ割当時間に影響を与えることなく時刻を補正することが可能となる。
【発明を実施するための最良の形態】
【００２１】
以下に図面を参照して、この発明の好適な実施の形態を例示的に詳しく説明する。
【００２２】
＜システム構成＞
図１は本発明の一実施形態に係るマルチタスクシステムの構成を示す概略図である。マルチタスクシステム１は、中央演算処理装置（ＣＰＵ）２、タイマ３、ハードディスク装置などの補助記憶装置４、読み書き可能メモリ（ＲＡＭ）などのメモリ５、およびネットワーク制御部６を有する。これらのそれぞれの要素は、バスを介して互いに接続されている。
【００２３】
タイマ３は、マルチタスクシステムにおける現在時刻（システム時刻）を刻むものである。後述するタスクスケジューラはこのタイマ３のシステム時刻に基づいてタスクの実行等を管理する。
【００２４】
補助記憶装置４には、タスクスケジューラや、後述する時刻補正タスクと基準時刻取得タスクとを含む複数のタスクのプログラムが格納されている。これらのソフトウェアは、補助記憶装置４からメモリ５に、必要に応じて適宜読み出され、ＣＰＵ２によって実行される。メモリ５には、その他に、タスクスケジューラが複数のタスクを管理するために、これら各タスクの実行順序や優先度などの情報を格納しておくためのタスク管理テーブルが格納される。
【００２５】
ネットワーク制御部６は、ネットワーク１０に接続されている。マルチタスクシステム１は、ネットワーク制御部６を介して、他のコンピュータと通信することが可能である。
【００２６】
図２は、マルチタスクシステム１上で実行されるプログラムの相互関連を示す図である。
【００２７】
タスクスケジューラ７は、基準時刻取得タスク８と時刻補正タスク９の実行を管理する。その他、要求された時間内に処理を完了する必要があるタスク１１ａ，ｂ，ｃの実行も管理する。これら各タスクは、タスクスケジューラ７によって、周期的に実行される。
【００２８】
タスクスケジューラ７のタスク管理は、各タスクの実行周期が短いものほど優先度が高く設定されるＲａｔｅ  Ｍｏｎｏｔｏｎｉｃ法（ＲＭ法）に基づいて管理される。ただし、タスクスケジューラ７のタスク管理方法は、これ以外に、デッドラインが早いタスクに高い優先度を設定するＥａｒｌｉｅｓｔ  Ｄｅａｄｌｉｎｅ  Ｆｉｒｓｔ法（ＥＤＦ法）や、各タスクの実行周期とデッドラインとに基づいて優先度を設定するＤｅａｄｌｉｎｅ
Ｍｏｎｏｔｏｎｉｃ法（ＤＭ法）や、その他の方法であっても良い。
【００２９】
タスクスケジューラ７は、時刻補正タスク９がプリエンプトされないように、最も優先
度の高いタスクとしたり、割当てるＣＰＵ時間をプリエンプトされないような短い時間にしておく。時刻補正タスク９が実行中にプリエンプトされて他のタスクが実行されると、処理に不整合が起きる場合があり、これを回避するためである。
【００３０】
基準時刻取得タスク８は、ネットワーク制御部６を介してネットワーク１０に接続されているＮＴＰサーバから基準時刻を取得する。
【００３１】
時刻補正タスク９は、基準時刻取得タスク８が取得した基準時刻とタイマ３が刻むシステム時刻の差に基づいて、タイマ３の時刻を補正する。
【００３２】
時刻補正タスク９は、他のタスクと同様、タスクスケジューラ７によって所定のプロセッサ割当時間が割当てられて実行される。時刻補正タスク９は、プロセッサ割当時間よりも小さい値を、１回の実行で行う時刻補正の最大量とする。より具体的には、最大補正量と時刻補正タスク９の処理に必要なプロセッサ使用時間とを合計した時間が、時刻補正タスク９に割当てられたプロセッサ割当時間内になるように、最大補正量を決定する。
【００３３】
＜時刻補正処理＞
時刻補正処理の処理内容について、図を用いて詳細に説明する。
【００３４】
図３は、基準時刻取得タスク８の処理の流れを示すフローチャートである。
【００３５】
ステップＳ１０１で、基準時刻取得タスク８は、基準時刻を読み込む。基準時刻は、ネットワーク制御部６を介して、ネットワーク１０に接続されたＮＴＰサーバから取得される。
【００３６】
ステップＳ１０２で、タイマ３から、システム時刻を読み込む。ステップＳ１０３で、取得した基準時刻とシステム時刻の時刻差を求める。ステップＳ１０４で、この時刻差をメモリ５に格納する。本実施形態では、時刻差は、（基準時刻）−（システム時刻）の値とし、システム時刻が基準時刻より遅れている場合は正の値をとり、システム時刻が基準時刻より進んでいる場合は負の値をとるものとする。もっとも、時刻差は、システム時刻と基準時刻の差の絶対値と、システム時刻が基準時刻に対して進んでいるか遅れているかをあらわすフラグとで管理されても良い。
【００３７】
このように、基準時刻取得タスク８が、システム時刻と基準時刻の時刻差を求めメモリ５に格納することで、時刻補正タスク９は、格納された時刻差に基づいてシステム時刻を補正することが可能となる。
【００３８】
図４は、時刻補正タスク９の処理の流れを示すフローチャートである。時刻補正タスク９は処理開始時（ステップＳ２０１）に、その時のシステム時刻を自タスクの開始時刻として取得する。
【００３９】
ステップＳ２０２で、メモリ５に格納された時刻差と、上述した最大補正量とを比較する。
【００４０】
時刻差の絶対値が最大補正量以下であれば、ステップＳ２０３へ進み、時刻補正量をこの時刻差とする。そして、ステップＳ２０４で、次に補正すべき時刻差を０とする。すなわち、一回の補正により基準時刻と同期するので、補正後の時刻差は０となる。
【００４１】
ステップＳ２０２で、メモリ５に格納された時刻差が最大補正量よりも大きい場合には、ステップＳ２０５へ進み、時刻補正量として最大補正量を使用する。より詳細には、時
刻補正量として、最大補正量に時刻差の符号（正負）を掛けたものを使用する。そして、ステップＳ２０６で、補正後の時刻差を、今回の時刻差から算出した時刻補正量を引いたものとする。
【００４２】
なお、ステップＳ２０４およびステップＳ２０６において新たに算出した時刻差はメモリ５に格納される。時刻補正タスク９の次回以降の実行においては、メモリ５に格納された時刻差に基づいて時刻補正を行うことが可能となる。
【００４３】
ステップＳ２０７で、時刻補正タスク９はシステム時刻の補正を行う。すなわち、システム時刻を、現在のシステム時刻に時刻補正量を足したものとする。
【００４４】
ここで、時刻補正の最大補正量は、時刻補正タスク９に割当てられたプロセッサ割当時間よりも小さい値なので、補正後のシステム時刻はタスクスケジューラ７が時刻補正タスク９に割当てたプロセッサ割当時間を越えることがなく、他のタスクへのプロセッサ割り当て時間に影響を与えることがない。
【００４５】
ステップＳ２０７で時刻を遅らせる（戻す）補正を行った場合は、ステップＳ２０８において、補正後のシステム時刻が、時刻補正タスク９の開始時刻を超えるまで待機する。すなわち、補正後のシステム時刻が、ステップＳ２０１で取得した時刻補正タスク９の開始時刻を超えるまで待つ。これにより、同じ時刻が２回カウントされてしまって、同じタスクが２度実行されることを回避することができる。
【００４６】
＜実施形態の作用・効果＞
本実施形態における時刻補正方法を用いてシステム時刻を補正した場合の効果を図を用いて説明する。図５（ａ）は、時刻補正前にタスクスケジューラ７によって管理されているタスクのスケジュールである。タスク１、タスク２および時刻補正タスク９が周期的に実行されるようスケジューリングされている。
【００４７】
システム時刻は、ｔ２−ｔ１で表される時間だけ基準時刻よりも遅れており、これを本実施形態における時刻補正方法を用いて補正した図が図５（ｂ）である。時刻補正タスク９は、基準時刻とシステム時刻の差を一度に補正せずに、最大補正量ずつ補正していく。すなわち、時刻補正タスク９は、まず時刻ｔａにおいて、システム時刻をｔａ’へと補正する。そして、次の実行時に、時刻ｔｂにおいて時刻ｔｂ’へと補正する。それぞれの補正において、補正後のシステム時刻は、時刻補正タスク９へ割当てられたプロセッサ時間内に収まる。これにより、他のタスクへのプロセッサ割当時間に影響を与えることがなく、したがって、タスクスケジューラ７が保証するタスク１，２の処理終了時刻にも影響を与えることがない。
【００４８】
また、時刻補正タスク９がシステム時刻を遅らせる場合も、上述したように時刻補正タスク９の開始時刻まで待って処理を終了するため、同一時刻が２重にカウントされて同一タスクが２回実行されることを防ぐことができる。
【００４９】
また、時刻補正タスク９は、システム時刻を補正した後の、基準時刻とシステム時刻の差をメモリ５に格納するため、時刻補正タスク９が再度実行される際に基準時刻取得タスクを実行することなく、時刻補正タスク９の実行が可能である。すなわち、基準時刻取得タスク８と時刻補正タスク９の実行の頻度を等しくする必要はない。
【００５０】
＜変形例＞
本実施形態において、基準時刻取得タスク８は、ネットワーク制御部６を介してネットワーク１０に接続されたＮＴＰサーバから基準時刻を取得しているが、基準時刻取得タス
ク８は基準時刻をどのように取得しても良い。例えば、マルチタスクシステム１に電波受信部を設け、基準時刻取得タスク８はこの電波受信部によって、ＧＰＳ衛星電波や基準時刻電波を受信しても良い。
【００５１】
また、本発明に係る時刻補正方法は、図６に示すような複数のプロセッサおよびタイマを有するシステムにおいても適用可能である。ＣＰＵ２ａ，２ｂ，２ｃはそれぞれＯＳを実行しており、各ＯＳのシステム時刻は、各ＣＰＵに接続されたタイマ３ａ，３ｂ，３ｃによって決定されている。この場合、ＣＰＵ２ｂおよび２ｃによって実行される各ＯＳは、タイマ２ｂ、２ｃのシステム時刻を補正する際に、ＣＰＵ２ａに接続されたタイマ３ａの時刻を取得し、基準時刻として使用しても良い。このようにすることで、タイマ３ｂ、３ｃの時刻を、タイマ３ａと同期することが可能となる。
【００５２】
この際、タイマ３ａは別途、ＮＴＰサーバ等を利用して標準時刻と同期させることも好ましい。このような構成では、全てのＣＰＵが標準時刻を取得することなく、全てのタイマを標準時刻に同期させることが可能となる。
【図面の簡単な説明】
【００５３】
【図１】本実施形態におけるマルチタスクシステムの構成を示す図である。
【図２】本実施形態におけるマルチタスクシステムで実行されるプログラムの関連を示す図である。
【図３】本実施形態における基準時刻取得タスクの処理の流れを示すフローチャートである。
【図４】本実施形態における時刻補正タスクの処理の流れを示すフローチャートである。
【図５】本実施形態に係る時刻補正方法を適用したときのタスクスケジューリングに与える影響を示す図である。
【図６】他の実施形態におけるマルチタスクシステムの構成を示す図である。
【図７】従来の時刻補正方法を適用したときのタスクスケジューリングに与える影響を示す図である。
【符号の説明】
【００５４】
１                      マルチタスクシステム
２，２ａ，２ｂ，２ｃ    ＣＰＵ
３，３ａ，３ｂ，３ｃ    タイマ
４                      補助記憶装置
５                      メモリ
６                      ネットワーク制御部
７                      タスクスケジューラ
８                      基準時刻取得タスク
９                      時刻補正タスク
１０                    ネットワーク
１１ａ，１１ｂ，１１ｃ  タスク
【図１】
2006349364.tif 000003
【図２】
2006349364.tif 000004
【図３】
2006349364.tif 000005
【図４】
2006349364.tif 000006
【図５】
2006349364.tif 000007
【図６】
2006349364.tif 000008
【図７】
2006349364.tif 000009