[发明专利]一种计算机及多操作系统共享内存的方法有效
申请号: | 200910080933.5 | 申请日: | 2009-03-26 |
公开(公告)号: | CN101847105A | 公开(公告)日: | 2010-09-29 |
发明(设计)人: | 陈军;席振新 | 申请(专利权)人: | 联想(北京)有限公司 |
主分类号: | G06F9/455 | 分类号: | G06F9/455;G06F12/08 |
代理公司: | 北京银龙知识产权代理有限公司 11243 | 代理人: | 许静 |
地址: | 100085 北京市*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 计算机 操作系统 共享 内存 方法 | ||
技术领域
本发明涉及计算机的虚拟技术领域,特别是指一种计算机及多操作系统共享内存的方法。
背景技术
如图1所示,为计算机的虚拟架构示意图,该架构包括:位于计算机底层的硬件平台,运行在硬件平台之上的虚拟机管理器(VMM,Virtual Machine Manager),安装在虚拟机管理器VMM之上的多个操作系统,其中一个操作系统为Server OS(服务操作系统,简称SOS),其余为Guest OS,即客户操作系统,该客户操作系统可以为多个,用户可以在Guest OS中进行各种应用操作,但这些应用操作涉及的对底层硬件平台中硬件设备的操作时,需要通过Server OS进行传输,比如Guest OS系统中QEMU(是一个模拟加速器软件,可以模拟出用户空间和电脑的系统空间)模拟出来的虚拟设备需要和Server OS中的虚拟设备进行通讯,Guest OS的前端应用和Server OS中的后端驱动也需要进行通讯。对于会发生大量数据传输的硬件设备来说,每次读写操作,都将涉及到前后端的大量数据拷贝。
如图2所示,Guest OS与Server OS之间数据传输最常用的方式就是Grant Table(授权访问页表)的共享内存方式。这种方式是:虚拟机管理器从硬件平台中的物理内存中,为Guest OS中分配一段虚拟内存(见图2中的虚线框所表示的Grant Table共享内存),然后通过地址转换得到这段虚拟内存的物理内存地址,在Server OS中,再通过地址映射,根据该物理内存地址得到在Server OS中能够直接访问的虚拟地址。这样,在前后端之间或QEMU设备之间,就能够同时对该共享内存进行读写。
然而,Guest OS的前端应用在给Grant Table的共享内存中写入数据后,Server OS中的后端驱动能够直接读到数据。这些数据是在虚拟地址空间的,当这些数据往真正设备上发送时,往往还需要将数据从Grant Table的共享内存拷贝到Server OS中的DMA内存中,以便对硬件设备的访问。这样的话,在Server OS中的应用,对1个读/写操作来说,就需要一次内存拷贝,即将数据从Grant Table的共享内存中,拷贝到设备能够直接访问的DMA内存中。这样的方式会带来一个问题,频繁的内存拷贝,会经常修改和刷新CPU的TLB(Translation Lookaside Buffer,旁路转换缓冲,是虚拟地址到物理地址的转换表)表,这样在系统负载比较重的情况下,对计算机的整体性能会产生很大的影响。
发明人在实现本发明的过程中,发现现有技术中至少存在如下问题:
现有的虚拟机架构中,计算机的多个操作系统之间进行数据传输时,会涉及大量的数据拷贝,这样,会严重影响计算机的整体性能。
发明内容
本发明要解决的技术问题是提供一种计算机及多操作系统共享内存的方法,使计算机多操作系统能够对一块共享内存进行直接读/写,而不需要多次将Guest OS的访问数据进行拷贝,这样大大提高了计算机的多操作系统之间的数据传输效率,进而提高计算机的整体性能。
为解决上述技术问题,本发明的实施例提供技术方案如下:
一方面,提供一种计算机,包括:
硬件平台,具有物理内存和硬件设备;
虚拟机管理器,运行在所述硬件平台上;
第一操作系统,运行在所述虚拟机管理器上;
第二操作系统,运行在所述虚拟机管理器上;
所述虚拟机管理器包括:
分配模块,用于在所述物理内存中,为所述第一操作系统和所述第二操作系统分配一共享内存,所述共享内存具有连续内存地址;
第一操作模块,用于接收所述第一操作系统发出的访问数据,并将所述访问数据直接存储在所述共享内存中,或者将所述共享内存中存储的访问结果数据发送至所述第一操作系统;
第二操作模块,用于将所述访问数据发送至所述第二操作系统,接收所述第二操作系统根据所述访问数据返回的所述访问结果数据,并将所述访问结果数据直接存储在所述共享内存中。
优选的,所述第一操作系统包括:
第一获取模块,用于获取所述共享内存的机器物理地址,并将所述共享内存的机器物理地址映射成所述第一操作系统能够直接访问的第一虚拟地址;
第一处理模块,用于根据所述第一虚拟地址将所述访问数据发送给所述第一操作模块,并存储到所述共享内存中,或者从所述第一操作模块接收所述访问结果数据。
优选的,所述第二操作系统包括:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于联想(北京)有限公司,未经联想(北京)有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/200910080933.5/2.html,转载请声明来源钻瓜专利网。
- 上一篇:MAC层和射频端交互方法
- 下一篇:一种配电柜