System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术涉及共享内存的管理和使用,尤其涉及一种自带有效性校验及修复的共享内存管理方法及装置。
技术介绍
1、目前现有共享内存结构发生变化时的处理方法为:
2、第一种,由共享内存分配者通知访问者,访问者收到通知后,重新获得数据所在的共享内存新地址。这种方法存在概率性出错的问题,即内存结构变化和收到通知之间,会有时间差如果在时间差内,访问者正好读写数据,就会发生数据错误问题。
3、第二种,在第一种的基础上,使用进程间的锁,在变更共享内存结构时,对共享内存上锁。所有访问者都更新完成后解锁。这种方法避免了数据错误问题,但是大大降低了效率,当有多个访问者时,需要更多的等待时间。
4、基于共享内存的进程间通讯依赖于对数据内存、数量、布局方式在进程“运行前”即统一,无法在过程中动态调整,导致不满足工业应用中无扰及高效的基本技术需要。
技术实现思路
1、(一)要解决的技术问题
2、鉴于现有技术的上述缺点、不足,本专利技术提供一种自带有效性校验及修复的共享内存管理方法及装置,其以较小的系统开销,自动识别并修复数据所在的共享内存块地址,避免了获取错误数据的问题。
3、(二)技术方案
4、为了达到上述目的,本专利技术采用的主要技术方案包括:
5、第一方面,本专利技术实施例提供一种自带有效性校验及修复的共享内存管理方法,包括:
6、s1、共享内存分配器接收第一进程请求分配共享内存的第一请求,共享内存分配器基于
7、s2、共享内存访问器接收第二进程访问所述共享内存块的第二请求后,与第一进程进行交互并获取所述共享内存块的地址和所述校验信息;并基于第二请求向第二进程反馈共享内存访问器对象地址,所述共享内存访问器对象地址为所述共享内存访问器创建的所述共享内存块的地址和校验信息的映射至所述共享内存块的访问对象的地址;
8、s3、所述第二进程读取所述共享内存访问器对象地址时,共享内存访问器将共享内存访问器对象地址映射的校验信息与共享内存块自带的校验信息进行比对;
9、若比对一致,则第二进程读取共享内存块的数据区中目标数据,否则,重新执行共享内存访问器与所述第一进程交互的过程。
10、可选地,所述s1中,
11、所述校验信息唯一。
12、可选地,所述s2中,
13、所述共享内存访问器接收第二进程访问所述共享内存块的第二请求后,与第一进程交互,包括:
14、共享内存访问器接收第二进程访问所述共享内存块的第二请求,根据第二请求向第一进程反馈访问共享内存块的第二响应信息;所述第二响应信息包括:共享内存访问器对象地址。
15、第一进程接收共享内存访问器访问共享内存块的第二响应信息,向共享内存访问器发送共享内存块的第二响应信息;
16、共享内存访问器基于共享内存访问器对象地址获取共享内存块的访问对象的地址和共享内存访问器对象地址映射的校验信息。
17、可选地,所述方法包括:
18、s4、当第一进程向共享内存分配器分配的共享内存块重新分配新的数据时,共享内存分配器将新的数据写入数据区并生成新的校验信息;
19、相应地,共享内存访问器接收第二进程访问所述共享内存块的第二请求,根据第二请求向第一进程反馈访问共享内存块的第二响应信息,所述第二响应信息包括:共享内存访问器对象地址;
20、第一进程根据第二响应信息向共享内存访问器发送访问请求;共享内存访问器基于共享内存访问器对象地址获取共享内存块的访问对象的地址和共享内存访问器对象地址映射的校验信息;并将共享内存访问器对象地址映射的校验信息与共享内存块当前的校验信息进行比对,若不一致,则共享内存访问器重新与第一进程交互,创建所述共享内存块的地址和校验信息的映射的共享内存访问器对象地址。
21、可选地,所述方法还包括:
22、s5、当共享内存块被回收后,共享内存访问器接收第二进程访问所述共享内存块的第二请求,根据第二请求向第一进程反馈访问共享内存块的第二响应信息,所述第二响应信息包括:共享内存访问器对象地址;
23、第一进程根据第二响应信息向共享内存访问器发送访问请求;共享内存访问器基于共享内存访问器对象地址获取共享内存块的访问对象的地址和共享内存访问器对象地址映射的校验信息,采用共享内存访问器对象地址映射的校验信息比对时,获得错误信息,共享内存访问器向第二进程返回共享内存块不存在的提示信息。
24、可选地,所述共享内存块被回收包括:
25、共享内存分配器接收第一进程回收分配的共享内存块的第三请求,共享内存分配器基于第三请求,回收共享内存块的写入的目标数据和校验信息,将共享内存回收至空闲内存。
26、可选地,所述方法还包括:
27、s6、共享内存访问器接收第二进程写入数据的第四请求,向共享内存块中写入数据。
28、可选地,所述s6包括:
29、s601、共享内存访问器接收第二进程写入数据的第四请求,根据第四请求向共享内存访问器反馈第三响应信息;
30、s602、共享内存访问器基于第三响应信息获取共享内存块的访问对象的地址和共享内存访问器对象地址映射的校验信息;将共享内存访问器对象地址映射的校验信息与共享内存块中当前的校验信息进行比对;
31、若比对一致,将所述要写入的数据写入共享内存块中;
32、若比对不一致,则重新执行共享内存访问器与所述第一进程交互的过程,将所述要写入的数据写入共享内存块中;
33、若写入失败,则共享内存访问器向第二进程发出写入失败的提示信息。
34、可选地,所述第三响应信息包括:
35、共享内存访问器对象地址、要写入的数据。
36、第二方面,本专利技术实施例提供一种自带有效性校验及修复的共享内存管理装置,包括:
37、共享内存分配器,用于接收第一进程请求分配共享内存的第一请求,基于第一请求在空闲内存中划出共享内存块并生成共享内存块的地址,将共享内存块的地址发送至第一进程;所述共享内存块包括数据区及校验区,共享内存分配器将第一进程待写入的目标数据写入至数据区并生成校验信息,将所述校验信息填充至校验区,并将共享内存块的地址发送至第一进程;
38、共享内存访问器,用于接收第二进程访问所述共享内存块的第二请求后,与第一进程进行交互并获取所述共享内存块的地址和所述校验信息;并基于第二请求向第二进程反馈共享内存访问器对象地址,所述共享内存访问器对象地址为所述共享内存访问器创建的所述共享内存块的地址和校验本文档来自技高网...
【技术保护点】
1.一种自带有效性校验及修复的共享内存管理方法,其特征在于,包括:
2.根据权利要求1所述的方法,其特征在于,所述S1中,
3.根据权利要求1所述的方法,其特征在于,所述S2中,
4.根据权利要求1所述的方法,其特征在于,所述方法包括:
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:
6.根据权利要求5所述的方法,其特征在于,
7.根据权利要求1所述的方法,其特征在于,所述方法还包括:
8.根据权利要求7所述的方法,其特征在于,
9.根据权利要求8所述的方法,其特征在于,
10.一种自带有效性校验及修复的共享内存管理装置,其特征在于,包括:
【技术特征摘要】
1.一种自带有效性校验及修复的共享内存管理方法,其特征在于,包括:
2.根据权利要求1所述的方法,其特征在于,所述s1中,
3.根据权利要求1所述的方法,其特征在于,所述s2中,
4.根据权利要求1所述的方法,其特征在于,所述方法包括:
5.根据权利要求1所述的方法,其特征在于,所述方...
【专利技术属性】
技术研发人员:朱峰,姚罕琦,蒋丽莹,林伟建,
申请(专利权)人:中控技术股份有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。