0

最近、ハードウェアがサポートする仮想化について調べています。

ホスト cpu の 3 つの状態について読みました。したがって、最も一般的なユーザー空間、カーネル空間、および新しいゲスト状態です。ps コマンドからわかるように、開始した vm のプロセスと、いくつかの「サブ」スレッドがあります。仮想マシンが所有する各CPU。また、vmがio関連のプログラムを実行すると、ホスト上にさらにスレッドが作成されることに気付きました。これは、ハードウェアエミュレーションのqemuの応答である可能性があります。

だからここに私の質問があります:特定の時間(他の2つではなくゲスト状態の時間)、vcpuスレッドは実行中のゲストOSプロセスを表しますか(「占有」と「排他的」を意味します)?物理CPUとまったく同じです、ユーザー空間内の任意の時間、ユーザープロセスが実行されています。これは少しばかげているように聞こえるかもしれませんが、さらなる研究のためにそれを理解したいだけです。

この質問を簡単にするために: ホスト マシンで実行される vcpu スレッドは、常に何らかのゲスト OS プロセスに関連付けられていますか?

さらに単純化すると、ゲスト OS プロセスが実際にホスト CPU 上で直接実行され、通常のホスト プロセスとしてスケジュールされていると言うのは正しいでしょうか?2 種類のプロセスの違いは、仮想化と呼ばれるものですか?

ゲスト OS プロセスの切り替えに関するいくつかの質問を解決するために、別のスレッドが必要になるかもしれませんが、その前に、皆さんがこのスレッドで私を助けてくれることを願っています。

よろしくお願いします

4

2 に答える 2

0

VCPU はホストのスレッドではありません。KVM を使用すると、ゲストは権限の少ないゲスト モードで物理 CPU 上で直接実行できます。タイマー割り込みにより、CPU がゲスト モードからホスト モードに戻り、KVM に戻ります。KVM はカーネル モードでスケジュールされるため、ゲストもホストでスケジュールする必要があります。

于 2013-09-03T15:47:40.937 に答える
0

この質問を LQ に投稿し、回答を得ました。 http://www.linuxquestions.org/questions/linux-virtualization-90/a-guestos-process-occupies-vcpu-at-any-given-time-4175419271/

于 2012-08-05T07:00:03.043 に答える