从此篇开始,将进入虚拟化技术的核心技术篇章。本篇只涉及基本概念,具体实现见后续章节。
所谓的虚拟化技术核心技术,指的就是如何支持让多个虚拟机在同一物理机器上运行起来的。计算机物理资源,简单来说可分为三类:CPU、内存、IO设备。
在展开讲解Hypervisor关于CPU资源虚拟化的实现前,先来回忆下OS中是如何支持多用户的。
说到OS中的多用户,天然就会想到OS中的进程/任务/线程的概念,不同OS里称呼不一样,这里不做区分,总而言之:时间片被分配的对象就是OS上的用户。
在单核物理机上,要运行多个用户的程序,方法上很简单:从时间维度进行切割。根据一定的调度算法、策略、优先级,将时间片分配给不同的用户程序;
而在多核物理机上,运行多用户的程序就要多考虑一个维度:空间。还需要涉及到哪些用户可运行在哪个核上,是否对称,负载均衡、调度优先级及策略是如何,等等。
当然,OS内核在实现上述内容的时候,绝不如此轻描淡写,scheduler的代码,往往是一个OS的重中之重。可自行参考相关OS的内核代码实现。
上述描述,可引出如下