CN117112481A - 一种多核系统的内存共享方法 - Google Patents
一种多核系统的内存共享方法 Download PDFInfo
- Publication number
- CN117112481A CN117112481A CN202311093619.7A CN202311093619A CN117112481A CN 117112481 A CN117112481 A CN 117112481A CN 202311093619 A CN202311093619 A CN 202311093619A CN 117112481 A CN117112481 A CN 117112481A
- Authority
- CN
- China
- Prior art keywords
- shared memory
- shared
- memory
- block
- message
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 230000015654 memory Effects 0.000 title claims abstract description 163
- 238000000034 method Methods 0.000 title claims abstract description 21
- 230000003993 interaction Effects 0.000 claims description 11
- 238000012545 processing Methods 0.000 claims description 6
- 230000008569 process Effects 0.000 claims description 3
- 230000006870 function Effects 0.000 claims description 2
- 238000012795 verification Methods 0.000 claims description 2
- 238000010586 diagram Methods 0.000 description 3
- 238000012423 maintenance Methods 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000006386 memory function Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/163—Interprocessor communication
- G06F15/167—Interprocessor communication using a common memory, e.g. mailbox
Landscapes
- Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multi Processors (AREA)
Abstract
本发明涉及汽车电子技术领域,具体是一种多核系统的内存共享方法包括以下步骤:构建共享内存信息块,共享内存信息块为{共享内存ID,共享内存信息块数据长度,共享内存类别,共享信息的第一部分,共享信息的第二部分,校验};通过多核系统中用于内存分配的配置文件分配对应的内存空间;根据对应的需求,单核将共享内存消息块存储在内存空间中或从内存空间中取出,以实现数据的读写;本发明能够有效的提高多核系统数据共享的精度,减小工作的开支。
Description
技术领域
本发明涉及汽车电子技术领域,具体是一种多核系统的内存共享方法。
背景技术
多核系统的内存共享,传递信息一般基于一种类似邮箱的机制,即需要多核共享时,一内核向另一内核发送消息,消息带有共享内存的起始地址和需要共享的数据长度等信息,以此来实现多核共同访问某块内存。由于现在的类似邮箱或消息的机制,如果进行代码的移植,就要重写内存功能共享相关的代码,为程序的维护带来额外的工作量,因此亟待解决。
发明内容
为了避免和克服现有技术中存在的技术问题,本发明提供了一种多核系统的内存共享方法。本发明能够有效的提高多核系统数据共享的精度,减小工作的开支。
为实现上述目的,本发明提供如下技术方案:
一种多核系统的内存共享方法,包括以下步骤:
S1、构建共享内存信息块,共享内存信息块为{共享内存ID,共享内存信息块数据长度,共享内存类别,共享信息的第一部分,共享信息的第二部分,校验};
S2、通过多核系统中用于内存分配的配置文件分配对应的内存空间;
S3、根据对应的需求,单核将共享内存消息块存储在内存空间中或从内存空间中取出,以实现数据的读写。
作为本发明再进一步的方案:步骤S1的具体步骤如下:
S11、根据设定信息交互协议定义共享内存ID;
S12、获取共享内存信息块的数据长度;
S13、确定共享内存的类别;
S14、根据共享内存的类别确定共享消息的内容;
S15、分别获取共享内存ID的数据长度、共享内存类别的数据长度,以及共享信息内容的数据长度,并结合共享内存信息块的数据长度计算所有数据长度的总数,接着舍弃总数的高位,并将结果与Oxaa异或,异或结果即为校验的数据长度。
作为本发明再进一步的方案:共享内存的类别分为共享内存块和共享消息两种。
作为本发明再进一步的方案:共享消息的内容包括第一部分和第二部分;
如果共享内存的类别为共享内存块时,则第一部分为该共享内存块的起始地址;如果共享内存的类别为共享消息时,则第一部分为该共享消息的数据长度;
如果共享内存的类别为共享内存块时,则第二部分为该共享内存块的数据长度;如果共享内存的类别为共享消息时,则第二部分为该共享消息的消息内容。
作为本发明再进一步的方案:步骤S2的具体步骤如下:使用多核操作系统中的分配的配置文件中的shmget函数划分出一个用于存储共享内存消息块的内存空间。
作为本发明再进一步的方案:需求的类型分为共享内存块需求和共享消息需求。
作为本发明再进一步的方案:共享内存块需求过程如下:
首先当单核有共享内存块需求时,共享内存类别为共享内存块,用0xAAAAAAAA表示;多个单核之间共享起始地址为0x200000且数据长度为0x10000的共享消息,并根据设定信息交互协议定义共享内存ID为0x9001;共享内存块的数据长度为0x10014;构建的共享内存消息块为:{0x9001,0x10014,0xAAAAAAAA,0x2000000,0x10000,校验};
接着单核通过接口软件访问共享内存信息块,更新共享内存信息块;
最后后续的单核在轮询时,发现之前的单核有共享内存块的需求,然后通过接口取出共享内存信息块中的内容,并根据共享内存信息块提供的起始地址0x2000000,取出需要的数据长度为0x10000共享消息进入到后续的处理步骤中。
作为本发明再进一步的方案:共享消息需求过程如下:
首先当单核有共享消息需求时,共享内存类别为共享消息,用0x55555555表示;多个单核之间共享消息内容为0x00055555且数据长度为0x4的共享消息,并根据设定信息交互协议定义共享内存ID为0x1002;共享内存块的数据长度为0x10018;构建的共享内存消息块为:{0x1002,0x10018,0xAAAAAAAA,0x4,0x00055555,校验};
接着单核通过接口软件访问共享内存信息块,更新共享内存信息块;
最后后续的单核在轮询时,发现之前的单核有共享内存块的需求,然后通过接口取出共享内存信息块中的内容,并根据共享内存信息块提供的起始地址0x2000000,取出需要的数据长度为0x10000共享消息进入到后续的处理步骤中。
与现有技术相比,本发明的有益效果是:
1、本发明对于代码的移植和维护以及协议的维护和更改极为便利.把代码移植到不同的多核系统,尽管硬件平台不同,多核之间进行交互的软件代码可以不经过修改,只需修改配置文件,给共享内存信息块分配一块内存即可,节省了人力成本。
附图说明
图1为本发明中的共享内存信息块结构示意图。
图2为本发明中的三核系统信息交互示意结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参阅图1到图2,本发明实施例中,约定一块内存空间对每个单核都可见,设计出如表1所示的共享内存信息块。建立内存共享接口软件对该共享内存信息块进行写入和读取,并把该文件共享到每个单核的工程中去。在设计时,消息内容不宜过大,如果要分享的消息内容过大,那么定协议的时候设计成共享内存传递起始地址和数据长度比较合适。
表1共享内存信息块
如图2所示,一个三核系统信息交互示意图。首先当单核1有共享内存块需求时,共享内存类别为共享内存块,用0xAAAAAAAA表示;单核1和单核2之间共享起始地址为0x200000且数据长度为0x10000的共享消息,并根据设定信息交互协议定义共享内存ID为0x9001;共享内存块的数据长度为0x10014;构建的共享内存消息块为:{0x9001,0x10014,0xAAAAAAAA,0x2000000,0x10000,校验};
接着单核1通过接口软件访问共享内存信息块,更新共享内存信息块;
最后单核2在轮询时,发现单核1有共享内存块的需求,然后通过接口取出共享内存信息块中的内容,并根据共享内存信息块提供的起始地址0x2000000,取出需要的数据长度为0x10000共享消息进入到后续的处理步骤中。
首先当单核1有共享消息需求时,共享内存类别为共享消息,用0x55555555表示;单核1和单核2之间共享消息内容为0x00055555且数据长度为0x4的共享消息,并根据设定信息交互协议定义共享内存ID为0x1002;共享内存块的数据长度为0x10018;构建的共享内存消息块为:{0x1002,0x10018,0xAAAAAAAA,0x4,0x00055555,校验}。
接着单核1通过接口软件访问共享内存信息块,更新共享内存信息块;
最后单核2在轮询时,发现单核有共享内存块的需求,然后通过接口取出共享内存信息块中的内容,并根据共享内存信息块提供的起始地址0x2000000,取出需要的数据长度为0x10000共享消息进入到后续的处理步骤中。
以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,根据本发明的技术方案及其发明构思加以等同替换或改变,都应涵盖在本发明的保护范围之内。
Claims (8)
1.一种多核系统的内存共享方法,其特征在于,包括以下步骤:
S1、构建共享内存信息块,共享内存信息块为{共享内存ID,共享内存信息块数据长度,共享内存类别,共享信息的第一部分,共享信息的第二部分,校验};
S2、通过多核系统中用于内存分配的配置文件分配对应的内存空间;
S3、根据对应的需求,单核将共享内存消息块存储在内存空间中或从内存空间中取出,以实现数据的读写。
2.根据权利要求1所述的一种多核系统的内存共享方法,其特征在于,步骤S1的具体步骤如下:
S11、根据设定信息交互协议定义共享内存ID;
S12、获取共享内存信息块的数据长度;
S13、确定共享内存的类别;
S14、根据共享内存的类别确定共享消息的内容;
S15、分别获取共享内存ID的数据长度、共享内存类别的数据长度,以及共享信息内容的数据长度,并结合共享内存信息块的数据长度计算所有数据长度的总数,接着舍弃总数的高位,并将结果与Oxaa异或,异或结果即为校验的数据长度。
3.根据权利要求2所述的一种多核系统的内存共享方法,其特征在于,共享内存的类别分为共享内存块和共享消息两种。
4.根据权利要求3所述的一种多核系统的内存共享方法,其特征在于,共享消息的内容包括第一部分和第二部分;
如果共享内存的类别为共享内存块时,则第一部分为该共享内存块的起始地址;如果共享内存的类别为共享消息时,则第一部分为该共享消息的数据长度;
如果共享内存的类别为共享内存块时,则第二部分为该共享内存块的数据长度;如果共享内存的类别为共享消息时,则第二部分为该共享消息的消息内容。
5.根据权利要求4所述的一种多核系统的内存共享方法,其特征在于,步骤S2的具体步骤如下:使用多核操作系统中的分配的配置文件中的shmget函数划分出一个用于存储共享内存消息块的内存空间。
6.根据权利要求5所述的一种多核系统的内存共享方法,其特征在于,步骤S3中的需求的类型分为共享内存块需求和共享消息需求。
7.根据权利要求6所述的一种多核系统的内存共享方法,其特征在于,共享内存块需求过程如下:
首先当单核有共享内存块需求时,共享内存类别为共享内存块,用0xAAAAAAAA表示;多个单核之间共享起始地址为0x200000且数据长度为0x10000的共享消息,并根据设定信息交互协议定义共享内存ID为0x9001;共享内存块的数据长度为0x10014;构建的共享内存消息块为:{0x9001,0x10014,0xAAAAAAAA,0x2000000,0x10000,校验};
接着单核通过接口软件访问共享内存信息块,更新共享内存信息块;
最后后续的单核在轮询时,发现之前的单核有共享内存块的需求,然后通过接口取出共享内存信息块中的内容,并根据共享内存信息块提供的起始地址0x2000000,取出需要的数据长度为0x10000共享消息进入到后续的处理步骤中。
8.根据权利要求7所述的一种多核系统的内存共享方法,其特征在于,共享消息需求过程如下:
首先当单核有共享消息需求时,共享内存类别为共享消息,用0x55555555表示;多个单核之间共享消息内容为0x00055555且数据长度为0x4的共享消息,并根据设定信息交互协议定义共享内存ID为0x1002;共享内存块的数据长度为0x10018;构建的共享内存消息块为:{0x1002,0x10018,0xAAAAAAAA,0x4,0x00055555,校验};
接着单核通过接口软件访问共享内存信息块,更新共享内存信息块;
最后后续的单核在轮询时,发现之前的单核有共享内存块的需求,然后通过接口取出共享内存信息块中的内容,并根据共享内存信息块提供的起始地址0x2000000,取出需要的数据长度为0x10000共享消息进入到后续的处理步骤中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311093619.7A CN117112481A (zh) | 2023-08-29 | 2023-08-29 | 一种多核系统的内存共享方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311093619.7A CN117112481A (zh) | 2023-08-29 | 2023-08-29 | 一种多核系统的内存共享方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117112481A true CN117112481A (zh) | 2023-11-24 |
Family
ID=88807205
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311093619.7A Pending CN117112481A (zh) | 2023-08-29 | 2023-08-29 | 一种多核系统的内存共享方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117112481A (zh) |
-
2023
- 2023-08-29 CN CN202311093619.7A patent/CN117112481A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110334152B (zh) | 一种数据同步方法、装置及服务器 | |
CN108055343B (zh) | 用于机房的数据同步方法及装置 | |
US20180329921A1 (en) | Method and apparatus for storing time series data | |
CN110019125A (zh) | 数据库管理的方法和装置 | |
CN110633378A (zh) | 一种支持超大规模关系网络的图数据库构建方法 | |
CN110602158A (zh) | 全局唯一id生成系统与方法、id生成器与存储介质 | |
CN107391622A (zh) | 一种数据访问方法及设备 | |
CN112445596A (zh) | 基于多线程的数据导入方法、系统及存储介质 | |
CN115470156A (zh) | 基于rdma的内存使用方法、系统、电子设备和存储介质 | |
CN114896215A (zh) | 元数据的存储方法及装置 | |
CN113438304B (zh) | 基于数据库集群的数据查询方法、装置、服务器及介质 | |
CN111782346B (zh) | 基于同库模式的分布式事务全局id生成方法及装置 | |
CN111124883B (zh) | 一种基于树形表格的测试用例库引入方法、系统及设备 | |
CN117112481A (zh) | 一种多核系统的内存共享方法 | |
CN112884098A (zh) | 卡号生成方法和装置 | |
CN111913956A (zh) | 统一业务编码方法及装置 | |
CN115935935A (zh) | 富文本消息生成方法、装置、计算机设备及可读存储介质 | |
CN114968917A (zh) | 一种文件数据快速导入方法及装置 | |
CN113961566A (zh) | 一种交易流水的处理方法及系统 | |
CN108509301A (zh) | 一种smbios中系统插槽信息的更新方法及更新系统 | |
CN114328486A (zh) | 基于模型的数据质量核查方法及装置 | |
CN108763498B (zh) | 用户身份识别方法、装置、电子设备及可读存储介质 | |
CN112269788A (zh) | 提升ClickHouse数据入库性能的方法及装置 | |
CN112231105A (zh) | 基于区块链的区块写入方法及系统 | |
CN109165172A (zh) | 缓存数据处理方法及相关设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |