個人的なメモ。 Java の jar に電子署名する方法。「RSA 署名付き証明書を使用したアプレットの署名方法」(@java.sun.com) openssl コマンドのかわりに keytool で keypair を生成することもできるんだな、なるほどど、と関係のないところに反応してみる。
「なぜに kernel panic が発生するのか」とかいう、かなり漠然とした質問をされてしまった。 一応仕事だったので、その辺のことを調べてみた。
結果としては、Linux kernel の場合、kernel の中に panic() という関数 (linux/kernel/panic.c) があって、こいつが実行されるとすべての割り込みがロックされて、 panic 時のメッセージを表示して、「for (;;) {}」を実行して kernel を停止した状態にする、ということに行き着く。 その panic() 関数を実行するケースとしては、例外処理をするときに、kernelを停止するのがベストな解決策な場合がある。 また、CPUのMMUの機能によって exception を検出して、panic() を実行することもできるんだそうだ。
そんなこんなで、panic のすべてが想定されないエラーによるものではないことが理解できた。 「kernel が panic になった」なんて聞くと、どうしようもないと思ったりするんだけど、こうやって実装を見てみたところ、panic のおかげで被害拡大しないですむのだと思えるようになった。 だからって panic ばっかり発生させては、利便性に大きな問題が発生してしまうけどね。
あと、panic() で call_trace() を実行するようにしてみたら楽しいのではないかなんて思ったんだけど、memory allocation ができない状態に panic() を実行する場合もあるんで、call_trace() なんかできるわけないだろボケということに。