JP2005182594A - コンピュータ及びプログラム - Google Patents
コンピュータ及びプログラム Download PDFInfo
- Publication number
- JP2005182594A JP2005182594A JP2003424554A JP2003424554A JP2005182594A JP 2005182594 A JP2005182594 A JP 2005182594A JP 2003424554 A JP2003424554 A JP 2003424554A JP 2003424554 A JP2003424554 A JP 2003424554A JP 2005182594 A JP2005182594 A JP 2005182594A
- Authority
- JP
- Japan
- Prior art keywords
- thread
- infinite loop
- function
- state
- threads
- 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.)
- Pending
Links
Images
Landscapes
- Debugging And Monitoring (AREA)
Abstract
【課題】 無限ループ状態に陥った場合に、それ以前のシステムの状態を極力残しつつ、無限ループ状態から自動復旧できるコンピュータを提供する。
【解決手段】 無限ループ状態に陥ったスレッドを検出し(S11)、ユーザスレッドかシステムスレッドかを判別する(S12)。ユーザスレッドの場合は、他のスレッドに対して待避処理を実行するよう通知し(S13)、無限ループ状態に陥ったスレッドの優先順位を下げ(S14)、他のスレッドからの待避処理完了通知を待つ(S15)。通知を受け取ったら、無限ループ状態に陥ったスレッドを再起動させる(S16)。システムスレッドの場合は、他のスレッドに対して終了処理を実行するよう通知し(S17)、無限ループ状態に陥ったスレッドの優先順位を下げ(S18)、他のスレッドからの終了処理完了通知を待つ(S19)。通知を受け取ったら、システム全体を再起動する(S20)。
【選択図】 図4
【解決手段】 無限ループ状態に陥ったスレッドを検出し(S11)、ユーザスレッドかシステムスレッドかを判別する(S12)。ユーザスレッドの場合は、他のスレッドに対して待避処理を実行するよう通知し(S13)、無限ループ状態に陥ったスレッドの優先順位を下げ(S14)、他のスレッドからの待避処理完了通知を待つ(S15)。通知を受け取ったら、無限ループ状態に陥ったスレッドを再起動させる(S16)。システムスレッドの場合は、他のスレッドに対して終了処理を実行するよう通知し(S17)、無限ループ状態に陥ったスレッドの優先順位を下げ(S18)、他のスレッドからの終了処理完了通知を待つ(S19)。通知を受け取ったら、システム全体を再起動する(S20)。
【選択図】 図4
Description
本発明は、優先順位方式でスケジューリングを行うオペレーティングシステム(OS:Operating System)を搭載したコンピュータ及びプログラムに関する。
オペレーティングシステムの中には、プロセスを複数のスレッド(CPU時間が割り与えられる処理単位または制御単位。OSによってはタスクと読み替え可。)で構成し、各時点で優先順位の最も優先順位の高いスレッドにCPUの占有権を与えるものがある。この種のオペレーティングシステム(例えば、Windows(登録商標) CEなど)を搭載したコンピュータでは、あるスレッドが実行状態(CPU占有状態)にある時は、他のスレッドは実行待ち状態(実行可能状態または待機状態)にある。したがって、実行状態にあるスレッドが何らかの異常により無限ループ状態に陥った場合、他のスレッドは実行状態に移行できなくなる。このときコンピュータは、タッチパネル、キーボード、マウスなどオペレータがコンピュータに指示を与えるための入力装置からの入力(コンソール割り込み)をまったく受け付けないいわゆるフリーズ状態(ロック状態や無応答状態とも呼ばれる)となる。
コンピュータがフリーズ状態になった場合、リセットボタンあるいは電源ボタンを押すなどのハードウェアリセット操作を行ってシステムを再起動(システムリスタート)させれば、コンピュータをフリーズ状態から脱出させることができる。しかし、コンピュータがフリーズ状態になったことにオペレータが気付かない限り、ハードウェアリセット操作は行われないため、コンピュータが長時間フリーズ状態のまま放置されることもある。
この種の問題を回避するための従来技術として、無限ループ状態検出用のプログラムをシステムに常駐させ、その実行を定期的に試みることにより、無限ループ状態の発生を監視し、無限ループ状態の発生を検出した場合には、直ちに、コンピュータが自らシステムの再起動を実行するようにしたもの(無限ループ監視装置)が知られている(特許文献1参照)。
しかし、上記従来技術では、コンピュータがフリーズ状態になる前の処理を再開するためには、システムが再起動した後に再度必要なプログラムをオペレータが選択してそれを再起動させなければならない。また、オペレータが必要なプログラムを再起動させる操作を行ってからそのプログラムの再起動が完了するまでにはそれなりの時間を要する。
また、無限ループ状態の発生が検出された場合には、直ちにシステムの再起動が実行されるため、無限ループ状態に陥っていないスレッド(実行可能状態または待機状態にあるスレッド)を含む全てのスレッドおよび関連するデータが主記憶やキャッシュからすべて消去されてしまう。このため、システムの再起動によって正常な終了処理を経ることなく主記憶から消去されてしまったスレッドによる処理を、プログラムの再起動完了後に再度実行しなければならない。したがって、プログラムの再起動完了後における処理効率も悪い。
本発明は、上記事情に鑑みてなされたもので、無限ループ状態に陥った場合に、無限ループ状態に陥る前のシステムの状態を極力残して、無限ループ状態から自動復旧することが可能なコンピュータ及びプログラムを提供することを目的とする。
本発明のコンピュータは、優先順位方式によるスケジューリングを行ってスレッドの実行を管理するオペレーティングシステムを搭載したコンピュータであって、無限ループ状態に陥ったスレッドの発生を検出する無限ループ状態検出機能と、無限ループ状態に陥ったスレッドの発生が検出された場合、他のスレッドに退避処理を実行させた後、当該検出されたスレッドを再起動させるスレッド復旧機能と備えたものである。
この構成において、無限ループ状態に陥ったスレッドが発生し、これを検出した際、他のスレッドに退避処理を実行させた後、この無限ループ状態に陥ったスレッドを再起動させる。これにより、無限ループ状態に陥ったスレッドが発生した場合に、他のスレッドに及ぼされる影響を極力抑えつつ、無限ループ状態に陥ったスレッドを再起動することができる。なお、再起動させるスレッドには、このスレッドに関連するスレッド(無限ループ状態になる前に再起動させるスレッドと通信中であったスレッド、等)を含ませてもよい。
また、本発明の一態様として、上記のコンピュータであって、実行状態、実行可能状態、待機状態のうちのいずれかの状態にあるスレッドを、オペレーティングシステムの稼働中に一旦終了し再起動させて上記いずれかの状態に復旧できるユーザスレッドと、無限ループ状態に陥った場合にオペレーティングシステムを再起動させなければ上記いずれかの状態に復旧できないシステムスレッドとに分類して監視するスレッド監視機能を更に備え、前記スレッド復旧機能は、無限ループ状態に陥ったスレッドがユーザスレッドの場合は、無限ループ状態に陥ったスレッドのみ再起動させる無限ループスレッド再起動機能と、無限ループ状態に陥ったスレッドがシステムスレッドの場合は、全てのスレッドを再起動させる全スレッド再起動機能とを含むコンピュータを提供する。
この構成において、無限ループ状態に陥ったスレッドがユーザスレッドの場合は、このスレッドのみ再起動させ、無限ループ状態に陥ったスレッドがシステムスレッドの場合は、全てのスレッドを再起動させる。これにより、無限ループ状態に陥ったスレッドがユーザスレッドの場合は、該当するスレッドのみ再起動させるので、無限ループ状態に陥っていない他のスレッドや他のスレッドに関連するデータは、主記憶やキャッシュから消去されない。このため、無限ループ状態に陥らなかった他のスレッドに関しては、無限ループ状態に陥ったスレッドの再起動後に、無限ループ状態発生前の処理を再度実行する必要がない。したがって、無限ループ状態に陥ったスレッドが発生した場合に全てのスレッドの再起動を行うような従来の構成と比較して、再起動完了後における処理効率を向上できる。
また、本発明の一態様として、上記のコンピュータであって、前記無限ループスレッド再起動機能は、無限ループ状態に陥ったユーザスレッドの優先順位を下げる機能と、他のスレッドに待避処理を実行するよう通知する機能と、この他のスレッドから待避処理が完了した旨の通知を受けた後に前記ユーザスレッドを再起動させる機能とを含み、前記全スレッド再起動機能は、無限ループ状態に陥ったシステムスレッドの優先順位を下げる機能と、無限ループ状態に陥っていないスレッドに終了処理を実行するよう通知する機能と、無限ループ状態に陥っていないスレッドから終了処理が完了した旨の通知を受け取った後にシステム全体を再起動させる機能とを含むコンピュータを提供する。
この構成において、無限ループ状態に陥ったスレッドがユーザスレッドの場合は、このユーザスレッドの優先順位を下げるとともに、他のスレッドに待避処理を実行するよう通知し、他のスレッドから待避処理が完了した旨の通知を受けた後に無限ループ状態に陥ったユーザスレッドを再起動させる。一方、無限ループ状態に陥ったスレッドがシステムスレッドの場合は、このシステムスレッドの優先順位を下げ、他のスレッドに終了処理を実行するよう通知し、他のスレッドから終了処理が完了した旨の通知を受け取った後にシステム全体を再起動させる。これにより、無限ループ状態に陥ったスレッドがユーザスレッドの場合は、このユーザスレッドの再起動を実施するに際して、他のスレッドに確実に待避処理を行わせることができる。また、無限ループ状態に陥ったスレッドがシステムスレッドの場合は、システム全体を再起動させるに際し、無限ループ状態に陥ってない他のスレッドに確実に終了処理(待避処理の一種)を行わせることができる。
また、本発明は、コンピュータに、上記いずれかに記載の機能を実現させるためのプログラムを提供する。このプログラムをコンピュータにおいて実行させることにより、上記いずれかに記載のコンピュータの各機能を実現できる。
本発明によれば、無限ループ状態に陥った場合に、無限ループ状態に陥る前のシステムの状態を極力残して、無限ループ状態から自動復旧することが可能なコンピュータ及びプログラムを提供できる。
本発明の実施形態として、優先順位方式でスケジューリングを行うオペレーティングシステム(OS)を搭載し、複数のスレッド(CPU時間が割り与えられる処理単位または制御単位。OSによってはタスクと読み替え可。)のうち、あるスレッドが何らかの異常により無限ループ状態になった場合に、それを検出して自動復旧する機能を備えたコンピュータについて説明する。ここでは、Windows(登録商標) CEなどのいわゆるリアルタイムOSに適用した例を示す。
図1は本発明の実施形態に係るコンピュータの主要部の機能構成を示すブロック図である。
カーネル(Kernel)1は、優先順位方式によるプリミティブなスケジューリングを行ってプログラムの実行単位であるスレッドの実行を管理する。すなわち複数のスレッドが同時に存在する場合、優先順位が最も高いスレッドに必ずタイムスライスが割り当てられる。最も優先順位が高いレベル0のスレッドを除き,同じ優先順位のスレッドの間ではラウンドロビン方式でタイムスライスが割り当てられる。レベル0のスレッドは,一度タイムスライスを獲得したら終了するまで処理を継続する。タイムスライスの最小単位はOSに依存する。カーネル1は、動的リンクライブラリ(DLL)のロード、ページ単位のメモリ管理、例外処理、等も担当する。
スレッド間の同期には、Mutex、クリティカルセクション、名前付きイベントが用いられる。カーネル1はこれらを用いてスレッドの処理の同期をとりつつ、リアルタイム処理を実現する。これらはいずれも処理の完了を通知する方法である。たとえば名前付きイベントは、あるスレッドが別のスレッドで発生したイベントが発生するまで処理を待つような場合に使用される。Mutexは共有リソースが別のプロセスに使われている場合に、これが解放されるのを待つのに利用される。クリティカルセクションは同一プロセス内で資源を共有する場合に利用される。
メモリ領域や入出力デバイスなどの資源の割り当ては、プロセス単位で行われる。プロセスは複数個のスレッドからなる。同時に実行できるプロセス数およびスレッド数はOSに依存する。スレッドの優先順位数もOSに依存する。
ソフトWDT(WatchDog Timer)カウンタクリアスレッド2は、定期的(たとえば1秒(sec )毎)に起床するスレッドである。無限ループ復旧スレッド3は、ソフトWDTカウンタクリアスレッド2が一定時間(たとえば20sec 相当)以上起床できなかった場合に起動するスレッドである。ソフトWDTカウンタ4は、ソフトWDTカウンタクリアスレッド2によりカウンタ値がクリアされるスレッドである。割り込みハンドラ5は、割り込みを発生させるスレッドである。これらはシステムに常駐している。
リアルタイム処理が必要なスレッドである割り込みハンドラ5の優先順位は、レベル0(最優先:TIME CRITICAL)またはレベル1(最高:HIGHEST)である。カーネル1の優先順位は、割り込みハンドラ5のそれよりも低い。
ソフトWDTカウンタクリアスレッド2、無限ループ復旧スレッド3、およびスレッドA、B、Cの優先順位はカーネル1のそれよりも低い。これらの中では無限ループ復旧スレッド3の優先順位が最も高く、ソフトWDTカウンタクリアスレッド2の優先順位が最も低い。スレッドA、B、Cは、アプリケーションプログラムの実行に伴って起動されたスレッドであり、ここではこれらが無限ループ状態の監視対象となる。
[通常処理動作]
このコンピュータの通常時(無限ループ非発生時)における動作は次の通りである。割り込みハンドラ5は、ソフトWDTカウンタ4を定期的(たとえば10msec 毎)にインクリメントするとともにソフトWDTカウンタ4の値をチェックする。一方、ソフトWDTカウンタクリアスレッド2は定期的(たとえば1sec 毎)に起動し、ソフトWDTカウンタ4をクリア(カウント値=0に)する。割り込みハンドラ5は、ソフトWDTカウンタ4の値が無限ループが発生したと判断できる所定値(たとえば20sec 相当)以上になったら、無限ループ状態が発生したと判断して割り込みを実行し、無限ループ復旧スレッド3を起動させる。
このコンピュータの通常時(無限ループ非発生時)における動作は次の通りである。割り込みハンドラ5は、ソフトWDTカウンタ4を定期的(たとえば10msec 毎)にインクリメントするとともにソフトWDTカウンタ4の値をチェックする。一方、ソフトWDTカウンタクリアスレッド2は定期的(たとえば1sec 毎)に起動し、ソフトWDTカウンタ4をクリア(カウント値=0に)する。割り込みハンドラ5は、ソフトWDTカウンタ4の値が無限ループが発生したと判断できる所定値(たとえば20sec 相当)以上になったら、無限ループ状態が発生したと判断して割り込みを実行し、無限ループ復旧スレッド3を起動させる。
[復旧処理動作]
次に、無限ループ復旧スレッド3による復旧処理動作について図2〜図5を参照して説明する。
次に、無限ループ復旧スレッド3による復旧処理動作について図2〜図5を参照して説明する。
ここでは、スレッドAがシステムスレッド、すなわち無限ループ状態に陥った場合にオペレーティングシステムを再起動させなければ復旧できないスレッドであり、スレッドBおよびCがユーザスレッド、すなわちオペレーティングシステムの稼働中に一旦終了し再起動させて上記いずれかの状態に復旧できるスレッドであるものとして説明する。
図2の第1例は、スレッドA、B、Cの中でスレッドAの優先順位が最も低く、スレッドCの優先順位が最も高い条件下で、ユーザスレッドであるスレッドCが無限ループ状態に陥ったときの動作を示している。図3の第2例は、スレッドA、B、Cの中でスレッドAの優先順位が最も高く、スレッドCの優先順位が最も低い条件下で、システムスレッドであるスレッドAが無限ループ状態に陥ったときの動作を示している。図2および図3中の矢印は復旧処理の際にデータが送られる向きを擬似的に示したものである。
図4は無限ループ復旧スレッド3による処理の全体の流れを例示したフローチャートである。図5は、図4中の無限ループスレッド検出処理の詳細を示すフローチャートである。図4および図5中の括弧付き数字の処理は、図2および図3中の括弧付き数字で示したデータ等の流れと対応している。
無限ループ復旧スレッド3は起動すると、図4に示すように、先ず、無限ループスレッド検出処理(ステップS11)を実施する。
無限ループスレッド検出処理(ステップS11)では、図5に示すように、先ず、カーネル1から各スレッド(スレッドA、B、Cを含む全スレッド)のCPU時間を取得し(ステップS21、(1))、取得した値をロギングバッファ6に書き込む(ステップS22、(2))。その後、ループカウンタにループ回数(cnt)を設定する(ステップS23、(3))。
そして、一定の時間(たとえば1sec )スリープし(ステップS24、(3))、起床するたびに、実行可能状態にあるスレッドのプログラムカウンタ(PC)を取得してそれをロギングバッファ6に書き込む処理(ステップS25、(3))を実施する。この処理を終えるたびに、ループカウンタの値(cnt)をデクリメントしていく(ステップS26、(3))。そして、ループカウンタの値が0より大きいかを判断し(ステップS27、(3))、0より大きい場合はステップS24に戻ることによって、上記ステップS24〜S27の処理をループカウンタの値が0になるまで繰り返す。
ループカウンタの値が0になったら(ステップS27でNo)、カーネル1から各スレッドの累積CPU時間を取得し(ステップS28、(4))、取得した値をロギングバッファ6に書き込む(ステップS29、(5))。CPU時間の長さに関して上位(図示の例では1位から5位)にランクされるスレッドを算出し(ステップS30、(5))、その結果をロギングバッファ6に書き込む(ステップS31、(5))。そして、1位にランクされたスレッドのメモリ使用量を取得し(ステップS32、(6))、その値をロギングバッファ6に書き込む(ステップS33、(7))。その後、ループカウンタにループ回数(cnt)を設定する(ステップS34)。
そして、一定の時間(たとえば100msec )スリープし(ステップS35)、起床するたびに、1位にランクされたスレッドのプログラムカウンタを取得してそれをロギングバッファ6に書き込む処理(ステップS36、(7))を実施する。この処理を終えるたびに、ループカウンタの値(cnt)をデクリメントしていく(ステップS37)。これをループカウンタの値が0になるまで繰り返す。
ループカウンタの値が0になったら(ステップS38でNo)、図5の無限ループスレッド検出処理を終了する。この無限ループスレッド検出処理により、CPU使用時間の長さに関して1位にランキングされたスレッド、すなわち無限ループ状態に陥ったスレッドの検出とその特有情報(メモリ使用量およびプログラムカウンタ)の取得がなされたことになる。その後、図4のスレッド分類判別処理(ステップS12)に進む。
スレッド分類判別処理(ステップS12)では、無限ループスレッド検出処理(ステップS11)で検出されたスレッドすなわち無限ループ状態に陥ったスレッドがユーザスレッドであるかシステムスレッドであるかの判別がなされる。
無限ループ状態に陥ったスレッドがユーザスレッドである場合、他の全てのスレッドに対して待避処理を実行するよう通知する(ステップS13、(8))。次いで、無限ループ状態に陥ったスレッドの優先順位を下げる(ステップS14、(9))。そして、他の全てのスレッドからの待避処理完了通知を待つ(ステップS15、(10))。他の全てのスレッドから待避処理完了通知を受け取ったら(ステップS15でYes)、無限ループ状態に陥ったスレッドを再起動させる(ステップS16、(11))。
一方、無限ループ状態に陥ったスレッドがシステムスレッドである場合、他の全てのスレッドに対して終了処理を実行するよう通知する(ステップS17、(8))。次いで、無限ループ状態に陥ったスレッドの優先順位を下げる(ステップS18、(9))。そして、他の全てのスレッドからの終了処理完了通知を待つ(ステップS19、(10))。他の全てのスレッドから終了処理完了通知を受け取ったら(ステップS19でYes)、システム全体を再起動(システムリセット)する(ステップS20、(11))。
図2の例では、ユーザスレッドであるスレッドCが無限ループ状態になっているので、監視対象となっている他の全てのスレッドであるスレッドA、Bに対して待避処理を実行するよう通知する(ステップS13)。そして、スレッドCの優先順位を下げて(ステップS14)、スレッドA、Bからの待避処理完了通知を待つ(ステップS15)。スレッドA、Bから待避処理完了通知を受け取ったら(ステップS15でYes)、スレッドCを再起動させる(ステップS16)。
一方、図3の例では、システムスレッドであるスレッドAが無限ループ状態になっているので、監視対象となっている他の全てのスレッドB、Cに対して終了処理を実行するよう通知する(ステップS17)。そして、スレッドAの優先順位を下げて(ステップS18)、スレッドB、Cからの終了処理完了通知を待つ(ステップS19)。スレッドB、Cから終了処理完了通知を受け取ったら(ステップS19でYes)、システム全体を再起動する(ステップS20)。
上記のように、無限ループ状態に陥ったスレッドがユーザスレッドであるかシステムスレッドであるかを判別し、ユーザスレッドの場合は、無限ループ状態に陥っていない他の全てのスレッドに待避処理を行わせた後に、無限ループ状態に陥ったスレッドのみ再起動させるので、見かけ上リセットせずに、コンピュータを無限ループ状態から自動復旧させることができる。また、無限ループ状態に陥っていないスレッドに関連するデータは、主記憶やキャッシュから消去されないので、無限ループ状態に陥らなかったスレッドに関しては、無限ループ状態に陥ったスレッドの再起動後に、無限ループ状態発生前の処理を再度実行する必要がない。したがって、本実施形態では、再起動完了後における処理効率を向上できる。
また、無限ループ状態に陥ったスレッドがシステムスレッドの場合は、無限ループ状態に陥っていない他の全てのスレッドに終了処理を実行させてから、システム全体を再起動させるので、無限ループ状態に陥らなかったスレッドによる処理が途中で終了してしまったり、無限ループ状態発生前に得られた必要なデータが失われてしまったりするのを防止できる。
また、無限ループ状態に陥ったスレッドに絞ってCPU時間、メモリ使用量、プログラムカウンタ等の情報を取得してロギングバッファに書き込み、各スレッドの解析を可能とすることにより、無限ループ復旧の際に、解析に役立つ情報を効率良く取得でき、ロギングバッファの容量が少なくて済む。
このように、本実施形態のコンピュータは、優先順位方式でスケジューリングを行うことによりスレッドの実行を制御するOSを搭載したコンピュータでありながら、無限ループ状態に陥ったらそのことを検知し、無限ループ状態に陥っていないスレッドに退避処理を実行させた後で再起動処理を行うことによって、無限ループ状態に陥る前のシステムの状態を極力残して、無限ループ状態から自動復旧することができる。このため、優先順位方式でリアルタイム処理を行う必要がある組み込みOSを搭載したコンピュータ、たとえば携帯情報端末(PDA)や携帯電話機、自動車制御用の車載コンピュータ等において有効に利用できる。
本発明は、無限ループ状態に陥った場合に、無限ループ状態に陥る前のシステムの状態を極力残して、無限ループ状態から自動復旧することが可能となる効果を有し、優先順位方式でスケジューリングを行うオペレーティングシステムを搭載したコンピュータ及びそのプログラム等に有用である。
1 カーネル
2 ソフトWDTカウンタクリアスレッド
3 無限ループ復旧スレッド
4 ソフトWDTカウンタ
5 割り込みハンドラ
6 ロギングバッファ
A、B、C スレッド
2 ソフトWDTカウンタクリアスレッド
3 無限ループ復旧スレッド
4 ソフトWDTカウンタ
5 割り込みハンドラ
6 ロギングバッファ
A、B、C スレッド
Claims (4)
- 優先順位方式によるスケジューリングを行ってスレッドの実行を管理するオペレーティングシステムを搭載したコンピュータであって、
無限ループ状態に陥ったスレッドの発生を検出する無限ループ状態検出機能と、
無限ループ状態に陥ったスレッドの発生が検出された場合、他のスレッドに退避処理を実行させた後、当該検出されたスレッドを再起動させるスレッド復旧機能と
備えたコンピュータ。 - 請求項1に記載のコンピュータであって、
実行状態、実行可能状態、待機状態のうちのいずれかの状態にあるスレッドを、オペレーティングシステムの稼働中に一旦終了し再起動させて上記いずれかの状態に復旧できるユーザスレッドと、無限ループ状態に陥った場合にオペレーティングシステムを再起動させなければ上記いずれかの状態に復旧できないシステムスレッドとに分類して監視するスレッド監視機能を更に備え、
前記スレッド復旧機能は、
無限ループ状態に陥ったスレッドがユーザスレッドの場合は、無限ループ状態に陥ったスレッドのみ再起動させる無限ループスレッド再起動機能と、
無限ループ状態に陥ったスレッドがシステムスレッドの場合は、全てのスレッドを再起動させる全スレッド再起動機能とを含むコンピュータ。 - 請求項2に記載のコンピュータであって、
前記無限ループスレッド再起動機能は、
無限ループ状態に陥ったユーザスレッドの優先順位を下げる機能と、
他のスレッドに待避処理を実行するよう通知する機能と、
この他のスレッドから待避処理が完了した旨の通知を受けた後に前記ユーザスレッドを再起動させる機能とを含み、
前記全スレッド再起動機能は、
無限ループ状態に陥ったシステムスレッドの優先順位を下げる機能と、
無限ループ状態に陥っていないスレッドに終了処理を実行するよう通知する機能と、
無限ループ状態に陥っていないスレッドから終了処理が完了した旨の通知を受け取った後にシステム全体を再起動させる機能とを含むコンピュータ。 - コンピュータに、請求項1ないし請求項3のいずれかに記載の機能を実現させるためのプログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003424554A JP2005182594A (ja) | 2003-12-22 | 2003-12-22 | コンピュータ及びプログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003424554A JP2005182594A (ja) | 2003-12-22 | 2003-12-22 | コンピュータ及びプログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2005182594A true JP2005182594A (ja) | 2005-07-07 |
Family
ID=34784717
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003424554A Pending JP2005182594A (ja) | 2003-12-22 | 2003-12-22 | コンピュータ及びプログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2005182594A (ja) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008204013A (ja) * | 2007-02-16 | 2008-09-04 | Seiko Epson Corp | スレッド動作異常検知方法、マルチスレッドシステム |
WO2012147168A1 (ja) * | 2011-04-26 | 2012-11-01 | 富士通株式会社 | システム、および検出方法 |
US8320010B2 (en) | 2006-09-08 | 2012-11-27 | Canon Kabushiki Kaisha | Image forming apparatus capable of setting specific process every storage area and information processing method |
CN103810053A (zh) * | 2014-02-14 | 2014-05-21 | 福建天晴数码有限公司 | 网络游戏服务器陷入死循环的处理方法 |
US9250980B2 (en) | 2009-12-18 | 2016-02-02 | International Business Machines Corporation | System, method, program, and code generation unit |
-
2003
- 2003-12-22 JP JP2003424554A patent/JP2005182594A/ja active Pending
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8320010B2 (en) | 2006-09-08 | 2012-11-27 | Canon Kabushiki Kaisha | Image forming apparatus capable of setting specific process every storage area and information processing method |
JP2008204013A (ja) * | 2007-02-16 | 2008-09-04 | Seiko Epson Corp | スレッド動作異常検知方法、マルチスレッドシステム |
US9250980B2 (en) | 2009-12-18 | 2016-02-02 | International Business Machines Corporation | System, method, program, and code generation unit |
US9904581B2 (en) | 2009-12-18 | 2018-02-27 | International Business Machines Corporation | System, method, program, and code generation unit |
US10169092B2 (en) | 2009-12-18 | 2019-01-01 | International Business Machines Corporation | System, method, program, and code generation unit |
WO2012147168A1 (ja) * | 2011-04-26 | 2012-11-01 | 富士通株式会社 | システム、および検出方法 |
CN103493023A (zh) * | 2011-04-26 | 2014-01-01 | 富士通株式会社 | 系统以及检测方法 |
CN103810053A (zh) * | 2014-02-14 | 2014-05-21 | 福建天晴数码有限公司 | 网络游戏服务器陷入死循环的处理方法 |
CN103810053B (zh) * | 2014-02-14 | 2017-06-13 | 福建天晴数码有限公司 | 网络游戏服务器陷入死循环的处理方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9335998B2 (en) | Multi-core processor system, monitoring control method, and computer product | |
US8886866B2 (en) | Optimizing memory management of an application running on a virtual machine | |
US5948112A (en) | Method and apparatus for recovering from software faults | |
US7627782B2 (en) | Multi-processing system and multi-processing method | |
US6996745B1 (en) | Process for shutting down a CPU in a SMP configuration | |
JP2001154885A (ja) | コンピュータシステムのロックアップ防止方法及びコンピュータシステムをモニターする方法 | |
US7383470B2 (en) | Method, system, and apparatus for identifying unresponsive portions of a computer program | |
JP4562568B2 (ja) | 異常検出プログラムおよび異常検出方法 | |
US7617488B2 (en) | Method and apparatus and determining processor utilization | |
CN111796954A (zh) | 基于jvm的看门狗的控制方法、装置、设备及存储介质 | |
JP4992740B2 (ja) | マルチプロセッサシステム、障害検出方法および障害検出プログラム | |
Endo et al. | Improving interactive performance using TIPME | |
US7698598B1 (en) | Automatic generation of core files and automatic generation of support information with generation of core files | |
JP2005182594A (ja) | コンピュータ及びプログラム | |
JP4253796B2 (ja) | コンピュータ及び制御方法 | |
JP2965075B2 (ja) | プログラム実行状態監視方法 | |
US7707462B1 (en) | Non-disruptive generation of core files without reboot | |
US20130318310A1 (en) | Processor processing method and processor system | |
CN112631872B (zh) | 一种多核系统的异常处理方法及装置 | |
US20130117765A1 (en) | Multicore processor system, communication control method, and communication computer product | |
JP2001109635A (ja) | 障害対処方法及びコンピュータシステム読み取り可能な記録媒体 | |
JPH10269110A (ja) | 計算機システムのハングアップ回避方法並びにこの方法を用いた計算機システム。 | |
JP4892260B2 (ja) | イベント通報装置およびイベント通報プログラム | |
JP3122371B2 (ja) | 計算機システム | |
JPH1139178A (ja) | 計算機システム及び計算機システムにおけるチェックポイントスレッド方法 |