首页> 中国专利> 一种多核处理器上多个操作系统间内存访问的方法及系统

一种多核处理器上多个操作系统间内存访问的方法及系统

摘要

本发明公开了一种多核处理器上多个操作系统间内存访问的方法及系统。具体是指:在一颗多核处理器上同时运行多个操作系统,每个操作系统管理着共享物理内存上独立不重叠的内存空间;任意操作系统可以通过加锁机制来保证本操作系统对本操作系统所管理的内存空间的安全访问;任意操作系统通过核间通信和加锁机制,来保证了对其他操作系统所管理内存空间的安全访问。通过本发明,在一颗多核处理器上实现了多个操作系统间内存空间的安全访问,保证每个操作系统都可以安全访问整个共享物理内存,还可以实现操作系统之间的高效交互和数据传递。基于此方法,可以实现多个操作系统之间的数据安全、高效地交换与操作。

著录项

  • 公开/公告号CN102567275A

    专利类型发明专利

  • 公开/公告日2012-07-11

    原文格式PDF

  • 申请/专利权人 中国科学院声学研究所;

    申请/专利号CN201110211429.1

  • 发明设计人 张武;查奇文;郭秀岩;

    申请日2011-07-27

  • 分类号G06F15/167(20060101);G06F12/10(20060101);

  • 代理机构11318 北京法思腾知识产权代理有限公司;

  • 代理人杨小蓉;高宇

  • 地址 100190 北京市海淀区北四环西路21号

  • 入库时间 2023-12-18 05:55:46

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2014-01-08

    授权

    授权

  • 2012-09-12

    实质审查的生效 IPC(主分类):G06F15/167 申请日:20110727

    实质审查的生效

  • 2012-07-11

    公开

    公开

说明书

技术领域

本发明设计多核处理器以及多操作系统领域,尤其是涉及一种多核处理器上多个 操作系统间内存访问的方法及系统。

背景技术

随着信息技术的不断进步,计算机硬件也飞速发展。在信息产业的发展过程中, 单核处理器暴露出许许多多的局限,单纯的靠提高主频已经没法满足越来越膨胀的 性能需求,而且单核处理器的集成度已经趋近极限,功耗也越来越高。随着处理器 技术的不断发展,多核处理器的使用逐渐成为趋势。多核处理器相对于单核处理器 来说,虽然每个处理器核心的主频较低,但是整体功耗更小;而且可以扩展更多的 核来提高性能,多个处理器核心可以通过串行、并行、混合流水线等结构对不同的 应用进行优化,既可以充分发挥处理器的性能,又能提高应用程序的执行效率。随 着当前市场经济发展的需要,人们对处理器速度、商业计算市场价值、应用前景、 功耗等等性能方面要求更进一步的提高,多核处理器已经成为服务器和个人操作平 台的主流。

多核处理器已经给人们带来了巨大的变化,带来更多的生产力优势和卓越的性 能表现。在通用处理器领域,目前INTEL公司和AMD公司推出的主流的面向桌面和 面向服务器处理器都是多核处理器,例如AMD公司推出的面向桌面的Athon II系列处 理器和面向服务器的Opteron 6000系列处理器。在嵌入式领域,如基于ARM的Cortex 处理器、基于MIPS的OCTEON系列处理器和基于PowerPC的各种高性能处理器已经 大量应用于手机、单片机、路由器、服务器等领域。

目前许多操作系统都支持多核处理器,比如Linux可以通过使用SMP方式来支持 多核处理器,多个核共同支持一个操作系统。而在多核处理器上,可以将所有的核 分为不同的组,在每组核上都加载操作系统。甚至是可以在每个核都加载一个操作 系统。

多核处理器的所有核通常都是通过内存控制器连接到相同的物理内存上面的。 在多核处理器系统上运行的单个操作系统内,不同的核可以通过加锁的机制来保证 对同一被访问内存的安全访问,但是当在多核处理器系统上运行的不同操作系统上 的核就不能通过加锁的机制来保证同一被访问内存的安全访问。所以在多核处理器 上运行多个操作系统时,通常的做法是将物理内存划分为不同的内存空间,每个操 作系统各自拥有独立的内存空间,各个系统都只能访问自己的内存空间,独立运行, 互不干扰。这么做虽然可以保证内存的安全访问,但是每个操作系统都只能访问物 理内存的一部分,而且不利于操作系统间的交互和数据传递。

发明内容

本发明的目的在于,为克服现有技术在多核处理器上运行多个操作系统时,每 个操作系统都只能访问物理内存的一部分,因此不利于操作系统间的交互和数据传 递等问题,从而提供一种多核处理器上多个操作系统间内存访问的方法及系统。

本发明提供了一种多核处理器上多个操作系统间内存安全访问的方法,每个操 作系统管理着共享物理内存上独立不重叠的内存空间,使用核间消息通信机制来实 现多操作系统间的内存安全访问。即通过核间消息通信的方法,保证了多个操作系 统对同一被访问内存的安全访问,从而使所有的操作系统都可以利用到整个物理内 存,而且使操作系统间的交互和数据传递更为方便。

本发明提供一种多核处理器上多个操作系统间内存安全访问的方法,该方法用 于多核操作系统上运行的多个操作系统所管理内存的互相访问,其中每个操作系统 通过各自的内存管理机制所管理的内存在物理地址空间上是独立不重叠的,且每个 操作系统能利用物理地址访问整个物理内存空间,所述方法包含:

所述多个操作系统间通过核间消息通信机制安全访问其他操作系统所管理的内 存空间,具体包含主动访问步骤和被动访问步骤;

主动访问步骤,第一操作系统需要访问第二操作系统的内存空间时,第一操作 系统通过核间通信通知第二操作系统对被访问内存进行加锁,第二操作系统加锁完 成后,通过核间通信的方式通知第一操作系统可以安全访问被访问内存,第一操作 系统A访问完被访问内存后,通过核间通信的方式通知第二操作系统B对被访问内 存解锁;

被动访问步骤,第一操作系统A需要第二操作系统B来访问其内存空间时,第 一操作系统A对被访问内存加锁完成后,通过核间通信机制通知第二操作系统B对 被访问内存进行安全访问,第二操作系统B访问完成后,通过核间通信的方式通知 第一操作系统A对被访问内存进行解锁。

上述技术方案中,所述主动访问步骤包含:

步骤201,第一操作系统A将被访问内存的虚拟地址转换为物理地址,然后通过 访问请求消息通知第二操作系统B;所述访问请求消息包括以下字段:被访问内存的 物理地址、访问权限;

步骤202,第二操作系统B收到访问请求消息后,从消息中解析出被访问内存的物 理地址和长度;

步骤203,第二操作系统B根据物理地址得到被访问内存的虚拟地址,第二操作 系统B等待被访问内存的自旋锁;

步骤204,第二操作系统B获得被访问内存的自旋锁之后,通过加锁成功消息通 知第一操作系统A安全访问被访问内存;

步骤205,第一操作系统A在收到加锁成功消息后,开始按照访问权限访问被访 问内存,并执行操作类型定义的操作;

步骤206,第一操作系统A在访问完被访问内存后,通过访问完成消息通知操作 系统B访问已经结束。

步骤207,第二操作系统B在收到访问完成消息后,操作系统B对释放被访问 内存的自旋锁。

其中,步骤201所述访问请求消息还包括以下字段:被访问内存的长度和操作 类型。

上述技术方案中,所述被动访问步骤包含:步骤302所述请求被访问消息包括 以下字段:被访问内存的物理地址、操作类型和访问权限

步骤301,第二操作系统B等待被访问内存的自旋锁;

步骤302,第二操作系统B在获取自旋锁之后,将虚拟地址转换为物理地址,然 后通过请求被访问消息通知第一操作系统A访问被访问内存;

步骤303,第一操作系统A收到请求被访问消息后,将被访问内存的物理地址转 换成虚拟地址,然后按照访问权限和操作类型定义的操作方式对被访问内存进行访 问;

步骤304,第一操作系统A对被访问内存的访问操作完成之后,通过访问完成消 息通知第二操作系统B访问已经完成;

步骤305,第二操作系统B收到访问完成消息后,释放被访问内存的自旋锁。

其中,步骤302所述请求被访问消息还包括被访问内存的长度。

基于以上多核处理器上多个操作系统间内存安全访问的方法,本发明还提供了 一种多个操作系统对数据进行流水线式的处理的方法。

其中所述流水式的处理的步骤为:一项对内存的处理任务由多个操作系统按照 流水线的处理方式分别由多个操作系统完成,从而实现多个操作系统间的协同处理; 第一操作系统A在完成了对被访问内存的第一项操作后,通过本方法通知第二操作 系统B完成对被访问内存的第二项操作,然后通知第三操作系统C完成对被访问内 存的第三项操作,这些操作不需要对数据在多个操作系统间进行拷贝。

基于以上方法,本发明还提供一种多核处理器上多个操作系统间内存访问的系 统,该系统用于多核处理器上运行的多个操作系统所管理内存的互相访问,其中每 个操作系统通过各自的内存管理机制所管理的内存在物理地址空间上是独立不重叠 的,且每个操作系统能利用物理地址访问整个物理内存空间,所述系统包含: 主动访问模块,用于第一操作系统需要访问第二操作系统的内存空间时,第一操作 系统通过核间通信通知第二操作系统对被访问内存进行加锁,第二操作系统加锁完 成后,通过核间通信的方式通知第一操作系统可以安全访问被访问内存,第一操作 系统访问完被访问内存后,通过核间通信的方式通知第二操作系统对被访问内存解 锁。

被动访问模块,用于第一操作系统需要第二操作系统来访问其内存空间时,第 一操作系统对被访问内存加锁完成后,通过核间通信机制通知第二操作系统对被访 问内存进行安全访问,第二操作系统访问完成后,通过核间通信的方式通知第一操 作系统对被访问内存进行解锁。

上述技术方案,所述主动访问模块和被动访问模块各自进一步包含:

消息发送模块,用于发送第一操作系统和第二操作系统之间的核间通信信息; 所述信息包含:主动访问请求消息、加锁成功消息、访问完成消息和被动访问请求 消息。

消息接受解析模块,用于解析接受的核间通信信息,并发出操作类型对应的的 操作命令;所述解析的信息包含:从访问消息中解析出被访问内存的物理地址和长 度;从被动访问请求消息中解析出的被访问内存的物理地址和长度、操作类型、访 问权限。

地址转换模块,用于将被访问内存的物理地址转换为虚拟内存地址和将被访问 内存的虚拟地址转换为物理地址。

加锁模块,用于对被允许访问的操作系统进行加锁和解锁;所述加锁包含:对 被访问内存设置自旋锁。

上述技术方案中,所述主动访问请求消息包括以下字段:被访问内存的物理地 址和长度、访问权限;所述被动访问请求消息包括以下字段:被访问内存的物理地 址和长度、访问权限、操作类型。

本发明的优点在于,本发明实现了多核处理器上同时运行的多个操作系统对同 一物理内存的互斥访问。本方法还实现了多核处理器上多个操作系统对数据进行流 水线式的处理,例如操作系统A在完成了对被访问内存的第-项操作后,可以通过本 方法通知操作系统B完成对被访问内存的第二项操作,然后通知操作系统C完成对被 访问内存的第三项操作,这些操作不需要对数据进行拷贝。基于此方法,可以实现 多个操作系统之间的数据安全、高效地交换与操作。

附图说明

图1是本法明中多核处理器上多个操作系统间内存访问的方法;

图2-a是本发明中操作系统主动访问其他操作系统所管理内存空间的示意框图;

图2-b是本发明中操作系统主动访问其他操作系统所管理内存空间的流程图;

图3-a是本发明中操作系统主动通知其他操作系统访问本操作系统所管理内存空 间的示意框图;

图3-b是本发明中操作系统主动通知其他操作系统访问本操作系统所管理内存空 间的流程。

具体实施方式

下面结合附图对本发明的内容进行详细阐述。

本发明的具体方法是:

在一颗多核处理器上同时运行多个操作系统,这些操作系统可以是Linux、实 时操作系统、或者简单执行环境,每个操作系统可以运行在一个或多个核上。

在本发明中,每个操作系统通过各自的内存管理机制所管理的内存在物理地址 空间上是独立不重叠的,但是每个操作系统都可以利用物理地址访问整个物理内存 空间。如图1所示,操作系统A访问操作系统B所管理的内存空间时,必须通过核 间通信和加锁机制来实现对被访问内存的安全访问。

当操作系统A需要访问操作系统B的内存空间时,操作系统A通过核间消息通 信,通知操作系统B被访问内存的物理地址、被访问内存的长度、访问权限和操作 类型;操作系统B收到消息后,等待获得被访问内存的锁,对被访问内存加锁,然 后通过核间消息通知操作系统A可以安全访问被访问内存;操作系统A收到消息后, 访问内存,完成访问后通过核间消息通知操作系统B内存访问完毕;操作系统B收 到消息后,对被访问内存解锁。

当操作系统B需要操作系统A访问操作系统B的内存空间时,操作系统B首先获取 被访问内存的锁,然后对被访问内存加锁,加锁完成后通过核间消息通信,通知操 作系统A被访问内存的物理地址、被访问内存的长度、访问权限和操作类型;操作系 统A收到消息后,根据操作类型、被访问内存的物理地址和被访问内存的长度,对被 访问内存进行访问,访问完成后通过核间消息通知操作系统B访问完成;操作系统B 收到消息后,对被访问内存进行解锁。

访问权限包括只读,只写以及可读可写。只读表示只能从被访问内存读取数据, 只写表示只能向被访问内存写入数据,可读可写表示既可以从被访问内存读取数据, 又可以向被访问内存写入数据。例如,当操作系统A需要对操作系统B所管理的内存 空间进行只读操作时,访问权限设置为只读。

操作类型表示操作系统间对被访问内存的处理方法。这些操作可以是对被访问 内存中数据按照约定算法的处理,例如操作系统A对操作系统B所管理的被访问内存 中的数据按照某种算法进行加密、解密、压缩、解压缩等处理。

本发明的核心思想是在多核处理器上运行多个操作系统,每个操作系统管理者 相同物理内存上的独立不重叠的内存空间。通过每个操作系统访问本操作系统的内 存空间时,可以通过加锁来实现安全访问;而通过核间通信和加锁,可以实现对其 他操作系统所管理内存空间的安全访问,从而实现每个操作系统都可以安全的访问 整个物理内存。

为了使本发明的目的及方案更加明白,以下对本发明进行详细说明:

在多核处理器上运行多个操作系统,每个操作系统的虚拟内存空间映到物理内 存都是整个物理内存空间,但是每个操作系统所管理的虚拟内存空间映射到物理内 存上是独立不重叠的内存空间。每个操作系统都可以通过加锁机制安全的访问本操 作系统管理的内存空间。如图1所示,若出现操作系统A访问操作系统B所管理的内 存空间的情况,则必须通过核间通信和加锁机制来保证操作系统A对操作系统B所管 理的内存空间的安全访问。具体分为以下两种情况:

(1)如图2-a和图2-b所示,操作系统A需要主动访问位于内存空间B内的被访问 内存,具体流程如下:

步骤201,操作系统A将被访问内存的虚拟地址(ptr_a)转换为物理地址(addr), 然后通过访问请求消息通知操作系统B。访问请求消息包括以下字段:被访问内存的 物理地址(addr)、被访问内存的长度(len)、访问权限(authority)和操作类型(op);

步骤201,操作系统B收到访问请求消息后,从消息中解析出被访问内存的物理 地址(addr)和长度(len)。

步骤203然后,操作系统B根据物理地址(addr)得到被访问内存的虚拟地址 (ptr_b)。接下来,操作系统B等待被访问内存的自旋锁(spinlock);

步骤204,操作系统B获得被访问内存的自旋锁(spinlock)之后,通过加锁成功 消息通知操作系统A安全访问被访问内存;

步骤205,操作系统A在收到加锁成功消息后,开始按照访问权限(authority)访 问被访问内存,并执行操作类型(op)定义的操作;

步骤206,操作系统A在访问完被访问内存后,通过访问完成消息通知操作系统 B访问已经结束;

步骤207,操作系统B在收到访问完成消息后,操作系统B对释放被访问内存的自 旋锁(spinlock)。

在以上流程中,在操作系统A想访问被访问内存的同时,操作系统C或者操作系 统D也有可能想访问被访问内存,这是操作系统A、操作系统C和操作系统D请求访问 的消息会在操作系统B那里形成队列。消息队列保证了操作系统B以外,只有一个操 作系统在竞争被访问内存。而spinlock保证了只有一个操作系统或者本操作系统的一 个核访问被访问内存。

(2)如图3-a和图3-b所示,操作系统B需要操作系统A来访问位于内存空间B内 的被访问内存,具体流程如下:

步骤301,操作系统B等待被访问内存的自旋锁(spinlock);

步骤302,操作系统B在获取自旋锁(spinlock)之后,将虚拟地址(ptr_b)转换 为物理地址(addr),然后通过请求被访问消息通知操作系统A访问被访问内存。请 求被访问消息包括以下字段:被访问内存的物理地址(addr)、被访问内存的长度 (len)、操作类型(op)和访问权限(authority);

步骤303,操作系统A收到请求被访问消息后,将被访问内存的物理地址(addr) 转换成虚拟地址(ptr_a),然后按照访问权限(authority)和操作类型(op)定义的 操作方式对被访问内存进行访问;

步骤304,操作系统A对被访问内存的访问操作完成之后,通过访问完成消息通 知操作系统B访问已经完成;

步骤305,操作系统B收到访问完成消息后,释放被访问内存的自旋锁(spinlock)。

在以上流程中,自旋锁(spinlock)保证了只有本操作系统的一个核或者只有一 个其他操作系统访问被访问内存。

需要指出的是,以上所述仅为本发明在多核处理器上多操作系统间内存安全访 问的较佳实施例,并非用来限定本发明的实施范围,具有专业知识基础的技术人员 可以由以上实施实例实现本发明,因此凡是根据本发明的精神和原则之内所做的任 何的变化、修改与改进,都被本发明的专利范围所覆盖。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号