2

組み込み Linux について学んでいます。以下の質問に対する適切な答えが見つからないようです。

私の理解では、ユーザー空間アプリケーションが実行されているとき、たとえばIOを実行したい場合、システムコールが行われ、SW割り込みが発生し、通常、MCUが非特権モードから特権モードに切り替わり、カーネルがアプリケーションに代わって IO を実行します。

ハードウェア割り込みが発生したときの類似性。これにより、モードが再び切り替わり、カーネル内で割り込みハンドラーが実行されると思います。

よくわからないのは、カーネル コードが CPU を制御できるのはこのときだけですか?

たとえば、コアが 1 つしかない場合、ユーザー アプリケーション コードが実行されている場合、割り込みが発生したかどうかに関係なく、カーネルが時々 CPU を制御して物事をチェックするべきではありません。おそらく、これを可能にする定期的なタイマー割り込みがありますか?

また、複数のコアがある場合、ユーザー アプリケーションが別のコアで実行されている間に、カーネルが常に 1 つのコアで実行されている可能性はありますか?

4

2 に答える 2