割り込み――デバイスが生成する割り込み【前編】仮想マシンモニタ Xen 3.0解読室(2/3 ページ)

» 2007年12月03日 01時31分 公開
[高橋浩和(VA Linux Systems Japan),ITmedia]

ハードウェア割り込み

 Xenハイパーバイザーはハードウェアで発生した事象を、割り込みとして受け取ります。Xen環境では、ハードウェア割り込みを幾つかの異なる目的に利用しています。

割り込み種別

 実割り込みは、事象の通知元によって3つに分類でき(図3)、これを「割り込み種別」と呼びます。

図3 図3 実割り込みの種類
  • グローバル割り込み

 グローバル割り込みは、システム全体に対して発生する割り込みです。割り込みを受け付けるCPUは基本的にどれでも構いません。各種外部デバイスが生成する割り込みをグローバル割り込みとして受け取ります。Xen環境ではこの割り込みを、大きく分けて2種類の用途に利用しています。

 1つは、Xen自体が利用する割り込みです。Xen 3.0.1では、グローバルな時計の割り込みと、コンソール割り込みに利用しています。

 もう1つは、ドメインに転送する割り込みです。Xenでは、ストレージやネットワークインタフェースなどのデバイスをXenハイパーバイザーの中で管理しません。ほとんどすべてのデバイス管理を、ドメイン0と呼ばれる特別なドメインに任せています*。デバイスから割り込みを受け取ると、Xenハイパーバイザーは仮想割り込みに変換し、ドメイン0に転送します。

  • CPUローカル割り込み

 CPUローカル割り込みは、各CPUに独立して発生する割り込みです。各CPU固有の独立した処理を実現するために利用します。Xenでは、ドメインを再スケジューリングするためのローカルタイマー割り込み*に利用しています。

  • プロセッサ間割り込み

 最近のアーキテクチャでは、SMPの構成を取っているときほかのプロセッサに対して割り込みを送ることができ、これを「プロセッサ間割り込み」と呼びます。プロセッサ間割り込みは、ほかのCPUが管理している資源の状態を変更してもらいたいときや、処理を依頼したいときに利用するもので、次の2つのケースで利用されています。

  • TLBなどそれぞれのCPUが独立して管理している資源の操作を依頼する場合

 仮想空間の構造を変更したとき、ほかのCPUにもそのことを通知し、古い仮想空間情報を破棄してもらう必要があります。Xen 3.0では、この際にプロセッサ間割り込みを使用しています。

  • ドメイン間通信および仮想CPU間通信

 異なる実CPU上で動作している仮想CPUに事象を通知する際、プロセッサ間割り込みを利用します。Xen 3.0では、各ドメイン内で動作するゲストOSが事象の通知を簡単に行えるよう、仮想CPU間で通信するための汎用的な仕組みを用意しており、これを「イベントチャネル」と呼びます。


  • マスク不可割り込み(NMI)

 通常の割り込みは、マスクすることによってCPUが割り込みを受け取ることを抑制できますが、NMI(Non Maskable Interrupt)はマスクすることができません。CPUがどのような状態にあっても、NMIが発生すると、強制的に登録されているハンドラに制御が移ります。Xenハイパーバイザーは、この割り込みを「ハードウェアの致命的なエラーを通知する」「ウォッチドッグタイマーの実現」といった2つ目的で利用しています。

このページで出てきた専門用語

すべてのデバイス管理を、ドメイン0と呼ばれる特別なドメインに任せています

現在はドメイン0のみだが、近い将来ほかのドメインからもデバイスを制御できるようにしようとしている。

ドメインを再スケジューリングするためのローカルタイマー割り込み

「時間管理」の回に詳しく説明。


関連キーワード

Xen | ドメイン | カーネル


Copyright © ITmedia, Inc. All Rights Reserved.

注目のテーマ