(57)【要約】【課題】メモリにおける占有領域が最小限度であるにもかかわらず、プログラムの暴走を検出することができるプログラム暴走監視装置等を提供すること。【解決手段】ハードウエア２４と、規定順で実行される複数のタスク１等と、タスク１等の暴走を監視する監視プログラム２６と、を有するハードウエア再起動装置２０であって、各タスク１等は、共通メモリ領域２２ａに予め規定した第１時間間隔で第１参照値を入力するように構成されており、監視プログラム２６は、第１時間間隔よりも長い時間として規定される第２時間間隔で共通メモリ領域２２ａの入力値を参照し、入力値が第１参照値であれば、共通メモリ領域２２ａに第２参照値を入力し、入力値が第２参照値であれば、タスク１等が暴走していると判断するように構成されている。【選択図】図２
2007323490.tif 000002
【特許請求の範囲】
【請求項１】
ハードウエアと、
規定順で実行される複数のタスクと、  
前記タスクの暴走を監視する監視プログラムと、
を有するハードウエア再起動装置であって、
各前記タスクは、
共通メモリ領域に予め規定した第１時間間隔で第１参照値を入力するように構成されており、
前記監視プログラムは、
前記第１時間間隔よりも長い時間として規定される第２時間間隔で前記共通メモリ領域の入力値を参照し、
前記入力値が前記第１参照値であれば、前記共通メモリ領域に第２参照値を入力し、
前記入力値が前記第２参照値であれば、前記タスクが暴走していると判断するように構成されていることを特徴とするプログラム暴走監視装置。
【請求項２】
各前記タスクの処理時間は、前記第２時間間隔よりも短い時間として規定されていることを特徴とする請求項１に記載のプログラム暴走監視装置。
【請求項３】
前記監視プログラムは、前記共通メモリの入力値が前記第２参照値であると判断した場合に、前記ハードウエアを再起動するように構成されていることを特徴とする請求項１又は請求項２のいずれかに記載のプログラム暴走監視装置。
【請求項４】
前記監視プログラムは、前記共通メモリの入力値が前記第２参照値であると判断した場合に、前記共通メモリの入力値を削除するように構成されていることを特徴とする請求項３に記載のプログラム暴走監視装置。
【請求項５】
ハードウエアと、規定順で実行される複数のタスクと、前記タスクの暴走を監視する監視プログラムと、を有するハードウエア再起動装置の各前記タスクが、共通メモリ領域に予め規定した第１時間間隔で第１参照値を入力する第１参照値入力ステップと、
前記監視プログラムが、前記第１時間間隔よりも長い時間として規定される第２時間間隔で前記共通メモリ領域の入力値を参照する入力値参照ステップと、
前記監視プログラムが、前記入力値が前記第１参照値であれば、前記共通メモリ領域に第２参照値を入力する第２参照値入力ステップと、
前記監視プログラムが、前記入力値が前記第２参照値であれば、前記タスクが暴走していると判断するタスク暴走判断ステップと、
を有することを特徴とするプログラム暴走監視方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラムが暴走した場合におけるプログラム暴走監視装置及びプログラム暴走監視方法に関するものである。
【背景技術】
【０００２】
従来、プログラムの暴走を検出するためにＷＤＴ（Ｗａｔｃｈ  Ｄｏｇ  Ｔｉｍｅｒ）が使用されている。
そして、ソフトウエアで構成したＷＤＴを被監視プログラムのループ毎に設けて、一定周期毎にそれぞれ別のメモリの値を「１」インクリメントし、メモリの値が所定値を超えたか否かを判別することによって、ハードウェア構成を複雑にせずにプログラムの暴走を検出する技術が提案されている（特許文献１）。
【特許文献１】特開平５−８１０８０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
しかし、上述の技術においては、被監視プログラム毎にＷＤＴを設ける必要があるため
ＷＤＴのプログラムサイズが大きくなり、特に、携帯電話等の小型機器においては、通信機能等を実現するためのプログラムの格納領域が不十分になる場合があるという問題がある。
【０００４】
そこで、本発明は、メモリにおける占有領域が最小限度であるにもかかわらず、プログラムの暴走を検出することができるプログラム暴走監視装置及びプログラム暴走監視方法を提供することを目的とする。
【課題を解決するための手段】
【０００５】
前記目的は、第１の発明によれば、ハードウエアと、規定順で実行される複数のタスクと、前記タスクの暴走を監視する監視プログラムと、を有するハードウエア再起動装置であって、各前記タスクは、共通メモリ領域に予め規定した第１時間間隔で第１参照値を入力するように構成されており、前記監視プログラムは、前記第１時間間隔よりも長い時間として規定される第２時間間隔で前記共通メモリ領域の入力値を参照し、前記入力値が前記第１参照値であれば、前記共通メモリ領域に第２参照値を入力し、前記入力値が前記第２参照値であれば、前記タスクが暴走していると判断するように構成されていることを特徴とするプログラム暴走監視装置により達成される。
【０００６】
第１の発明の構成によれば、各前記タスクは、前記共通メモリ領域に前記第１時間間隔で第１参照値を入力する。
一方、前記監視プログラムは、前記第２時間間隔で前記入力値を参照する。
ここで、前記第２時間間隔は、前記第１時間間隔よりも長い時間として規定されている。これは、各前記タスクが暴走することなく稼動していれば、前記監視プログラムが前記共通メモリを参照する時には、前記共通メモリには、前記第１参照値が格納されていることを意味する。これに対して、前記監視プログラムが前記共通メモリに、前記第２参照値が格納されていれば、各前記タスクのいずれかが暴走していることを意味する。
このため、前記監視プログラムは、前記第２時間間隔において前記入力値を参照することによって、各前記タスクが暴走しているか否かを判断することができる。
しかも、各前記タスクと前記監視プログラムはともに、１つの前記共通メモリを使用するから、プログラム暴走監視装置を含むコンピュータ装置全体のメモリの占有領域は最小限度である。
これにより、メモリにおける占有領域が最小限度であるにもかかわらず、プログラムの暴走を検出することができる。
【０００７】
第２の発明は、第１の発明の構成において、各前記タスクの処理時間は、前記第２時間間隔よりも短い時間として規定されていることを特徴とするプログラム暴走監視装置である。
【０００８】
第３の発明は、第１の発明又は第２の発明の構成において、前記監視プログラムは、前記共通メモリの入力値が前記第２参照値であると判断した場合に、前記ハードウエアを再起動するように構成されていることを特徴とするプログラム暴走監視装置である。
【０００９】
第３の発明の構成によれば、各前記タスクのいずれかが暴走している場合に、迅速に前記ハードウエアを再起動し、各前記タスクの正常な稼動を回復することができる。
【００１０】
第４の発明は、第３の発明の構成において、前記監視プログラムは、前記共通メモリの入力値が前記第２参照値であると判断した場合に、前記共通メモリの入力値を削除するように構成されていることを特徴とするプログラム暴走監視装置である。
【００１１】
前記目的は、第５の発明によれば、ハードウエアと、規定順で実行される複数のタスクと、前記タスクの暴走を監視する監視プログラムと、を有するハードウエア再起動装置の各前記タスクが、共通メモリ領域に予め規定した第１時間間隔で第１参照値を入力する第１参照値入力ステップと、前記監視プログラムが、前記第１時間間隔よりも長い時間として規定される第２時間間隔で前記共通メモリ領域の入力値を参照する入力値参照ステップと、前記監視プログラムが、前記入力値が前記第１参照値であれば、前記共通メモリ領域に第２参照値を入力する第２参照値入力ステップと、前記監視プログラムが、前記入力値が前記第２参照値であれば、前記タスクが暴走していると判断するタスク暴走判断ステップと、を有することを特徴とするプログラム暴走監視方法によって達成される。
【発明を実施するための最良の形態】
【００１２】
以下、この発明の好適な実施の形態を添付図面等を参照しながら、詳細に説明する。
尚、以下に述べる実施の形態は、本発明の好適な具体例であるから、技術的に好ましい種々の限定が付されているが、本発明の範囲は、以下の説明において特に本発明を限定する旨の記載がない限り、これらの態様に限られるものではない。  
【００１３】
図１は、本発明の実施の形態の端末２０等を示す概略図である。
端末２０は、ＳＰＳ（Ｓａｔｅｌｌｉｔｅ  Ｐｏｓｉｔｉｏｎｉｎｇ  Ｓｙｓｔｅｍ）の１つであるＧＰＳ（Ｇｌｏｂａｌ  Ｐｏｓｉｔｉｏｎｉｎｇ  Ｓｙｓｔｅｍ）を使用して現在位置を測位することができる。
端末２０は、測位衛星である例えば、ＧＰＳ衛星１２ａ，１２ｂ，１２ｃ，１２ｄ，１２ｅ，１２ｆ，１２ｇ及び１２ｈから、電波Ｓ１，Ｓ２，Ｓ３，Ｓ４，Ｓ５，Ｓ６，Ｓ７及びＳ８を受信することができる。
電波Ｓ１等には各種のコード（符号）が乗せられている。そのうちの一つがＣ／ＡコードＳｃａである。このＣ／ＡコードＳｃａは、１．０２３Ｍｂｐｓのビット率、１，０２３ｂｉｔ（＝１ｍｓｅｃ）のビット長の信号である。Ｃ／ＡコードＳｃａは、１，０２３チップ（ｃｈｉｐ）で構成されている。
【００１４】
また、電波Ｓ１等に乗せられる情報として、アルマナックＳａｌ及びエフェメリスＳｅｈがある。アルマナックＳａｌはすべてのＧＰＳ衛星１２ａ等の概略の衛星軌道を示す情報であり、エフェメリスＳｅｈは各ＧＰＳ衛星１２ａ等の精密な衛星軌道を示す情報である。アルマナックＳａｌ及びエフェメリスＳｅｈはＧＰＳ衛星１２ａ等より航法メッセージとして送信されている。
【００１５】
端末２０は、そのＣ／ＡコードがどのＧＰＳ衛星から発信されたものであるかを特定したうえで、例えば、そのＣ／Ａコードの到達までの遅延時間に基づいて、ＧＰＳ衛星とＧＰＳ受信機の距離（擬似距離）を算出する。そして、端末２０は、３個以上のＧＰＳ衛星１２ａ等についての擬似距離と、各ＧＰＳ衛星１２ａ等の衛星軌道上の位置に基づいて、現在位置を測位するようになっている（特開平１０−３３９７７２号公報等参照）。
なお、本実施の形態とは異なり、端末２０は、例えば、携帯電話の通信基地局からの電波を使用して測位を行うようにしてもよい。また、本実施の形態とは異なり、端末２０は、無線ＬＡＮ（Ｗｉｒｅｌｅｓｓ  Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）から電波を受信して、測位を行うようにしてもよい。
【００１６】
端末２０は、上述の測位のために、予め規定された規定順で実行される複数のタスクを実行する。ここでタスクとは、予め規定された情報処理を行うプログラムを意味する。
端末２０は、以下に説明するように、いずれか１つのタスクが暴走した場合には、端末２０の実行中の処理を停止するとともに、端末２０を再起動することによって、タスクが正常に稼動した状態において、測位を実行することができるように構成されている。
端末２０は、プログラム暴走監視装置の一例である。
【００１７】
図２は、端末２０の主な構成を示す概略図である。
図２に示すように、端末２０は、ハードウエア２４を有する。ハードウエア２４はハードウエアの一例である。ハードウエア２４は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）を含む。
端末２０は、また、メモリ２２を有する。メモリ２２は例えば、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）等である。メモリ２２の一部は、共通メモリ２２ａとして規定されている。共通メモリ２２ａは、共通メモリ領域の一例である。
【００１８】
端末２０は、タスク１，２乃至ｎを有する。このタスク１等は、メモリ２２に格納されている。このタスク１等は、規定順で実行される。また、タスク１等は、規定順で実施されなければ有意義な出力を得ることができない。タスク１等は、タスクの一例である。
端末２０は、また、ＷＤＴ（Ｗａｔｃｈ  Ｄｏｇ  Ｔｉｍｅｒ）２６を有する。ＷＤＴ２６は、タスク１等の暴走を監視するためのプログラム（ソフトウエア）である。ＷＤＴ２６は、監視プログラムの一例である。
【００１９】
図２に示すように、タスク１等は、例えば、１０ミリ秒（ｍｓ）間隔で共通メモリ２２ａに「１」を書き込むようになっている。すなわち、タスク１等は、１０ミリ秒（ｍｓ）でそれぞれの処理を完了するようになっている。これは、各タスク１等の処理時間が、１０ミリ秒（ｍｓ）であることを意味する。１０ミリ秒（ｍｓ）間隔の時間間隔は予め規定されており、第１時間間隔の一例である。また、「１」は第１参照値の一例である。また、１０ミリ秒（ｍｓ）は、各タスク１等の処理時間の一例でもある。
例えば、タスク１はその完了時に共通メモリ領域２２ａに「１」を書き込むようになっており、続いて実行されるタスク２はその完了時に共通メモリ領域２２ａに「１」を書き込むようになっている。このように、各タスク１乃至ｎは、正常に稼動している限り、その完了時に共通メモリ領域２２ａに「１」を書き込むようになっている。
これに対して、タスク１等は、直前のタスクが正常に完了し、共通メモリ領域２２ａに「１」を書き込まない場合には、稼動しないようになっている。  
【００２０】
図２に示すように、ＷＤＴ２６は、例えば、１００ミリ秒（ｍｓ）間隔で共通メモリ２２ａ
に格納されている参照値を読み込む（参照する）ようになっている。参照値は、入力値の一例である。１００ミリ秒（ｍｓ）間隔の時間間隔は、タスク１等が共通メモリ２２ａに「１」を書き込む時間間隔よりも長い時間間隔として規定されている。言い換えると、各タスク１等の処理時間は、ＷＤＴ２６が共通メモリ２２ａを参照する時間間隔よりも短い時間として規定されている。１００ミリ秒（ｍｓ）間隔の時間間隔は、第２時間間隔の一例である。
ＷＤＴ２６は、ハードウエア２４からのＮＭＩ（Ｎｏｎ  Ｍａｓｋａｂｌｅ  ｉｎｔｅｒｒｕｐｔ）を受信すると、共通メモリ２２ａに格納されている参照値の読み込み（以下、「読み込み」と呼ぶ）を実行する。すなわち、ハードウエア２４は、ＮＭＩを１００ミリ秒（ｍｓ）間隔で送信している。
【００２１】
図２に示すように、ＷＤＴ２６は、参照値が「１」であれば、共通メモリ２２ａに「０」を入力するようになっている。すなわち、ＷＤＴ２６は、参照値が「１」である限り、共通メモリ２２ａに１００ミリ秒（ｍｓ）間隔で「０」を入力するようになっている。「０」は第２参照値の一例である。
【００２２】
これに対して、ＷＤＴ２６は、参照値が「０」であれば、タスク１等のいずれかが暴走していると判断するようになっている。上述のように、各タスク１等が共通メモリ２２ａに「１」を入力する時間間隔は、ＷＤＴ２６が「０」を入力する時間間隔よりも短いから、ＷＤＴ２６が読み込む共通メモリ２２ａの入力値は、タスク１等が正常に稼動している限り、「１」である。これに対して、タスク１等が暴走している場合には、ＷＤＴ２６が読み込む共通メモリ２２ａの参照値は、ＷＤＴ２６が前回入力した「０」である。このため、ＷＤＴ２６は、共通メモリ２２ａの参照値を読み込むことによって、タスク１等の暴走を判断することができる。
【００２３】
図２に示すように、ＷＤＴ２６は、共通メモリ２２ａの参照値が「０」であると判断した場合には、ハードウエア２４を再起動（Ｒｅｓｅｔ）するように構成されている。
また、ＷＤＴ２６は、共通メモリ２２ａの参照値が「０」であると判断した場合には、参照値を削除するように構成されている。
上述のように、タスク１等は、規定順で実施されなければ有意義な出力を得ることができないから、タスク１等のいずれか１つでも暴走している場合には、ＷＤＴ２６は、ハードウエア２５を再起動して、タスク１等を改めて実施するようになっている。これは、ＷＤＴ２６は、タスク１等のいずれが暴走しているのかを特定することなく、迅速にハードウエア２５を再起動するようになっていることを意味する。
【００２４】
端末２０は、上述のように構成されている。
各タスク１等は、共通メモリ２２ａに１０ミリ秒（ｍｓ）間隔で「１」を入力する。
一方、ＷＤＴ２６は、１００ミリ秒（ｍｓ）間隔で参照値を参照する。
ここで、ＷＤＴ２６が共通メモリ２２ａを参照する時間間隔は、各タスク１等が共通メモリに「１」を入力する時間間隔よりも長い時間として規定されている。
これは、各タスク１等が暴走することなく稼動していれば、ＷＤＴ２６が共通メモリ２２ａを参照する時には、共通メモリ２２ａには、「１」が格納されていることを意味する。これに対して、ＷＤＴ２６が共通メモリ２２ａに、「０」が格納されていれば、各タスク１等のいずれかが暴走していることを意味する。
このため、ＷＤＴ２６は、１００ミリ秒（ｍｓ）間隔において参照値を参照することによって、各タスク等が暴走しているか否かを判断することができる。
しかも、各タスク１等とＷＤＴ２６はともに、１つの共通メモリ２２ａを使用するから、ＷＤＴ２６を含む端末２０全体のメモリの占有領域は最小限度である。  
これにより、メモリにおける占有領域が最小限度であるにもかかわらず、プログラムの暴走を検出することができる。
【００２５】
また、ＷＤＴ２６は、共通メモリ２２ａの参照値が「０」であると判断した場合に、ハードウエア２４を再起動するように構成されている。このため、各タスク１等のいずれかが暴走している場合に、迅速にハードウエア２４を再起動し、各タスク１等の正常な稼動を回復することができる。
【００２６】
以上が本実施の形態に係る端末２０の構成であるが、以下、その動作例を主に図３及び図４を使用して説明する。
図３は端末２０のタスクの動作例を示す概略フローチャートである。
まず、タスク１が、現在時刻を取得する（図３のステップＳＴ１）。タスク１は、例えば、端末２０に配置されている時計から現在時刻を取得する。
続いて、タスク１が、共通メモリ２２ａに「１」を書き込む（ステップＳＴ２）。
【００２７】
続いて、タスク２が、アルマナック（Ａｌｍａｎａｃ）を参照する（ステップＳＴ３）。タスク２は、例えば、端末２０のメモリ２２に格納されているアルマナックを参照する。
続いて、タスク２が、共通メモリ２２ａに「１」を書き込む（ステップＳＴ４）。
【００２８】
続いて、タスク３が、観測可能衛星を算出する（ステップＳＴ５）。タスク３は、例えば、端末２０の現在の概略位置において観測可能なＧＰＳ衛星１２ａ等を、上述の現在時刻及びアルマナックを使用して算出する。
続いて、タスク３が、共通メモリ２２ａに「１」を書き込む（ステップＳＴ６）。
【００２９】
続いて、タスク４が、捕捉対象衛星を決定する（ステップＳＴ７）。タスク４は、例えば、最もＰＤＯＰ（Ｐｏｓｉｔｉｏｎ  Ｄｉｌｕｔｉｏｎ  Ｏｆ  Ｐｒｅｃｉｓｉｏｎ）が良いＧＰＳ衛星１２ａ等の組を算出し、捕捉対象のＧＰＳ衛星として決定する。
続いて、タスク４が、共通メモリ２２ａに「１」を書き込む（ステップＳＴ８）。
【００３０】
続いて、タスク５が、捕捉対象衛星に対応するレプリカＣ／Ａコードを取得する（ステップＳＴ９）。タスク５は、メモリ２２に格納されているレプリカＣ／Ａコードを取得する。
続いて、タスク５が、共通メモリ２２ａに「１」を書き込む（ステップＳＴ１０）。
【００３１】
続いて、タスク６が、相関処理を行う（ステップＳＴ１１）。タスク６は、ＧＰＳ衛星１２ａ等から受信したＣ／Ａコードと、レプリカＣ／Ａコードとの相関値を算出する。
続いて、タスク５が、共通メモリ２２ａに「１」を書き込む（ステップＳＴ１２）。
【００３２】
続いて、タスク７が、擬似距離を算出する（ステップＳＴ１３）。
続いて、タスク７が、共通メモリ２２ａに「１」を書き込む（ステップＳＴ１４）。
【００３３】
続いて、タスク８が、測位演算を行う（ステップＳＴ１５）。
続いて、タスク８が、共通メモリ２２ａに「１」を書き込む（ステップＳＴ１６）。
【００３４】
続いて、タスク９が、測位位置を表示する（ステップＳＴ１７）。
続いて、タスク９が、共通メモリ２２ａに「１」を書き込む（ステップＳＴ１８）。
【００３５】
続いて、端末２０は、予め設定されている測位時間が経過したか否かを判断し（ステップＳＴ１９）、測位時間が経過していれば、測位を終了する。
これに対して、測位時間が経過していなければ、ステップＳＴ１に戻る。
【００３６】
上述のステップＳＴ２，ＳＴ４，ＳＴ６，ＳＴ８，ＳＴ１０，ＳＴ１２，ＳＴ１４，ＳＴ１６及びＳＴ１８は、第１参照値入力ステップの一例である。
【００３７】
上述の各ステップ１等が正常に実施されない場合（各タスク１等が暴走した場合）には、各タスクは共通メモリ２２ａに「１」を書き込むことができない。例えば、ステップＳＴ９でタスク５がレプリカＣ／Ａコードを取得することができない場合には、タスク５は
共通メモリ２２ａに「１」を書き込むことができない。そして、タスク６以下は、その稼動を開始しない。
【００３８】
続いて、図４を使用して、ＷＤＴ２６の動作例を説明する。
まず、ＷＤＴ２６は、ハードウエア２４からＮＭＩを受信する（図４のステップＳＴ１０１）。
続いて、ＷＤＴ２６は、共通メモリ２２ａの参照値を読み込む（ステップＳＴ１０２）。
続いて、ＷＤＴ２６は、参照値を参照し、参照値が「０」か否かを判断する（ステップＳＴ１０３）。このステップＳＴ１０３は、入力値参照ステップの一例である。
【００３９】
ＷＤＴ２６は、参照値が「０」でなければ（「１」であれば）、共通メモリ２２ａに「０」を書き込む（ステップＳＴ１０４）。このステップＳＴ１０４は、第２参照値入力ステップの一例である。
これに対して、ＷＤＴ２６は、参照値が「０」であれば、ハードウエア２４を再起動する（ステップＳＴ１０５）。このステップＳＴ１０５は、タスク暴走判断ステップの一例である。
【００４０】
上述のステップによって、端末２０は、メモリにおける占有領域が最小限度であるにもかかわらず、プログラムの暴走を検出することができる。
そして、ＷＤＴ２６は、タスク１等のいずれが暴走しているのかを特定することなく、迅速にハードウエア２５を再起動するようになっているから、迅速に測位位置を出力することができる確立が高い。特に、端末２０の構成を複雑化しないために、暴走箇所を特定してもその補正をすることが困難な構成になっている場合には、暴走箇所を特定することは無駄であり、ハードウエア２５を迅速に再起動することが実用性が高い。
【００４１】
本発明は、上述の実施の形態に限定されない。
【図面の簡単な説明】
【００４２】
【図１】本発明の実施の形態の端末等を示す概略図である。
【図２】端末の主な構成を示す概略図である。
【図３】端末の動作例を示す概略フローチャートである。
【図４】端末の動作例を示す概略フローチャートである。
【符号の説明】
【００４３】
１２ａ，１２ｂ，１２ｃ，１２ｄ，１２ｅ，１２ｆ，１２ｇ，１２ｈ・・・ＧＰＳ衛星、２０・・・端末、２２・・・メモリ、２２ａ・・・共通メモリ、２４・・・ハードウエア、２６・・・ＷＤＴ
【図１】
2007323490.tif 000003
【図２】
2007323490.tif 000004
【図３】
2007323490.tif 000005
【図４】
2007323490.tif 000006