0

最近我一直在研究一些关于硬件支持的虚拟化的东西。

我读到了主机 cpu 的 3 种状态,因此是最常见的用户空间、内核空间和新来宾状态。正如我从 ps 命令中看到的那样,我启动的 vm 有一个进程,还有一些“子”线程用于虚拟机拥有的每个cpu。另外我注意到当vm运行一些与io相关的程序时,主机上会创建更多的线程,我猜这可能是qemu对硬件仿真的响应。

所以我的问题来了:对于任何特定时间(客户状态的时间,而不是其他两个时间),一个 vcpu 线程是否代表一个正在运行的客户操作系统进程(我的意思是“占用”和“独占”)?就像物理 cpu 一样,对于用户空间中的任何给定时间,用户进程都在其上运行。这可能听起来有点愚蠢,我只是想弄清楚它以供进一步研究。

为了让这个问题变得简单:在主机上运行的 vcpu 线程是否在任何给定时间与某个 guestOS 进程相关联?

进一步简化:当我说guestOS进程实际上直接在主机CPU上运行并作为普通主机进程调度时是否正确?这两种进程之间的区别就是我们所说的虚拟化?

也许我需要另一个线程来解决一些关于guestOS进程切换的问题,但在此之前,希望你们能帮助我解决这个问题。

真诚的MeNok

4

2 回答 2

0

VCPU 不是主机中的线程。KVM 允许 guest 以较低权限的 guest 模式直接在物理 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 回答