
Xenのウェブサイトから、
ハイパーコールとシステムコールの関係は、ハイパーバイザーと OS の関係と同じです。あるいは、ハイパーコールとハイパーバイザーの関係は、システムコールとカーネルの関係と同じです。ハイパーコールはドメインからハイパーバイザーへのソフトウェア トラップであり、システムコールはアプリケーションからカーネルへのソフトウェア トラップです。ドメインはハイパーコールを使用して、ページテーブルの更新などの特権操作を要求します。システムコールと同様に、ハイパーコールは同期的ですが、ハイパーバイザーからドメインへの戻りパスはイベント チャネルを使用します。イベント チャネルは非同期通知のキューであり、ネイティブ ハードウェアで割り込みが通知するのと同じ種類のイベントを通知します。キューに保留中のイベントがあるドメインがスケジュールされると、OS のイベント コールバック ハンドラーが呼び出され、適切なアクションが実行されます。
- 両方が同じことを実行していると仮定すると、ハイパーコールはシステムコールと同じ時間がかかりますか。
- ハイパーバイザーがハイパーコールを処理する方法と、システムコールを同じように処理するLinuxカーネルに違いはありますか?
答え1
ハイパーコールはシステムコールよりも遅いです。これは、ハイパーコールがまずホスト/ハイパーバイザーに到達し、それからCPUまで移動して実行される必要があるためです。戻りパスも同様です。実際、同様のカーネルのベンチマークでは、ハイパーカーネルハイパーコールには約 3 ~ 4 倍の時間がかかることが示されています (リンク先の PDF ページ 15)。