--ホーム--
|
カーネルがお亡くなりになる場合,症状により
突然死突然死とは,カネールが突然リブートしてしまう現象をいいます.後で述べる ように,何らかのメッセージを残して止まり,それからリブートするのがどう にもならなくなったときにカーネルがとるべき行動なのですが,さまざまな異 常のため,メッセージを残すことなくリブートすることがあります.これはと ても扱うのがやっかいです.なぜなら,原因追求の手がかりを残してくれない からです. ハングアップハングアップとは,カーネルがうんともすんとも言わなくなり,ハードウェア リセットを行なうしかない状態になることをいいます.本当にどうしようもな い状態です.割り込みブロックを行なったままスリープしてしまったり,とん でもないrace conditionが起こってにっちもさっちもいかなくなったり,ある いはハードウェアのトラブルで永遠に帰ってこない状態になったりといろいろ な原因が考えられます.この状態になると,
などの症状が出ます.本当にこれら全部が出る場合と,一部しか出ない場合が あります. こうなったときはもうどうしようもないので,1分間お祈りしてからリセット してあげましょう. パニックカーネルのもう一つの死に方はパニックです.カーネルが回復不可能なエラー を検出すると,panic()を呼び出します.panic()は呼出元が指 定した文字列を表示し,なぜパニックしたのかを知らせます.そして可能であ ればすべてのファイルシステムをunmountします.不可能であればあきらめま す.そして,実メモリの内容やCPUの状態をディスク上に書き出してリブート します. パニックする原因は大きく以下の2つに分類できます.
前者は,カーネルソースのところどころにあるエラーがないかどうか検査する コードに引っかかった場合です.このような検査は,知らずに続行するとシス テムに重大な障害を引き起こす可能性がある部分で行ないます.もちろん,こ のような検査はオーバーヘッドになるので,必要最小限になっていますが,カー ネル作成時に, options DIAGNOSTIC を指定しておくと,さらに詳しく検査するようになります.カーネルハッカー ならこれを指定しておいた方がいいと思います. 後者の代表はページフォールトです. |