System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本申请涉及计算机,具体而言,涉及一种数据传输方法、装置、电子设备及存储介质。
技术介绍
1、对于linux平台的程序开发,用户进程向内核进程传递数据的方法主要有两种,一是通过系统调用的方式,二是通过共享内存的方式。
2、其中,系统调用的方式就是通过系统调接口用来实现用户态向内核态切换的方式,然后通过具体的系统调用函数来完成用户态数据向内核态传递数据的任务。具体实现其实还是用户空间mem里的数据向内核空间mem的一个拷贝过程,对于有大量的数据和数据交互频繁的场景就会有很大的系统开销,严重影响程序的性能。
技术实现思路
1、本申请实施例的目的在于提供一种数据传输方法、装置、电子设备及存储介质,用以在将用户态与内核态的数据进行传输时,降低对系统的开销。
2、第一方面,本申请实施例提供一种数据传输方法,包括:
3、通过用户进程计算获得数据的第一数据标识;
4、若所述用户进程对应的记录表中不存在所述第一数据标识,则向内核态发送所述第一数据标识和所述数据对应的指针;其中,所述指针用于表征所述数据存储的位置信息;
5、查询所述内核态资源池中是否包含所述第一数据标识,若内核态查询资源池中包含第一数据标识,则不需要将所述用户进程中的所述数据传输至所述内核态;若内核态查询资源池中不包含第一数据标识,则根据所述指针从所述用户进程获取所述数据,并将所述数据传输至所述内核态。
6、本申请实施例通过在用户进程中维护记录表,用于记录该用户态
7、在任一实施例中,若所述资源池中包含所述第一数据标识,所述方法还包括:
8、获取所述内核态中所述第一数据标识对应的第二数据标识和第一引用计数值;其中,所述第二数据标识用于唯一表征所述数据;
9、更新所述第一引用计数值,并向所述用户进程返回所述第二数据标识;
10、通过所述用户进程将所述第二数据标识和所述第一数据标识对应存储到所述记录表中。
11、本申请实施例中,针对记录表中不存在第一数据标识,但资源池中包含第一数据标识的情况,说明内核态已经存在该数据,不需要再传输一次数据,为了便于对数据的管理,在资源池和记录表中均维护该数据的引用计数值,一方面便于监控各个数据的处理情况,另一方面,可以避免重复对数据的处理。
12、在任一实施例中,所述方法还包括:
13、若所述用户进程对应的记录表中存在所述第一数据标识,则从所述记录表中获取所述第一数据标识对应的第二数据标识;
14、向所述内核态发送所述第二数据标识;
15、根据所述第二数据标识从所述内核态的所述资源池中获取对应的第一引用计数值;
16、对所述第一引用计数值进行更新。
17、本申请实施例中,针对记录表中存在该第一数据标识的情况,不需要将数据发送给内核态,而是通过将第二数据标识发送给内核态,由内核态对第一引用计数值进行更新,以表明该数据待处理。
18、在任一实施例中,所述内核态的资源池中包括红黑树;所述将所述数据传输至所述内核态,包括:
19、生成所述数据对应的第二数据标识;
20、将所述数据,以及所述数据对应的第一数据标识、第二数据标识和第一引用计数值存储在所述红黑树中。
21、本申请实施例中,由于内核态包括多个进程,同一进程可能存在两次使用相同数据,而在红黑树中存储数据了第一数据标识、第二数据标识和第一引用计数值,因此可通过比较两次要使用的数据的第二数据标识,不需要比较数据的内容,减少了系统的开销。
22、在任一实施例中,所述方法还包括:
23、若所述内核态中的内核进程使用了所述数据,则对所述数据的第一引用计数值进行更新。
24、本申请实施例通过对第一引用计数值进行更新,从而能够对内核态中的数据的使用情况进行监控。
25、在任一实施例中,所述用户进程计算获得数据的第一数据标识,包括:
26、通过所述用户进程利用md5算法计算获得所述数据的所述第一数据标识。
27、本申请实施例通过md5算法计算数据的第一数据标识,从而可以通过第一数据标识从记录表中确定该用户进程是否向内核态发送过该数据,以及可以资源池中确定内核态中是否存在该数据,进而确定是否需要向内核态发送该数据,降低了数据的冗余传输。
28、在任一实施例中,所述记录表中包括第二引用计数值;所述第二引用计数值用于表征对应的数据待处理的次数;所述方法还包括:
29、若所述记录表中记录的数据量大于预设值,则基于最近最少使用策略从所述记录表中获取待剔除数据;所述待剔除数据包括待剔除的第一数据标识和待剔除的第二数据标识;
30、将所述待剔除数据从所述记录表中删除,以及将所述待剔除数据发送给所述内核态;
31、查询所述内核态所述资源池中是否存在所述待剔除的第二数据标识,若存在,且所述待剔除的第二数据标识对应的引用计数值为0,则将所述待剔除的第二数据标识对应的数据从所述资源池中删除。
32、本申请实施例中,按照预设规则对记录表和资源池中的数据进行删除,降低了记录表和资源池中数据压力。
33、第二方面,本申请实施例提供一种数据传输装置,包括:
34、标识计算模块,用于通过用户进程计算获得数据的第一数据标识;
35、第一数据发送模块,用于若所述用户进程对应的记录表中不存在所述第一数据标识,则向内核态发送所述第一数据标识和所述数据对应的指针;所述指针用于表征所述数据存储的位置信息;
36、第二数据发送模块,用于查询所述内核态资源池中是否包含所述第一数据标识,若包含,则不需要将所述用户进程中的所述数据传输至所述内核态;若不包含,则根据所述指针从所述用户进程获取所述数据,并将所述数据传输至所述内核态。
37、第三方面,本申请实施例提供一种电子设备,包括:处理器、存储器和总线,其中,
38、所述处理器和所述存储器通过所述总线完成相互间的通信;
39、所述存储器存储有可被所述处理器执行的程序指令,所述处理器调用所述程序指令能够执行第一方面的方法。
40、第四方面,本申请实施例提供一种非暂态计算机可读存储介质,包括:
41、所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行第一方面的方法。
42、第五方面,本申本文档来自技高网...
【技术保护点】
1.一种数据传输方法,其特征在于,包括:
2.根据权利要求1所述的方法,其特征在于,若所述资源池中包含所述第一数据标识,所述方法还包括:
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
4.根据权利要求1所述的方法,其特征在于,所述内核态的资源池中包括红黑树;所述将所述数据传输至所述内核态,包括:
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:
6.根据权利要求1所述的方法,其特征在于,所述通过用户进程计算获得数据的第一数据标识,包括:
7.根据权利要求1所述的方法,其特征在于,所述记录表中包括第二引用计数值;所述第二引用计数值用于表征对应的数据待处理的次数;所述方法还包括:
8.一种数据传输装置,其特征在于,包括:
9.一种电子设备,其特征在于,包括:处理器、存储器和总线,其中,
10.一种非暂态计算机可读存储介质,其特征在于,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令被计算机运行时,使所述计算机执行如权利要求1-7任一项所述的方法
11.一种计算机程序产品,其特征在于,包括计算机程序指令,所述计算机程序指令被处理器读取并运行时,执行如权利要求1-7任一项所述的方法。
...【技术特征摘要】
1.一种数据传输方法,其特征在于,包括:
2.根据权利要求1所述的方法,其特征在于,若所述资源池中包含所述第一数据标识,所述方法还包括:
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
4.根据权利要求1所述的方法,其特征在于,所述内核态的资源池中包括红黑树;所述将所述数据传输至所述内核态,包括:
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:
6.根据权利要求1所述的方法,其特征在于,所述通过用户进程计算获得数据的第一数据标识,包括:
7.根据权利要求1所述的方法,其特征...
【专利技术属性】
技术研发人员:李强,任建宝,侯磊,雒特,胡爱涛,石加圣,
申请(专利权)人:上海天数智芯半导体有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。