界面设计最好的网站保定建设工程信息网
web/
2025/9/30 8:29:18/
文章来源:
界面设计最好的网站,保定建设工程信息网,网站开发目的与意义,建网站价格 建设网站需要多少钱ring0是指CPU的运行级别#xff0c;ring0是最高级别#xff0c;ring1次之#xff0c;ring2更次之…… 拿Linuxx86来说#xff0c; 操作系统#xff08;内核#xff09;的代码运行在最高运行级别ring0上#xff0c;可以使用特权指令#xff0c;控制中断、修改页表、访问…ring0是指CPU的运行级别ring0是最高级别ring1次之ring2更次之…… 拿Linuxx86来说 操作系统内核的代码运行在最高运行级别ring0上可以使用特权指令控制中断、修改页表、访问设备等等。 应用程序的代码运行在最低运行级别上ring3上不能做受控操作。如果要做比如要访问磁盘写文件那就要通过执行系统调用函数执行系统调用的时候CPU的运行级别会发生从ring3到ring0的切换并跳转到系统调用对应的内核代码位置执行这样内核就为你完成了设备访问完成之后再从ring0返回ring3。这个过程也称作用户态和内核态的切换。 那么虚拟化在这里就遇到了一个难题因为宿主操作系统是工作在ring0的客户操作系统就不能也在ring0了但是它不知道这一点以前执行什么指令现在还是执行什么指令那肯定不行啊没权限啊玩不转啊。所以这时候虚拟机管理程序VMM就要避免这件事情发生。 VMM在ring0上一般以驱动程序的形式体现驱动程序都是工作在ring0上否则驱动不了设备 一般是这样做客户操作系统执行特权指令时会触发异常CPU机制没权限的指令触发异常然后VMM捕获这个异常在异常里面做翻译模拟最后返回到客户操作系统内客户操作系统认为自己的特权指令工作正常继续运行。但是这个性能损耗就非常的大你想想原来简单的一条指令执行完了事现在却要通过复杂的异常处理过程。 这时候半虚拟化就来了半虚拟化的思想就是让客户操作系统知道自己是在虚拟机上跑的工作在非ring0状态那么它原先在物理机上执行的一些特权指令就会修改成其他方式这种方式是可以和VMM约定好的这就相当于我通过修改代码把操作系统移植到一种新的架构上来就是定制化。所以像XEN这种半虚拟化技术客户机操作系统都是有一个专门的定制内核版本和x86、mips、arm这些内核版本等价。这样以来就不会有捕获异常、翻译、模拟的过程了性能损耗非常低。这就是XEN这种半虚拟化架构的优势。这也是为什么XEN只支持虚拟化Linux无法虚拟化windows原因微软不改代码啊。 可以后来CPU厂商开始支持虚拟化了情况有发生变化拿X86 CPU来说引入了Intel-VT 技术支持Intel-VT 的CPU有VMX root operation 和 VMX non-root operation两种模式两种模式都支持Ring 0 ~ Ring 3 这 4 个运行级别。这下好了VMM可以运行在VMX root operation模式下客户OS运行在VMX non-root operation模式下。也就说硬件这层做了些区分这样全虚拟化下有些靠“捕获异常-翻译-模拟”的实现就不需要了。而且CPU厂商支持虚拟化的力度越来越大靠硬件辅助的全虚拟化技术的性能逐渐逼近半虚拟化再加上全虚拟化不需要修改客户操作系统这一优势全虚拟化技术应该是未来的发展趋势。 XEN是最典型的半虚拟化不过现在XEN也支持硬件辅助的全虚拟化大趋势拗不过啊。。。 KVM、VMARE这些一直都是全虚拟化。 转载于:https://www.cnblogs.com/xuliangwei/p/10420932.html
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/84351.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!