Kernel-based Virtual Machine (2)

来源:互联网 发布:海南网络有线电视台 编辑:程序博客网 时间:2024/04/27 20:49

KVM的运作原理 http://www.linuxinsight.com/finally-user-friendly-virtualization-for-linux.html
 
目前虚拟化的做法可以分为三种一是Paravirtualization 但缺点是Guest OS 需要经过修改才能使用,所以在Paravirtualization 下是不可能运作Windows 系统的.另外一种则是Full Virtualization 但这作法是将硬体以模拟的方式呈现,所以又会让Guest OS 的效能变差.第三种则是让CPU 去支援虚拟化Intel (VT) and AMD (AMD-V) ,因为有CPU 的支援第一种Paravirtualization 虚拟化的方式似乎变成多余了.
这就是KVM 所支援的方式,直接透过有虚拟化的CPU 去让系统支援Full Virtualization 的Guest OS.另外一个重点是KVM 不须独立的Linux 核心当VMM(Virtual Machine Monitor) ,它透过一般Linux 核心加入KVM 再让这Linux 核心当作VMM ,直接让虚拟化带入到一般核心的世界中.也因此在KVM 下的Guest OS 对于Linux 核心而言都只是一个Process(行程).
 
传统的Linux 在执行时有以区分为Kernel mode(supervisor mode) 和user mode 就如下图所示:
 
Linux的核心(或是其他作业系统的核心)会运作在Kernel mode(supervisor mode)而一般的应用程式(Applications)就运作在user mode.如果应用程式(Applications)需要硬体资源时就透过system call向kernel提出请求.让Kernel完成作业.这样的架构可以确保系统的安全性.请参考CPU - Ring的说明 http://benjr.tw/?q=node/216
 

但是透 Intel (VT) and AMD (AMD-V) 的支援,Linux 的核心(就是VMM)再加上KVM 的功能,就可以直接实现虚拟化的环境,其实KVM 的运作方式和Xen 的Full virtualization 类似,除了原本的Kernel 和User 模式外还多了一个Guest mode 模式(这模式可以让Guest OS 自己拥有Kernel 和User 模式),每一个Virtual Machine 对Linux 而言就如同一个  Process(行程).

 
KVM 是由两个主要的元件(components)所组成:
 
1.Kernel Device Driver(managing the virtualization hardware) - 用来管理和模拟Virtual Machine 的硬体
2.User space process - qemu 是一个PC 硬体模拟器,经过KVM 的修改过而成为kqemu

原创粉丝点击