カーネルスレッドを強制終了するにはどうすればよいですか?そして、本当にそうしたいですか?


8

私はから学んだように、この質問[bracketed]によって記載されているプロセスps auxのコマンドは、カーネルスレッドです。それで、コマンドラインからそれらを殺す方法はありますか?そうでない場合、その理由は、カーネルパニックが発生するリスクを高くすることからユーザーを救うためです。

回答:


9

カーネルスレッド、またはD状態でブロックされているプロセスを強制終了することはできません。これは、カーネルがユーザーモードに戻ったときにのみ信号が配信されるためです。シグナル配信の技術的な制限は別として、カーネルコードがスピンロックやミューテックスなどの重要なリソースをその時点で保持している可能性があるため、カーネルコードの途中でスレッドを強制終了すると、システムが破損します。リソースが解放されないようにします。

プロセスが長期間D状態でスタックしている場合は、カーネルにバグがあります。レポートのヒントについては、https://wiki.ubuntu.com/KernelTeam/KernelTeamBugPoliciesを参照してください


2

カーネルスレッドは、システムを管理するためにカーネルによって作成される必要なスレッドです。

すべてが必要というわけではありませんが、すべて(ほとんど)すべてが有益であり、ほとんど追加のリソースを必要としません。通常の条件下でカーネルスレッドを強制終了することを考える理由はありません。

Linuxカーネルは、必要に応じてこれらのスレッドを破棄することができます。スレッドについて心配する必要はありません。ほとんどの状況で強制終了することはできません。


マウントでマウントされたデバイスやその他のハードウェアのようなシステムリソースをブロックする、中断できないスリープ状態のスレッドがあり、スレッドを強制終了して解放したい場合はどうなりますか?
数学

1
(システムの不具合ではなく)役に立つと考え、すぐに解決されることを期待している場合は、バグを報告してください。
ブルーノペレイラ

カーネルスレッドの強制終了が解決策であると判断する前に、マウントの問題点を見つけようとしました。
Bruno Pereira

私はカーネルハッカーではありませんが、特定のカーネルドライバを使用しています。もちろん、一部のデバイスが正常に動作しない場合はバグレポートを作成する必要がありますが、少なくとも半年は待たなければならないため、次のubuntuでこのバグ修正が行われます。これは有効なシナリオであり、Linuxカーネルには特定のアクションを中止してリソースが解放される可能性があるはずです(使用されている場合)。
数学

カーネルスレッドがanogherプロセスによって開始された可能性が最も高いため、カーネルスレッドを閉じるのを忘れたプロセスを除いて、カーネルスレッドに問題はないと思われます。私はあなたの言っていることは理解していますが、カーネルスレッドを強制終了することはお勧めできません。
ブルーノペレイラ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.