最近我一直在研究一些关于硬件支持的虚拟化的东西。
我读到了主机 cpu 的 3 种状态,因此是最常见的用户空间、内核空间和新来宾状态。正如我从 ps 命令中看到的那样,我启动的 vm 有一个进程,还有一些“子”线程用于虚拟机拥有的每个cpu。另外我注意到当vm运行一些与io相关的程序时,主机上会创建更多的线程,我猜这可能是qemu对硬件仿真的响应。
所以我的问题来了:对于任何特定时间(客户状态的时间,而不是其他两个时间),一个 vcpu 线程是否代表一个正在运行的客户操作系统进程(我的意思是“占用”和“独占”)?就像物理 cpu 一样,对于用户空间中的任何给定时间,用户进程都在其上运行。这可能听起来有点愚蠢,我只是想弄清楚它以供进一步研究。
为了让这个问题变得简单:在主机上运行的 vcpu 线程是否在任何给定时间与某个 guestOS 进程相关联?
进一步简化:当我说guestOS进程实际上直接在主机CPU上运行并作为普通主机进程调度时是否正确?这两种进程之间的区别就是我们所说的虚拟化?
也许我需要另一个线程来解决一些关于guestOS进程切换的问题,但在此之前,希望你们能帮助我解决这个问题。
真诚的MeNok