虚拟化的意义:
- 资源隔离,如磁盘、网络的隔离与分配
- 资源配额,如cpu、内存的配额,给出了配额的上限,那么能更大限度的榨取服务器的性能
- 虚拟化使得一台服务器上能运行多种操作系统
特权模式: 普通操作系统具有核心模式和用户模式。核心模式下运行系统关键的进程及关系到系统安全的敏感指令(如中断处理、内存操作等) 在指令执行的时候,cpu会检查指令的来源,指令的来源记录上指令所在的内存页上,用2个bit来记录,所以它一共可以有4中模式。 ring 0具有最高特权级别,ring 1运行guest os,ring 3就是普通的进程。
传统的虚拟化实现,如vmware: 虚拟机上的进程调用系统调用,那么它从ring3直接陷入vmm所在的ring0上处理,处理完成后返回ring1,ring1不能直接SYSEXIT到ring3, 因为它没有这样的权限,因此需要把SYSEXIT这样的指令模拟处理,很耗资源,效率很低。 半虚拟化就是指令转换?它不需要硬件支持 硬件虚拟化需要硬件支持,直接在主机系统内核中执行
硬件虚拟化中,客户机运行在ring0级别,vmm和主机os内核运行在ring -1(root模式)中,客户机的syscall它直接可以处理,当涉及敏感 指令时候(中断、内存操作)时涉及到VMENTER,VMEXIT
也就是说,vmexit比系统调用的退出模拟消耗少
intel的vt-x技术中引入了VMX模式,该模式下cpu具有两种操作模式,根模式和非根模式, 每个模式下都有自己的ring0-ring3 VMM运行于根模式,KVM环境中,KVM主机运行于根模式。主机中内核运行于根模式的ring0,应用程序如qemu运行于ring3 guest运行于非根模式,guest的kernel运行于非根模式的ring0,应用程序运行于非根模式的ring3
VMCS: VMCS是虚拟机控制结构,它包含了虚拟机vcpu状态及控制的信息
时间: 2024-10-12 23:47:24