CN109800190B - 内存的加速处理方法及装置、存储介质、处理器 - Google Patents
内存的加速处理方法及装置、存储介质、处理器 Download PDFInfo
- Publication number
- CN109800190B CN109800190B CN201910059859.2A CN201910059859A CN109800190B CN 109800190 B CN109800190 B CN 109800190B CN 201910059859 A CN201910059859 A CN 201910059859A CN 109800190 B CN109800190 B CN 109800190B
- Authority
- CN
- China
- Prior art keywords
- command
- area
- description
- word
- data
- 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.)
- Active
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种内存的加速处理方法及装置、存储介质、处理器。其中,该方法包括:向共享内存区发送命令字,其中,命令字包括命令描述字和命令数据,命令数据与命令描述字关联;在接收到命令字后,将命令字中的命令描述字和命令数据分别拷贝到共享内存区中的命令头部描述区和数据描述区,其中,共享内存区允许用户空间和内核空间同时访问。本发明解决了现有技术中采用的内存拷贝技术,在拷贝数据过程中,消耗大量CPU资源,导致性能较低的技术问题。
Description
技术领域
本发明涉及计算机领域,具体而言,涉及一种内存的加速处理方法及装置、存储介质、处理器。
背景技术
用户空间文件系统(Filesystem in Userspace,简称为FUSE)是操作系统中的概念,指完全在用户空间实现的文件系统。目前Linux通过内核模块对此进行支持,例如,ZFS、glusterfs和ceph都使用了FUSE技术。文件系统是一个通用操作系统重要的组成部分,传统上操作系统在内核层面上对文件系统提供支持,然而通常内核空间的代码难以调试,生产率较低。
Linux从2.6.14版本开始通过FUSE模块支持在用户空间实现文件系统。
在用户空间实现文件系统能够大幅提高生产率,简化了为操作系统提供新的文件系统的工作量,特别适用于各种虚拟文件系统和网络文件系统。但是,在用户空间实现文件系统必然会引入额外的内核空间或者用户空间切换带来的开销,对性能会产生一定影响。
在FUSE模型中,FUSE内核空间和用户空间在传输数据的过程中,使用的是内存拷贝技术,即将数据从内核空间拷贝到用户空间,或者从用户空间拷贝到内核空间。
如图1所示,FUSE框架完成的基本功能是通过VFS层导出标准文件系统接口给程序A,程序B用来接收程序A通过VFS和FUSE模块传递过来的数据。
相关技术中,如果程序A要写入128K数据到程序B,则其数据流需要经过以下过程,如图2所示:
第一步(①),程序A将数据拷贝到FUSE模块中时,将自己的一段buf中的数据按照Linux的page页(典型的一个page页是4K大小)进行拆分,拷贝进去的,然后FUSE模块会将这些page页面组织成一个链表的形式存放;
第二步(②),FUSE模块又会将这些page页面拷贝到程序B提供的buf里去,这样就会再增加一次拷贝。
除此之外,为正确维护写入命令的信息,在这些page页面头部还需要一个小的信息结构,来描述写命令的相关信息,这个头部也需要拷贝到程序B处。
因为在拷贝数据过程中,会大量耗费宝贵的CPU资源,因此在传输数据量比较大的情况下,性能低下。
针对上述的问题,目前尚未提出有效的解决方案。
发明内容
本发明实施例提供了一种内存的加速处理方法及装置、存储介质、处理器,以至少解决现有技术中采用的内存拷贝技术,在拷贝数据过程中,消耗大量CPU资源,导致性能较低的技术问题。
根据本发明实施例的一个方面,提供了一种内存的加速方法,包括:向共享内存区发送命令字,其中,命令字包括命令描述字和命令数据,命令数据与命令描述字关联;在接收到命令字后,将命令字中的命令描述字和命令数据分别拷贝到共享内存区中的命令头部描述区和数据描述区,其中,共享内存区允许用户空间和内核空间同时访问。
可选地,将命令字中的命令描述字和命令数据分别拷贝到共享内存区中的命令头部描述区和数据描述区之后,包括:将命令字从共享内存区中取出;执行从共享内存区中取出的命令字。
可选地,执行从共享内存区中取出的命令字之后,包括:在命令字执行完成后,释放共享内存区中命令字和与之关联的数据的存储区域
可选地,共享内存区包括以下至少之一:共享内存头部描述区、bitmap位图区、命令头部描述区、数据描述区,其中,共享内存头部描述区用于存储共享内存区中各个区域的描述性信息;bitmap位图区用于存储描述命令头部描述区的使用情况信息;命令头部描述区用于存储描述命令字关联的数据在数据描述区中存储位置的信息;数据描述区用于存储与命令字关联的数据,其中,数据描述区使用变长内存管理。
可选地,在接收到命令字后,包括:在共享内存区接收到命令字后,检测共享内存区中bitmap位图区的使用情况;根据bitmap位图区的使用情况,将命令字分配至共享内存区中的空闲区域。
可选地,将命令字中的命令描述字和命令数据分别拷贝到共享内存区中的命令头部描述区和数据描述区之前,包括:根据与命令字关联的数据长度,在共享内存区中的数据描述区分配出与命令字关联的数据长度匹配的数据段;将数据描述区中存储的数据段与共享内存区中命令头部描述区存储的命令字关联。
可选地,将命令字中的命令描述字和命令数据分别拷贝到共享内存区中的命令头部描述区和数据描述区之后,包括:通过UIO通信机制将通知指令发送至用户空间
可选地,在命令字执行完成后之后,包括:生成答复命令字;将答复命令字写入共享内存区的命令头部描述区;使用信号量机制唤醒内核空间。
可选地,接收命令字之前,包括:通过对应的内存映射接口获取共享内存区的访问权。
根据本发明实施例的另一方面,还提供了一种内存的加速处理方法,包括:接收访问请求,其中,访问请求用于访问共享内存区;从共享内存区的第一区域中确定命令描述信息,命令描述信息用于描述命令字,其中,命令字包括命令描述字和命令数据;依据命令描述信息从共享内存区的第二区域和第三区域中分别确定命令字中命令描述字与命令数据;执行命令字。
根据本发明实施例的另一方面,还提供了一种内存的加速装置,包括:发送单元,用于向共享内存区发送命令字,其中,命令字包括命令描述字和命令数据,命令数据与命令描述字关联;拷贝单元,用于在接收到命令字后,将命令字中的命令描述字和命令数据分别拷贝到共享内存区中的命令头部描述区和数据描述区,其中,共享内存区允许用户空间和内核空间同时访问。
根据本发明实施例的另一方面,还提供了一种内存的加速装置,包括:接收单元,用于接收访问请求,其中,访问请求用于访问共享内存区;第一确定单元,用于从共享内存区的第一区域中确定命令描述信息,命令描述信息用于描述命令字,其中,命令字包括命令描述字和命令数据;第二确定单元,用于依据命令描述信息从共享内存区的第二区域和第三区域中分别确定命令字中命令描述字与命令数据;执行单元,用于执行命令字。
根据本发明实施例的另一方面,还提供了一种存储介质,存储介质包括存储的程序,其中,在程序运行时控制存储介质所在设备执行上述的内存的加速方法。
根据本发明实施例的另一方面,还提供了一种处理器,处理器用于运行程序,其中,程序运行时执行上述的内存的加速方法。
在本发明实施例中,采用设置共享内存区,其中,该共享内存区同时允许内核空间和用户空间的程序访问的方式,通过向共享内存区发送命令字,其中,命令字包括命令描述字和命令数据,命令数据与命令描述字关联;在接收到命令字后,将命令字中的命令描述字和命令数据分别拷贝到共享内存区中的命令头部描述区和数据描述区,其中,共享内存区允许用户空间和内核空间同时访问,达到了减少内存拷贝的目的,从而实现了提升性能的技术效果,进而解决了现有技术中采用的内存拷贝技术,在拷贝数据过程中,消耗大量CPU资源,导致性能较低的技术问题。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是根据现有技术的一种数据传输的流程图;
图2是根据现有技术的一种数据传输的流程图;
图3是根据本发明实施例的一种内存的加速方法的示意图;
图4是根据本发明实施例的一种内存的加速方法的流程图;
图5是根据本发明实施例的一种可选的共享内存区的结构图;
图6是根据本发明实施例的另一种内存的加速方法的流程图;
图7是根据本发明实施例的一种内存的加速装置的结构图;
图8是根据本发明实施例的另一种内存的加速装置的结构图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
为了更好地理解本申请实施例,以下将本申请实施例所涉及的技术术语简述如下:
用户空间文件系统(Filesystem in Userspace,简称为FUSE)是一个面向类Unix计算机操作系统的软件接口,它使无特权的用户能够无需编辑内核代码而创建自己的文件系统。
虚拟文件系统(Virtual File System,简称为VFS)是Linux操作系统下提供的虚拟文件系统框架,在具体的文件系统之上抽象的一层,用来处理与Posix文件系统相关的所有调用,表现为能够给各种文件系统提供一个通用的接口,使上层的应用程序能够使用通用的接口访问不同文件系统,同时也为不同文件系统的通信提供了媒介。
内存映射加速模块(XSKY Memory Map Acceleration,简称为X-MMA),借助内存加速模块可以实现本申请实施例中的内存的加速处理方法,内存加速模块是本申请实施例中内存的加速处理装置或者存储介质或者处理器的一部分。
I/O(Userspace I/O,简称为UIO)技术运行在用户空间。Linux系统中一般的驱动设备都是运行在内核空间,而在用户空间用应用程序调用即可,而UIO则是将驱动的很少一部分运行在内核空间,而在用户空间实现驱动的绝大多数功能。
因为Linux的内核空间和用户空间是隔离的空间,用户空间无法直接访问内核空间的内存,因此,现在的FUSE是在内核空间运行的进程,采用内存拷贝的技术,将数据从内核空间拷贝到用户空间,或者从用户空间拷贝到内核空间。此种方法,因为在拷贝数据过程中,会大量耗费宝贵的CPU资源,因此在传输数据量比较大的情况下,性能低下。
为解决上述问题,本申请实施例提供了相应的解决方案,本发明创新性的引入了一层内存映射加速模块X-MMA,在引入X-MMA加速模块后,如图3所示,在初始的时候,我们分配一块大的内存区域,并使用Linux的mmap技术进行映射,这样FUSE模块和程序B模块都可以直接访问这块内存区域。这样,程序A写入的数据,由FUSE逻辑处理后,可以直接写入这块共享内存区,然后在共享内存区做必要的标记,然后再通知到程序B,程序B可以直接访问这片内存区域,避免了内存拷贝,会有效的提升性能。如图3所示,本发明方案的核心是X-MMA模块,此模块在系统初始化时,会通过linux提供的mmap接口进行一整块大的内存区域的分配,例如,我们可以分配512M的内存空间,然后FUSE内核空间模块和程序B通过对应的内存映射接口取得该内存区域的访问权。
通过内存映射加速,能够有效消除现有FUSE方案中的内核空间和用户空间的内存拷贝,进而提升性能。以下进行详细的描述。
根据本发明实施例,提供了一种内存的加速方法实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
图4是根据本发明实施例的一种内存的加速方法的流程图,如图4所示,该方法包括如下步骤:
步骤S402,向共享内存区发送命令字,其中,命令字包括命令描述字和命令数据,命令数据与命令描述字关联;
步骤S404,在接收到命令字后,将命令字中的命令描述字和命令数据分别拷贝到共享内存区中的命令头部描述区和数据描述区,其中,共享内存区允许用户空间和内核空间同时访问。
在本申请一种可选实施例中,在命令字执行完成后,释放共享内存区中命令字和与之关联的数据的存储区域。
在本申请实施例中,命令字可以是操作命令,包括但不限于:读、写、创建目录、打开文件等命令。本申请中使用共享内存机制,内核空间和用户空间程序只需要取得内存访问许可,即可同时访问该内存,无须进行耗时的内存拷贝,能有效提高性能。
在本申请一种可选实施例中,共享内存区包括以下至少之一:共享内存头部描述区、bitmap位图区、命令头部描述区、数据描述区。
共享内存头部描述区用于存储共享内存区中各个区域的描述性信息;
bitmap位图区用于存储描述命令头部描述区的使用情况信息,在本申请实施例中使用2组bitmap,一组用于内核空间,一组用于用户空间。通过使用2组bitmap,能够维护具体文件系统命令的处理情况,提升查找效能。
命令头部描述区用于存储描述命令字关联的数据在数据描述区中存储位置的信息;
数据描述区用于存储与命令字关联的数据,其中,数据描述区使用变长内存管理。数据描述区使用变长内存管理,能够有效处理读写命令长度不均匀的情况。
本申请实施例中采用将命令描述和命令数据分离机制,将命令描述字保存在单独的区域内,将数据保存在单独的区域内,该方法能够统一管理包含数据的命令(如文件read,write等)和没有数据区的命令(如文件open,close等),节省内存空间。
本申请提供一种可选地共享内存区的组成方式,结合图5进行说明:
第一部分:共享内存区头部描述区(51),该部分主要描述共享内存区域的描述性信息,包括但不限于:共享内存区域的大小,bitmap位图区的大小,命令头部描述区的大小,数据描述区的大小,命令的个数等信息。
第二部分:bitmap位图区(52),该部分主要描述命令头部描述区的使用情况,位值为1表示命令头部描述区对应的区域已经被内核空间拷贝的命令填充,等待用户空间读取;位值为0表示对应的命令头部描述区对应的区域是空闲状态,可以被内核空间使用。本申请实施例使用2个bitmap组,一组用于内核空间程序使用,一组用于用户空间程序B使用,使用2个bitmap组能够有效的维护内核空间程序和用户空间程序处理命令的状态,使查找分配未使用的命令速度更快。
第三部分:命令头部描述区(53),本申请实施例中的命令(也就是命令字),指的就是文件系统的操作命令,如,读,写,创建目录,打开文件等,以写命令为例,包含了写入数据的长度,写入数据的起始位置,写入数据的值(在数据描述区进行描述)。
第四部分:数据描述区(54),数据描述区里存放命令所关联的数据,例如,对于写命令,写入的128K数据就位于数据描述区,在命令头部描述区只需要记录数据描述区对应的地址即可。本申请实施例使用了变长内存分配法,以应对读写命令数据长度不均匀的情况。
在本申请一种可选实施例中,在接收到命令字后,检测共享内存区中bitmap位图区的使用情况;根据bitmap位图区的使用情况,将命令字分配至共享内存区中的空闲区域。其中使用情况可以是bitmap位图区的空闲位的下标。
在本申请一种可选实施例中,将与命令字关联的数据拷贝到共享内存区之前,包括:根据与命令字关联的数据长度,在共享内存区中的数据描述区分配出与命令字关联的数据长度匹配的数据段;将数据描述区中存储的数据段与共享内存区中命令头部描述区存储的命令字关联。
在本申请一种可选实施例中,将与命令字关联的数据拷贝到共享内存区之后,通过UIO通信机制将通知指令发送至用户空间。
在本申请一种可选实施例中,在命令字执行完成后之后,生成答复命令字;将答复命令字写入共享内存区的命令头部描述区;使用信号量机制唤醒内核空间。
在本申请一种可选实施例中,接收命令字之前,通过对应的内存映射接口获取共享内存区的访问权。
在本申请实施例中,FUSE模块向X-MMA模块发送命令字,X-MMA模块接收命令字。X-MMA模块在接收到命令字后,查询共享内存区bitmap位图区中bitmap的使用情况,根据bitmap可以知道命令头部描述区中的空闲位置,从而将命令存储在命令头部描述区中,具体地,通过存放在共享内存区头部描述区中的游标,查询到bitmap位图区中当前bitmap的空闲位,根据bitmap空闲位的下标知道命令头部描述区的空闲位,从而将FUSE模块发送的命令字分配到命令头部描述区。X-MMA模块根据与命令字关联数据的数据长度,在数据描述区分配与数据长度匹配的数据段,分配成功后,将分配的数据描述区中的数据段与命令头部描述区中的命令字进行关联。
FUSE模块将命令字以及与命令字关联的数据拷贝到分配在共享内存区的对应的地方,然后使用Linux的UIO通信机制通知用户空间。用户空间接收到通知后,根据共享内存区头部描述区存放的信息,定位到待处理命令,按照命令字格式读取待处理的命令,进行处理。用户空间处理完成后,构造答复命令字,然后写入到共享内存区的命令头部命令区里面,再使用信号量机制唤醒内核空间程序。内核空间完成处理,共享内存区释放原来的写入命令字和对应的数据空间。
为了便于理解,以下结合一种可选的应用场景进行说明,以下通过程序A写入128K的数据来示例整个流程:
步骤1.程序A写入128K数据,Linux VFS层调用FUSE提供的write函数进行写入,FUSE模块向X-MMA模块申请命令字,X-MMA会首先检查bitmap使用情况,通过存放在共享内存区头部的一个游标,可以快速查询到当前bitmap的哪一位是空闲的,找到了空闲bitmap位,则从对应的下标知道命令区哪一个命令是空闲的,从而分配到一个空闲命令。
步骤2.FUSE模块根据写入命令的长度,向X-MMA模块申请数据区空间。X-MMA根据数据长度,从数据描述区里面分配合适的数据段,分配成功后,将其与命令区的命令字进行关联。
步骤3.FUSE模块负责将待写入命令字拷贝到共享内存区的对应地方,然后使用Linux的UIO通信机制通知用户空间程序B。
步骤4.用户空间程序B收到通知后,根据之前映射的共享内存区地址,根据共享内存区头部描述区存放的信息,定位到待处理的命令,按照命令字格式读取待处理的命令,进行处理。
步骤5.用户空间程序B处理完成后,构造答复命令字,然后写入到共享内存区的命令头部命令区里面,再使用信号量机制唤醒内核空间程序。
步骤6.内核空间程序完成处理。释放原来的写入命令字,和对应的数据空间。
本申请实施例采用的共享内存技术减少内存拷贝,并且在操作过程中因为使用了变长内存分配技术,可以做到不分页,相比于现有技术的必须按照4K页面的page进行分页以及拷贝的方式,在大内存拷贝过程中也能提升效率。
根据本发明实施例,提供了一种内存的加速方法实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
图6是根据本发明实施例的另一种内存的加速方法的流程图,如图6所示,该方法包括如下步骤:
步骤S602,接收访问请求,其中,访问请求用于访问共享内存区;
步骤S604,从共享内存区的第一区域中确定命令描述信息,命令描述信息用于描述命令字,其中,命令字包括命令描述字和命令数据;
步骤S606,依据命令描述信息从共享内存区的第二区域和第三区域中分别确定命令字中命令描述字与命令数据;
步骤S608,执行命令字。
需要说明的是,图6所示实施例的优选实施方式,可以参见图3至图5的相关描述,此处不再赘述。
根据本发明实施例,提供了一种内存的加速装置实施例,图7是根据本发明实施例的一种内存的加速装置的结构图,如图7所示,该装置包括:
发送单元70,用于向共享内存区发送命令字,其中,命令字包括命令描述字和命令数据,命令数据与命令描述字关联;
拷贝单元72,用于在接收到命令字后,将命令字中的命令描述字和命令数据分别拷贝到共享内存区中的命令头部描述区和数据描述区,其中,共享内存区允许用户空间和内核空间同时访问。
其中,共享内存区包括以下至少之一:共享内存头部描述区、bitmap位图区、命令头部描述区、数据描述区,其中,共享内存头部描述区用于存储共享内存区中各个区域的描述性信息;bitmap位图区用于存储描述命令头部描述区的使用情况信息;命令头部描述区用于存储描述命令字关联的数据在数据描述区中存储位置的信息;数据描述区用于存储与命令字关联的数据,其中,数据描述区使用变长内存管理。
在本申请一种可选实施例中,内存的加速装置还包括:
释放单元,用于在命令字执行完成后,释放共享内存区中命令字和与之关联的数据的存储区域。
分配单元,用于在接收到命令字后,检测共享内存区中bitmap位图区的使用情况;根据bitmap位图区的使用情况,将命令字分配至共享内存区中的空闲区域。其中使用情况可以是bitmap位图区的空闲位的下标。
第二分配单元,用于根据与命令字关联的数据长度,在共享内存区中的数据描述区分配出与命令字关联的数据长度匹配的数据段;将数据描述区中存储的数据段与共享内存区中命令头部描述区存储的命令字关联。
通知单元,用于通过UIO通信机制将通知指令发送至用户空间。
唤醒单元,用于生成答复命令字;将答复命令字写入共享内存区的命令头部描述区;使用信号量机制唤醒内核空间。
获取单元,用于通过对应的内存映射接口获取共享内存区的访问权。
需要说明的是,图7所示实施例的优选实施方式,可以参见图3至图5的相关描述,此处不再赘述。
根据本发明实施例,提供了一种内存的加速处理装置,图8是根据本发明实施例的另一种内存的加速装置的结构图,如图8所示,该装置包括:
接收单元80,用于接收访问请求,其中,访问请求用于访问共享内存区;
第一确定单元82,用于从共享内存区的第一区域中确定命令描述信息,命令描述信息用于描述命令字,其中,命令字包括命令描述字和命令数据;
第二确定单元84,用于依据命令描述信息从共享内存区的第二区域和第三区域中分别确定命令字中命令描述字与命令数据;
执行单元86,用于执行命令字。
需要说明的是,图8所示实施例的优选实施方式,可以参见图3至图5的相关描述,此处不再赘述。
根据本发明实施例,提供了一种存储介质,存储介质包括存储的程序,其中,在程序运行时控制存储介质所在设备执行上述的内存的加速方法。
根据本发明实施例,提供了一种处理器,处理器用于运行程序,其中,程序运行时执行上述的内存的加速方法。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,可以为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (14)
1.一种内存的加速处理方法,其特征在于,包括:
向共享内存区发送命令字,其中,所述命令字包括命令描述字和命令数据,所述命令数据与所述命令描述字关联;
在接收到所述命令字后,将所述命令字中的所述命令描述字和所述命令数据分别拷贝到所述共享内存区中的命令头部描述区和数据描述区,其中,所述共享内存区允许用户空间文件系统FUSE的用户空间和内核空间同时访问,
其中,所述命令描述字用于描述所述命令数据在所述数据描述区中的存储位置以及所述用户空间文件系统FUSE的操作命令;
其中,所述共享内存区通过linux提供的mmap接口进行内存区域分配。
2.根据权利要求1所述的方法,其特征在于,将所述命令字中的所述命令描述字和所述命令数据分别拷贝到所述共享内存区中的命令头部描述区和数据描述区之后,包括:
将所述命令字从所述共享内存区中取出;
执行从所述共享内存区中取出的所述命令字。
3.根据权利要求2所述的方法,其特征在于,执行从所述共享内存区中取出的所述命令字之后,包括:
在所述命令字执行完成后,释放所述共享内存区中所述命令字和与之关联的数据的存储区域。
4.根据权利要求1所述的方法,其特征在于,所述共享内存区包括以下至少之一:共享内存头部描述区、bitmap位图区、所述命令头部描述区、所述数据描述区,其中,
所述共享内存头部描述区用于存储所述共享内存区中各个区域的描述性信息;
所述bitmap位图区用于存储描述所述命令头部描述区的使用情况信息;
所述命令头部描述区用于存储描述所述命令字关联的数据在所述数据描述区中存储位置的信息;
所述数据描述区用于存储与所述命令字关联的数据,其中,所述数据描述区使用变长内存管理。
5.根据权利要求1所述的方法,其特征在于,在接收到所述命令字后,包括:
检测所述共享内存区中bitmap位图区的使用情况;
根据所述bitmap位图区的所述使用情况,将所述命令字分配至所述共享内存区中的空闲区域。
6.根据权利要求1所述的方法,其特征在于,将所述命令字中的所述命令描述字和所述命令数据分别拷贝到所述共享内存区中的命令头部描述区和数据描述区之前,包括:
根据与所述命令字关联的数据长度,在所述共享内存区中的所述数据描述区分配出与所述命令字关联的数据长度匹配的数据段;
将所述数据描述区中存储的所述数据段与所述共享内存区中所述命令头部描述区存储的所述命令字关联。
7.根据权利要求1所述的方法,其特征在于,将所述命令字中的所述命令描述字和所述命令数据分别拷贝到所述共享内存区中的命令头部描述区和数据描述区之后,包括:
通过UIO通信机制将通知指令发送至所述用户空间。
8.根据权利要求2所述的方法,其特征在于,在所述命令字执行完成后之后,包括:
生成答复命令字;
将所述答复命令字写入所述共享内存区的所述命令头部描述区;
使用信号量机制唤醒所述内核空间。
9.根据权利要求1所述的方法,其特征在于,接收命令字之前,包括:
通过对应的内存映射接口获取所述共享内存区的访问权。
10.一种内存的加速处理方法,其特征在于,包括:
接收访问请求,其中,所述访问请求用于访问共享内存区;
从所述共享内存区的第一区域中确定命令描述信息,所述命令描述信息用于描述命令字,其中,所述命令字包括命令描述字和命令数据,其中,所述共享内存区允许用户空间文件系统FUSE的用户空间和内核空间同时访问,所述命令数据与所述命令描述字关联;
依据所述命令描述信息从所述共享内存区的第二区域和第三区域中分别确定所述命令字中所述命令描述字与所述命令数据,
其中,所述命令描述字用于描述所述命令数据在所述第三区域中的存储位置以及所述用户空间文件系统FUSE的操作命令;
执行所述命令字。
11.一种内存的加速处理装置,其特征在于,包括:
发送单元,用于向共享内存区发送命令字,其中,所述命令字包括命令描述字和命令数据,所述命令数据与所述命令描述字关联;
拷贝单元,用于在接收到所述命令字后,将所述命令字中的所述命令描述字和所述命令数据分别拷贝到所述共享内存区中的命令头部描述区和数据描述区,其中,所述共享内存区允许用户空间文件系统FUSE的用户空间和内核空间同时访问,其中,所述命令描述字用于描述所述命令数据在所述数据描述区中的存储位置以及所述用户空间文件系统FUSE的操作命令;
其中,所述共享内存区通过linux提供的mmap接口进行内存区域分配。
12.一种内存的加速处理装置,其特征在于,包括:
接收单元,用于接收访问请求,其中,所述访问请求用于访问共享内存区;
第一确定单元,用于从所述共享内存区的第一区域中确定命令描述信息,所述命令描述信息用于描述命令字,其中,所述命令字包括命令描述字和命令数据,其中,所述共享内存区允许用户空间文件系统FUSE的用户空间和内核空间同时访问,所述命令数据与所述命令描述字关联;
第二确定单元,用于依据所述命令描述信息从所述共享内存区的第二区域和第三区域中分别确定所述命令字中所述命令描述字与所述命令数据,
其中,所述命令描述字用于描述所述命令数据在所述第三区域中的存储位置以及所述用户空间文件系统FUSE的操作命令;
执行单元,用于执行所述命令字。
13.一种存储介质,其特征在于,所述存储介质包括存储的程序,其中,在所述程序运行时控制所述存储介质所在设备执行权利要求1至10中任意一项所述的内存的加速处理方法。
14.一种处理器,其特征在于,所述处理器用于运行程序,其中,所述程序运行时执行权利要求1至10中任意一项所述的内存的加速处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910059859.2A CN109800190B (zh) | 2019-01-22 | 2019-01-22 | 内存的加速处理方法及装置、存储介质、处理器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910059859.2A CN109800190B (zh) | 2019-01-22 | 2019-01-22 | 内存的加速处理方法及装置、存储介质、处理器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109800190A CN109800190A (zh) | 2019-05-24 |
CN109800190B true CN109800190B (zh) | 2021-04-06 |
Family
ID=66560079
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910059859.2A Active CN109800190B (zh) | 2019-01-22 | 2019-01-22 | 内存的加速处理方法及装置、存储介质、处理器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109800190B (zh) |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107783722A (zh) * | 2016-08-25 | 2018-03-09 | 星辰天合(北京)数据科技有限公司 | 数据传输方法和数据转发装置 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7830389B2 (en) * | 2006-10-03 | 2010-11-09 | Honeywell International Inc. | Dual processor accelerated graphics rendering |
US20090013407A1 (en) * | 2007-02-14 | 2009-01-08 | Brad Doctor | Intrusion detection system/intrusion prevention system with enhanced performance |
US9128786B2 (en) * | 2011-11-22 | 2015-09-08 | Futurewei Technologies, Inc. | System and method for implementing shared locks between kernel and user space for synchronize access without using a system call to the kernel |
CN103034544B (zh) * | 2012-12-04 | 2015-08-05 | 杭州迪普科技有限公司 | 一种用户态与内核态共享内存的管理方法和装置 |
CN105740413A (zh) * | 2016-01-29 | 2016-07-06 | 珠海全志科技股份有限公司 | Linux平台上使用FUSE的文件移动方法 |
CN107577539B (zh) * | 2016-07-05 | 2021-03-16 | 阿里巴巴集团控股有限公司 | 用于内核态和用户态通讯的共享内存结构及其应用 |
CN108062253A (zh) * | 2017-12-11 | 2018-05-22 | 北京奇虎科技有限公司 | 一种内核态与用户态的通信方法、装置及终端 |
-
2019
- 2019-01-22 CN CN201910059859.2A patent/CN109800190B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107783722A (zh) * | 2016-08-25 | 2018-03-09 | 星辰天合(北京)数据科技有限公司 | 数据传输方法和数据转发装置 |
Also Published As
Publication number | Publication date |
---|---|
CN109800190A (zh) | 2019-05-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103608866B (zh) | 用于闪存存储器的数据擦除方法及装置 | |
CN107885666B (zh) | 一种内存管理方法和装置 | |
US8347063B2 (en) | Method and system for device address translation for virtualization | |
EP2479677A1 (en) | Method, system and physical host for virtual machine (vm) storage space management | |
US20120110293A1 (en) | Method and system for managing virtual machine storage space and physical host | |
CN105718377B (zh) | 虚拟化应用中拷贝磁盘数据的方法及装置 | |
US11188365B2 (en) | Memory overcommit by speculative fault | |
CN102667714B (zh) | 支持访问由操作系统环境外的资源提供的功能的方法和系统 | |
US20240053998A1 (en) | Method and apparatus for processing inter-core communication, and computer system | |
WO2024099448A1 (zh) | 内存释放、内存恢复方法、装置、计算机设备及存储介质 | |
US20190227918A1 (en) | Method for allocating memory resources, chip and non-transitory readable medium | |
CN104391803B (zh) | 一种分区操作系统的存储管理方法 | |
US20170364442A1 (en) | Method for accessing data visitor directory in multi-core system and device | |
US20150242121A1 (en) | Per-memory group swap device | |
CN112395220B (zh) | 共享存储控制器的处理方法、装置、系统及存储控制器 | |
US9535796B2 (en) | Method, apparatus and computer for data operation | |
CN109800190B (zh) | 内存的加速处理方法及装置、存储介质、处理器 | |
CN111666036B (zh) | 一种迁移数据的方法、装置及系统 | |
CN116303123A (zh) | 一种缺页处理方法、设备及存储介质 | |
CN115168259A (zh) | 一种数据存取方法、装置、设备和计算机可读存储介质 | |
CN104268005B (zh) | 虚拟机唤醒方法和装置 | |
CN1333346C (zh) | 一种访问文件的方法 | |
CN107918521A (zh) | 虚拟磁盘的缩减方法及装置 | |
GB2346991A (en) | Accessing a computer-readable partitioned medium | |
CN110096355B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CP03 | Change of name, title or address | ||
CP03 | Change of name, title or address |
Address after: 100094 101, floors 1-5, building 7, courtyard 3, fengxiu Middle Road, Haidian District, Beijing Patentee after: Beijing Xingchen Tianhe Technology Co.,Ltd. Address before: 100097 room 806-1, block B, zone 2, Jinyuan times shopping center, indigo factory, Haidian District, Beijing Patentee before: XSKY BEIJING DATA TECHNOLOGY Corp.,Ltd. |