1

実際にシステムをパニックにすることになっているpanic()などの呼び出しによるシステムコールは考慮しないでください。Socket、read、writeなどの汎用システムコールにもっと興味があります。そのようなシステムコールがパニックを引き起こす場合、これはカーネルのバグですか?私の理解では、それはカーネルのバグであるべきだということです。間違った引数で渡された場合、システムコールはシステム全体をパニックに陥らせることなく中止する必要があります。

4

2 に答える 2

3

不思議なことに、これは100%正しくありません。

はい。カーネルにバグがあるか、ハードウェアの誤動作(RAMチップの破損など)がない限り、特権のないユーザーによるシステムコールへの入力によってパニックが発生することはありません。

ただし、これは特権ユーザー(rootなど)には当てはまりません。特権ユーザー(rootが明白な例)によって/ dev / memに適用された場合のwrite(2)システムコールについて考えてみます。これでカーネルメモリを上書きすることを妨げるものは何もありません。

Unixはそのようなものです-これがあなたがしたいことであるならば、それはあなたにあなた自身を簡単にぶら下げるためにあなたにロープの全長を与えます:-)

于 2012-05-17T11:29:23.663 に答える
0

もちろん、カーネルは、すべてのコストでクラッシュを回避するために、syscallパラメーター、ユーザー権限、リソースの可用性をチェックし、同時実行性などの問題を処理する必要があります。結論として、単純なユーザー(rootでさえ、理想的には-しかし、gbyが述べているように、rootは物理アドレス空間に直接アクセスできるため、これは困難です)は、どんなに頑張ってもシステムをクラッシュさせることはできません。

于 2012-05-18T03:54:09.117 に答える