管理分布式任务RapidIO共享内存的方法及设备与流程

文档序号:11949811阅读:338来源:国知局
管理分布式任务RapidIO共享内存的方法及设备与流程

本发明属于计算机领域,具体涉及一种管理分布式任务RapidIO共享内存的方法及设备。



背景技术:

RapidIO互连处理机上分布式任务可借助RapidIO内存映射机制申请内存映射区间作为任务间的共享内存,然而这种基于RapidIO的分布式任务共享内存的实现,需对RapidIO共享内存使用状态信息进行管理。

在现有的技术中没有提出一种RapidIO互连处理机上分布式任务对于RapidIO共享内存使用状态管理的方法。本发明专利中提到的方法,通过内存分区的方式对分布式任务RapidIO共享内存进行管理,解决分布式任务RapidIO共享内存创建、打开、关闭过程中,内存使用状态信息的维护问题。



技术实现要素:

针对上述问题的不足,本发明提出一种管理分布式任务RapidIO共享内存的方法及设备。本发明的一个目的是解决至少一个上述问题或缺陷,并提供至少一个后面将说明的优点。

本发明还有一个目的是提供了一种管理分布式任务RapidIO共享内存的方法,其通过构造共享内存分区的方式,实现对RapidIO互连多处理机RapidIO共享内存进行有效管理,解决位于各处理机之上分布式任务对于RapidIO共享内存使用状态的维护。

本发明还有一个目的是提供了一种管理分布式任务RapidIO共享内存的方法,其有效的解决了RapidIO互连处理机之上分布式任务对于共享内存使用状态信息的交互,为RapidIO共享内存的创建、打开以及关闭操作奠定了基础。

本发明还有一个目的是提供了一种管理分布式任务RapidIO共享内存的设备,其有效地实现了管理分布式任务RapidIO共享内存的方法。

为了实现根据本发明的这些目的和其它优点,本发明提供了一种管理分布式任务RapidIO共享内存的方法,包括以下步骤:

在互连处理机中构造共享内存分区;

获取所述共享内存分区的可用信息,在至少一个互连处理机上创建新的分布式任务RapidIO共享内存;

打开所述新的分布式任务RapidIO共享内存时,读取所述共享内存分区,获取其它互连处理机上的分布式任务RapidIO共享内存中相同的内存块集,确定并使用未分配的内存块集;

关闭新的分布式任务RapidIO共享内存时,修改所述共享内存分区的状态。

本发明方法构造的分布式任务RapidIO共享内存分区,解决了RapidIO互连处理机之上分布式任务对于RapidIO共享内存状态的管理需求,为分布式任务间基于RapidIO共享内存的通信提供了支持。

优选的是,所述共享内存分区包括共享内存描述符使用状态表、内存块分配状态表、查询描述符和内存块属性区。

所述共享内存描述符的使用状态以字节存储,所述内存块的使用状态以二进制存储,所述查询描述符用于同一共享内存描述符的分享,所述内存块属性用于同一共享内存描述符所代表共享内存块集合的分享

优选的是,在互连处理机中构造共享内存分区包括:

分别计算所述共享内存描述符使用状态表、所述内存块分配状态表、所述查询描述符及所述内存块属性所占用的内存空间;

计算用于管理所述共享内存分区所需的内存空间,并在互连处理机共享内存中预留出所述共享内存分区所需的内存空间,同时将所述共享内存描述使用状态表、所述内存块分配状态表、所述查询描述符以及所述内存块属性依次在所述共享内存分区所需的内存空间进行存储,获得所述共享内存分区。

所述共享内存描述符使用状态表所需的内存空间的计算、所述内存块分配状态表所需的内存空间的计算、所述查询描述符所占用的内存空间的计算及所述内存块属性所占用的内存空间的计算是相互独立的,四者的内存空间相加得到所述共享内存分区的空间大小。

优选的是,获取所述共享内存分区的可用信息,在至少一个互连处理机上创建新的分布式任务RapidIO共享内存的具体步骤如下:

A、获取所述共享内存描述符使用状态表的使用信息,判断是否有可用;是,则执行步骤B,否,则执行步骤C;

B、获取所述共享内存块分配状态表的使用信息,判断是否有满足申请创建数量的空闲内存块;是,则创建新的分布式任务RapidIO共享内存,否,则执行步骤C;

C、不创建新的分布式任务RapidIO共享内存。

经过获取所述共享内存描述使用状态表的使用信息,如果使用信息中包含可用信息,则进一步获取所述共享内存块分配状态表的使用信息,看是否有空闲内存块可用信息,有的话,则创建新的分布式任务RapidIO共享内存,这样就避免了不加任何调查地创建新的分布式任务,但打开使用时却发现没有空闲内存块使用的弊端,节约了时间,提高了效率。

优选的是,打开所述新的分布式任务RapidIO共享内存时,通过读取所述共享内存分区中的所述查询描述符和所述内存块属性,获取其它互连处理机上的分布式任务RapidIO共享内存中相同的内存块集,确定并使用未分配的内存块集。

打开所述新的分布式任务RapidIO共享内存时,通过读取所述共享内存分区中的所述查询描述符和所述内存块属性,查看哪些内存块已经被分配给其它互连处理机上分布式任务RapidIO共享内存使用,哪些没有被分配,确定并使用未分配的内存块集,通过信息共享,提高了工作效率。

优选的是,关闭新的分布式任务RapidIO共享内存时,修改所述共享内存分区的所述共享内存描述符使用状态表。

RapidIO互连处理机之上分布式任务通过共享内存描述符执行关闭操作时,对共享内存描述符的引用计数执行减1操作,如果引用计数减为0,则修改该共享内存描述符在内存块分配状态表中代表的内存块集合使用状态。

一种管理分布式任务RapidIO共享内存的设备,所述设备包括:

构造模块,用于构造互连处理机上的共享内存分区;

创建模块,用于获取所述共享内存分区的可用信息,在至少一个互连处理机上创建新的分布式任务RapidIO共享内存;

操作模块,用于打开和关闭所述新的分布式任务RapidIO共享内存。

本发明设备的所述构造模块,其构造的分布式任务共享内存分区,解决了RapidIO互连处理机之上分布式任务对于RapidIO共享内存状态的管理需求,为分布式任务间基于RapidIO共享内存的通信提供了支持。

优选的是,所述构造模块具体用于:

分别计算共享内存描述符使用状态表、内存块分配状态表、查询描述符及内存块属性所占用的内存空间;

计算用于管理所述共享内存分区所需的内存空间,并在互连处理机共享内存中预留出所述共享内存分区所需的内存空间,同时将所述共享内存描述使用状态表、所述内存块分配状态表、所述查询描述符以及所述内存块属性依次在所述共享内存分区所需的内存空间进行存储,获得所述共享内存分区。

优选的是,所述创建模块具体用于:

获取所述共享内存描述符使用状态表的使用信息,判断是否有可用;是,则获取所述共享内存块分配状态表的使用信息,否,则不创建新的分布式任务RapidIO共享内存;

获取所述共享内存块分配状态表的使用信息,判断是否有满足申请创建数量的空闲内存块;是,则创建新的分布式任务RapidIO共享内存,否,则不创建新的分布式任务RapidIO共享内存。

优选的是,所述操作模块具体用于:

打开所述新的分布式任务RapidIO共享内存时,读取所述共享内存分区中的所述查询描述符和所述内存块属性,获取其它互连处理机上的分布式任务RapidIO共享内存中相同的内存块集,确定并使用未分配的内存块集;

关闭新的分布式任务RapidIO共享内存时,修改所述共享内存分区的所述共享内存描述符使用状态表。

本发明的有益效果:

1、本发明提供的管理分布式任务RapidIO共享内存的方法,其通过构造共享内存分区的方式,实现对RapidIO互连多处理机RapidIO共享内存进行有效管理,解决位于各处理机之上分布式任务对于RapidIO共享内存使用状态的维护,提高了工作效率。

2、本发明提供的管理分布式任务RapidIO共享内存的方法,其有效的解决了RapidIO互连处理机之上分布式任务对于共享内存使用状态信息的交互,为RapidIO共享内存的创建、打开以及关闭操作奠定了基础。

3、本发明提供的管理分布式任务RapidIO共享内存的设备,其有效地实现了管理分布式任务RapidIO共享内存的方法。

附图说明

图1为本发明所述共享内存分区的结构示意图;

图2为本发明所述共享内存分区构造的流程图;

图3为本发明所述管理分布式任务RapidIO共享内存的方法的流程图;

图4为本发明所述管理分布式任务RapidIO共享内存的设备的结构示意图。

具体实施方式

下面结合附图和具体实施方式对本发明做进一步的描述。

本发明的流程图如附图3所示,包括以下步骤:

本发明提供了一种管理分布式任务RapidIO共享内存的方法,包括以下步骤:

在互连处理机中构造共享内存分区;

获取所述共享内存分区的可用信息,在至少一个互连处理机上创建新的分布式任务RapidIO共享内存;

打开所述新的分布式任务RapidIO共享内存时,读取所述共享内存分区,获取其它互连处理机上的分布式任务RapidIO共享内存中相同的内存块集,确定并使用未分配的内存块集;

关闭新的分布式任务RapidIO共享内存时,修改所述共享内存分区的状态。

本发明方法构造的分布式任务RapidIO共享内存分区,解决了RapidIO互连处理机之上分布式任务对于RapidIO共享内存状态的管理需求,为分布式任务间基于RapidIO共享内存的通信提供了支持。

在上述实施例的基础上,又一个实施例,所述共享内存分区包括共享内存描述符使用状态表、内存块分配状态表、查询描述符和内存块属性区。

所述共享内存描述符的使用状态以字节存储,所述内存块的使用状态以二进制存储,所述查询描述符用于同一共享内存描述符的分享,所述内存块属性用于同一共享内存描述符所代表共享内存块集合的分享

在上述实施例的基础上,又一个实施例,在互连处理机中构造共享内存分区包括:

分别计算所述共享内存描述符使用状态表、所述内存块分配状态表、所述查询描述符及所述内存块属性所占用的内存空间;

计算用于管理所述共享内存分区所需的内存空间,并在互连处理机共享内存中预留出所述共享内存分区所需的内存空间,同时将所述共享内存描述使用状态表、所述内存块分配状态表、所述查询描述符以及所述内存块属性依次在所述共享内存分区所需的内存空间进行存储,获得所述共享内存分区。

所述共享内存描述符使用状态表所需的内存空间的计算、所述内存块分配状态表所需的内存空间的计算、所述查询描述符所占用的内存空间的计算及所述内存块属性所占用的内存空间的计算是相互独立的,四者的内存空间相加得到所述共享内存分区的空间大小。

对于空间大小为S字节,分配内存块大小为block_size字节,提供N个共享内存描述符(共享内存描述符用于标识一个内存块集)的分布式任务RapidIO共享内存,其共享内存管理分区的构造方法如下:

以一个字节存储每个共享内存描述符的使用状态,0为空闲、大于0的值为分布式任务对共享内存引用的次数,并由公式1计算得出记录共享内存描述符使用状态所需的内存空间size_1字节,任务的引用的次数,指的是有多少个任务对共享内存进行了引用(或者称为使用),公式1计算出的内存空间只是用于存储共享内存“引用”计数的状态值。公式1如下式:

N*8

以一个二进位存储内存块的使用状态,0为空闲、1为在用,并由公式2计算得出记录内存块分配状态所需的内存空间size_2字节。公式2如下式:

[S/(8*block_size)]

按公式3计算出查询描述符所占用的内存空间size_3字节;查询描述符用于RapidIO互连处理机分布式任务间对于同一共享内存描述符的分享。公式3如下式:

[[log2N]/8]

按公式4计算出内存块属性所占用的内存空间size_4字节;内存块属性用于RapidIO互连异构处理机分布式任务间对于同一共享内存描述符所代表共享内存块集合的分享。公式4如下式:

[[(log2[S/block_size])]/8]*[S/block_size]

按公式5计算出用于管理RapidIO共享内存所需的内存空间size_5字节,并在各处理机RapidIO共享内存中预留size_5字节的空间,同时将共享内存描述符使用状态表、内存块分配状态表、查询描述符以及内存块属性区依次在这size_5字节中进行存储,公式5如下式:

size_1+size_2+size_3+size_4

size_1、size_2、size_3以及size_4四个值的计算相互独立,但四者相加共同得出size_5。这里使用size_1,size_2、size_3、size_4以及size_5指代了计算结果,简化了步骤中公式的表达。

在上述实施例的基础上,又一个实施例,获取所述共享内存分区的可用信息,在至少一个互连处理机上创建新的分布式任务RapidIO共享内存的具体步骤如下:

B、获取所述共享内存描述符使用状态表的使用信息,判断是否有可用;是,则执行步骤B,否,则执行步骤C;

B、获取所述共享内存块分配状态表的使用信息,判断是否有满足申请创建数量的空闲内存块;是,则创建新的分布式任务RapidIO共享内存,否,则执行步骤C;

C、不创建新的分布式任务RapidIO共享内存。

经过获取所述共享内存描述使用状态表的使用信息,如果使用信息中包含可用信息,即取值为0的共享内存描述符,则进一步获取所述共享内存块分配状态表的使用信息,看是否有空闲内存块可用信息(状态值为0表示内存块空闲),当有取值为0(空闲)的共享内存描述符以及足够数量的空闲内存块时,即创建新的分布式任务RapidIO共享内存,这样就避免了不加任何调查地创建新的分布式任务,但打开使用时却发现没有空闲内存块使用的弊端,节约了时间,提高了效率。

在上述实施例的基础上,再一个实施例,打开所述新的分布式任务RapidIO共享内存时,通过读取所述共享内存分区中的所述查询描述符和所述内存块属性,获取其它互连处理机上的分布式任务RapidIO共享内存中相同的内存块集,确定并使用未分配的内存块集。

打开所述新的分布式任务RapidIO共享内存时,通过读取所述共享内存分区中的所述查询描述符和所述内存块属性,查看哪些内存块已经被分配给其它互连处理机上分布式任务RapidIO共享内存使用,哪些没有被分配,确定并使用未分配的内存块集,通过信息共享,提高了工作效率。

在上述实施例的基础上,再一个实施例,关闭新的分布式任务RapidIO共享内存时,修改所述共享内存分区的所述共享内存描述符使用状态表。

RapidIO互连处理机之上分布式任务通过共享内存描述符执行关闭操作时,对共享内存描述符的引用计数执行减1操作,如果引用计数减为0,则修改该共享内存描述符在内存块分配状态表中代表的内存块集合使用状态。

一种管理分布式任务RapidIO共享内存的设备,所述设备包括:

构造模块,用于构造互连处理机上的共享内存分区;

创建模块,用于获取所述共享内存分区的可用信息,在至少一个互连处理机上创建新的分布式任务RapidIO共享内存;

操作模块,用于打开和关闭所述新的分布式任务RapidIO共享内存。

本发明设备的所述构造模块,其构造的分布式任务共享内存分区,解决了RapidIO互连处理机之上分布式任务对于RapidIO共享内存状态的管理需求,为分布式任务间基于RapidIO共享内存的通信提供了支持。

在上述情况的基础上,又一个实施例,所述构造模块具体用于:

分别计算共享内存描述符使用状态表、内存块分配状态表、查询描述符及内存块属性所占用的内存空间;

计算用于管理所述共享内存分区所需的内存空间,并在互连处理机共享内存中预留出所述共享内存分区所需的内存空间,同时将所述共享内存描述使用状态表、所述内存块分配状态表、所述查询描述符以及所述内存块属性依次在所述共享内存分区所需的内存空间进行存储,获得所述共享内存分区。

对于空间大小为S字节,分配内存块大小为block_size字节,提供N个共享内存描述符(共享内存描述符用于标识一个内存块集)的分布式任务RapidIO共享内存,其共享内存管理分区的构造方法如下:

以一个字节存储每个共享内存描述符的使用状态,0为空闲、大于0的值为分布式任务对共享内存引用的次数,并由公式1计算得出记录共享内存描述符使用状态所需的内存空间size_1字节。任务的引用的次数,指的是有多少个任务对共享内存进行了引用(或者称为使用),公式1计算出的内存空间只是用于存储共享内存“引用”计数的状态值。公式1如下:

N*8

以一个二进位存储内存块的使用状态,0为空闲、1为在用,并由公式2计算得出记录内存块分配状态所需的内存空间size_2字节。公式2如下:

[S/(8*block_size)]

按公式3计算出查询描述符所占用的内存空间size_3字节;查询描述符用于RapidIO互连处理机分布式任务间对于同一共享内存描述符的分享。公

[[log2N]/8]

式3如下:

按公式4计算出内存块属性所占用的内存空间size_4字节;内存块属性用于RapidIO互连异构处理机分布式任务间对于同一共享内存描述符所代表共享内存块集合的分享。公式4如下:

[[(log2[S/block_size])]/8]*[S/block_size]

按公式5计算出用于管理RapidIO共享内存所需的内存空间size_5字节,并在各处理机RapidIO共享内存中预留size_5字节的空间,同时将共享内存描述符使用状态表、内存块分配状态表、查询描述符以及内存块属性区依次在这size_5字节中进行存储,公式5如下:

size_1+size_2+size_3+size_4

size_1、size_2、size_3以及size_4四个值的计算相互独立,但四者相加共同得出size_5。这里使用size_1,size_2、size_3、size_4以及size_5指代了计算结果,简化了步骤中公式的表达。

在上述实施例的基础上,又一个实施例,所述创建模块具体用于:

获取所述共享内存描述符使用状态表的使用信息,判断是否有可用,即取值为0的共享内存描述符;是,则获取所述共享内存块分配状态表的使用信息,否,则不创建新的分布式任务RapidIO共享内存;

获取所述共享内存块分配状态表的使用信息,判断是否有满足申请创建数量的空闲内存块(状态值为0表示内存块空闲)。当有取值为0(空闲)的共享内存描述符以及足够量的空闲内存块时;是,则创建新的分布式任务RapidIO共享内存,否,则不创建新的分布式任务RapidIO共享内存。

在上述实施例的基础上,又一个实施例,所述操作模块具体用于:

打开所述新的分布式任务RapidIO共享内存时,读取所述共享内存分区中的所述查询描述符和所述内存块属性,获取其它互连处理机上的分布式任务RapidIO共享内存中相同的内存块集,确定并使用未分配的内存块集。

关闭新的分布式任务RapidIO共享内存时,修改所述共享内存分区的所述共享内存描述符使用状态表。RapidIO互连处理机之上分布式任务通过共享内存描述符执行关闭操作时,对共享内存描述符的引用计数执行减1操作,如果引用计数减为0,则修改该共享内存描述符在内存块分配状态表中代表的内存块集合使用状态。

构造的RapidIO共享内存分区,可以完成RapidIO互连处理机上分布式任务对于共享内存的创建、打开、关闭等操作。

创建的时候,RapidIO总线互连处理机A上的任务A1使用描述符D创建大小为S的RapidIO共享内存,步骤为:

在共享内存描符使用状态表中查找描述符D是否已被其它任务用于创建共享内存,即描述符的值大于0;大于0则创建失败,结束操作;否则将描述符D的值赋为1:

然后执行扫描内存分配状态表,根据申请空间S的大小,判断是否有足够的内存块进行分配,如果内存空间充配,则返回相应获取的内存块号集,并在内存块分配表状态表中登记,即将内存块对应的二进制位置1;否则分配失败,结束操作。

打开的时候,RapidIO总线互连处理机B上的任务B1或者创建的RapidIO总线互连处理机A上的任务A1请求打开描述符D所代表的RapidIO共享内存,经过如下步骤:

1、在共享内存描符使用状态表中查找描述符D是否已被其它任务用于创建共享内存,即描述符的值大于0;大于0则可打开,并将D的值加1,然后执行步骤2);否则打开操作无效,结束操作。

2、将查询描述符的值赋为D,将查询描述符D所代表的共享内存块号集存于内存块属性区,然后执行步骤3)。

3、任务B1和任务A1读取内存块属性区,即可获取描述符D所对应的内存块集。

关闭的时候,RapidIO总线互连的处理机C上的任务C1或者B1或者A1请求关闭描述符D所代表的RapidIO共享内存,经过如下步骤(执行关闭操作的前提是描述符D已被任务用于创建过RapidIO共享内存):

在共享内存描符使用状态表中查找描述符D的值进行减1操作,如果D的值减1之后变为0,说明已无其它任务使用描述符D指代的内存块集,那么将描述符D所代表的内存块属性集在内存块分配状态表中的值赋为0,释放描述符D所代表的共享内存块集;否则关闭操作结束。

发明在此还有其他实施例的数据,就不一一列举。

尽管本发明的实施方案已公开如上,但其并不仅仅限于说明书和实施方式中所列运用,它完全可以被适用于各种适合本发明的领域,对于熟悉本领域的人员而言,可容易地实现另外的修改,因此在不背离权利要求及等同范围所限定的一般概念下,本发明并不限于特定的细节和这里示出与描述的图例。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1