3

割り込みハンドラ(ISR)がどのように実行されるかを見ると、混乱が生じます。Wiki http://en.wikipedia.org/wiki/Context_switchでは、2つのステップで割り込み処理について説明しています。

1)コンテキストスイッチング

When an interrupt occurs, the hardware automatically switches a part of the 
context (at least enough to allow the handler to return to the interrupted code).
The handler may save additional context, depending on details of the particular
hardware and software designs.

2)ハンドラーの実行

The kernel does not spawn or schedule a special process to handle interrupts, 
but instead the handler executes in the (often partial) context established at 
the beginning of interrupt handling. Once interrupt servicing is complete, the 
context in effect before the interrupt occurred is restored so that the 
interrupted process can resume execution in its proper state.

割り込みハンドラーが上半分であり、カーネルスペースデバイスドライバー用であるとしましょう(ユーザースペースデバイスドライバーの割り込みは同じロジックに従うと仮定します)。

割り込み発生時:

1)現在のカーネルプロセスが一時停止されています。しかし、contextここの状況はどうですか?Wikiの説明に基づくと、カーネルはISRを実行するための新しいプロセスを生成せず、はcontext established at the beginning of interrupt handling、中断されたプロセス内の別の関数呼び出しのように聞こえます。では、割り込みハンドラーはinterrupted process's stack(context)を使用して実行しますか?または、カーネルはそれを実行するために他のメモリスペース/リソースを割り当てますか?

2)ここでは、ISRはスケジューラによってスリープ状態にできる「プロセス」タイプではないためです。何があっても終わらせなきゃいけないの?タイムスライスバウンドによっても制限されませんか?ISRがハングした場合、システムはそれをどのように処理しますか?

質問が基本的なものである場合は申し訳ありません。私はその主題を十分に深く掘り下げていません。

ありがとう、

4

2 に答える 2

1

中断されたプロセスのスタック(コンテキスト)を使用して実行する割り込みハンドラーですか?または、カーネルはそれを実行するために他のメモリ空間/リソースを割り当てますか?

CPU とカーネルに依存します。一部の CPU は、現在のスタックを使用して ISR を実行します。他のものは、特別な ISR スタックまたはカーネル スタックに自動的に切り替えます。カーネルは、必要に応じてスタックを切り替えることもあります。

ここで ISR は、スケジューラによってスリープ状態にできる「プロセス」タイプではないためです。なんとしても終わらせなきゃいけないの?

そうでないと、コンピューターをハングアップさせる危険があります。ほら、割り込みプロセスとスレッドを中断します。実際、ほとんどの CPU にはスレッドやプロセスの概念がなく、何が中断/プリエンプトされるかは問題ではなく (別の ISR である可能性さえあります!)、ISR が終了するまで再び実行されることはありません。

タイム スライス バウンドによっても制限されませんか? ISR がハングした場合、システムはどのように対処しますか?

特にシングル CPU システムの場合はハングします。エラーが報告され、ハング/再起動する場合があります。実際、Windows では (Vista 以降?) ハングしたり、延期されたプロシージャ ( ) の実行が遅すぎたりします。DPCsこれは ISR ではありませんが、ISR と多少似ています (優先度/プリエンプションの観点から ISR とスレッド間で実行されます)。 . OS は DPC の実行を監視し、複数の CPU で同時に実行できます。

いずれにせよ、これは通常の状況ではなく、通常、システムをリセットする以外に方法はありません。見上げるwatchdog timers。それらは、このようなひどいハングを発見してリセットを実行するのに役立ちます。多くの電子機器にはそれらがあります。

于 2012-10-06T09:59:52.070 に答える
0
  1. 割り込みハンドラーは、優先度の高い独自のスレッドで実行される関数と考えてください。デバイスによって割り込みが設定されると、優先度が最も低い他のアクティビティが中断され、ISR が実行されます。これは、スレッド コンテキスト スイッチのようなものです。

  2. ISR が (例えば無限ループで) ハングすると、PC ドライバーで ISR について話していると仮定すると、コンピューター全体がハングします。それより低い ISR 優先度のアクティビティは許可されないため、コンピューターは機能していないように見えます。ただし、ハードウェア リモート デバッガー コマンドが接続されている場合は、引き続き反応します。

于 2012-10-06T08:47:41.500 に答える