最近、ハードウェアがサポートする仮想化について調べています。
ホスト cpu の 3 つの状態について読みました。したがって、最も一般的なユーザー空間、カーネル空間、および新しいゲスト状態です。ps コマンドからわかるように、開始した vm のプロセスと、いくつかの「サブ」スレッドがあります。仮想マシンが所有する各CPU。また、vmがio関連のプログラムを実行すると、ホスト上にさらにスレッドが作成されることに気付きました。これは、ハードウェアエミュレーションのqemuの応答である可能性があります。
だからここに私の質問があります:特定の時間(他の2つではなくゲスト状態の時間)、vcpuスレッドは実行中のゲストOSプロセスを表しますか(「占有」と「排他的」を意味します)?物理CPUとまったく同じです、ユーザー空間内の任意の時間、ユーザープロセスが実行されています。これは少しばかげているように聞こえるかもしれませんが、さらなる研究のためにそれを理解したいだけです。
この質問を簡単にするために: ホスト マシンで実行される vcpu スレッドは、常に何らかのゲスト OS プロセスに関連付けられていますか?
さらに単純化すると、ゲスト OS プロセスが実際にホスト CPU 上で直接実行され、通常のホスト プロセスとしてスケジュールされていると言うのは正しいでしょうか?2 種類のプロセスの違いは、仮想化と呼ばれるものですか?
ゲスト OS プロセスの切り替えに関するいくつかの質問を解決するために、別のスレッドが必要になるかもしれませんが、その前に、皆さんがこのスレッドで私を助けてくれることを願っています。
よろしくお願いします