ホーム 研究内容 FreeBSD HP電卓 今日のgoo Links

--ホーム--
研究内容
FreeBSD
HP電卓
--Links--
BSD
Security
Hardware
NetHack
HP電卓

ハングアップかパニックか,それが問題だ

カーネルがお亡くなりになる場合,症状により

  1. 突然死
  2. ハングアップ
  3. パニック
の3種類に分類できます.

突然死

突然死とは,カネールが突然リブートしてしまう現象をいいます.後で述べる ように,何らかのメッセージを残して止まり,それからリブートするのがどう にもならなくなったときにカーネルがとるべき行動なのですが,さまざまな異 常のため,メッセージを残すことなくリブートすることがあります.これはと ても扱うのがやっかいです.なぜなら,原因追求の手がかりを残してくれない からです.

ハングアップ

ハングアップとは,カーネルがうんともすんとも言わなくなり,ハードウェア リセットを行なうしかない状態になることをいいます.本当にどうしようもな い状態です.割り込みブロックを行なったままスリープしてしまったり,とん でもないrace conditionが起こってにっちもさっちもいかなくなったり,ある いはハードウェアのトラブルで永遠に帰ってこない状態になったりといろいろ な原因が考えられます.この状態になると,

  1. キーボードのCAPSキーやカナキーを押してもLEDが点滅しない
  2. ネットワークからログインしようとしてもログインできない
  3. GRPH+ファンクションキーでコンソールを切替えることができない
  4. CTRL+GRPH+ESCを押してもDDBに落ちない
  5. ハードディスクのアクセスランプが点灯したままになっている

などの症状が出ます.本当にこれら全部が出る場合と,一部しか出ない場合が あります.

こうなったときはもうどうしようもないので,1分間お祈りしてからリセット してあげましょう.

パニック

カーネルのもう一つの死に方はパニックです.カーネルが回復不可能なエラー を検出すると,panic()を呼び出します.panic()は呼出元が指 定した文字列を表示し,なぜパニックしたのかを知らせます.そして可能であ ればすべてのファイルシステムをunmountします.不可能であればあきらめま す.そして,実メモリの内容やCPUの状態をディスク上に書き出してリブート します.

パニックする原因は大きく以下の2つに分類できます.

  • カーネルソースコードに書かれている検査に落ちた.
  • CPU例外が発生した

前者は,カーネルソースのところどころにあるエラーがないかどうか検査する コードに引っかかった場合です.このような検査は,知らずに続行するとシス テムに重大な障害を引き起こす可能性がある部分で行ないます.もちろん,こ のような検査はオーバーヘッドになるので,必要最小限になっていますが,カー ネル作成時に,

	options		DIAGNOSTIC

を指定しておくと,さらに詳しく検査するようになります.カーネルハッカー ならこれを指定しておいた方がいいと思います.

後者の代表はページフォールトです.


リーガル Contact 名大岩鉱 名大地球 名大年測
Copyright KATO Takenori, 1997, 1998, 199, 2000. All rights reserved.
© Original BSD Daemon Copyright 1988 by Marchall Kirk McKusik. All Rights Reserved.