[Xen架构学习 - 2]Xen 3.x 简介 - 1

Xen和IA-32的保护模式(Xen and IA32 Protection Modes)

        在IA32的高级保护模型(classical protection model)中,有4个特权层级(privilege level);最高层为ring 0,内核运行其上(该层也被称为Supervisor Mode)。最底层为ring 3,用户的应用运行其上(该层也被称为User Mode)。在除了ring 0的其他ring上调用特权指令(privilege instructions),会导致一般性保护错误(General Protection Fault)。

        近些年,ring 1,2没有被使用(除了OS/2)。Xen在运行的时候,hypervisor运行在ring 0而guest OS运行在ring 1。用户应用则运行在ring 3。

 

Xend守护进程(The Xend Daemon)

        Xend守护进程处理来自dom0的请求,请求可以是:创建一个新的domain("xm create")或者显示现有domain列表("xm list"),关闭某个domain("xm destroy")等。运行"xm help"可以显示更多能够处理的请求。

        你可以在dom0启动之后运行"xend start"来启动xend守护进程。"xend start"启动了两个守护进程:xenstored和xenconsoled(详情见 tools/misc/xend)。同时,也创建了一个python的SrvDaemon类实例,并用了它的start()方法(详情见 tools/python/xen/xend/server/SrvDaemon.py)。事实上,SrvDaemon的start()方法才是xend的主程序。

        在过去的版本中,start()方法最终会开启一个Http socket(8000)对http请求进行监听。而现在的版本中却没有这么做。

Note: 取而代之的方案是使用一个免费API——libvirt(详情见 http://libvirt.org)。

 

Xen Store(The Xen Store)

        Xen store守护进程实现了一个简单树形结构数据库(simple tree-like database),有了它,我们可以对值方便地进行读写。Xen store的主要源码存放于tools/xenstore下。

        它的出现替代了XCS——一个曾经用来处理控制信息的守护进程。

        Xen store的物理数据存放于单个文件中: /var/lib/xenstored/tdb。(之前是被存放在多个文件中的,经过整合存放在单个文件可以提高性能)

        User space(Xen术语中的"tools")和内核代码都可以对XenStore进行写操作。其中,内核代码通过XenBus对XenStore进行写操作。

        Python脚本(在tools/python下)通过使用lowlevel/xs.c对XenStore进行读写。

        Xen Store Daemon在xenstored_core.c中被启动。启动过程中,若检测到设备文件("/dev/xen/evtchn")没有被创建,则创建之,并且开启该设备(见 : domain_init() ,file tools/xenstore/xenstored_domain.c)。

        它开启了2个TCP socket(UNIX socket)。其中一个是只读socket,位于/var/run/xenstored/socket_ro之下。另一个则位于/var/run/xenstored/socket。

        在这些socket之上的连接被表示为connection结构体。

        一个connection可以有3种状态:

  • BLOCKED (由于某transaction而阻塞)
  • BUSY (正在进行某些活动)
  • OK (完成了相关事物处理)

        connection结构体在tools/xenstore/Xenstored_core.h中被定义;若某个socket是只读的,那么它的"can_write"成员属性为false。

        之后,我们开启一个无限循环用来从三个来源处获得input/output:上述的两个socket、event channel。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值