(57)【特許請求の範囲】
【請求項１】
オペレーションシステムがメモリブロック群の中から所定のメモリブロックに一のタスクを割り当てた後、メモリブロックが割り当てられた一のタスクから他のタスクにメッセージを送信し、メッセージを受信した他のタスクによってメモリブロックを解放させてソフトウェアの処理を実行するシステムの異常検出を行うデッドロック検出方法であって、
メモリブロックに割り当てられた一のタスクが他のタスクにメッセージを送信し、当該他のタスクがメモリブロックの解放要求のメッセージを送信するまでの継続時間を計測手段により計測することを特徴とするデッドロック検出方法。
【請求項２】
オペレーションシステムがメモリブロック群の中から所定のメモリブロックに一のタスクを割り当てた後、メモリブロックが割り当てられた一のタスクから他のタスクにメッセージを送信し、メッセージを受信した他のタスクによってメモリブロックを解放させてソフトウェアの処理を実行するシステムの異常検出を行うデッドロック検出方法であって、
最後の空きメモリブロックに割り当てられた一のタスクが他のタスクにメッセージを送信し、当該他のタスクがメモリブロックの解放要求のメッセージを送信するまでの継続時間を計測手段により計測することを特徴とするデッドロック検出方法。
【請求項３】
前記計測手段は、メモリブロック群に割り当てられている一のタスクがメッセージを送信するタイミングで計測を開始し、他のタスクがメッセージを送信するタイミングで計測を停止することで継続時間を計測することを特徴とする請求項１又は請求項２に記載のデッドロック検出方法。
【請求項４】
前記計測手段は、メモリブロック群に割り当てられている一のタスクがメッセージを送信するタイミングでセットし、他のタスクがメッセージを受信するタイミングで計測をリセットすることで継続時間を計測することを特徴とする請求項１又は請求項２に記載のデッドロック検出方法。
【請求項５】
オペレーションシステムがメモリブロック群の中から所定のメモリブロックに一のタスクを割り当てた後、メモリブロックが割り当てられた一のタスクから他のタスクにメッセージを送信し、メッセージを受信した他のタスクによってメモリブロックを解放させてソフトウェアの処理を実行するシステムの異常検出を行うデッドロック検出方法であって、
メモリブロックに割り当てられた一のタスクが他のタスクにメッセージを送信し、当該他のタスクがメモリブロックの解放要求のメッセージを送信するまでの継続時間を計測手段により計測することで異常検出を行うことを特徴とするデッドロック検出方法をコンピュータに実行させるプログラムを記録したコンピュータ読み取り可能な記録媒体。
【請求項６】
オペレーションシステムがメモリブロック群の中から所定のメモリブロックに一のタスクを割り当てた後、メモリブロックが割り当てられた一のタスクから他のタスクにメッセージを送信し、メッセージを受信した他のタスクによってメモリブロックを解放させてソフトウェアの処理を実行するシステムの異常検出を行うデッドロック検出方法であって、
最後の空きメモリブロックに割り当てられた一のタスクが他のタスクにメッセージを送信し、当該他のタスクがメモリブロックの解放要求のメッセージを送信するまでの継続時間を計測手段により計測することで異常検出を行うことを特徴とするデッドロック検出方法をコンピュータに実行させるプログラムを記録したコンピュータ読み取り可能な記録媒体。
【請求項７】
前記計測手段は、メモリブロック群に割り当てられている一のタスクがメッセージを送信するタイミングで計測を開始し、他のタスクがメッセージを送信するタイミングで計測を停止することで継続時間を計測して異常検出を行うことを特徴とするデッドロック検出方法をコンピュータに実行させるプログラムを記録した請求項５又は請求項６に記載のコンピュータ読み取り可能な記録媒体。
【請求項８】
前記計測手段は、メモリブロック群に割り当てられている一のタスクがメッセージを送信するタイミングでセットし、他のタスクがメッセージを受信するタイミングで計測をリセットすることで継続時間を計測して異常検出を行うことを特徴とするデッドロック検出方法をコンピュータに実行させるプログラムを記録した請求項５又は請求項６に記載のコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、デッドロック検出方法及びデッドロック検出方法をコンピュータに実行させるプログラムを記録したコンピュータ読み取り可能な記録媒体に関する。
【０００２】
【従来の技術】
一般に、ＯＳを使用したシステムにおいて、タスク間でメッセージ通信を行う場合はＯＳが管理する動的メモリブロックを使用する。
ＯＳが管理する動的メモリブロックを使用して、タスク間でメッセージ通信を行う場合の一例を図１１及び図１２を参照して説明する。
図１１及び図１２は、タスクＡ及びタスクＢ間におけるメッセージ通信の動作を示す図である。
【０００３】
図１１及び図１２によれば、タスクＡがメモリブロックを獲得した場合、タスクＡからタスクＢにメッセージを送信する。タスクＢは前記メッセージを受信し、タスクＡが獲得したメモリブロックを解放させる。
また、タスクＢがメモリブロックを獲得した場合、タスクＢからタスクＡにメッセージを送信し、タスクＡがメッセージを受信すると、タスクＡはタスクＢが獲得したメモリブロックを解放させる。
即ち、タスクＡにて獲得したメモリブロックはメッセージ送信先である（メッセージを受け取る）タスクＢによって解放され、同様にタスクＢで獲得したメモリブロックはタスクＡによって解放される。
以上説明した動作によりタスク間のメッセージ通信は行われる。
【０００４】
また、特開平０９−０２６８８８号公報には、ＯＳが管理している資源毎にタイマを保持し、各タスクの資源獲得時からタイマカウントを行うことで１タスクが１資源を占有している時間の計測によって正否判定を行う排他制御装置が開示されている。係る排他制御装置によれば、獲得から解放までの時間と共有資源占有に要する１つのタスクの所定時間との比較で動作の正常／異常が判断される。
また、タイムアウト（所定時間経過）した際は、下記（ａ）又は（ｂ）の処理を行っている。
【０００５】
（ａ）他タスクからの資源要求をチェックし、要求がなければタイマをリスタートさせて処理を続行する。要求があれば使用中のタスクから資源を強制解放し、資源要求を行っているタスクに資源を割り当てる。
（ｂ）使用中のタスクから資源を強制解放し、他タスクからの資源要求をチェックする。要求があれば要求を行っているタスクに資源を割り当てる。
【０００６】
【発明が解決しようとする課題】
以上説明した従来技術にあっては、メモリブロック獲得／解放処理のタイミングによっては、図１１にＴ９０領域として示すように、空きメモリブロックが存在しなくなり、その結果として何れのタスクも待ち状態となる。
従って、何れのタスクの処理も行われなくなり（メモリブロック獲得によるデッドロック）、プログラムの異常動作（デッドロック）が発生してしまうという問題があった。
この様な現象は、メモリブロック獲得／解放処理の記述に論理的な誤りがある場合のみならず、論理的な誤りがない場合であっても発生する。
【０００７】
また、特開平０９−０２６８８８号公報に開示された排他制御装置にあっては、エラー検出時のリカバリ処理として、タスクコンテキストの待機／復帰の処理を行っている。
しかし、獲得タスクと解放タスクが異なる場合、待避するコンテキストは獲得側タスクのものである。即ち、デッドロックから復帰させねばならない解放側タスクとは関係のない情報であるため、リカバリ処理が正常動作しない。
【０００８】
また、特開平０９−０２６８８８号公報に開示された排他制御装置にあっては、必ずタスク毎又は資源毎にタイマを保持する必要がある。従って、１メモリブロック毎にタイマを用意する必要が生じる。
しかし、そのために多数のタイマをハードウエアとして用意することは困難であり、ソフトウエアによるタイマを用いた場合には多量のメモリを必要とするという問題があった。
従って、少量の内蔵ＲＡＭしか持たないＭＣＵ（Ｍｉｃｒｏ  Ｃｏｎｔｒｏｌｌｅｒ  Ｕｎｉｔ）などに応用することは困難である。
また、前記ソフトウエアによるタイマは、カウント用のメモリを用意し、一定時間毎のハードウエア生起によりソフトウエアで複数タイマをカウントするタイマである。
【０００９】
更に、特開平０９−０２６８８８号公報に開示された排他制御装置にあっては、処理の節目毎の判断処理とタイムアウト毎の判断処理を頻繁に必要としていた為にＣＰＵに多大な負荷を与えていた。
【００１０】
また、特開昭６２−２２９３４２号公報に開示されたデータ処理装置にあっては、アイドルタスク実行時に必ずタイマのリスタートを行い、タイマが一定時間を経過することで異常検出を行っている。
しかし、タイマのオーバーフロー時間内に必ずアイドルタスクが実行されることが前提となっているため、アイドルタスクが実行されないほど繁忙なシステムではタイマがリスタートされず、システムが正常動作であっても異常と検出される。
また、実行すべきタスクが待ち状態のまま実行されなくなっても、アイドルタスクでタイマがリスタートされるため、異常が発生しても、異常と判断されないという問題があった。
【００１１】
本発明は以上の従来技術における問題に鑑みてなされたものであって、メモリブロック獲得状態及びメモリブロック獲得状態以外のデッドロックを確実に検出することができ、メモリ使用量を低減させ且つＣＰＵに与える負荷を軽減せしめるデッドロック検出方法を提供することを目的とする。
【００１２】
【課題を解決するための手段】
前記課題を解決する本出願第１の発明は、オペレーションシステムがメモリブロック群の中から所定のメモリブロックに一のタスクを割り当てた後、メモリブロックが割り当てられた一のタスクから他のタスクにメッセージを送信し、メッセージを受信した他のタスクによってメモリブロックを解放させてソフトウェアの処理を実行するシステムの異常検出を行うデッドロック検出方法であって、メモリブロックに割り当てられた一のタスクが他のタスクにメッセージを送信し、当該他のタスクがメモリブロックの解放要求のメッセージを送信するまでの継続時間を計測手段により計測することを特徴とするデッドロック検出方法である。
前記課題を解決する本出願第２の発明は、オペレーションシステムがメモリブロック群の中から所定のメモリブロックに一のタスクを割り当てた後、メモリブロックが割り当てられた一のタスクから他のタスクにメッセージを送信し、メッセージを受信した他のタスクによってメモリブロックを解放させてソフトウェアの処理を実行するシステムの異常検出を行うデッドロック検出方法であって、最後の空きメモリブロックに割り当てられた一のタスクが他のタスクにメッセージを送信し、当該他のタスクがメモリブロックの解放要求のメッセージを送信するまでの継続時間を計測手段により計測することを特徴とするデッドロック検出方法である。
前記課題を解決する本出願第３の発明は、本出願第１又は第２の発明のデッドロック検出方法において、前記計測手段は、メモリブロック群に割り当てられている一のタスクがメッセージを送信するタイミングで計測を開始し、他のタスクがメッセージを送信するタイミングで計測を停止することで継続時間を計測することを特徴とする。
前記課題を解決する本出願第４の発明は、本出願第１又は第２の発明のデッドロック検出方法において、前記計測手段は、メモリブロック群に割り当てられている一のタスクがメッセージを送信するタイミングでセットし、他のタスクがメッセージを受信するタイミングで計測をリセットすることで継続時間を計測することを特徴とする。
【００１３】
したがって、本願発明のデッドロック検出方法によれば、最後の空きメモリブロックにタスクが割り当てられた後に、メモリブロック群に割り当てられている各タスクがメモリブロック群を占有している継続時間を計測手段により計測することでソフトウェアの異常検出を行うことから、メモリブロック獲得待ち状態又はメモリブロック獲得待ち状態以外のデッドロックを確実に検出することができる。また、計測個所が限定されており、一の計測手段でデッドロックを確実に検出することができるため、メモリの使用量を低減させることができると共に、判断個所が低減するためＣＰＵの負荷を軽減させることができる。
また、タスク数に依存することなくデッドロックを検出することができるため、タスク数に変更が生じた場合の異常検出に関する設定を変更する必要がない利点がある。
更に、計測個所が限定されており、一の計測手段でデッドロックを確実に検出することができるため、メモリの使用量を低減させることができる。
更に加えて、判断個所が低減するためＣＰＵの負荷を軽減させることができる。
【００１５】
したがって、本願発明のデッドロック検出方法によれば、最後の空きメモリブロックに一のタスクが割り当てられた後に、メモリブロック群に割り当てられている一のタスクがメッセージを送信し、他のタスクがメッセージを受信するまでの継続時間を計測手段により計測することで異常検出を行うことから、メッセージの受信が正常に行われているか否かを判断することができ、メモリブロック獲得待ち状態又はメモリブロック獲得待ち状態以外のデッドロックを確実に検出することができる。
【００１７】
したがって、本願発明の発明のデッドロック検出方法によれば、計測手段をタスクのメモリブロック獲得時、タスクのメモリブロック解放時及び空きメモリブロック存在下のアイドルタスク実行時にリスタートさせ、再びリスタートするまでの時間を連続して計測することから、システムの処理状態に依存することなくメモリブロック獲得待ち状態又はメモリブロック獲得待ち状態以外のデッドロックを確実に検出することができる。
【００１８】
前記課題を解決する本出願第５の発明は、オペレーションシステムがメモリブロック群の中から所定のメモリブロックに一のタスクを割り当てた後、メモリブロックが割り当てられた一のタスクから他のタスクにメッセージを送信し、メッセージを受信した他のタスクによってメモリブロックを解放させてソフトウェアの処理を実行するシステムの異常検出を行うデッドロック検出方法であって、メモリブロックに割り当てられた一のタスクが他のタスクにメッセージを送信し、当該他のタスクがメモリブロックの解放要求のメッセージを送信するまでの継続時間を計測手段により計測することで異常検出を行うことを特徴とするデッドロック検出方法をコンピュータに実行させるプログラムを記録したコンピュータ読み取り可能な記録媒体である。
前記課題を解決する本出願第６の発明は、オペレーションシステムがメモリブロック群の中から所定のメモリブロックに一のタスクを割り当てた後、メモリブロックが割り当てられた一のタスクから他のタスクにメッセージを送信し、メッセージを受信した他のタスクによってメモリブロックを解放させてソフトウェアの処理を実行するシステムの異常検出を行うデッドロック検出方法であって、最後の空きメモリブロックに割り当てられた一のタスクが他のタスクにメッセージを送信し、当該他のタスクがメモリブロックの解放要求のメッセージを送信するまでの継続時間を計測手段により計測することで異常検出を行うことを特徴とするデッドロック検出方法をコンピュータに実行させるプログラムを記録したコンピュータ読み取り可能な記録媒体である。
前記課題を解決する本出願第７の発明は、本出願第５又は第６の発明のコンピュータ読み取り可能な記録媒体において、前記計測手段は、メモリブロック群に割り当てられている一のタスクがメッセージを送信するタイミングで計測を開始し、他のタスクがメッセージを送信するタイミングで計測を停止することで継続時間を計測して異常検出を行うことを特徴とするデッドロック検出方法をコンピュータに実行させるプログラムを記録したものである。
前記課題を解決する本出願第８の発明は、本出願第５又は第６の発明のコンピュータ読み取り可能な記録媒体において、前記計測手段は、メモリブロック群に割り当てられている一のタスクがメッセージを送信するタイミングでセットし、他のタスクがメッセージを受信するタイミングで計測をリセットすることで継続時間を計測して異常検出を行うことを特徴とするデッドロック検出方法をコンピュータに実行させるプログラムを記録したものである。
【００１９】
したがって、本願発明のデッドロック検出方法をコンピュータに実行させるプログラムを記録したコンピュータ読み取り可能な記録媒体によれば、最後の空きメモリブロックにタスクが割り当てられた後に、メモリブロック群に割り当てられている各タスクがメモリブロック群を占有している継続時間を計測手段により計測することから、メモリブロック獲得待ち状態又はメモリブロック獲得待ち状態以外のデッドロックを確実に検出することができる。また、計測個所が限定されているため、メモリの使用量を低減させることができると共に、判断個所が低減するためＣＰＵの負荷を軽減させることができる。
また、記録媒体とは、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ及びフレキシブルディスク等の補助記憶媒体又はハードディスク等の主記憶媒体を含むメディアを指す。
【００２１】
したがって、本願発明のデッドロック検出方法をコンピュータに実行させるプログラムを記録したコンピュータ読み取り可能な記録媒体によれば、最後の空きメモリブロックに一のタスクが割り当てられた後に、メモリブロック群に割り当てられている一のタスクがメッセージを送信し、他のタスクがメッセージを受信するまでの継続時間を計測手段により計測することから、メッセージの受信が正常に行われているか否かを判断することができ、メモリブロック獲得待ち状態又はメモリブロック獲得待ち状態以外のデッドロックを確実に検出することができる。また、計測個所が限定されているため、メモリの使用量を低減させることができると共に、判断個所が低減するためＣＰＵの負荷を軽減させることができる。
【００２３】
したがって、本願発明のデッドロック検出方法をコンピュータに実行させるプログラムを記録したコンピュータ読み取り可能な記録媒体によれば、計測手段をタスクのメモリブロック獲得時、タスクのメモリブロック解放時及びアイドルタスク実行時にリスタートさせ、再びリスタートする時間を連続して計測することから、システム全体の処理状態が繁忙又は閑散であっても、メモリブロック獲得待ち状態又はメモリブロック獲得待ち状態以外のデッドロックを確実に検出することができる。また、計測個所が限定されているため、メモリの使用量を低減させることができると共に、判断個所が低減するためＣＰＵの負荷を軽減させることができる。
【００２４】
【発明の実施の形態】
以下に本発明の実施の形態のデッドロック検出方法及びその方法をコンピュータに実行させるプログラムを記録したコンピュータ読み取り可能な記録媒体につき図面を参照して説明する。
【００２５】
（実施の形態１）
図１は本発明の実施の形態１のデッドロック検出方法及びその方法をコンピュータに実行させるプログラムを記録したコンピュータ読み取り可能な記録媒体を実現するシステムの構成を示す概略図、図２は本発明の実施の形態１のデッドロック検出方法を実現するシステムのＯＳ使用時のメモリブロック獲得／解放処理の動作説明図、図３（ａ）、図３（ｂ）及び図３（ｃ）は本発明の実施の形態１のデッドロック検出方法の動作を示すタイミングチャート、図４は本発明の実施の形態１の動作を示すフローチャートである。
【００２６】
図１に示すように、計測手段であるタイマ１、オペレーティングシステム（以下、ＯＳ２）、メモリブロック３及びタスク群４から本発明の実施の形態１のデッドロック検出方法を実現するシステムは構成される。
【００２７】
タスク群４は、複数のタスク（タスクＡ、タスクＢ、…）からなり、ＯＳ２はタスクスケジューリングを行って、タスク群４の中から１つのタスクを選択し、実行させる。
また、前記複数のタスクのうち、タスク４ａはメモリブロック群３からＯＳ２の割り当てによって獲得した１つのメモリブロックを使用して、タスク群中のタスク４ｂとメッセージ通信を行って処理を進めていく（メッセージ通信１回につき、１メモリブロックを使用）。
メッセージ通信に使用されるメモリブロックは、メッセージを送信するタスク４ａによって獲得される（メモリブロック獲得処理）。また、メッセージを受信するタスク４ｂによってメモリブロックが解放される（メモリブロック解放処理）。
【００２８】
メモリブロック獲得／解放処理は全てタスク４ａ及びタスク４ｂからＯＳ２が用意しているメモリブロック獲得処理のシステムコール５ａ及びメモリブロック解法処理のシステムコール５ｂが呼び出されることにより実行される（図２）。
ＯＳ２は、メモリブロック獲得処理のシステムコール５ａが呼び出されると、メモリブロック群３に空きがある場合のみ、メモリブロック獲得処理のシステムコール５ａを呼び出したタスク４ａにメモリブロックの割り当てを行う。
メモリブロック群３に空きがなかった場合は、ＯＳ２は獲得処理のシステムコール５ａを呼び出したタスク４ａを待ち状態に切り替える。
また、ＯＳ２はメモリブロック解放処理のシステムコール５ｂが呼び出されると、指定されたメモリブロックを解放する。
【００２９】
次に、以上説明した本発明の実施の形態１のデッドロック検出方法を実現するシステムの動作につき説明する。
先ず、タスク群中のタスク４ａからメモリブロック獲得処理のシステムコール５ａが呼び出されることで、メモリブロック獲得要求がＯＳ２に伝達される。
次に、メモリブロック獲得処理が呼び出されるタイミングで、実際にメモリブロックにタスク４ａが割り当てられた後、タスク４ａからタスク群中のタスク４ｂにメッセージが送信される。また、タスク４ａからタスク４ｂにメッセージが送信されるタイミングで、メモリブロック群３に空きがなければタイマ１をスタートさせる。
その後、タスク４ｂがメッセージを受信し、係る受信によりタスク４ｂからメモリブロック解放処理のシステムコール５ｂが呼び出されることで、メモリブロック解放要求がＯＳ２に伝達される。
ここで、タスク４ｂからメモリブロック解放要求がＯＳ２に伝達されるタイミングでタイマ１をストップさせる。最後の空きメモリブロック獲得時からメモリブロック群３に空きの無い状態（メモリブロックを獲得している各タスクがメモリブロック群３を占有している状態）の継続時間を計測し、前記継続時間が一定期間経過（タイムアウト）した場合は異常発生と判断する。また、一定期間は予め設定される設定値である。
最後に、システムの異常発生と判断された場合はエラー処理を行う。
【００３０】
次に本発明の実施の形態１のデッドロック検出方法及びその方法をコンピュータに実行させるプログラムを記録したコンピュータ読み取り可能な記録媒体につき図３（ａ）、図３（ｂ）、図３（ｃ）及び図４を参照して更に詳細に説明する。
先ず、タスク４ａ及びタスク４ｂでメモリブロック群３を使用してメッセージ通信を行っている際の動作を以下に説明する。
【００３１】
（１）メモリブロック獲得処理後、残りの空きメモリブロックの数が０でない場合（図３（ａ）及び図４を参照）。
メモリブロック獲得処理（Ｓ１１）の後、残りの空きメモリブロックの数をチェックする（Ｓ１２）。この際、タイマ１は停止状態を継続する。
【００３２】
（２）メモリブロック獲得処理後の残りの空きメモリブロックの数が０であり、且つ一定期間以内に解放される場合（図３（ｂ）及び図４を参照）。
メモリブロック獲得処理（Ｓ１１）の後、タイマ１をスタートさせる（Ｓ１３）。
メモリブロック解放処理（Ｓ３１）の後、タイマ１をストップさせる（Ｓ３２）。
【００３３】
（３）メモリブロック獲得処理後の残りの空きメモリブロックの数が０であり、且つ一定期間以内に解放されない場合（図３（ｃ）及び図４を参照）。
メモリブロック獲得処理（Ｓ１１）の後、タイマ１をスタートさせる（Ｓ１３）。
タイマ１が一定期間経過する迄にメモリブロックが解放されないため、エラー処理を行う（Ｓ６）。
【００３４】
メッセージ通信が正常に行われている場合（メッセージの送信／メッセージの受信が滞ることなく進められる場合）は、必ず空きメモリブロックが存在する期間が生じるために、タイマ１のタイムアウトが発生することはない。
逆に、メッセージ通信が正常に行われなくなる（即ち、メッセージが受信されることがなくなる）と、メモリブロックが解放されなくなる。従って、徐々にメモリブロック群３の空きが減少し、最終的には全てのメモリブロック群３が使用中（＝メモリブロックに空きがない状態）となる。
メモリブロック群３に空きがなくなった状態を継続すると、タイマ１のタイムアウトが発生して異常を検出することができる。
【００３５】
次に、本発明の実施の形態１のデッドロック検出方法及びその方法をコンピュータに実行させるプログラムを記録したコンピュータ読み取り可能な記録媒体の別態様につき図面を参照して説明する。
図５は本発明の実施の形態１のデッドロック検出方法の動作を示すタイミングチャート、図６は本発明の実施の形態１のデッドロック検出方法の動作を示すフローチャートである。
【００３６】
図５及び図６に示すように、メッセージが送信されるタイミング毎にタイマ１をリスタートさせ（Ｓ７２）、メッセージが受信されるタイミングでタイマ１をストップさせる（Ｓ８２）。即ち、最後にメッセージが送信されてから、メッセージが受信されるまでに一定時間が経過した場合を異常発生と判断する。
【００３７】
また、メッセージ通信はメモリブロックを使用して行われるため、メッセージの送信とメモリブロック獲得処理は必ず対となって行われる。更に、メッセージの受信とメモリブロック解放処理も同様である。
従って、メモリブロック群３に空きが無い場合、メッセージを送信することはできない。
【００３８】
また、メッセージが受信されると必ずメモリブロックが解放される。
従って、受信処理が正常に行われている場合は、メモリブロック群３に空きが存在する期間が必ず生じる。
【００３９】
（実施の形態２）
次に本発明の実施の形態２のデッドロック検出方法及びその方法をコンピュータに実行させるプログラムを記録したコンピュータ読み取り可能な記録媒体につき図面を参照して説明する。
図７は本発明の実施の形態２のデッドロック検出方法及びその方法をコンピュータに実行させるプログラムを記録したコンピュータ読み取り可能な記録媒体の構成を示すシステム構成図、図８（ａ）、図８（ｂ）及び図８（ｃ）は本発明の実施の形態２のデッドロック検出方法の動作を示すタイミングチャート、図９は本発明の実施の形態２のデッドロック検出方法の動作を示すフローチャートである。
【００４０】
マイコンが保持するウォッチドッグ・タイマ（以下、ＷＤＴ６）を利用して異常検査を行う方法につき説明する。
図７に示すように本発明の実施の形態２のデッドロック検出方法及びその方法をコンピュータに実行させるプログラムを記録したコンピュータ読み取り可能な記録媒体は、図１で使用しているタイマ１をＷＤＴ６とした構成からなる。また、係るＷＤＴ６は一度スタートさせるとストップさせることができない。
【００４１】
先ず、図８（ａ）、図８（ｂ）、図８（ｃ）及び図９を参照して、ＷＤＴ６のリスタート（リセット）を行うタイミングにつき分類して説明する。
【００４２】
（１）メモリブロック獲得時（図８（ａ）及び図９を参照）。
メモリブロック獲得処理（Ｓ１１）の後、残りの空きメモリブロックの数に関係なく必ずＷＤＴ６のリスタートを行う（Ｓ１３’）。
【００４３】
（２）メモリブロック解放時（図８（ｂ）及び図９を参照）。
メモリブロック解放処理（Ｓ３１）の後、必ずＷＤＴ６のリスタートを行う（Ｓ３２’）。
【００４４】
（３）アイドルタスク実行時（図８（ｃ）及び図９を参照）。
アイドルタスク実行時、残りの空きメモリブロックの数が０でなければ、ＷＤＴ６のリスタートを行う（Ｓ９）。
【００４５】
以上説明した（１）、（２）及び（３）のタイミングでＷＤＴ６をリスタートすることで、全体の処理状態（繁忙、閑散）に関わらず異常の検出を行うことができる。
【００４６】
次に、システム全体の処理状態が繁忙期である場合の異常（デッドロック）の検出について、更に図１０を参照して説明する。
各タスク間は、メッセージ通信を行いながら処理を進めているため、全体の処理が繁忙である場合は、必ずメッセージ通信に伴うメモリブロックの獲得／解放処理が絶えず行われる。
従って、メッセージ通信が正常に行われている場合（メッセージの送受信が滞ることなく進められる場合）は、同時にメモリブロックの獲得／解放処理が行われるため、上記（１）及び（２）におけるＷＤＴ６のリスタートによりＷＤＴ６のタイムアウトは発生しない（図８（ａ）及び図８（ｂ））。
逆に、メッセージ通信が正常に行われなくなると、メモリブロックの獲得／解放処理が行われなくなり、ＷＤＴ６がリスタートされずタイムアウトを発生するため、異常を検出することができる。
また、前記タイムアウトは、ＷＤＴ６がスタートしてからリスタートされるまでの予め設定した設定値を基準とする一定時間を経過することをいう。
【００４７】
最後にシステム全体の処理が閑散期である場合の異常（デッドロック）の検出を説明する。
閑散期においては、各タスク間におけるメッセージ通信は行われていない。従って、メッセージ通信に伴うメモリブロック獲得／解放処理も行われない。
ここで、上記（３）におけるＷＤＴ６のリスタートによって、システム全体の処理が閑散期である場合でも、ＷＤＴ６がタイムアウトを発生することはない（図８（ｃ））。
しかし、各タスクがメモリブロック獲得待ち状態に陥ったがためにアイドルタスクが実行されている場合は、残りの空きメモリブロックの数の条件によってＷＤＴはリスタートされない。
従って、ＷＤＴ６のタイムアウトが発生し、異常を検出することができる。
【００４８】
【発明の効果】
以上説明した本発明のデッドロック検出方法及びその方法をコンピュータに実行させるプログラムを記録したコンピュータ読み取り可能な記録媒体によれば、メモリブロック群３に空きがない状態の継続期間を計測する。
従って、メモリブロック解放処理が滞っている場合のみタイマ１がタイムアウトを発生するため、メモリブロック獲得待ち状態によるデッドロック（異常）を確実に検出することができる。
また、ＣＰＵの負荷を軽減させることができると共に、タイマ１が使用するメモリの使用量を低減させることができる。
【００４９】
また、何れかのタスクがデッドロックすると、当該タスクが解放処理を行わないため、空きメモリブロックの数が徐々に減少し、その結果としてメモリブロック群３に空きがない状態となる。空きのない状態が所定時間以上継続されるとタイマ１がタイムアウトを発生するため、メモリブロック獲得待ち状態によるデッドロックを確実に検出することができる。
【００５０】
更に、タイマ１のスタート及びストップがメモリブロックの獲得時及び解放時に限られているため、アプリケーション側の処理に依存することがない。
従って、異常検出処理（デッドロック検出処理）をＯＳ２内に組み込むことができる。
【００５１】
更に加えて、異常検出処理をＯＳ２内に組み込んだ場合、アプリケーション側では異常検出処理を考慮する必要はないため、ＯＳ２とリンクさせるだけで異常検出機能が付加される。
従って、異常検出を考慮しないソフトを容易に異常検出対応に変更することができる。
【００５２】
また、タイマ１のスタート及びストップがアプリケーション側に依存しないため、タスクの数に変更が生じた場合も、異常検出処理を考慮又は変更する必要がない。即ち、タスクの数に依存しないため、タスクの数に変更が生じた場合も異常検出に関する変更は不要となる利点がある。
【図面の簡単な説明】
【図１】本発明の実施の形態１のデッドロック検出方法の構成を示す構成図
【図２】本発明の実施の形態１のデッドロック検出方法のＯＳ使用時のメモリブロック獲得／解放処理の動作を示す図
【図３】（ａ）本発明の実施の形態１のデッドロック検出方法の動作を示すタイミングチャート
（ｂ）本発明の実施の形態１のデッドロック検出方法の動作を示すタイミングチャート
（ｃ）本発明の実施の形態１のデッドロック検出方法の動作を示すタイミングチャート
【図４】本発明の実施の形態１のデッドロック検出方法の動作を示すフローチャート
【図５】本発明の実施の形態１のデッドロック検出方法の動作を示すタイミングチャート
【図６】本発明の実施の形態１のデッドロック検出方法の動作を示すフローチャート
【図７】本発明の実施の形態２のデッドロック検出方法を実現するシステム構成図
【図８】（ａ）本発明の実施の形態２のデッドロック検出方法の動作を示すタイミングチャート
（ｂ）本発明の実施の形態２のデッドロック検出方法の動作を示すタイミングチャート
（ｃ）本発明の実施の形態２のデッドロック検出方法の動作を示すタイミングチャート
【図９】本発明の実施の形態２のデッドロック検出方法の動作を示すフローチャート
【図１０】本発明の実施の形態２のデッドロック検出方法の動作を示す図
【図１１】従来のデッドロック検出方法の動作を示す説明図
【図１２】従来のデッドロック検出方法の動作を示す説明図
【符号の説明】
１    タイマ
２    ＯＳ
３    メモリブロック群
４    タスク群
４ａ  タスク
４ｂ  タスク
５ａ  システムコール
５ｂ  システムコール
６    ＷＤＴ
【図１】
0003698938.tif 000002
【図２】
0003698938.tif 000003
【図３】
0003698938.tif 000004
【図４】
0003698938.tif 000005
【図５】
0003698938.tif 000006
【図６】
0003698938.tif 000007
【図７】
0003698938.tif 000008
【図８】
0003698938.tif 000009
【図９】
0003698938.tif 000010
【図１０】
0003698938.tif 000011
【図１１】
0003698938.tif 000012
【図１２】
0003698938.tif 000013