JP3698938B2 - デッドロック検出方法 - Google Patents
デッドロック検出方法 Download PDFInfo
- Publication number
- JP3698938B2 JP3698938B2 JP34694399A JP34694399A JP3698938B2 JP 3698938 B2 JP3698938 B2 JP 3698938B2 JP 34694399 A JP34694399 A JP 34694399A JP 34694399 A JP34694399 A JP 34694399A JP 3698938 B2 JP3698938 B2 JP 3698938B2
- Authority
- JP
- Japan
- Prior art keywords
- task
- memory block
- message
- detection method
- assigned
- 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.)
- Expired - Fee Related
Links
- 238000001514 detection method Methods 0.000 title claims description 85
- 238000000034 method Methods 0.000 claims description 40
- 230000005856 abnormality Effects 0.000 claims description 33
- 238000005259 measurement Methods 0.000 claims description 22
- 238000004891 communication Methods 0.000 description 17
- 238000010586 diagram Methods 0.000 description 10
- 230000005540 biological transmission Effects 0.000 description 6
- 230000002159 abnormal effect Effects 0.000 description 2
- 230000007423 decrease Effects 0.000 description 2
- 238000011084 recovery Methods 0.000 description 2
- 230000003111 delayed effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000007689 inspection Methods 0.000 description 1
Images
Landscapes
- Debugging And Monitoring (AREA)
Description
【発明の属する技術分野】
本発明は、デッドロック検出方法及びデッドロック検出方法をコンピュータに実行させるプログラムを記録したコンピュータ読み取り可能な記録媒体に関する。
【0002】
【従来の技術】
一般に、OSを使用したシステムにおいて、タスク間でメッセージ通信を行う場合はOSが管理する動的メモリブロックを使用する。
OSが管理する動的メモリブロックを使用して、タスク間でメッセージ通信を行う場合の一例を図11及び図12を参照して説明する。
図11及び図12は、タスクA及びタスクB間におけるメッセージ通信の動作を示す図である。
【0003】
図11及び図12によれば、タスクAがメモリブロックを獲得した場合、タスクAからタスクBにメッセージを送信する。タスクBは前記メッセージを受信し、タスクAが獲得したメモリブロックを解放させる。
また、タスクBがメモリブロックを獲得した場合、タスクBからタスクAにメッセージを送信し、タスクAがメッセージを受信すると、タスクAはタスクBが獲得したメモリブロックを解放させる。
即ち、タスクAにて獲得したメモリブロックはメッセージ送信先である(メッセージを受け取る)タスクBによって解放され、同様にタスクBで獲得したメモリブロックはタスクAによって解放される。
以上説明した動作によりタスク間のメッセージ通信は行われる。
【0004】
また、特開平09−026888号公報には、OSが管理している資源毎にタイマを保持し、各タスクの資源獲得時からタイマカウントを行うことで1タスクが1資源を占有している時間の計測によって正否判定を行う排他制御装置が開示されている。係る排他制御装置によれば、獲得から解放までの時間と共有資源占有に要する1つのタスクの所定時間との比較で動作の正常/異常が判断される。
また、タイムアウト(所定時間経過)した際は、下記(a)又は(b)の処理を行っている。
【0005】
(a)他タスクからの資源要求をチェックし、要求がなければタイマをリスタートさせて処理を続行する。要求があれば使用中のタスクから資源を強制解放し、資源要求を行っているタスクに資源を割り当てる。
(b)使用中のタスクから資源を強制解放し、他タスクからの資源要求をチェックする。要求があれば要求を行っているタスクに資源を割り当てる。
【0006】
【発明が解決しようとする課題】
以上説明した従来技術にあっては、メモリブロック獲得/解放処理のタイミングによっては、図11にT90領域として示すように、空きメモリブロックが存在しなくなり、その結果として何れのタスクも待ち状態となる。
従って、何れのタスクの処理も行われなくなり(メモリブロック獲得によるデッドロック)、プログラムの異常動作(デッドロック)が発生してしまうという問題があった。
この様な現象は、メモリブロック獲得/解放処理の記述に論理的な誤りがある場合のみならず、論理的な誤りがない場合であっても発生する。
【0007】
また、特開平09−026888号公報に開示された排他制御装置にあっては、エラー検出時のリカバリ処理として、タスクコンテキストの待機/復帰の処理を行っている。
しかし、獲得タスクと解放タスクが異なる場合、待避するコンテキストは獲得側タスクのものである。即ち、デッドロックから復帰させねばならない解放側タスクとは関係のない情報であるため、リカバリ処理が正常動作しない。
【0008】
また、特開平09−026888号公報に開示された排他制御装置にあっては、必ずタスク毎又は資源毎にタイマを保持する必要がある。従って、1メモリブロック毎にタイマを用意する必要が生じる。
しかし、そのために多数のタイマをハードウエアとして用意することは困難であり、ソフトウエアによるタイマを用いた場合には多量のメモリを必要とするという問題があった。
従って、少量の内蔵RAMしか持たないMCU(Micro Controller Unit)などに応用することは困難である。
また、前記ソフトウエアによるタイマは、カウント用のメモリを用意し、一定時間毎のハードウエア生起によりソフトウエアで複数タイマをカウントするタイマである。
【0009】
更に、特開平09−026888号公報に開示された排他制御装置にあっては、処理の節目毎の判断処理とタイムアウト毎の判断処理を頻繁に必要としていた為にCPUに多大な負荷を与えていた。
【0010】
また、特開昭62−229342号公報に開示されたデータ処理装置にあっては、アイドルタスク実行時に必ずタイマのリスタートを行い、タイマが一定時間を経過することで異常検出を行っている。
しかし、タイマのオーバーフロー時間内に必ずアイドルタスクが実行されることが前提となっているため、アイドルタスクが実行されないほど繁忙なシステムではタイマがリスタートされず、システムが正常動作であっても異常と検出される。
また、実行すべきタスクが待ち状態のまま実行されなくなっても、アイドルタスクでタイマがリスタートされるため、異常が発生しても、異常と判断されないという問題があった。
【0011】
本発明は以上の従来技術における問題に鑑みてなされたものであって、メモリブロック獲得状態及びメモリブロック獲得状態以外のデッドロックを確実に検出することができ、メモリ使用量を低減させ且つCPUに与える負荷を軽減せしめるデッドロック検出方法を提供することを目的とする。
【0012】
【課題を解決するための手段】
前記課題を解決する本出願第1の発明は、オペレーションシステムがメモリブロック群の中から所定のメモリブロックに一のタスクを割り当てた後、メモリブロックが割り当てられた一のタスクから他のタスクにメッセージを送信し、メッセージを受信した他のタスクによってメモリブロックを解放させてソフトウェアの処理を実行するシステムの異常検出を行うデッドロック検出方法であって、メモリブロックに割り当てられた一のタスクが他のタスクにメッセージを送信し、当該他のタスクがメモリブロックの解放要求のメッセージを送信するまでの継続時間を計測手段により計測することを特徴とするデッドロック検出方法である。
前記課題を解決する本出願第2の発明は、オペレーションシステムがメモリブロック群の中から所定のメモリブロックに一のタスクを割り当てた後、メモリブロックが割り当てられた一のタスクから他のタスクにメッセージを送信し、メッセージを受信した他のタスクによってメモリブロックを解放させてソフトウェアの処理を実行するシステムの異常検出を行うデッドロック検出方法であって、最後の空きメモリブロックに割り当てられた一のタスクが他のタスクにメッセージを送信し、当該他のタスクがメモリブロックの解放要求のメッセージを送信するまでの継続時間を計測手段により計測することを特徴とするデッドロック検出方法である。
前記課題を解決する本出願第3の発明は、本出願第1又は第2の発明のデッドロック検出方法において、前記計測手段は、メモリブロック群に割り当てられている一のタスクがメッセージを送信するタイミングで計測を開始し、他のタスクがメッセージを送信するタイミングで計測を停止することで継続時間を計測することを特徴とする。
前記課題を解決する本出願第4の発明は、本出願第1又は第2の発明のデッドロック検出方法において、前記計測手段は、メモリブロック群に割り当てられている一のタスクがメッセージを送信するタイミングでセットし、他のタスクがメッセージを受信するタイミングで計測をリセットすることで継続時間を計測することを特徴とする。
【0013】
したがって、本願発明のデッドロック検出方法によれば、最後の空きメモリブロックにタスクが割り当てられた後に、メモリブロック群に割り当てられている各タスクがメモリブロック群を占有している継続時間を計測手段により計測することでソフトウェアの異常検出を行うことから、メモリブロック獲得待ち状態又はメモリブロック獲得待ち状態以外のデッドロックを確実に検出することができる。また、計測個所が限定されており、一の計測手段でデッドロックを確実に検出することができるため、メモリの使用量を低減させることができると共に、判断個所が低減するためCPUの負荷を軽減させることができる。
また、タスク数に依存することなくデッドロックを検出することができるため、タスク数に変更が生じた場合の異常検出に関する設定を変更する必要がない利点がある。
更に、計測個所が限定されており、一の計測手段でデッドロックを確実に検出することができるため、メモリの使用量を低減させることができる。
更に加えて、判断個所が低減するためCPUの負荷を軽減させることができる。
【0015】
したがって、本願発明のデッドロック検出方法によれば、最後の空きメモリブロックに一のタスクが割り当てられた後に、メモリブロック群に割り当てられている一のタスクがメッセージを送信し、他のタスクがメッセージを受信するまでの継続時間を計測手段により計測することで異常検出を行うことから、メッセージの受信が正常に行われているか否かを判断することができ、メモリブロック獲得待ち状態又はメモリブロック獲得待ち状態以外のデッドロックを確実に検出することができる。
【0017】
したがって、本願発明の発明のデッドロック検出方法によれば、計測手段をタスクのメモリブロック獲得時、タスクのメモリブロック解放時及び空きメモリブロック存在下のアイドルタスク実行時にリスタートさせ、再びリスタートするまでの時間を連続して計測することから、システムの処理状態に依存することなくメモリブロック獲得待ち状態又はメモリブロック獲得待ち状態以外のデッドロックを確実に検出することができる。
【0018】
前記課題を解決する本出願第5の発明は、オペレーションシステムがメモリブロック群の中から所定のメモリブロックに一のタスクを割り当てた後、メモリブロックが割り当てられた一のタスクから他のタスクにメッセージを送信し、メッセージを受信した他のタスクによってメモリブロックを解放させてソフトウェアの処理を実行するシステムの異常検出を行うデッドロック検出方法であって、メモリブロックに割り当てられた一のタスクが他のタスクにメッセージを送信し、当該他のタスクがメモリブロックの解放要求のメッセージを送信するまでの継続時間を計測手段により計測することで異常検出を行うことを特徴とするデッドロック検出方法をコンピュータに実行させるプログラムを記録したコンピュータ読み取り可能な記録媒体である。
前記課題を解決する本出願第6の発明は、オペレーションシステムがメモリブロック群の中から所定のメモリブロックに一のタスクを割り当てた後、メモリブロックが割り当てられた一のタスクから他のタスクにメッセージを送信し、メッセージを受信した他のタスクによってメモリブロックを解放させてソフトウェアの処理を実行するシステムの異常検出を行うデッドロック検出方法であって、最後の空きメモリブロックに割り当てられた一のタスクが他のタスクにメッセージを送信し、当該他のタスクがメモリブロックの解放要求のメッセージを送信するまでの継続時間を計測手段により計測することで異常検出を行うことを特徴とするデッドロック検出方法をコンピュータに実行させるプログラムを記録したコンピュータ読み取り可能な記録媒体である。
前記課題を解決する本出願第7の発明は、本出願第5又は第6の発明のコンピュータ読み取り可能な記録媒体において、前記計測手段は、メモリブロック群に割り当てられている一のタスクがメッセージを送信するタイミングで計測を開始し、他のタスクがメッセージを送信するタイミングで計測を停止することで継続時間を計測して異常検出を行うことを特徴とするデッドロック検出方法をコンピュータに実行させるプログラムを記録したものである。
前記課題を解決する本出願第8の発明は、本出願第5又は第6の発明のコンピュータ読み取り可能な記録媒体において、前記計測手段は、メモリブロック群に割り当てられている一のタスクがメッセージを送信するタイミングでセットし、他のタスクがメッセージを受信するタイミングで計測をリセットすることで継続時間を計測して異常検出を行うことを特徴とするデッドロック検出方法をコンピュータに実行させるプログラムを記録したものである。
【0019】
したがって、本願発明のデッドロック検出方法をコンピュータに実行させるプログラムを記録したコンピュータ読み取り可能な記録媒体によれば、最後の空きメモリブロックにタスクが割り当てられた後に、メモリブロック群に割り当てられている各タスクがメモリブロック群を占有している継続時間を計測手段により計測することから、メモリブロック獲得待ち状態又はメモリブロック獲得待ち状態以外のデッドロックを確実に検出することができる。また、計測個所が限定されているため、メモリの使用量を低減させることができると共に、判断個所が低減するためCPUの負荷を軽減させることができる。
また、記録媒体とは、CD−ROM、DVD−ROM及びフレキシブルディスク等の補助記憶媒体又はハードディスク等の主記憶媒体を含むメディアを指す。
【0021】
したがって、本願発明のデッドロック検出方法をコンピュータに実行させるプログラムを記録したコンピュータ読み取り可能な記録媒体によれば、最後の空きメモリブロックに一のタスクが割り当てられた後に、メモリブロック群に割り当てられている一のタスクがメッセージを送信し、他のタスクがメッセージを受信するまでの継続時間を計測手段により計測することから、メッセージの受信が正常に行われているか否かを判断することができ、メモリブロック獲得待ち状態又はメモリブロック獲得待ち状態以外のデッドロックを確実に検出することができる。また、計測個所が限定されているため、メモリの使用量を低減させることができると共に、判断個所が低減するためCPUの負荷を軽減させることができる。
【0023】
したがって、本願発明のデッドロック検出方法をコンピュータに実行させるプログラムを記録したコンピュータ読み取り可能な記録媒体によれば、計測手段をタスクのメモリブロック獲得時、タスクのメモリブロック解放時及びアイドルタスク実行時にリスタートさせ、再びリスタートする時間を連続して計測することから、システム全体の処理状態が繁忙又は閑散であっても、メモリブロック獲得待ち状態又はメモリブロック獲得待ち状態以外のデッドロックを確実に検出することができる。また、計測個所が限定されているため、メモリの使用量を低減させることができると共に、判断個所が低減するためCPUの負荷を軽減させることができる。
【0024】
【発明の実施の形態】
以下に本発明の実施の形態のデッドロック検出方法及びその方法をコンピュータに実行させるプログラムを記録したコンピュータ読み取り可能な記録媒体につき図面を参照して説明する。
【0025】
(実施の形態1)
図1は本発明の実施の形態1のデッドロック検出方法及びその方法をコンピュータに実行させるプログラムを記録したコンピュータ読み取り可能な記録媒体を実現するシステムの構成を示す概略図、図2は本発明の実施の形態1のデッドロック検出方法を実現するシステムのOS使用時のメモリブロック獲得/解放処理の動作説明図、図3(a)、図3(b)及び図3(c)は本発明の実施の形態1のデッドロック検出方法の動作を示すタイミングチャート、図4は本発明の実施の形態1の動作を示すフローチャートである。
【0026】
図1に示すように、計測手段であるタイマ1、オペレーティングシステム(以下、OS2)、メモリブロック3及びタスク群4から本発明の実施の形態1のデッドロック検出方法を実現するシステムは構成される。
【0027】
タスク群4は、複数のタスク(タスクA、タスクB、…)からなり、OS2はタスクスケジューリングを行って、タスク群4の中から1つのタスクを選択し、実行させる。
また、前記複数のタスクのうち、タスク4aはメモリブロック群3からOS2の割り当てによって獲得した1つのメモリブロックを使用して、タスク群中のタスク4bとメッセージ通信を行って処理を進めていく(メッセージ通信1回につき、1メモリブロックを使用)。
メッセージ通信に使用されるメモリブロックは、メッセージを送信するタスク4aによって獲得される(メモリブロック獲得処理)。また、メッセージを受信するタスク4bによってメモリブロックが解放される(メモリブロック解放処理)。
【0028】
メモリブロック獲得/解放処理は全てタスク4a及びタスク4bからOS2が用意しているメモリブロック獲得処理のシステムコール5a及びメモリブロック解法処理のシステムコール5bが呼び出されることにより実行される(図2)。
OS2は、メモリブロック獲得処理のシステムコール5aが呼び出されると、メモリブロック群3に空きがある場合のみ、メモリブロック獲得処理のシステムコール5aを呼び出したタスク4aにメモリブロックの割り当てを行う。
メモリブロック群3に空きがなかった場合は、OS2は獲得処理のシステムコール5aを呼び出したタスク4aを待ち状態に切り替える。
また、OS2はメモリブロック解放処理のシステムコール5bが呼び出されると、指定されたメモリブロックを解放する。
【0029】
次に、以上説明した本発明の実施の形態1のデッドロック検出方法を実現するシステムの動作につき説明する。
先ず、タスク群中のタスク4aからメモリブロック獲得処理のシステムコール5aが呼び出されることで、メモリブロック獲得要求がOS2に伝達される。
次に、メモリブロック獲得処理が呼び出されるタイミングで、実際にメモリブロックにタスク4aが割り当てられた後、タスク4aからタスク群中のタスク4bにメッセージが送信される。また、タスク4aからタスク4bにメッセージが送信されるタイミングで、メモリブロック群3に空きがなければタイマ1をスタートさせる。
その後、タスク4bがメッセージを受信し、係る受信によりタスク4bからメモリブロック解放処理のシステムコール5bが呼び出されることで、メモリブロック解放要求がOS2に伝達される。
ここで、タスク4bからメモリブロック解放要求がOS2に伝達されるタイミングでタイマ1をストップさせる。最後の空きメモリブロック獲得時からメモリブロック群3に空きの無い状態(メモリブロックを獲得している各タスクがメモリブロック群3を占有している状態)の継続時間を計測し、前記継続時間が一定期間経過(タイムアウト)した場合は異常発生と判断する。また、一定期間は予め設定される設定値である。
最後に、システムの異常発生と判断された場合はエラー処理を行う。
【0030】
次に本発明の実施の形態1のデッドロック検出方法及びその方法をコンピュータに実行させるプログラムを記録したコンピュータ読み取り可能な記録媒体につき図3(a)、図3(b)、図3(c)及び図4を参照して更に詳細に説明する。
先ず、タスク4a及びタスク4bでメモリブロック群3を使用してメッセージ通信を行っている際の動作を以下に説明する。
【0031】
(1)メモリブロック獲得処理後、残りの空きメモリブロックの数が0でない場合(図3(a)及び図4を参照)。
メモリブロック獲得処理(S11)の後、残りの空きメモリブロックの数をチェックする(S12)。この際、タイマ1は停止状態を継続する。
【0032】
(2)メモリブロック獲得処理後の残りの空きメモリブロックの数が0であり、且つ一定期間以内に解放される場合(図3(b)及び図4を参照)。
メモリブロック獲得処理(S11)の後、タイマ1をスタートさせる(S13)。
メモリブロック解放処理(S31)の後、タイマ1をストップさせる(S32)。
【0033】
(3)メモリブロック獲得処理後の残りの空きメモリブロックの数が0であり、且つ一定期間以内に解放されない場合(図3(c)及び図4を参照)。
メモリブロック獲得処理(S11)の後、タイマ1をスタートさせる(S13)。
タイマ1が一定期間経過する迄にメモリブロックが解放されないため、エラー処理を行う(S6)。
【0034】
メッセージ通信が正常に行われている場合(メッセージの送信/メッセージの受信が滞ることなく進められる場合)は、必ず空きメモリブロックが存在する期間が生じるために、タイマ1のタイムアウトが発生することはない。
逆に、メッセージ通信が正常に行われなくなる(即ち、メッセージが受信されることがなくなる)と、メモリブロックが解放されなくなる。従って、徐々にメモリブロック群3の空きが減少し、最終的には全てのメモリブロック群3が使用中(=メモリブロックに空きがない状態)となる。
メモリブロック群3に空きがなくなった状態を継続すると、タイマ1のタイムアウトが発生して異常を検出することができる。
【0035】
次に、本発明の実施の形態1のデッドロック検出方法及びその方法をコンピュータに実行させるプログラムを記録したコンピュータ読み取り可能な記録媒体の別態様につき図面を参照して説明する。
図5は本発明の実施の形態1のデッドロック検出方法の動作を示すタイミングチャート、図6は本発明の実施の形態1のデッドロック検出方法の動作を示すフローチャートである。
【0036】
図5及び図6に示すように、メッセージが送信されるタイミング毎にタイマ1をリスタートさせ(S72)、メッセージが受信されるタイミングでタイマ1をストップさせる(S82)。即ち、最後にメッセージが送信されてから、メッセージが受信されるまでに一定時間が経過した場合を異常発生と判断する。
【0037】
また、メッセージ通信はメモリブロックを使用して行われるため、メッセージの送信とメモリブロック獲得処理は必ず対となって行われる。更に、メッセージの受信とメモリブロック解放処理も同様である。
従って、メモリブロック群3に空きが無い場合、メッセージを送信することはできない。
【0038】
また、メッセージが受信されると必ずメモリブロックが解放される。
従って、受信処理が正常に行われている場合は、メモリブロック群3に空きが存在する期間が必ず生じる。
【0039】
(実施の形態2)
次に本発明の実施の形態2のデッドロック検出方法及びその方法をコンピュータに実行させるプログラムを記録したコンピュータ読み取り可能な記録媒体につき図面を参照して説明する。
図7は本発明の実施の形態2のデッドロック検出方法及びその方法をコンピュータに実行させるプログラムを記録したコンピュータ読み取り可能な記録媒体の構成を示すシステム構成図、図8(a)、図8(b)及び図8(c)は本発明の実施の形態2のデッドロック検出方法の動作を示すタイミングチャート、図9は本発明の実施の形態2のデッドロック検出方法の動作を示すフローチャートである。
【0040】
マイコンが保持するウォッチドッグ・タイマ(以下、WDT6)を利用して異常検査を行う方法につき説明する。
図7に示すように本発明の実施の形態2のデッドロック検出方法及びその方法をコンピュータに実行させるプログラムを記録したコンピュータ読み取り可能な記録媒体は、図1で使用しているタイマ1をWDT6とした構成からなる。また、係るWDT6は一度スタートさせるとストップさせることができない。
【0041】
先ず、図8(a)、図8(b)、図8(c)及び図9を参照して、WDT6のリスタート(リセット)を行うタイミングにつき分類して説明する。
【0042】
(1)メモリブロック獲得時(図8(a)及び図9を参照)。
メモリブロック獲得処理(S11)の後、残りの空きメモリブロックの数に関係なく必ずWDT6のリスタートを行う(S13’)。
【0043】
(2)メモリブロック解放時(図8(b)及び図9を参照)。
メモリブロック解放処理(S31)の後、必ずWDT6のリスタートを行う(S32’)。
【0044】
(3)アイドルタスク実行時(図8(c)及び図9を参照)。
アイドルタスク実行時、残りの空きメモリブロックの数が0でなければ、WDT6のリスタートを行う(S9)。
【0045】
以上説明した(1)、(2)及び(3)のタイミングでWDT6をリスタートすることで、全体の処理状態(繁忙、閑散)に関わらず異常の検出を行うことができる。
【0046】
次に、システム全体の処理状態が繁忙期である場合の異常(デッドロック)の検出について、更に図10を参照して説明する。
各タスク間は、メッセージ通信を行いながら処理を進めているため、全体の処理が繁忙である場合は、必ずメッセージ通信に伴うメモリブロックの獲得/解放処理が絶えず行われる。
従って、メッセージ通信が正常に行われている場合(メッセージの送受信が滞ることなく進められる場合)は、同時にメモリブロックの獲得/解放処理が行われるため、上記(1)及び(2)におけるWDT6のリスタートによりWDT6のタイムアウトは発生しない(図8(a)及び図8(b))。
逆に、メッセージ通信が正常に行われなくなると、メモリブロックの獲得/解放処理が行われなくなり、WDT6がリスタートされずタイムアウトを発生するため、異常を検出することができる。
また、前記タイムアウトは、WDT6がスタートしてからリスタートされるまでの予め設定した設定値を基準とする一定時間を経過することをいう。
【0047】
最後にシステム全体の処理が閑散期である場合の異常(デッドロック)の検出を説明する。
閑散期においては、各タスク間におけるメッセージ通信は行われていない。従って、メッセージ通信に伴うメモリブロック獲得/解放処理も行われない。
ここで、上記(3)におけるWDT6のリスタートによって、システム全体の処理が閑散期である場合でも、WDT6がタイムアウトを発生することはない(図8(c))。
しかし、各タスクがメモリブロック獲得待ち状態に陥ったがためにアイドルタスクが実行されている場合は、残りの空きメモリブロックの数の条件によってWDTはリスタートされない。
従って、WDT6のタイムアウトが発生し、異常を検出することができる。
【0048】
【発明の効果】
以上説明した本発明のデッドロック検出方法及びその方法をコンピュータに実行させるプログラムを記録したコンピュータ読み取り可能な記録媒体によれば、メモリブロック群3に空きがない状態の継続期間を計測する。
従って、メモリブロック解放処理が滞っている場合のみタイマ1がタイムアウトを発生するため、メモリブロック獲得待ち状態によるデッドロック(異常)を確実に検出することができる。
また、CPUの負荷を軽減させることができると共に、タイマ1が使用するメモリの使用量を低減させることができる。
【0049】
また、何れかのタスクがデッドロックすると、当該タスクが解放処理を行わないため、空きメモリブロックの数が徐々に減少し、その結果としてメモリブロック群3に空きがない状態となる。空きのない状態が所定時間以上継続されるとタイマ1がタイムアウトを発生するため、メモリブロック獲得待ち状態によるデッドロックを確実に検出することができる。
【0050】
更に、タイマ1のスタート及びストップがメモリブロックの獲得時及び解放時に限られているため、アプリケーション側の処理に依存することがない。
従って、異常検出処理(デッドロック検出処理)をOS2内に組み込むことができる。
【0051】
更に加えて、異常検出処理をOS2内に組み込んだ場合、アプリケーション側では異常検出処理を考慮する必要はないため、OS2とリンクさせるだけで異常検出機能が付加される。
従って、異常検出を考慮しないソフトを容易に異常検出対応に変更することができる。
【0052】
また、タイマ1のスタート及びストップがアプリケーション側に依存しないため、タスクの数に変更が生じた場合も、異常検出処理を考慮又は変更する必要がない。即ち、タスクの数に依存しないため、タスクの数に変更が生じた場合も異常検出に関する変更は不要となる利点がある。
【図面の簡単な説明】
【図1】本発明の実施の形態1のデッドロック検出方法の構成を示す構成図
【図2】本発明の実施の形態1のデッドロック検出方法のOS使用時のメモリブロック獲得/解放処理の動作を示す図
【図3】(a)本発明の実施の形態1のデッドロック検出方法の動作を示すタイミングチャート
(b)本発明の実施の形態1のデッドロック検出方法の動作を示すタイミングチャート
(c)本発明の実施の形態1のデッドロック検出方法の動作を示すタイミングチャート
【図4】本発明の実施の形態1のデッドロック検出方法の動作を示すフローチャート
【図5】本発明の実施の形態1のデッドロック検出方法の動作を示すタイミングチャート
【図6】本発明の実施の形態1のデッドロック検出方法の動作を示すフローチャート
【図7】本発明の実施の形態2のデッドロック検出方法を実現するシステム構成図
【図8】(a)本発明の実施の形態2のデッドロック検出方法の動作を示すタイミングチャート
(b)本発明の実施の形態2のデッドロック検出方法の動作を示すタイミングチャート
(c)本発明の実施の形態2のデッドロック検出方法の動作を示すタイミングチャート
【図9】本発明の実施の形態2のデッドロック検出方法の動作を示すフローチャート
【図10】本発明の実施の形態2のデッドロック検出方法の動作を示す図
【図11】従来のデッドロック検出方法の動作を示す説明図
【図12】従来のデッドロック検出方法の動作を示す説明図
【符号の説明】
1 タイマ
2 OS
3 メモリブロック群
4 タスク群
4a タスク
4b タスク
5a システムコール
5b システムコール
6 WDT
Claims (8)
- オペレーションシステムがメモリブロック群の中から所定のメモリブロックに一のタスクを割り当てた後、メモリブロックが割り当てられた一のタスクから他のタスクにメッセージを送信し、メッセージを受信した他のタスクによってメモリブロックを解放させてソフトウェアの処理を実行するシステムの異常検出を行うデッドロック検出方法であって、
メモリブロックに割り当てられた一のタスクが他のタスクにメッセージを送信し、当該他のタスクがメモリブロックの解放要求のメッセージを送信するまでの継続時間を計測手段により計測することを特徴とするデッドロック検出方法。 - オペレーションシステムがメモリブロック群の中から所定のメモリブロックに一のタスクを割り当てた後、メモリブロックが割り当てられた一のタスクから他のタスクにメッセージを送信し、メッセージを受信した他のタスクによってメモリブロックを解放させてソフトウェアの処理を実行するシステムの異常検出を行うデッドロック検出方法であって、
最後の空きメモリブロックに割り当てられた一のタスクが他のタスクにメッセージを送信し、当該他のタスクがメモリブロックの解放要求のメッセージを送信するまでの継続時間を計測手段により計測することを特徴とするデッドロック検出方法。 - 前記計測手段は、メモリブロック群に割り当てられている一のタスクがメッセージを送信するタイミングで計測を開始し、他のタスクがメッセージを送信するタイミングで計測を停止することで継続時間を計測することを特徴とする請求項1又は請求項2に記載のデッドロック検出方法。
- 前記計測手段は、メモリブロック群に割り当てられている一のタスクがメッセージを送信するタイミングでセットし、他のタスクがメッセージを受信するタイミングで計測をリセットすることで継続時間を計測することを特徴とする請求項1又は請求項2に記載のデッドロック検出方法。
- オペレーションシステムがメモリブロック群の中から所定のメモリブロックに一のタスクを割り当てた後、メモリブロックが割り当てられた一のタスクから他のタスクにメッセージを送信し、メッセージを受信した他のタスクによってメモリブロックを解放させてソフトウェアの処理を実行するシステムの異常検出を行うデッドロック検出方法であって、
メモリブロックに割り当てられた一のタスクが他のタスクにメッセージを送信し、当該他のタスクがメモリブロックの解放要求のメッセージを送信するまでの継続時間を計測手段により計測することで異常検出を行うことを特徴とするデッドロック検出方法をコンピュータに実行させるプログラムを記録したコンピュータ読み取り可能な記録媒体。 - オペレーションシステムがメモリブロック群の中から所定のメモリブロックに一のタスクを割り当てた後、メモリブロックが割り当てられた一のタスクから他のタスクにメッセージを送信し、メッセージを受信した他のタスクによってメモリブロックを解放させてソフトウェアの処理を実行するシステムの異常検出を行うデッドロック検出方法であって、
最後の空きメモリブロックに割り当てられた一のタスクが他のタスクにメッセージを送信し、当該他のタスクがメモリブロックの解放要求のメッセージを送信するまでの継続時間を計測手段により計測することで異常検出を行うことを特徴とするデッドロック検出方法をコンピュータに実行させるプログラムを記録したコンピュータ読み取り可能な記録媒体。 - 前記計測手段は、メモリブロック群に割り当てられている一のタスクがメッセージを送信するタイミングで計測を開始し、他のタスクがメッセージを送信するタイミングで計測を停止することで継続時間を計測して異常検出を行うことを特徴とするデッドロック検出 方法をコンピュータに実行させるプログラムを記録した請求項5又は請求項6に記載のコンピュータ読み取り可能な記録媒体。
- 前記計測手段は、メモリブロック群に割り当てられている一のタスクがメッセージを送信するタイミングでセットし、他のタスクがメッセージを受信するタイミングで計測をリセットすることで継続時間を計測して異常検出を行うことを特徴とするデッドロック検出方法をコンピュータに実行させるプログラムを記録した請求項5又は請求項6に記載のコンピュータ読み取り可能な記録媒体。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP34694399A JP3698938B2 (ja) | 1999-12-06 | 1999-12-06 | デッドロック検出方法 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP34694399A JP3698938B2 (ja) | 1999-12-06 | 1999-12-06 | デッドロック検出方法 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JP2001166953A JP2001166953A (ja) | 2001-06-22 |
| JP3698938B2 true JP3698938B2 (ja) | 2005-09-21 |
Family
ID=18386877
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP34694399A Expired - Fee Related JP3698938B2 (ja) | 1999-12-06 | 1999-12-06 | デッドロック検出方法 |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JP3698938B2 (ja) |
Families Citing this family (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| RU2502123C1 (ru) * | 2012-07-20 | 2013-12-20 | Федеральное государственное унитарное предприятие "Центральный научно-исследовательский институт машиностроения" (ФГУП ЦНИИмаш) | Способ динамического контроля тупиковых ситуаций инфокоммуникационной системы и устройство для его осуществления |
| WO2014112066A1 (ja) * | 2013-01-17 | 2014-07-24 | 富士通株式会社 | 情報処理装置、メモリ管理方法及びプログラム |
| JP6263940B2 (ja) * | 2013-10-08 | 2018-01-24 | 株式会社リコー | 排他制御プログラム、情報処理装置、排他制御方法 |
-
1999
- 1999-12-06 JP JP34694399A patent/JP3698938B2/ja not_active Expired - Fee Related
Also Published As
| Publication number | Publication date |
|---|---|
| JP2001166953A (ja) | 2001-06-22 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US5918049A (en) | Method for managing resources allocated in a computer | |
| US8245236B2 (en) | Lock based moving of threads in a shared processor partitioning environment | |
| US7418627B2 (en) | Cluster system wherein failover reset signals are sent from nodes according to their priority | |
| JP2000353103A (ja) | 多重システム・クラスタ内のサーバの数を制御する方法及び装置 | |
| CN106959895B (zh) | 快速释放线程的资源调度方法和系统 | |
| JP2001101033A (ja) | オペレーティングシステム及びアプリケーションプログラムの障害監視方法 | |
| JP2007115246A (ja) | ソフトウェアによって使用される資源を動的に割り当てるための方法及び装置 | |
| WO2016000298A1 (zh) | 一种系统异常的捕获方法、主系统、影子系统及智能设备 | |
| CN102222036B (zh) | 一种自动化测试方法和设备 | |
| US20030018682A1 (en) | Computer system and computer-readable record medium | |
| JP3698938B2 (ja) | デッドロック検出方法 | |
| WO2015180111A1 (zh) | 一种管理系统资源的方法、装置及设备 | |
| WO2011104812A1 (ja) | マルチコアプロセッサシステム、割込プログラム、および割込方法 | |
| JP5625379B2 (ja) | ロック競合管理装置、ロック競合管理方法およびプログラム | |
| JP2012517057A (ja) | データの整合性を維持するための装置、方法、およびコンピュータ・プログラム(データの整合性を維持するための装置) | |
| CN112363828B (zh) | 内存碎片管理方法、装置、车载系统及车辆 | |
| JPWO2018211865A1 (ja) | 車両制御装置 | |
| CN115080247B (zh) | 一种高可用线程池切换方法及装置 | |
| CN119806762B (zh) | 一种分布式任务调度方法、系统及程序产品 | |
| JPH10116261A (ja) | 並列計算機システムのチェックポイントリスタート方法 | |
| JP4773715B2 (ja) | チェックポイント取得方法 | |
| JP5867630B2 (ja) | マルチコアプロセッサシステム、マルチコアプロセッサシステムの制御方法、およびマルチコアプロセッサシステムの制御プログラム | |
| CN115495239B (zh) | 测试资源复用方法、装置、存储介质及计算机设备 | |
| CN104714924B (zh) | 一种资源控制方法和装置 | |
| JPH0527993A (ja) | デツドロツク検出処理方式 |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20041005 |
|
| A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20041021 |
|
| A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20041220 |
|
| TRDD | Decision of grant or rejection written | ||
| A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20050614 |
|
| A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20050706 |
|
| R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
| S111 | Request for change of ownership or part of ownership |
Free format text: JAPANESE INTERMEDIATE CODE: R313113 |
|
| R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090715 Year of fee payment: 4 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100715 Year of fee payment: 5 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100715 Year of fee payment: 5 |
|
| S533 | Written request for registration of change of name |
Free format text: JAPANESE INTERMEDIATE CODE: R313533 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100715 Year of fee payment: 5 |
|
| R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110715 Year of fee payment: 6 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120715 Year of fee payment: 7 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120715 Year of fee payment: 7 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130715 Year of fee payment: 8 |
|
| S531 | Written request for registration of change of domicile |
Free format text: JAPANESE INTERMEDIATE CODE: R313531 |
|
| R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
| LAPS | Cancellation because of no payment of annual fees |