Show page source of internal24-287-プロセッサ間割り込み #25051

[[PageNavi(internal24-navi)]]

{{{ comment
h2w-title:プロセッサ間割り込み
}}}
 

= プロセッサ間割り込み = #SECTION07210000000000000000

この機能はハードウェアサポートがあることを前提である。一方のCPUで発生したイベントを他のCPUに通知するために利用される。現在利用されているCPU間割り込みには以下のようなものがある。

  *  再スケジューリング要求(smp_send_reschedule関数) 
    *  指定されたCPUへ、プロセスの再スケジューリング要求を出す	(send_IPI_mask関数)。
    *  割り込み受信CPU側では、smp_reschedule_interrupt関数が	呼び出される。この関数では特に何もせずに即リターンする。	しかし、その割り込み処理からの戻りでプリエンプション処理が	自動的に動作するため目的は達成される。 
  *  TLBフラッシュ要求(flush_tlb_others関数) 
    *  指定されたCPUへ、指定されたTLBのフラッシュ要求を出す。	(send_IPI_mask関数)。あるCPU上で仮想空間の状態を変更したとき、	他のCPUでも同じ空間を参照している場合、その状態変更を	通知する必要がある。メモリ上のPTEを変更しても、CPU内の	TLBの情報は更新されない。
    *  割り込み受信CPU側では、smp_invalidate_interrupt関数が	呼び出される。この関数では指定された領域に対応するTLBの	フラッシュを行う。
    *  CPU間割り込みを利用したTLBフラッシュ処理は非常に重いため、	無駄に呼び出さないようにしている。	空間管理構造体struct_mmのcpu_vm_maskメンバに、この空間が	どのCPUから参照されているかを保持し、そのCPU(CPU群)に	対してのみ割り込みを送る。 
  *  TLBフラッシュ要求(flush_tlb_all関数) 
    *  他のCPU全てへ、TLBフラッシュ要求を出す(smp_call_function関数)。	送信先のCPU上でTLBフラッシュが完了するまでビジーウェイトする。
    *  割り込み受信CPU側では、flush_tlb_all_ipi関数が呼び出され、	TLBのフラッシュを行う。 
  *  CPU停止要求(smp_send_stop関数) 
    *  他のCPU全てへ、CPU停止の要求を行う(smp_call_function関数)。
    *  割り込み受信CPU側では、stop_this_cpu関数が呼び出される。	そのCPUに対する割り込みを禁止し、CPUを停止させる。 
  *  CPU起動要求 
    *  IntelCPUの場合、二つ目以降のCPUの起動にプロセッサ間割り込みを	利用している。 

----

{{{ html
<A NAME="CHILD_LINKS">&#160;</A>
}}}

  *  [internal24-288-その他の関数説明#SECTION07211000000000000000 その他の関数説明]

----

''(NIS)HirokazuTakahashi [[BR]]2000年12月09日 (土) 23時55分06秒 JST''1

[[PageNavi(internal24-navi)]]