上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人
1.1 虚拟化技术与实现
虚拟化技术在概念上与仿真类似。仿真技术可以在一个平台上构建出另外一个平台(比如在X86平台的Linux系统中通过QEMU仿真ARM64平台),虚拟化技术可以在一个平台上构建一个或者多个相同结构的平台。现代操作系统通常都包含一个简化的虚拟化系统,用于虚拟化CPU和内存。CPU虚拟化技术使得每个正在运行的进程表现得好像它是唯一正在运行的进程。如果一个进程试图消耗所有的CPU资源,操作系统将抢占这个进程的CPU资源并允许其他进程公平分享。同样,内存虚拟化技术使得正在运行的进程通常有自己的虚拟地址空间,操作系统将虚拟地址空间映射到具体的物理内存,让该进程产生一种错觉,认为它是整个物理内存的唯一用户。
硬件设备通常也会被操作系统虚拟化。进程通常使用伯克利套接字来访问网络设备,而无须担心其他应用程序的干扰。操作系统的图形用户界面,比如GNOME(GNU Network Object Model Environment,GNU网络对象模型环境)、KDE(K Desktop Environment,K桌面环境)或终端模拟器(比如Linux Terminal)复用屏幕和输入设备,使得用户感觉好像他们在独占整个计算机系统。
坦白地说,我们每天都有可能触及虚拟化技术,享受虚拟化带来的好处。虚拟化所提供的隔离性通常可以防止一个系统的Bug或恶意行为破坏其他系统的正常运行。
虽然系统中的操作系统组件为应用程序提供了一定程度的隔离性,但如果操作系统组件包含Bug,这种隔离性就会被打破。而Hypervisor可以为应用程序提供完全的隔离,基于Hypervisor构建的系统也会比原生操作系统具备更强的隔离性。Hypervisor实现强隔离性的关键是虚拟化技术,包含CPU虚拟化和外围设备I/O虚拟化。