2024年6月3日发(作者:)
KVM 介绍(2):CPU 和内存虚拟化
学习 KVM 的系列文章:
(1)介绍和安装
(2)CPU 和 内存虚拟化
(3)I/O QEMU 全虚拟化和准虚拟化(Para-virtulizaiton)
(4)I/O PCI/PCIe设备直接分配和 SR-IOV
(5)libvirt 介绍
(6)Nova 通过 libvirt 管理 QEMU/KVM 虚机
(7)快照 (snapshot)
(8)迁移 (migration)
1. 为什么需要 CPU 虚拟化
X86 操作系统是设计在直接运行在裸硬件设备上的,因此它们自动认为它们完全占有计算机硬件。x86 架构提供四个特权级别给操作系统和应用程序
来访问硬件。
Ring 是指 CPU 的运行级别,Ring 0是最高级别,Ring1次之,Ring2更次之…… 就 Linux+x86 来说,
操作系统(内核)需要直接访问硬件和内存,因此它的代码需要运行在最高运行级别 Ring0上,这样它可以使用特权指令,控制中断、修改页表、访问设备等等。
应用程序的代码运行在最低运行级别上ring3上,不能做受控操作。如果要做,比如要访问磁盘,写文件,那就要通过执行系统调用(函数),执行系统调用的时候,CPU的
运行级别会发生从ring3到ring0的切换,并跳转到系统调用对应的内核代码位置执行,这样内核就为你完成了设备访问,完成之后再从ring0返回ring3。这个过程也称作用
户态和内核态的切换。
发布评论