设为首页 收藏本站
查看: 1504|回复: 0

[经验分享] Xen虚拟化架构简介

[复制链接]

尚未签到

发表于 2015-10-11 14:53:25 | 显示全部楼层 |阅读模式
Xen虚拟化体系结构
    作为虚拟化客户端启动
        现代操作系统所做的第一件事就是进入保护模式并建立中断处理程序。这以为着当操作系统在Xen虚拟机中启动时,已经进入了保护模式。虽然Xen的中断处理机制已经建立,但大多数中断却不是由Xen自身处理的而是将这些中断传送到任何需要他们的客户端。
        在Xen的客户端,BIOS是不可用的,应为BIOS运行直接访问硬件,这会破坏隔离性原则。Xen中的BIOS被夺走不同的软设备所取代:
            第一,是开始页面(start info page),包含了客户端初始化内核的基本信息;
            第二,共享信息页面(shared info page),它提供了更多的数据并随着客户端运行而更新;
            第三,Xenstore,他用于在其他设备中确定那个虚拟设备可用。
        对于Xen来说,可用的设备不是真实的设备,而是抽象出来的虚拟设备,所有Domain U 仅需要提供一种单一的驱动程序支持一类设备。可以有效的减少为了仿真设备带来的额外开销。
利用特权级限制操作
    X86体系结构以非常不同的方式处理特权命令。大多数体系结构拥有两种模式:特权模式和非特权模式
    大多数针对IA32体系结构所编写的操作系统,包括Windows NT和很多类UNIX系统,只使用两个特权级。而其中的一个例外就是 OS/2,它将设备驱动程序运行在比内核低的特权级上。另一个例外就是Novell Netware,在较新的版本中它把模块加载到较低的特权级中。X86体系结构的许多不同寻常的特性一样,如果用户牺牲可移值性为代价的话,很可能高效的利用拥有的4个特权级体系结构。应为Window和UNIX都是从非X86平台体系结构开始发展的。所以他们无法使用这一特点。将内核驱逐到Ring 1 ,而Hypervisor运行在Ring0上,意味着运行在Xen之上的内核不能使用一些特殊的特权操作,由于X86指令集的一些限制,一些事件会在执行失败的情况下不产生任何后果。
    这正是Hypervisor的责任来确保自身不会应用上述类型的任何操作。
超级调用取代特权指令
        应为内核运行在Ring 1 上,而这个个特权级不允许2内核做它想做的所有事情,所以在可控发方法内必须采用某种机制实现相同的功能,解决方法就是应用系统调用, 这是一种通知内核为用户做事的正规机制,系统调用基本上都已相同的方式工作,而不受操作系统平台的影响:
            1.引导变量置寄存器或堆栈
            2.产生一个熟知的中断或者激活一个特别的系统调用指令
            3.作为中断的结果跳转至内核的中断处理程序
            4.在内核特权级中处理系统调用
            5.转入较低特权级并返回。
快速系统调用
            Xen提供了一个快速系统调用接口。客户端内核会为80h中断指定一个处理程序,而这个处理程序是在Hypervisor运行至建立的,并绕过了通常的Xen处理程序。
探索Xen事件模型
            Xen模拟采用的是事件机制。Hypervisor应该做的第一件事是为事件交付注册一个回调函数(callback)。当事件交付给Hypervisor时,各种标志都被置位来指示3哪一个事件出现。事件可以直接来自Xen,也可以由其他客户端引起。就像信号一样,Xen的事件时通过回调函数(callback)交付。
与共享内存进行通信
            应为可以用个共享内存实现诸如管道和消息队列等机制,所以对于要求监控管理程序(Hypervisor)最小化的Xen来说,没有必要提供该除共享内存外的任何东西。
            Xen向内存页提供两种基本的交互域(interdomain)操作:共享和转移。一个共享页类似于POSIX共享内存中页的共享,两个域都能访问其中的内容。页转移是一种粗粒度
            消息传递机制。
拆分设备驱动模型
            Xen驱动模型是Xen理念的一个很好的实例。向PC所能应用的无数设备提供支持,对于Xen来说是一项繁重的工作。Xen授权一个客户端提供硬件支持及Domain 0。
            Xen设备驱动程序通常由四个主要部分组成:
                真实的驱动程序
                被拆分驱动程序的后半部
                共享特权级缓冲区
                被拆分驱动程序的前半部

VM的生命周期
    DSC0000.jpg
   
   

         版权声明:本文为博主原创文章,未经博主允许不得转载。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-125529-1-1.html 上篇帖子: The definitive guide to the xen hypervisor ---chapter 2 下篇帖子: xen setup
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表