Linuxコンテキストスイッチの内部:タイマーが中断される前にプロセスが終了した場合はどうなりますか?

Linuxコンテキストスイッチの内部:タイマーが中断される前にプロセスが終了した場合はどうなりますか?

タイマー割り込みの前にプロセスが終了すると、Linuxカーネルはどのようにコンテキスト切り替えを実行しますか?

プロセスが実行中でタイマ割り込みが発生した場合、フラグがセットされると関数がschedule自動的に呼び出され、スケジューリング機能が実行する次のプロセスを選択することがわかります。デフォルトでは、この場合、スケジューリング機能は現在のプロセスのコンテキストで実行されますが、タイマーが中断される前にプロセスが終了するとどうなりますか?scheduleこの場合、誰が関数を呼び出しますか?どのコンテキストで動作しますか?

注:元のstackoverflowにこの質問を投稿しましたが、stackoverflowに回答がないため、ここにもう一度尋ねます。

ベストアンサー1

タイマー割り込みは特定のプロセスに関連付けられていません。サービスが提供されると、カーネルは割り込みサービスルーチンを実行します。このコードとこのコードが呼び出すすべての関数は、「割り込みコンテキスト」で実行されます。

割り込みは、ほぼすべてのタスクの途中で処理できます。つまり、他の割り込みを処理するコードを含むカーネルコードの実行を一時停止して割り込みを処理できます。

スケジューラが呼び出されると、その時点に存在し、実行可能なプロセスのみが考慮されます。

おすすめ記事