Xen

  
在一台机器上运行多个操作系统挑战在于:
1 操作系统相互之间不能互相影响
2 需要支持不同的操作系统同时运行
3 虚拟化带来的性能上的影响应该尽可能的小
       Xen设计的目标是:
1 修改应用程序对于用户来说是不能接受的。否则用户不会去使用xen,因此xen必须虚拟出ABIs要求的所有的体系结构特征
2 支持多任务的操作系统。
3 为了达到高的性能和资源的隔离性,paravirtualization是必须的
       XenDenali 的区别:
1 Denali目标不在于ABIs的虚拟,所以在VM接口里可以不用某些体系特征,比如x86里面的段结构
2 Denali的设计没有考虑在单OS里支持多任务和多地址空间,实际上虚拟的是一个单用户单任务无保护的“操作系统”
3 Denali 结构里,VMM页的管理使用的是磁盘,可能是因为在虚拟层缺少内存管理的支持。Xen里,每个客户OS的页面管理使用的是自己的保留的内存地址
4 Denali 虚拟了所有机器资源的namespacesVM不能access没有命名的资源。但是,hypervisor能提供足够的保证,让物理的资源对于客户OS可见也能保证强正确性和性能。
1 Xen 的内存管理:
       每次当客户OS需要新的页表,就从自己的内存空间里面分配和初始化一个页,并向xen注册,客户OS放弃写入特权到页表内存里去,后继的更新由Xen来完成。每个地址空间起始的64M分配给Xen,客户OS不能access或是从新映射这段空间。一般的x86 ABIs不需要这段地址空间。所以不会破坏程序的兼容性。
2 xenCPU
       内存的虚拟是最难的部分。大多数处理器只提供两个优先级,这样客户OS只好和应用程序享用同一个优先级。用户OS为了保护自己需要让自己运行在单独的地址空间里面。用户OS需要通过hypervisor来设定虚拟的优先级,修改自己的地址空间
       x86里面,有4个优先级,hypervisor优先级为0,客户OS1,应用程序为3,这样即可以保证客户OS优先级低于hypervisor,又能保证客户OS和应用程序间的隔离性。
       异常,包括内存错误和陷阱。用很简单的方式虚拟出来。用一个表来描述在Xen里面注册的异常对应的handle
      Xen的设计细节:
1 控制转移:domain 同步call Xen使用hypercallXen传递notificationdomain使用异步事件机制。Hypercall允许domain产生一个同步traphypervisor以执行特权操作(例如页表的更新)。异步的事件机制替代传统的设备中断使用的传递机制,允许重要事件的轻量notificationPending事件被存储在每个domainbitmask里面,Xen 在调用客户OS的事件回调handler之前更新bitmask。回调handler负责处理重置pending事件集。
2 数据传递,I/O环:hypervisor意味着在客户OSI/O设备间添加了保护domain。系统垂直传递机制的开销应该尽可能小。
异步I/O环是个圆型的descriptor队列,descripterdomain分配,由Xen来使用。Descripter不直接包含数据,它只是一个指向数据buffer的指针。通过两对producter-consumer指针来Access to环。Domain放置一个request到环上去,advance a request producer 指针。Xen remove requests,然后处理这些requestsadvance 相关 request consumer 指针。
3 子系统的虚拟化:
CPU策略:BVTBorrowed 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只允许它们以只读的方式访问页表,使用hypercallXen执行页表的更新,执行前必须验证请求。
       物理内存:每个domain被生成时初始化内存分配,如果某个domain内存不足时,可以向Xen申请更多的内存。
       网络:Xen提供VFRvirtual firewall-router)抽象,每个domain拥有一个或多个网络接口(VIFs)与VFR连接。VIF有些类似于网卡。
磁盘:Only Domain0 has direct unchecked access to physical (IDE and SCSI) disks.其他的domains通过VBDsvirtual block devices)访问磁盘。在Xen里面为每个VBD维护translation table
 
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值