私はLinuxカーネルの初心者です。
私はユーザー空間やカーネル空間で実行されている、2つのコンテキスト
1.プロセスのコンテキストがあることを知っている:どのような文脈のカーネルスレッドで
2.割り込みコンテキストカーネルスレッドはLinuxでどのようなコンテキストで動作しますか?
((元のシステムコールの一部として) ex:flushタスク)は実行されますか?
Linuxカーネルにプロセスコンテキストと割り込みコンテキスト以外のコンテキストはありますか?
私はLinuxカーネルの初心者です。
私はユーザー空間やカーネル空間で実行されている、2つのコンテキスト
1.プロセスのコンテキストがあることを知っている:どのような文脈のカーネルスレッドで
2.割り込みコンテキストカーネルスレッドはLinuxでどのようなコンテキストで動作しますか?
((元のシステムコールの一部として) ex:flushタスク)は実行されますか?
Linuxカーネルにプロセスコンテキストと割り込みコンテキスト以外のコンテキストはありますか?
カーネルスレッドは、カーネルスペースでprocess contextsで実行されます。割り込みを処理するいくつかのカーネルスレッドもありますが。それらはthreaded interrupt handlersと呼ばれます。しかし、彼らはまだプロセスのコンテキストで実行されます!
Hereは、2つのコンテキストの重要な違いの優れた説明です!
ここで理解を深めることができます。
What context does the scheduler code run in?
私の知る限りでは、プロセスおよび割り込みのみ2つのコンテキストです。
システムコールによって呼び出されることも、割り込みを処理することもない特定のタスクがあります。そのようなものは純粋なカーネルコンテキストとして扱われます。例えばswapperやINIT_TASkなど、ユーザー空間で対応するコードを実行していないものなどです。
いくつかの州がありますが、いくつかは他国の専門家である場合もあります。また、http://www.kernel.org/doc/htmldocs/kernel-hacking.htmlを参照してください。
in_nmi()
)in_irq()
)in_softirq()
)in_atomic()
)。おそらく入り口は、とりわけspin_lock
です。rcu_read_lock
と入力
本質的にカーネル・スレッドの*ポイント*カーネルは、プロセスコンテキストでコードを実行できるようにすることであるが、直接ではなく、特定のユーザ空間に代わっプロセス。 – caf
@Pavan:スレッド型割り込みハンドラ(softirqs)は割り込みコンテキストの特性を示します(スリープしないかもしれない)ので、プロセスコンテキストであると主張するのは矛盾します。 –
@jørgensenhttp://www.kernel.org/doc/Documentation/gpio.txtのGPIOドキュメントを読むと、「そのようなGPIOにアクセスするには、スリープ状態になる可能性のあるコンテキストが必要です。例えば、スレッドされたIRQハンドラだから、スレッド化された割り込みハンドラが正しくスリープできることを意味しますか?あなたはsoftirqsについて正しいです。しかし、スレッド式割り込みハンドラの唯一の種類ではありません。それともスレッド割込みハンドラと言っても、実際にはsoftirqsを参照していますか? –