Xen虚拟化系统的全映射方法及装置的制造方法

文档序号:9616148阅读:401来源:国知局
Xen虚拟化系统的全映射方法及装置的制造方法【
技术领域
】[0001]本发明涉及Xen虚拟化系统领域,特别是涉及一种Xen虚拟化系统的全映射方法及装置。【
背景技术
】[0002]随着硬件虚拟化技术的发展,中央处理器(CentralProcessingUnit,简称为CPU)虚拟化已经比较成熟,不会成为虚拟化系统性能的瓶颈了。但是,对于输入/输出(Input/Output,简称为I/O)设备虚拟化来说,在很多场景下仍然是制约虚拟化系统性能的瓶颈。I/O设备虚拟化主要包括虚拟网络设备和虚拟磁盘设备。[0003]研究表明,Xen虚拟化系统中域(Domain)之间的内存映射是耗费时间和资源较多的操作,而现有虚拟网络设备和磁盘设备在工作过程中存在着大量的授权表操作及内存映射,因此减少Domain间内存映射次数可极大提高Xen虚拟化系统的性能。[0004]图1是现有技术中Xen虚拟化系统中I/O虚拟化前后端交互的示意图,因为虚拟网络设备和磁盘设备在前后端进行通信时具有类似的步骤,描述简洁起见,下面只针对虚拟磁盘设备进行介绍,如图1所示:[0005]当客户操作系统(DomainU,简称为DomU)的文件系统中有1/0请求时,现有技术流程是:步骤1,前端驱动收到1/0请求;步骤2,首先分配授权表(granttable)的授权引用(grantreference);步骤3,DomU通过事件通道通知给宿主操作系统(Domain0,简称为DomO);步骤4,DomO从共享1/0环中取出前端设备发来的读写请求。然后对于每个段(segment),通过page_to_pfn、pfn_to_mfn将页(page)转换为物理页框(MachineFrameNumber,以下简称mfn),取出一个空闲的授权引用,授权后端访问该page。当1/0请求完成后,删除之前对该page的授权。步骤5,DomO后端收到1/0请求后,根据请求类型,映射(map)到DomO自己的内存空间,然后根据请求建立b1请求,最后将b1请求提交给真实的物理设备进行处理。其中,b1用来描述单一的1/0请求,它记录了一次1/0操作所必需的相关信息,例如,用于1/0操作的数据缓存位置、1/0操作的块设备起始扇区、是读操作还是写操作等等。在上述处理过程中,后端映射和解映射前端的共享页面是一个非常消耗时间及资源的操作。因此,急需解决现有的Xen虚拟化系统中半虚拟化磁盘驱动和半虚拟化网络驱动中Domain间内存映射带来的较大开销,而导致的虚拟化系统性能不高的问题。[0006]鉴于现有技术的上述缺陷,本发明要解决的问题是提供一种虚拟网络设备和磁盘设备的全映射的方法,以减少Domain间内存映射的次数,提高Xen虚拟化系统的性能。【
发明内容】[0007]鉴于现有技术中Xen虚拟化系统中半虚拟化磁盘驱动和半虚拟化网络驱动中Domain间内存映射带来的较大开销,而导致的虚拟化系统性能不高的问题,提出了本发明以便提供一种Xen虚拟化系统的全映射方法及装置。[0008]本发明提供一种Xen虚拟化系统的全映射方法,包括:[0009]在宿主操作系统初始化时,建立物理页框与宿主操作系统虚拟地址的对应关系,将所有机器物理内存地址映射到自己的虚拟地址空间;[0010]接收前端输入/输出请求,通过对应关系获取相应物理页框对应的页面,并进行输入/输出请求提交。[0011]优选地,在宿主操作系统初始化时,建立物理页框与宿主操作系统虚拟地址的对应关系,将所有机器物理内存地址映射到自己的虚拟地址空间具体包括:[0012]在宿主操作系统初始化时,遍历所有的内存块,对于随机存取存储器类型的内存块,将每个内存块的起始物理地址对应的物理页框和结束物理地址对应的物理页框保存在一个数组中,建立物理页框物理页框与宿主操作系统虚拟地址的对应关系;[0013]将所有机器物理内存地址映射到操作系统内核的虚拟地址空间,更新映射需要的配置结构。[0014]优选地,接收前端输入/输出请求,通过对应关系获取相应物理页框对应的页面,并进行输入/输出请求提交具体包括:[0015]当客户操作系统的文件系统中有输入/输出请求时,通过超级调用获取段所在页面的物理页框,并将物理页框放置到输入/输出共享环的seg结构中;[0016]宿主操作系统前端驱动通过事件通道告知宿主操作系统后端由输入/输出请求到来;[0017]宿主操作系统后端取出存放在seg结构中的物理页框,根据对应关系获取物理页框对应的页面,并进行输入/输出请求提交。[0018]优选地,通过超级调用获取段所在页面的mfn具体包括:[0019]在Xen中增加一个超级调用号,其中,Xen是一个开放源代码虚拟机监视器;[0020]客户操作系统通过页帧号获取函数(page_to_pfn())调用获取页面的页帧号(PageFrameNumber,简称为pfn),通过调用请求函数(HYPERVISOR_hvm_op())向Xen发起超级调用请求,并将页面对应的pfn发送给Xen;[0021]Xen根据超级调用请求,利用超级调用处理函数判断是否调用超级调用号,在判断为是的情况下,根据客户操作系统发送的pfn,从客户物理页面到机器页面的映射(PhysicalToMachine,简称为P2M)中获取该pfn对应的mfn,并将该mfn通过通知函数(copy_to_guest())通知客户操作系统。[0022]优选地,上述方法进一步包括:[0023]在宿主操作系统和客户操作系统中分别保存一个预定变量,在宿主操作系统和客户操作系统中的预定变量均设置为采用全映射方式的情况下,确定采用全映射方式。[0024]本发明还提供了一种Xen虚拟化系统的全映射装置,包括:[0025]对应关系建立模块,用于在宿主操作系统初始化时,建立物理页框与宿主操作系统虚拟地址的对应关系,将所有机器物理内存地址映射到自己的虚拟地址空间;[0026]输入/输出请求处理模块,用于接收前端输入/输出请求,通过对应关系获取相应物理页框对应的页面,并进行输入/输出请求提交。[0027]优选地,对应关系建立模块具体用于:[0028]在宿主操作系统初始化时,遍历所有的内存块,对于随机存取存储器类型的内存块,将每个内存块的起始物理地址对应的物理页框和结束物理地址对应的物理页框保存在一个数组中,建立物理页框物理页框与宿主操作系统虚拟地址的对应关系;[0029]将所有机器物理内存地址映射到操作系统内核的虚拟地址空间,更新映射需要的配置结构。[0030]优选地,输入/输出请求处理模块具体用于:[0031]当客户操作系统的文件系统中有输入/输出请求时,通过超级调用获取段所在页面的物理页框,并将物理页框放置到输入/输出共享环的seg结构中;[0032]宿主操作系统前端驱动通过事件通道告知宿主操作系统后端由输入/输出请求到来;[0033]宿主操作系统后端取出存放在seg结构中的物理页框,根据对应关系获取物理页框对应的页面,并进行输入/输出请求提交。[0034]优选地,输入/输出请求处理模块具体用于:[0035]在Xen中增加一个超级调用号;[0036]通过客户操作系统通过页帧号获取函数调用获取页面的页帧号,通过调用请求函数向Xen发起超级调用请求,并将页面对应的页帧号发送给Xen;[0037]通过Xen根据超级调用请求,利用超级调用处理函数判断是否调用超级调用号,在判断为是的情况下,根据客户操作系统发送的页帧号,从客户物理页面到机器页面的当前第1页1 2 3 4 
当前第1页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1