[[PageNavi(internal22-navi)]]
{{{ comment
h2w-title:プロセッサ間割り込み
}}}
= プロセッサ間割り込み = #SECTION06310000000000000000
この機能はハードウェアサポートがあることを前提である。一方のCPUで発生したイベントを他のCPUに通知するために利用される。現在利用されているCPU間割り込みには以下のようなものがある。
* 再スケジューリング要求(smp_send_reschedule関数)
* 指定されたCPUへ、プロセスの再スケジューリング要求を出す (send_IPI_single関数)。
* 割り込み受信CPU側では、smp_reschedule_interrupt関数が 呼び出される。この関数では特に何もせずに即リターンする。 しかし、その割り込み処理からの戻りでプリエンプション処理が 自動的に動作するため目的は達成される。
* TLBフラッシュ要求(smp_flush_tlb関数)
* 他のCPUへ、TLBのフラッシュ要求を出す。 (send_IPI_allbutself関数)。あるCPU上で仮想空間の状態を 変更したとき、他のCPUでも同じ空間を参照している場合、 その状態変更を通知する必要がある。メモリ上のPTEを 変更しても、CPU内のTLBの情報は更新されない。
* 割り込み受信CPU側では、smp_invalidate_interrupt関数が 呼び出される。この関数は自CPUのTLBのフラッシュを行う。
* CPU停止要求(smp_send_stop関数)
* 他のCPU全てへ、CPU停止の要求を行う(send_IPI_allbutself関数)。
* 割り込み受信CPU側では、stop_this_cpu関数が呼び出される。 そのCPUに対する割り込みを禁止し、CPUを停止させる。
* CPU起動要求
* IntelCPUの場合、二つ目以降のCPUの起動にプロセッサ間割り込みを 利用している。
----
{{{ html
<A NAME="CHILD_LINKS"> </A>
}}}
* [internal22-219-その他の関数説明#SECTION06311000000000000000 その他の関数説明]
----
''(NIS)HirokazuTakahashi [[BR]]2000年06月11日 (日) 22時29分57秒 JST''1
[[PageNavi(internal22-navi)]]