Xen

  
在一台机器上运行多个操作系统挑战在于:
1 操作系统相互之间不能互相影响
2 需要支持不同的操作系统同时运行
3 虚拟化带来的性能上的影响应该尽可能的小
       Xen 设计的目标是:
1 修改应用程序对于用户来说是不能接受的。否则用户不会去使用 xen, 因此 xen 必须虚拟出 ABIs 要求的所有的体系结构特征
2 支持多任务的操作系统。
3 为了达到高的性能和资源的隔离性, paravirtualization 是必须的
       Xen Denali 的区别:
1 Denali 目标不在于 ABIs 的虚拟,所以在 VM 接口里可以不用某些体系特征,比如 x86 里面的段结构
2 Denali 的设计没有考虑在单 OS 里支持多任务和多地址空间,实际上虚拟的是一个单用户单任务无保护的“操作系统”
3 Denali 结构里, VMM 页的管理使用的是磁盘,可能是因为在虚拟层缺少内存管理的支持。 Xen 里,每个客户 OS 的页面管理使用的是自己的保留的内存地址
4 Denali 虚拟了所有机器资源的 namespaces VM 不能 access 没有命名的资源。但是, hypervisor 能提供足够的保证,让物理的资源对于客户 OS 可见也能保证强正确性和性能。
1 Xen 的内存管理:
       每次当客户 OS 需要新的页表,就从自己的内存空间里面分配和初始化一个页,并向 xen 注册,客户 OS 放弃写入特权到页表内存里去,后继的更新由 Xen 来完成。每个地址空间起始的 64M 分配给 Xen ,客户 OS 不能 access 或是从新映射这段空间。一般的 x86 ABIs 不需要这段地址空间。所以不会破坏程序的兼容性。
2 xen CPU
       内存的虚拟是最难的部分。大多数处理器只提供两个优先级,这样客户 OS 只好和应用程序享用同一个优先级。用户 OS 为了保护自己需要让自己运行在单独的地址空间里面。用户 OS 需要通过 hypervisor 来设定虚拟的优先级,修改自己的地址空间
       x86 里面,有 4 个优先级, hypervisor 优先级为 0 ,客户 OS 1 ,应用程序为 3 ,这样即可以保证客户 OS 优先级低于 hypervisor, 又能保证客户 OS 和应用程序间的隔离性。
       异常,包括内存错误和陷阱。用很简单的方式虚拟出来。用一个表来描述在 Xen 里面注册的异常对应的 handle
      Xen 的设计细节:
1 控制转移: domain  同步 call Xen 使用 hypercall Xen 传递 notification domain 使用异步事件机制。 Hypercall 允许 domain 产生一个同步 trap hypervisor 以执行特权操作(例如页表的更新)。异步的事件机制替代传统的设备中断使用的传递机制,允许重要事件的轻量 notification Pending 事件被存储在每个 domain bitmask 里面, Xen 在调用客户 OS 的事件回调 handler 之前更新 bitmask 。回调 handler 负责处理重置 pending 事件集。
2 数据传递, I/O 环: hypervisor 意味着在客户 OS I/O 设备间添加了保护 domain 。系统垂直传递机制的开销应该尽可能小。
异步 I/O 环是个圆型的 descriptor 队列, descripter domain 分配,由 Xen 来使用。 Descripter 不直接包含数据,它只是一个指向数据 buffer 的指针。通过两对 producter-consumer 指针来 Access to 环。 Domain 放置一个 request 到环上去, advance a request producer 指针。 Xen remove requests ,然后处理这些 requests advance 相关 request consumer 指针。
3 子系统的虚拟化:
CPU 策略: BVT Borrowed Virtual Time provides low-latency dispatch by using virtual-time warping, a mechanism which temporarily violates `ideal' fair sharing to favor recently-woken domains. However,other scheduling algorithms could be trivially implemented over our generic scheduler abstraction. Per-domain scheduling parameters can be adjusted by management software running in Domain0.
       虚地址转换: Vmware 的做法是为每个客户 OS 提供虚拟页表, Xen 的做法是将每个客户 OS 的页表直接向 MMU 注册,限制客户 OS 只允许它们以只读的方式访问页表,使用 hypercall Xen 执行页表的更新,执行前必须验证请求。
       物理内存:每个 domain 被生成时初始化内存分配,如果某个 domain 内存不足时,可以向 Xen 申请更多的内存。
       网络: Xen 提供 VFR virtual firewall-router )抽象,每个 domain 拥有一个或多个网络接口( VIFs )与 VFR 连接。 VIF 有些类似于网卡。
磁盘: Only Domain0 has direct unchecked access to physical (IDE and SCSI) disks. 其他的 domains 通过 VBDs virtual block devices )访问磁盘。在 Xen 里面为每个 VBD 维护 translation table
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值