一种实现多操作系统共享存储介质的方法和装置.pdf

上传人:小** 文档编号:4571569 上传时间:2018-10-20 格式:PDF 页数:24 大小:1.11MB
返回 下载 相关 举报
摘要
申请专利号:

CN200810247452.4

申请日:

2008.12.31

公开号:

CN101477511A

公开日:

2009.07.08

当前法律状态:

授权

有效性:

有权

法律详情:

专利权人的姓名或者名称、地址的变更IPC(主分类):G06F 15/167变更事项:专利权人变更前:杭州华三通信技术有限公司变更后:新华三技术有限公司变更事项:地址变更前:310053 浙江省杭州市高新技术产业开发区之江科技工业园六和路310号华为杭州生产基地变更后:310052 浙江省杭州市滨江区长河路466号|||授权|||实质审查的生效|||公开

IPC分类号:

G06F15/167

主分类号:

G06F15/167

申请人:

杭州华三通信技术有限公司

发明人:

朱而刚

地址:

310053浙江省杭州市高新技术产业开发区之江科技工业园六和路310号华为杭州生产基地

优先权:

专利代理机构:

北京德琦知识产权代理有限公司

代理人:

宋志强;麻海明

PDF下载: PDF下载
内容摘要

本发明公开了一种实现多个操作系统共享存储介质的方法和装置。方法包括:多个操作系统中的一个指定的第一操作系统直接操作共享存储介质;多个操作系统中的任一第二操作系统需要对共享存储介质进行操作时,该第二操作系统通过核间通信机制,将操作请求通知第一操作系统;第一操作系统根据所述操作请求完成对共享存储介质的操作后,通过核间通信机制将操作结果通知第二操作系统。本发明的技术方案简单而高效。

权利要求书

1、  一种实现多个操作系统共享存储介质的方法,该方法应用于运行在多核处理器上的多个操作系统之间,其特征在于,该方法包括:
所述多个操作系统中的一个指定的第一操作系统直接操作共享存储介质;
所述多个操作系统中的任一第二操作系统需要对共享存储介质进行操作时,该任一第二操作系统通过核间通信机制,将操作请求通知第一操作系统;
第一操作系统根据所述操作请求完成对共享存储介质的操作后,通过核间通信机制将操作结果通知所述任一第二操作系统。

2、
  如权利要求1所述的方法,其特征在于,所述任一第二操作系统需要对共享存储介质进行读操作时,所述任一第二操作系统通过核间通信机制,将读操作请求通知第一操作系统,以及所述第一操作系统根据所述读操作请求完成对共享存储介质的读操作后,通过核间通信机制将读操作结果通知所述任一第二操作系统包括:
所述任一第二操作系统在共享内存中的读数据队列中指定一块可用的内存块,并向第一操作系统发送读请求核间消息;所述共享内存是第一操作系统和所述任一第二操作系统的共享内存;所述读请求核间消息包括:所要读取的数据在共享存储介质中的起始地址、所要读取的数据长度和指定内存块在共享内存中的位置;
第一操作系统根据所述读请求核间消息,从共享存储介质中读取相应的数据,并写入所述指定内存块中;
第一操作系统向所述任一第二操作系统发送读应答核间消息;所述读应答核间消息中包括所述指定内存块在共享内存中的位置;
所述任一第二操作系统根据读应答核间消息,从指定内存块中读取数据。

3、
  如权利要求2所述的方法,其特征在于,
所述任一第二操作系统向第一操作系统发送读请求核间消息包括:所述任一第二操作系统将读请求核间消息发送至核间消息队列中的读请求队列中;所述第一操作系统从所述读请求队列中读取所述读请求核间消息;
所述第一操作系统向所述任一第二操作系统发送读应答核间消息包括:所述第一操作系统将读应答核间消息发送至核间消息队列中的读应答队列中;所述任一第二操作系统从所述读应答队列中读取所述读应答核间消息;
所述共享内存中的读数据队列是首尾相接的环形队列。

4、
  如权利要求2所述的方法,其特征在于,该方法进一步包括:
所述任一第二操作系统在启动时的初始化过程中,将所述读数据队列中的内存块都标记为空闲;
所述任一第二操作系统在读数据队列中指定一块可用的内存块时,将该指定内存块标记为已用;
所述任一第二操作系统根据读应答核间消息,从指定内存块中读取数据后,将该指定内存块标记为空闲。

5、
  如权利要求1所述的方法,其特征在于,所述任一第二操作系统需要对共享存储介质进行写操作时,所述任一第二操作系统通过核间通信机制,将写操作请求通知第一操作系统,以及所述第一操作系统根据所述写操作请求完成对共享存储介质的写操作后,通过核间通信机制将写操作结果通知所述任一第二操作系统包括:
所述任一第二操作系统在共享内存中的写数据队列中指定一块可用的内存块,将要写入共享存储介质的数据写入指定内存块;所述共享内存是第一操作系统和所述任一第二操作系统的共享内存;
所述任一第二操作系统向第一操作系统发送写请求核间消息;所述写请求核间消息包括:所要写入的数据在共享存储介质中的起始地址、所要写入的数据的长度和指定内存块在共享内存中的位置;
第一操作系统根据所述写请求核间消息,从指定内存块中读取数据并写入共享存储介质中的相应位置;
第一操作系统向所述任一第二操作系统发送写应答核间消息,以通知第二操作系统写操作已完成。

6、
  如权利要求5所述的方法,其特征在于,
所述任一第二操作系统向第一操作系统发送写请求核间消息包括:所述任一第二操作系统将写请求核间消息发送至核间消息队列中的写请求队列中;所述第一操作系统从所述写请求队列中读取所述写请求核间消息;
所述第一操作系统向所述任一第二操作系统发送写应答核间消息包括:所述第一操作系统将写应答核间消息发送至核间消息队列中的写应答队列中;所述任一第二操作系统从所述写应答队列中读取所述写应答核间消息;
所述共享内存中的写数据队列是首尾相接的环形队列。

7、
  如权利要求5所述的方法,其特征在于,该方法进一步包括:
所述任一第二操作系统在启动时的初始化过程中,将所述写数据队列中的内存块都标记为空闲;
所述任一第二操作系统将要写入共享存储介质的数据写入指定内存块时,将该指定内存块标记为已用;
所述任一第二操作系统在接收到第一操作系统发送的写应答核间消息时,将所述指定内存块标记为空闲。

8、
  如权利要求1至7中任一项所述的方法,其特征在于,该方法进一步包括:
所述第一操作系统在启动时的初始化过程中,将所述共享存储介质的信息发送到自身与所述任一第二操作系统的共享内存中;
所述任一第二操作系统在启动时的初始化过程中,从共享内存中获取所述共享存储介质的信息。

9、
  如权利要求1至8中任一项所述的方法,其特征在于,该方法进一步包括:
所述第一操作系统在启动时的初始化过程中,向所述任一第二操作系统发送核间中断,以通知所述任一第二操作系统共享存储介质可用;
所述任一第二操作系统收到所述核间中断后,将共享存储介质的可用标志置位;
所述第一操作系统在关机时,向所述任一第二操作系统发送核间中断,以禁止所述任一第二操作系统发送对共享存储介质的操作请求。

10、
  一种实现多个操作系统共享存储介质的装置,所述多个操作系统运行在多核处理器上,其特征在于,该装置包括:属于所述多个操作系统中的一个指定的第一操作系统的第一核间数据处理模块和存储介质访问模块,属于所述多个操作系统中的任一第二操作系统的第二核间数据处理模块,其中,
存储介质访问模块,用于根据第一核间数据处理模块的指令对共享存储介质进行操作;
第二核间数据处理模块,用于在所述任一第二操作系统需要对共享存储介质进行操作时,通过核间通信机制,将所述任一第二操作系统的操作请求通知第一核间数据处理模块;
第一核间数据处理模块,用于根据第二核间数据处理模块发送的操作请求指令存储介质访问模块完成对共享存储介质的操作后,通过核间通信机制将操作结果通知第二核间数据处理模块。

11、
  如权利要求10所述的装置,其特征在于,
第二核间数据处理模块,用于在所述任一第二操作系统需要对共享存储介质进行读操作时,在共享内存中的读数据队列中指定一块可用的内存块,并向第一核间数据处理模块发送读请求核间消息;所述共享内存是第一操作系统和所述任一第二操作系统的共享内存;所述读请求核间消息包括:所要读取的数据在共享存储介质中的起始地址、所要读取的数据长度和指定内存块在共享内存中的位置;
第一核间数据处理模块,用于根据所述读请求核间消息,指令存储介质访问模块对共享存储介质进行读访问操作,并将存储介质访问模块读取并返回的数据写入所述指定内存块中,然后向第二核间数据处理模块发送读应答核间消息;所述读应答核间消息中包括所述指定内存块在共享内存中的位置;
第二核间数据处理模块,用于根据所述读应答核间消息,从指定内存块中读取数据,并上交给所述任一第二操作系统的上层软件。

12、
  如权利要求11所述的装置,其特征在于,
所述第二核间数据处理模块,用于将所述读请求核间消息发送至核间消息队列中的读请求队列中;用于从核间消息队列中的读应答队列中读取所述读应答核间消息;
所述第一核间数据处理模块,用于从核间消息队列中的读请求队列中读取所述读请求核间消息;用于将所述读应答核间消息发送至核间消息队列中的读应答队列中。

13、
  如权利要求11所述的装置,其特征在于,
所述第二核间数据处理模块,用于在所述任一第二操作系统启动时的初始化过程中,将所述读数据队列中的内存块都标记为空闲;用于在读数据队列中指定一块可用的内存块时,将该指定内存块标记为已用;用于根据第一核间数据处理模块发送的所述读应答核间消息,从指定内存块中读取数据后,将该指定内存块标记为空闲。

14、
  如权利要求10所述的装置,其特征在于,
第二核间数据处理模块,用于在所述任一第二操作系统需要对共享存储介质进行写操作时,在共享内存中的写数据队列中指定一块可用的内存块,将要写入共享存储介质的数据写入指定内存块,然后向第一核间数据处理模块发送写请求核间消息;所述共享内存是第一操作系统和所述任一第二操作系统的共享内存;所述写请求核间消息包括:所要写入的数据在共享存储介质中的起始地址、所要写入的数据的长度和指定内存块在共享内存中的位置;
第一核间数据处理模块,用于根据第二核间数据处理模块发送的写请求核间消息,从指定内存块中读取数据并发送给存储介质访问模块,指令存储介质访问模块将数据写入共享存储介质中的相应位置,然后向第二核间数据处理模块发送写应答核间消息,以通知第二核间数据处理模块写操作已完成。

15、
  如权利要求14所述的装置,其特征在于,
所述第二核间数据处理模块,用于将所述写请求核间消息发送至核间消息队列中的写请求队列中;用于从核间消息队列中的写应答队列中读取所述写应答核间消息;
所述第一核间数据处理模块,用于从核间消息队列中的写请求队列中读取所述写请求核间消息;用于将所述写应答核间消息发送至核间消息队列中的写应答队列中。

16、
  如权利要求14所述的装置,其特征在于,
所述第二核间数据处理模块,用于在所述任一第二操作系统启动时的初始化过程中,将所述写数据队列中的内存块都标记为空闲;用于在将要写入共享存储介质的数据写入指定内存块时,将该指定内存块标记为已用;用于在接收到第一核间数据处理模块发送的写应答核间消息时,将所述指定内存块标记为空闲。

17、
  如权利要求10至16中任一项所述的装置,其特征在于,
所述第一核间数据处理模块,进一步用于在第一操作系统启动时的初始化过程中,将所述共享存储介质的信息发送到第一操作系统和所述任一第二操作系统的共享内存中;
所述第二核间数据处理模块,进一步用于在所述任一第二操作系统启动时的初始化过程中,从所述共享内存中获取所述共享存储介质的信息。

18、
  如权利要求17所述的装置,其特征在于,该装置进一步包括:属于第一操作系统的第一状态交互模块和属于所述任一第二操作系统的第二状态交互模块,其中,
第一状态交互模块,用于在第一操作系统启动时的初始化过程中,向第二状态交互模块发送核间中断,以通知共享存储介质可用;
第二状态交互模块,用于在所述任一第二操作系统启动时的初始化过程中,收到通知共享存储介质可用的核间中断时,将共享存储介质的可用标志置位。
第一状态交互模块,用于在第一操作系统关机时,向第二状态交互模块发送核间中断,以禁止发送对共享存储介质的操作请求;
第二状态交互模块,用于在收到禁止发送对共享存储介质的操作请求的核间中断时,向第二核间数据处理模块发送禁止对共享存储介质进行操作的指令。

说明书

一种实现多操作系统共享存储介质的方法和装置
技术领域
本发明涉及多操作系统技术领域,尤指多核多操作系统技术领域
背景技术
多核处理器由多个核组成,每个核又由若干硬件线程组成。各硬件线程既有各自独立的硬件资源,如寄存器、一级缓存等,又有共享的硬件资源,如内存、二级缓存、外设等。多核处理器的硬件线程在逻辑上相当于一个独立的CPU,硬件线程间的通信机制,如核间消息、核间中断等,使得硬件线程之间的交互变得非常方便。
基于多核处理器的以上特点,只要对内存和外设等资源进行合理的规划,在多核处理器上运行多操作系统是可行的。操作系统一般会使用文件系统,文件系统中的文件保存在闪存(Flash)、CF卡或硬盘等非易失性存储介质中。
与内存不同,非易失性存储介质在掉电后,存储的内容不会丢失,因此非常适合存储操作系统相关的版本文件或日志等文件。但是,访问非易失性存储介质需要遵循严格的时序关系,例如,擦除Flash需要遵循如图1所示的时序关系。
图1是现有技术中擦除Flash的流程图。如图1所示,擦除开始后,向Flash芯片写擦除命令序列,轮询数据,判断擦除是否完成,是则擦除结束,否则继续轮询数据,判断擦除是否完成。可以看出,在Flash的驱动程序中,必须保证对Flash芯片的互斥访问。
在多核系统中运行单操作系统时,不同硬件线程或核可以通过信号量或自旋锁的方式来保证对Flash芯片等存储介质芯片的互斥访问。而在多核系统中运行多操作系统时,由于不同的硬件线程或核运行不同的操作系统,无法通过信号量或自旋锁来保证互斥。
然而在实际的运行多操作系统的多核处理器系统中,为了节约硬件成本或节省单板的布线空间,有时确实需要多操作系统共享Flash、CF卡或硬盘等存储介质,例如共享的存储介质中存放多个操作系统的版本文件或文件系统等。
目前,有一种利用网络文件系统(NFS,Network File System)实现多操作系统共享存储介质的方案。NFS是一项用于在不同机器、不同操作系统之间通过网络互相共享各自的文件的技术。多操作系统之间利用各自的网口使用NFS,以A、B和C三个操作系统为例,操作系统A作为对外提供NFS服务的服务器,负责对共享存储介质的操作,操作系统B和C作为NFS客户端,通过网络和NFS协议操作共享存储介质上的文件。
但是,上述方案存在如下缺点:
(1)要求所有需要访问共享存储介质的操作系统都必须支持NFS协议,然而有些操作系统本身是不支持NFS的,且NFS协议比较复杂,要支持NFS协议需要开发工作量比较大;
(2)NFS通过网络共享各自的文件,这就要牵涉到权限管理和用户管理,维护复杂度高。
(3)无论是通过虚拟的网口还是物理的网口,都需要进行两次以上的内存搬移,性能相对较低。
因此,实现一种简单高效的多操作系统访问共享存储介质的方案,就显得非常必要了。
发明内容
本发明提供了一种实现多操作系统共享存储介质的方法,方法能够简单高效地实现多操作系统共享存储介质。
本发明还提供了一种实现多操作系统共享存储介质的装置,该装置能够简单高效地实现多操作系统共享存储介质。
为达到上述目的,本发明的技术方案具体是这样实现的:
本发明公开了一种实现多个操作系统共享存储介质的方法,该方法应用于运行在多核处理器上的多个操作系统之间,该方法包括:
所述多个操作系统中的一个指定的第一操作系统直接操作共享存储介质;
所述多个操作系统中的任一第二操作系统需要对共享存储介质进行操作时,该第二操作系统通过核间通信机制,将操作请求通知第一操作系统;
第一操作系统根据所述操作请求完成对共享存储介质的操作后,通过核间通信机制将操作结果通知所述任一第二操作系统。
本发明还公开了一种实现多个操作系统共享存储介质的装置,所述多个操作系统运行在多核处理器上,该装置包括:属于所述多个操作系统中的一个指定的第一操作系统的第一核间数据处理模块和存储介质访问模块,属于所述多个操作系统中的任一第二操作系统的第二核间数据处理模块,其中,
存储介质访问模块,用于根据第一核间数据处理模块的指令对共享存储介质进行操作;
第二核间数据处理模块,用于在所述任一第二操作系统需要对共享存储介质进行操作时,通过核间通信机制,将所述任一第二操作系统的操作请求通知第一核间数据处理模块;
第一核间数据处理模块,用于根据第二核间数据处理模块发送的操作请求指令存储介质访问模块完成对共享存储介质的操作后,通过核间通信机制将操作结果通知第二核间数据处理模块。
由上述技术方案可见,本发明这种多个操作系统中的一个指定的第一操作系统直接操作共享存储介质,多个操作系统中的任一第二操作系统需要对共享存储介质进行操作时,该第二操作系统通过核间通信机制,将操作请求通知第一操作系统,然后由第一操作系统根据所述操作请求完成对共享存储介质的操作后,通过核间通信机制将操作结果通知第二操作系统的技术方案相对于现有的利用NFS实现多操作系统共享存储介质的方案,简单而高效。
附图说明
图1是现有技术中擦除Flash的流程图;
图2是本发明实施例一种实现多操作系统共享存储介质的方法的原理示意图;
图3是图2中的操作系统B访问共享存储介质S的流程示意图;
图4是本发明实施例中操作系统A和操作系统B的共享内存的示意图;
图5是本发明实施例一种实现多个操作系统共享存储介质的装置的组成结构框图。
具体实施方式
本发明的核心思想是:对于运行在多核处理器上的多个操作系统,指定其中的一个操作系统直接操作共享存储介质,而其它操作系统需要对共享存储介质进行操作时,通过核间通信机制,将操作请求通知指定的操作系统,由该指定的操作系统根据所述操作请求完成对共享存储介质的操作后,通过核间通信机制将操作结果通知给发送操作请求的操作系统。
为使本发明的目的、技术方案及优点更加清楚明白,以下对本发明进行详细说明。
图2是本发明实施例一种实现多操作系统共享存储介质的方法的原理示意图。如图2所示,在一个多核处理器中假设有三个核:核A、核B和核C,三个核上各自运行一个操作系统,分别为:操作系统A、操作系统B和操作系统C。这三个操作系统需要访问共享存储介质S,S可以是Flash、CF卡或硬盘等。
在图2中,为了保证对共享存储介质S访问的互斥性,本发明中只允许操作系统A直接访问共享存储介质S,而操作系统B或C要访问共享存储介质S,需要通过核间通信机制通知操作系统A,由操作系统A完成对共享存储介质的访问,然后再通过核间通信机制通知操作系统B或C。这样,就把对共享存储介质的访问问题转换为核间通信问题。
图2所示的方法可以使得多核处理器上的多操作系统能够共享一个存储介质,且实现起来简单高效。下面以两个操作系统A和B为例来说明访问共享存储介质的交互过程,操作系统A为实际访问共享存储介质的操作系统,其自身访问共享存储介质的操作与单操作系统访问自身的存储介质相同,是现有技术,这里不再详述。以下重点描述操作系统B访问共享存储介质时的过程,而操作系统C访问共享存储介质时的过程与操作系统B相同。
图3是图2中的操作系统B访问共享存储介质S的流程示意图。如图3所示,为了完成访问共享存储介质S操作,操作系统B包含核间数据处理模块B和状态交互模块B;而对于操作系统A而言,因为需要真正访问共享存储介质S,所以需要三个模块:存储介质访问模块、核间数据处理模块A和状态交互模块A。
其中,存储介质访问模块相当于存储介质的驱动程序,进行真正访问存储介质的操作,包括读写数据和获取存储介质信息等。
核间数据处理模块负责处理核间交互的数据,如共享内存的读写、核间消息的处理等。
状态交互模块用于在操作系统启动和关机时向对方通报自己当前的状态,只有操作系统A和B都完成初始化后,操作系统B才能进行访问共享存储介质S的操作。
这里共享内存是指操作系统A和操作系统B都可以访问的内存,在两个操作系统初始化时将物理内存映射到虚拟内存的重叠部分的内存即为共享内存。图4是本发明实施例中操作系统A和操作系统B的共享内存的示意图。共享内存的映射过程是现有技术,这里不再详述。
在本实施例中,在操作系统A和操作系统B的共享内存中存放两部分内容分别为:读写数据队别和共享存储介质信息。
在本实施例中,共享内存中的读数据队列和写数据队列都为头尾相接的环形队列,队列中为已分配好的内存块,一个内存快的大小一般为共享存储介质的一个访问单元的大小,这样可以避免内存分配和释放的开销。为了内存管理的方便,A和B两个操作系统约定,由操作系统B对读数据队列和写数据队列进行管理,将其中的内存块标记为空闲或已用。本实施例中,操作系统A操作共享内存中的读数据队列和写数据队列的条件如表1所示,操作系统B操作共享内存中的读数据队列和写数据队列的条件如表2所示:
 

共享内存读数据队列共享内存写数据队列收到写请求消息前不操作只读收到写请求消息后,发送写应答消息前不操作可读可写发送写应答消息后不操作只读收到读请求消息前只读不操作收到读请求消息后,发送读应答消息前可读可写不操作发送读应答消息后只读不操作

表1
 共享内存数据队列共享内存写数据队列发送写请求消息前不操作可读可写发送写请求消息后,收到写应答消息前不操作只读收到写应答消息后不操作可读可写发送读请求消息前可读可写不操作发送读请求消息后,收到读应答消息前只读不操作收到读应答消息后可读可写不操作

表2
在本实施例中,共享存储介质信息由操作系统A在启动初始化时写入共享内存(由存储介质访问模块获取共享存储介质信息,并发送给核间数据处理模块A,再由核间数据处理模块A写入共享内存),用于操作系统B的初始化。共享存储介质信息包括:操作系统B使用的共享存储介质的起始地址,扇区号以及存储空间的大小等信息。
在本实施例中,由于读写都采用请求-应答机制,因此核间消息队列中包括:写请求队列、读请求队列、写应答队列和读应答队列,分别用于存放:写请求核间消息、读请求核间消息、写应答核间消息和读应答核间消息。存放核间消息队列的存储空间由核间通信机制提供,是现有技术,这里不再详述。
共享内存中的读数据队列和写数据队列的处理相当于数据平面的操作,而对核间消息队列的处理相当于控制平面的操作,用于访问共享存储介质时的逻辑控制。
在图3中,操作系统B对共享存储介质S访问可以分为如下几个阶段:操作系统启动时的初始化、共享存储介质的读操作、共享存储介质的写操作和操作系统关机时的处理,以下分别介绍:
一、操作系统启动时的初始化
操作系统A启动时的初始化流程包括:
√将物理的共享内存映射到虚拟内存;
√初始化共享内存中的读数据队列和写数据队列信息;
√清空核间消息队列中的读请求队列和写请求队列;
√初始化存储介质访问模块,以使共享存储介质S真正可以访问;
√将共享存储介质S的信息写入共享内存;
√状态交互模块A向操作系统B发送核间中断,通知操作系统B共享存储介质S已可用。
操作系统B启动时的初始化流程包括:
√将物理的共享内存映射到虚拟内存;
√初始化共享内存中的读数据队列和写数据队列,将读数据队列和写数据队列中的内存块都标记为空闲;
√清空核间消息队列中的读应答队列和写应答队列;
√如果有核间中断,在中断处理函数中将共享存储介质S的可用标志置位,以表示共享存储介质S可用;
√从共享内存中读取共享存储介质S的信息,上报给上层软件。
其中,读数据队列、写数据队列、读请求队列、写请求队列、读应答队列、写应答队列以及操作系统A和操作系统B的共享内存都是预先配置好的,操作系统A和操作系统B不需要同时启动。
二、共享存储介质的读操作
操作系统B对共享存储介质S的读操作在图3中用实线箭头表示,具体为:
步骤①,根据记录的共享内存中的读数据队列的信息,操作系统B的核间数据处理模块B从读数据队列中找到一块当前可用的内存块M,将其标记为已用,然后向操作系统A的核间数据处理模块A发送读请求核间消息;该读请求核间消息中包含:操作系统B所要读取的数据在共享存储介质中的起始地址、所要读取的数据长度和内存块M在共享内存中的读数据队列中的位置;
步骤②,核间数据处理模块A从读请求队列中取出所述读请求核间消息,从该核间消息中解析出操作系统B所要读取的数据在共享存储介质中的起始地址、所要读取的数据长度和内存块M在读数据队列中的位置;
步骤③、④和⑤,核间数据处理模块A调用存储介质访问模块的读函数,将操作系统B要读取的共享存储介质S的内容写入内存块M;
步骤⑥,核间数据处理模块A向核间数据处理模块B发送读应答核间消息,将该读应答核间消息写入读应答队列中,其中,该读应答核间消息中包含内存块M的读数据队列中的位置信息;
步骤⑦,核间数据处理模块B从读应答队列中取出读应答核间消息,解析出内存块M在读数据队列中的位置;
步骤⑧,核间数据处理模块B从共享内存的读数据队列中的内存块M中读出数据,交给操作系统B的上层软件处理,并将内存块M标记为空闲。
三、共享存储介质的写操作
步骤①,操作系统B的核间数据处理模块B从共享内存的写数据队列中找到当前第一块空闲的内存块N,将要写入共享存储介质S的数据写入内存块N,将内存块N标记为已用;
步骤②,核间数据处理模块B向核间数据处理模块A发送写请求核间消息,该写请求核间消息中包含:操作系统B所要写入的数据在共享存储介质S中的起始地址、所要写入的数据的长度和内存块N在共享内存中写数据队列中的位置;
步骤③,核间数据处理模块A从写请求队列中取出所述写请求核间消息,解析出操作系统B所要写入的数据在共享存储介质S中的起始地址、所要写入的数据的长度和内存块N在共享内存中写数据队列中的位置;
步骤④、⑤和⑥,核间数据处理模块A从内存块N中取出所要写入的数据,并调用存储介质访问模块的写函数,将从内存块N中取出的数据写入共享存储介质S中的相应位置;
步骤⑦,核间数据处理模块A向核间数据处理模块B发送写应答核间消息,通知操作系统B写操作已完成;其中,该写应答核间消息中包含内存块N在写数据队列中的位置信息;
步骤⑧,操作系统B的核间数据处理模块B从写应答队列中读出写应答核间消息,根据其中的内存块N在写数据队列中的位置,将内存块N标记为空闲。
三、操作系统关机时的处理
操作系统A关机时的处理流程包括:
√状态交互模块A向操作系统B发送核间中断,通知操作系统B禁止再发读请求核间消息和写请求核间消息;
√核间数据处理模块A将读请求队列和写请求队列中的读写请求核间消息处理完;
√操作系统A关机
操作系统B关机时的处理流程与现有技术相同,无特殊处理。
操作系统的重启可以看作是操作系统关机时的处理加上操作系统启动时的初始化,所以不再赘述
通过上述实施例可以看出,在本发明中,利用多核处理器的核间通信机制,解决了运行于多核处理器上的多操作系统访问共享存储介质的互斥问题;利用多核处理器的共享内存机制,解决了多操作系统访问共享存储介质的效率问题;利用多核处理器的核间中断,解决了操作系统启动和关机时如何通知对方操作系统的问题。
本发明是的上述方案,使得多核多操作系统能够共享使用存储介质,降低了硬件成本;实现本发明的方案只需要修改操作系统的底层驱动即可,不需要修改文件系统等上层软件;采用核间消息和共享内存的机制,使得不需要进行内存搬移,数据处理效率高;操作系统启动和关机时采用核间中断通知对方操作系统,提高了系统可靠性。
图5是本发明实施例一种实现多个操作系统共享存储介质的装置的组成结构框图。多个操作系统运行在多核处理器上,则实现该多个操作系统共享存储介质的装置包括:属于所述多个操作系统中的一个指定的第一操作系统的第一核间数据处理模块和存储介质访问模块,属于所述多个操作系统中的任一第二操作系统的第二核间数据处理模块,其中,
存储介质访问模块,用于根据第一核间数据处理模块的指令对共享存储介质进行操作;
第二核间数据处理模块,用于在所述任一第二操作系统需要对共享存储介质进行操作时,通过核间通信机制,将所述任一第二操作系统的操作请求通知第一核间数据处理模块;
第一核间数据处理模块,用于根据第二核间数据处理模块发送的操作请求指令存储介质访问模块完成对共享存储介质的操作后,通过核间通信机制将操作结果通知第二核间数据处理模块。
在图5中,第二核间数据处理模块,用于在所述任一第二操作系统需要对共享存储介质进行读操作时,在共享内存中的读数据队列中指定一块可用的内存块,并向第一核间数据处理模块发送读请求核间消息;所述共享内存是第一操作系统和所述任一第二操作系统的共享内存;所述读请求核间消息包括:所要读取的数据在共享存储介质中的起始地址、所要读取的数据长度和指定内存块在共享内存中的位置;
第一核间数据处理模块,用于根据所述读请求核间消息,指令存储介质访问模块对共享存储介质进行读访问操作,并将存储介质访问模块读取并返回的数据写入所述指定内存块中,然后向第二核间数据处理模块发送读应答核间消息;所述读应答核间消息中包括所述指定内存块在共享内存中的位置;
第二核间数据处理模块,用于根据所述读应答核间消息,从指定内存块中读取数据,并上交给所述任一第二操作系统的上层软件。
在图5中,第二核间数据处理模块,用于将所述读请求核间消息发送至核间消息队列中的读请求队列中;用于从核间消息队列中的读应答队列中读取所述读应答核间消息;
第一核间数据处理模块,用于从核间消息队列中的读请求队列中读取所述读请求核间消息;用于将所述读应答核间消息发送至核间消息队列中的读应答队列中。
在图5中,第二核间数据处理模块,用于在所述任一第二操作系统启动时的初始化过程中,将所述读数据队列中的内存块都标记为空闲;用于在读数据队列中指定一块可用的内存块时,将该指定内存块标记为已用;用于根据第一核间数据处理模块发送的所述读应答核间消息,从指定内存块中读取数据后,将该指定内存块标记为空闲。
在图5中,第二核间数据处理模块,用于在所述任一第二操作系统需要对共享存储介质进行写操作时,在共享内存中的写数据队列中指定一块可用的内存块,将要写入共享存储介质的数据写入指定内存块,然后向第一核间数据处理模块发送写请求核间消息;所述共享内存是第一操作系统和所述任一第二操作系统的共享内存;所述写请求核间消息包括:所要写入的数据在共享存储介质中的起始地址、所要写入的数据的长度和指定内存块在共享内存中的位置;
第一核间数据处理模块,用于根据第二核间数据处理模块发送的写请求核间消息,从指定内存块中读取数据并发送给存储介质访问模块,指令存储介质访问模块将数据写入共享存储介质中的相应位置,然后向第二核间数据处理模块发送写应答核间消息,以通知第二核间数据处理模块写操作已完成。
在图5中,所述第二核间数据处理模块,用于将所述写请求核间消息发送至核间消息队列中的写请求队列中;用于从核间消息队列中的写应答队列中读取所述写应答核间消息;
所述第一核间数据处理模块,用于从核间消息队列中的写请求队列中读取所述写请求核间消息;用于将所述写应答核间消息发送至核间消息队列中的写应答队列中。
在图5中,所述第二核间数据处理模块,用于在所述任一第二操作系统启动时的初始化过程中,将所述写数据队列中的内存块都标记为空闲;用于在将要写入共享存储介质的数据写入指定内存块时,将该指定内存块标记为已用;用于在接收到第一核间数据处理模块发送的写应答核间消息时,将所述指定内存块标记为空闲。
在图5中,所述第一核间数据处理模块,进一步用于在第一操作系统启动时的初始化过程中,将所述共享存储介质的信息发送到第一操作系统和所述任一第二操作系统的共享内存中;
所述第二核间数据处理模块,进一步用于在所述任一第二操作系统启动时的初始化过程中,从所述共享内存中获取所述共享存储介质的信息。
如图5所示,该装置进一步包括:属于第一操作系统的第一状态交互模块和属于所述任一第二操作系统的第二状态交互模块,其中,
第一状态交互模块,用于在第一操作系统启动时的初始化过程中,向第二状态交互模块发送核间中断,以通知共享存储介质可用;
第二状态交互模块,用于在所述任一第二操作系统启动时的初始化过程中,收到通知共享存储介质可用的核间中断时,将共享存储介质的可用标志置位。
在图5中,第一状态交互模块,用于在第一操作系统关机时,向第二状态交互模块发送核间中断,以禁止发送对共享存储介质的操作请求;
第二状态交互模块,用于在收到禁止发送对共享存储介质的操作请求的核间中断时,向第二核间数据处理模块发送禁止对共享存储介质进行操作的指定。
综上所述,本发明这种多个操作系统中的一个指定的第一操作系统直接操作共享存储介质,多个操作系统中的任一第二操作系统需要对共享存储介质进行操作时,该第二操作系统通过核间通信机制,将操作请求通知第一操作系统,然后由第一操作系统根据所述操作请求完成对共享存储介质的操作后,通过核间通信机制将操作结果通知第二操作系统的技术方案相对于现有的利用NFS实现多操作系统共享存储介质的方案,简单而高效。
以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围,凡在本发明的精神和原则之内所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

一种实现多操作系统共享存储介质的方法和装置.pdf_第1页
第1页 / 共24页
一种实现多操作系统共享存储介质的方法和装置.pdf_第2页
第2页 / 共24页
一种实现多操作系统共享存储介质的方法和装置.pdf_第3页
第3页 / 共24页
点击查看更多>>
资源描述

《一种实现多操作系统共享存储介质的方法和装置.pdf》由会员分享,可在线阅读,更多相关《一种实现多操作系统共享存储介质的方法和装置.pdf(24页珍藏版)》请在专利查询网上搜索。

本发明公开了一种实现多个操作系统共享存储介质的方法和装置。方法包括:多个操作系统中的一个指定的第一操作系统直接操作共享存储介质;多个操作系统中的任一第二操作系统需要对共享存储介质进行操作时,该第二操作系统通过核间通信机制,将操作请求通知第一操作系统;第一操作系统根据所述操作请求完成对共享存储介质的操作后,通过核间通信机制将操作结果通知第二操作系统。本发明的技术方案简单而高效。 。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 物理 > 计算;推算;计数


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1