CN105677597A - 数据写入方法及装置 - Google Patents
数据写入方法及装置 Download PDFInfo
- Publication number
- CN105677597A CN105677597A CN201410667652.0A CN201410667652A CN105677597A CN 105677597 A CN105677597 A CN 105677597A CN 201410667652 A CN201410667652 A CN 201410667652A CN 105677597 A CN105677597 A CN 105677597A
- Authority
- CN
- China
- Prior art keywords
- memory address
- address
- kernel state
- user space
- written
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Bus Control (AREA)
Abstract
本发明公开了一种数据写入方法及装置。该方法包括:建立用户态内存地址与内核态内存地址之间的映射关系;接收到用于为待写入芯片的待写入数据请求内核态内存地址的请求消息;依据所述请求消息,以及所述映射关系,将所述待写入数据写入所述芯片。通过本发明,解决相关技术中写入效率低,CPU负担较大的问题。
Description
技术领域
本发明涉及通信领域,具体而言,涉及一种数据写入方法及装置。
背景技术
随着网络的快速发展,网络流量的增长及新业务的出现,需要网络设备具有线速和灵活的处理能力。目前,网络芯片包括ASIC(ApplicationSpecificIntegratedCircuit,特定用途集成电路)和NP(NetworkProcessor,网络处理器)两大类。
网络芯片外围接口非常丰富,如SRAM(StaticrandomAccessMemory,静态随机存储器)、TCAM(TernaryContentAddressableMemory,三态内容寻址存储器)、SDRAM(SynchronousDynamicRandomAccessMemory,同步动态随机存储器)等,这些存储器存放着各种业务表项,如端口表、MAC(MediaAccessControl,媒体介入控制层)表、路由表等;另外,芯片内部包括大量的寄存器。
在网络设备的运行过程中,控制层软件会频繁的与芯片进行交互,比如下发业务配置等。对芯片而言,主要就是读写芯片存储器和内部寄存器。目前网络设备驱动发送消息的方法通常是用户态申请内存并将消息填充到用户态内存中,由于实际与新品交互的是内核层,因此必须将消息从用户态的内存拷贝到内核态的内存中,然后从内核态的内存通过总线写入硬件芯片中。
由于网络交换设备中消息交互非常频繁,每秒钟可能有上万条消息发送,因此这涉及了大量的内存申请,以及用户态、内核态的拷贝操作。这对网络设备的CPU是一个很大的负担,影响了网络设备的写入效率。
发明内容
本发明提供了一种数据写入方法及装置,以至少解决相关技术中写入效率低,CPU负担较大的问题。
根据本发明的一个方面,提供了一种数据写入方法,包括:建立用户态内存地址与内核态内存地址之间的映射关系;接收到用于为待写入芯片的待写入数据请求内核态内存地址的请求消息;依据所述请求消息,以及所述映射关系,将所述待写入数据写入所述芯片。
优选地,建立所述用户态内存地址与所述内核态内存地址之间的所述映射关系包括:确定所述用户态内存地址与所述内核态地址之间的偏移量;依据确定的所述偏移量,建立所述用户态内存地址与所述内核态内存地址之间的所述映射关系。
优选地,确定所述用户态内存地址与所述内核态地址之间的所述偏移量包括:获取所述用户态内存地址的起始地址和所述内核态地址的起始地址;确定所述用户态内存地址的起始地址与所述内核态地址的起始地址之间的偏差为所述偏移量。
优选地,依据所述请求消息,以及所述映射关系,将所述待写入数据写入所述芯片包括:依据所述请求消息,确定用于写入所述待写入数据的内核态内存地址;依据所述映射关系将确定的所述内核态内存地址转化为对应的用户态内存地址;将填写在转化后的所述用户态内存地址中的所述待写入数据,依据确定的所述内核态内存地址写入所述芯片。
优选地,在依据所述请求消息,以及所述映射关系,将所述待写入数据写入所述芯片之后,还包括:释放用于写入所述待写入数据的所述内核态内存地址对应的内核空间。
根据本发明的另一方面,提供了一种数据写入装置,包括:映射模块,用于建立用户态内存地址与内核态内存地址之间的映射关系;接收模块,用于接收到用于为待写入芯片的待写入数据请求内核态内存地址的请求消息;处理模块,用于依据所述请求消息,以及所述映射关系,将所述待写入数据写入所述芯片。
优选地,所述映射模块包括:确定单元,用于确定所述用户态内存地址与所述内核态地址之间的偏移量;建立单元,用于依据确定的所述偏移量,建立所述用户态内存地址与所述内核态内存地址之间的所述映射关系。
优选地,所述确定单元包括:获取子单元,用于获取所述用户态内存地址的起始地址和所述内核态地址的起始地址;确定子单元,用于确定所述用户态内存地址的起始地址与所述内核态地址的起始地址之间的偏差为所述偏移量。
优选地,所述处理模块包括:地址获取单元,用于依据所述请求消息,确定用于写入所述待写入数据的内核态内存地址;地址转化单元,用于依据所述映射关系将确定的所述内核态内存地址转化为对应的用户态内存地址;写入单元,用于将填写在转化后的所述用户态内存地址中的所述待写入数据,依据确定的所述内核态内存地址写入所述芯片。
优选地,数据写入装置还包括:内核空间释放模块,用于释放用于写入所述待写入数据的所述内核态内存地址对应的内核空间。
通过本发明,采用通过建立用户态内存地址与内核态内存地址之间的映射关系,当接收到用于为待写入芯片的待写入数据请求内核态内存地址的请求消息时,依据已建立的映射关系将待写入数据写入芯片的技术方案。解决了相关技术中消息交互需要大量内存申请,以及用户态、内核态的拷贝操作,导致写入效率低、CPU负担较大的问题,进而达到了提高写入效率、减小CPU负担的效果。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是根据本发明实施例的数据写入方法流程示意图;
图2是根据本发明实施例的数据写入装置的结构示意图;
图3是根据本发明实施例的另一数据写入装置的结构示意图;
图4是根据本发明实施例的另一数据写入装置的结构示意图;
图5是根据本发明实施例的另一数据写入装置的结构示意图;
图6是根据本发明实施例的另一数据写入装置的结构示意图;
图7是根据相关技术的芯片驱动层次示意图;
图8是根据本发明实施例的芯片驱动层次示意图;
图9是根据本发明实施例的另一数据写入方法流程示意图;
图10是根据本发明实施例内核态与用户态映射关系示意图;
图11是根据本发明实施例的另一数据写入方法流程示意图。
具体实施方式
下文中将参考附图并结合实施例来详细说明本发明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。
本发明实施例提供了一种数据写入方法,如图1所示,该方法包括以下步骤:
S102、建立用户态内存地址与内核态内存地址之间的映射关系;
S104、接收到用于为待写入芯片的待写入数据请求内核态内存地址的请求消息;
S106、依据请求消息,以及映射关系,将待写入数据写入芯片。
本发明实施例中,数据写入装置首先建立用户态内存地址与内核态内存地址之间的映射关系。优选地,建立用户态内存地址与内核态内存地址之间的映射关系包括:确定用户态内存地址与内核态地址之间的偏移量;依据确定的偏移量,建立用户态内存地址与内核态内存地址之间的映射关系。
也就是说,数据写入装置通过mmap映射将内核态的内存块映射到用户态空间,并且分割内核态的内存块为N个内存单元。即,同一时刻可能有多个进程进行数据写入,为了提升内核态内存的利用率即数据写入的性能,将内核态的内存块分割成多个内存单元(例如buf0、buf1,……,bufN)。其中,mmap映射是指将一个文件或者其它对象映射进内存。
优选地,确定用户态内存地址与内核态地址之间的偏移量包括:获取用户态内存地址的起始地址和内核态地址的起始地址;确定用户态内存地址的起始地址与内核态地址的起始地址之间的偏差为偏移量。
例如,数据写入装置确定用户态内存地址的起始地址为U,内核态地址的起始地址为K,则数据写入装置计算出用户态内存地址与内核态地址之间的偏移量O=K-U,通常,内核态地址范围为3G至4G,用户态内存地址范围为0至3G,那么,偏移量O=3G-0=3G。
优选地,依据请求消息,以及映射关系,将待写入数据写入芯片包括:依据请求消息,确定用于写入待写入数据的内核态内存地址;依据映射关系将确定的内核态内存地址转化为对应的用户态内存地址;将填写在转化后的用户态内存地址中的待写入数据,依据确定的内核态内存地址写入芯片。
其中,数据写入装置在收到该请求消息或,可以查找内核态中是否有空闲的内存单元,并确定该空闲的内存单元对应的内核态内存地址,进而,依据上述建立的映射关系将该内核态内存地址转化为用户态内存地址,即用内核态内存地址减去上述偏移量得到用户态内存地址,并可以将用户态内存地址记录到描述符中发送给用户态驱动程序。用户态驱动程序将待写入数据存入用户态内存地址所对应的内存单元中,进而用户态驱动程序可以将该用户态内存地址以及待写入数据的大小通过描述符发送给数据写入装置。数据写入装置将给用户态内存地址转化为内核态内存地址后,依据确定的内核态内存地址写入芯片。
具体地,数据写入装置可以将上述内核态内存地址和待写入数据的大小发送给DMA(DirectMemoryAccess,直接内存访问)控制器,该DMA控制器将待写入数据快速写入芯片。其中,DMA控制器是一种在系统内部转移数据的独特外设,可以将其视为一种能够通过一组专用总线内部和外部存储器与每个具有DMA能力的外设连接起来的控制器。
优选地,在依据请求消息,以及映射关系,将待写入数据写入芯片之后,还包括:释放用于写入待写入数据的内核态内存地址对应的内核空间。
具体地,数据写入装置可以输入输出控制接口释放用于写入待写入数据的内核态内存地址对应的内核空间,即记录内核空间中相应的内存单元为可用状态。
用户态驱动程序可以将待释放的用户态内存地址通过描述符发送给数据写入装置,数据写入装置根据上述的偏移量计算得到相应的内核态内存地址,即将用户态内存地址加上偏移量得到相应的内核态内存地址,进而释放对应的内存空间。
通过本发明,采用通过建立用户态内存地址与内核态内存地址之间的映射关系,当接收到用于为待写入芯片的待写入数据请求内核态内存地址的请求消息时,依据已建立的映射关系将待写入数据写入芯片的技术方案。解决了相关技术中消息交互需要大量内存申请,以及用户态、内核态的拷贝操作,导致写入效率低、CPU负担较大的问题,进而达到了提高写入效率、减小CPU负担的效果。
本发明实施例还提供了一种数据写入装置,如图2所示,该装置包括:
映射模块202,用于建立用户态内存地址与内核态内存地址之间的映射关系;
接收模块204,用于接收到用于为待写入芯片的待写入数据请求内核态内存地址的请求消息;
处理模块206,用于依据请求消息,以及映射关系,将待写入数据写入芯片。
本发明实施例中,数据写入装置首先建立用户态内存地址与内核态内存地址之间的映射关系。优选地,建立用户态内存地址与内核态内存地址之间的映射关系包括:确定用户态内存地址与内核态地址之间的偏移量;依据确定的偏移量,建立用户态内存地址与内核态内存地址之间的映射关系。
也就是说,数据写入装置通过mmap映射将内核态的内存块映射到用户态空间,并且分割内核态的内存块为N个内存单元。即,同一时刻可能有多个进程进行数据写入,为了提升内核态内存的利用率即数据写入的性能,将内核态的内存块分割成多个内存单元(例如buf0、buf1,……,bufN)。其中,mmap映射是指将一个文件或者其它对象映射进内存。
优选地,如图3所示,映射模块202包括:
确定单元302,用于确定用户态内存地址与内核态地址之间的偏移量;
建立单元304,用于依据确定的偏移量,建立用户态内存地址与内核态内存地址之间的映射关系。
优选地,如图4所示,确定单元302包括:
获取子单元402,用于获取用户态内存地址的起始地址和内核态地址的起始地址;
确定子单元404,用于确定用户态内存地址的起始地址与内核态地址的起始地址之间的偏差为偏移量。
例如,数据写入装置确定用户态内存地址的起始地址为U,内核态地址的起始地址为K,则数据写入装置计算出用户态内存地址与内核态地址之间的偏移量O=K-U,通常,内核态地址范围为3G至4G,用户态内存地址范围为0至3G,那么,偏移量O=3G-0=3G。
优选地,如图5所示,处理模块206包括:
地址获取单元502,用于依据请求消息,确定用于写入待写入数据的内核态内存地址;
地址转化单元504,用于依据映射关系将确定的内核态内存地址转化为对应的用户态内存地址;
写入单元506,用于将填写在转化后的用户态内存地址中的待写入数据,依据确定的内核态内存地址写入芯片。
其中,数据写入装置在收到该请求消息或,可以查找内核态中是否有空闲的内存单元,并确定该空闲的内存单元对应的内核态内存地址,进而,依据上述建立的映射关系将该内核态内存地址转化为用户态内存地址,即用内核态内存地址减去上述偏移量得到用户态内存地址,并可以将用户态内存地址记录到描述符中发送给用户态驱动程序。用户态驱动程序将待写入数据存入用户态内存地址所对应的内存单元中,进而用户态驱动程序可以将该用户态内存地址以及待写入数据的大小通过描述符发送给数据写入装置。数据写入装置将给用户态内存地址转化为内核态内存地址后,依据确定的内核态内存地址写入芯片。
具体地,数据写入装置可以将上述内核态内存地址和待写入数据的大小发送给DMA(DirectMemoryAccess,直接内存访问)控制器,该DMA控制器将待写入数据快速写入芯片。其中,DMA控制器是一种在系统内部转移数据的独特外设,可以将其视为一种能够通过一组专用总线内部和外部存储器与每个具有DMA能力的外设连接起来的控制器。
优选地,如图6所示,本发明实施例的数据写入装置还包括:
内核空间释放模块602,用于释放用于写入待写入数据的内核态内存地址对应的内核空间。
具体地,数据写入装置可以输入输出控制接口释放用于写入待写入数据的内核态内存地址对应的内核空间,即记录内核空间中相应的内存单元为可用状态。
用户态驱动程序可以将待释放的用户态内存地址通过描述符发送给数据写入装置,数据写入装置根据上述的偏移量计算得到相应的内核态内存地址,即将用户态内存地址加上偏移量得到相应的内核态内存地址,进而释放对应的内存空间。
优选地,本发明实施例的核心思想是预先申请内核态内存,并利用零拷贝技术,将内核态的内存映射到用户态,用户态发送消息(相当于上述的待写入数据)时,直接通过buffer描述符获得用户态内存地址,这样可以避免申请用户态内存,而且用户态、内核态之间只需要传递一个很小的buffer描述符,省去了大量的内存拷贝操作。
目前的Linux操作系统广泛应用于网络设备驱动中,Linux系统分为用户态和内核态两个层面。芯片驱动层次如图7所示,目前网络设备驱动发送消息的通常做法是用户态申请内存并将消息填充到用户态内存中,由于实际与芯片交互的是内核层,因此必须将消息从用户态的内存拷贝到内核态的内存中,然后从内核态的内存通过总线写入硬件芯片中。
而本发明的芯片驱动层次如图8所示,芯片驱动程序为字符设备驱动,即驱动程序将芯片作为文件进行操作,用户态驱动程序和内核态驱动程序通过文件流进行交互。芯片驱动首先要为芯片初始化file_operation结构,该结构包括该字符设备的打开(open)、关闭(close)、写(write)、控制(ioctl)、映射(mmap)方法。具体地讲,
(1)映射(mmap)方法:提供将内核空间内存映射到用户空间内存的接口。
(2)打开(open)方法:申请内核态内存,并通过mmap映射将内核态内存内存块映射到用户空间,并且分割内存块为N个内存单元buf。
如图9所示,为建立映射关系的流程示意图,具体包括:
S301,开始。
S302,申请内核内存块,内核态内存起始地址为K。
S303,调用mmap接口将内核空间内存映射到用户空间,得到的用户态内存起始地址为U。
S304,计算用户空间地址相对于内核空间地址的偏移量O。
其中,O=K-U(通常的,内核空间地址范围为3G~4G,用户空间地址范围为0~3G)
S305,内存块分割。
其中,由于Linux为多进程操作系统,同一时刻可能有多个进程进行写表,为了提升内核内存的利用率及写表性能,将内核内存块分割成一个一个小的buffer(内存)单元(buf0、buf1,…bufN)。由内核驱动程序管理维护这些buffer单元。
S306,结束。
经过open系统调用后,用户空间得到了与内核空间相关联shadow映射。
如图10所示,内核空间每个buffer单元在用户空间都有唯一确定的一个用户空间地址。
(3)关闭(close)方法:释放软件资源,将内核态申请的内存释放。
(4)控制(ioctl)方法:为用户态程序驱动提供申请、释放内存的接口。输入参数为buffer描述符,其中,buffer描述符包括两个信息:用户态内存地址和消息大小(相当于待写入数据的大小)。
申请内存时,向内核驱动程序“申请”空闲buffer单元,得到其内核态地址Addr_kernel,根据用户空间地址和内核空间地址偏移量O,计算得到其用户空间地址Addr_usr=Addr_kernel–O,并将Addr_usr记录到buffer描述符返回给用户空间。
释放内存,用户空间将待释放的用户空间地址通过buffer描述符传递给内核空间。内核空间根据地址偏移量O计算得到相应的内核空间地址Addr_kernel=Addr_usr+O。将Addr_kernel传递给内核驱动程序,内核驱动负责“释放”该buffer单元。
需要说明的是,本发明实施例的“申请”、“释放”只是为了便于理解使用的说法,并不是真实的向操作系统申请释放内存,而是内核驱动程序为了管理内核buffer单元,记录每个buffer单元的是否在使用中的一个状态。实际上,内存的申请、释放只会发生在设备的打开、关闭调用中。
(5)写(write)方法:用户程序将用户空间地址及消息大小通过buffer描述符传递给内核空间。内核空间将用户地址转换成内核空间地址(即Addr_kernel=Addr_usr+O),将内核空间地址Addr_kernel和消息大小传递给DMA控制器,内核驱动程序(相当于数据写入装置)通过DMA将消息快速写入芯片。
写表消息发送接口借助ioctl和write两个系统调用实现,这两个系统调用都通过一个buffer描述符传递用户空间地址及消息长度。由于采用了mmap映射,用户空间不需要申请内存,只需要调用ioctl接口申请内核空间的空闲buffer,将消息内容填写到与内核buffer地址映射的用户空间地址。填写完成,调用write接口,内核态程序将用户空间地址进行转换得到内核态地址,从而通过DMA写入芯片,具体如图11所示。
S401,开始。
S402,内存申请。
其中,通过IOCTL接口申请内核态内存单元,获取相应的用户空间地址。
S403,消息填充。
其中,将消息内容拷贝到用户空间地址中,并将消息大小和用户空间地址填到buffer描述符中。
S404,消息发送。
其中,通过write接口,将buffer描述符传递给内核空间。内核驱动将用户空间地址和消息大小传递给DMA控制器,通过DMA快速写入芯片。
S405,内存释放。
其中,通过IOCTL接口释放内核态内存单元,记录内核空间中相应buffer单元为可用状态。
S406,结束。
需要说明的是,相对于相关技术而言,本发明实施例预先在内核空间申请内存,并划分为一个个的内存单元,通过mmap建立用户空间虚拟地址和内核空间内存地址的映射关系。这样用户空间和内核空间都不需要在消息过程中申请内存,并且避免了内存空间内存和内核空间内存的大量拷贝操作。内核驱动和芯片之间的消息传递采用DMA机制,减少了CPU的负担。在网络设备驱动层面大量发送写表消息的应用中,可以极大提高写表性能。
显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种数据写入方法,其特征在于,包括:
建立用户态内存地址与内核态内存地址之间的映射关系;
接收到用于为待写入芯片的待写入数据请求内核态内存地址的请求消息;
依据所述请求消息,以及所述映射关系,将所述待写入数据写入所述芯片。
2.根据权利要求1所述的方法,其特征在于,建立所述用户态内存地址与所述内核态内存地址之间的所述映射关系包括:
确定所述用户态内存地址与所述内核态地址之间的偏移量;
依据确定的所述偏移量,建立所述用户态内存地址与所述内核态内存地址之间的所述映射关系。
3.根据权利要求2所述的方法,其特征在于,确定所述用户态内存地址与所述内核态地址之间的所述偏移量包括:
获取所述用户态内存地址的起始地址和所述内核态地址的起始地址;
确定所述用户态内存地址的起始地址与所述内核态地址的起始地址之间的偏差为所述偏移量。
4.根据权利要求1所述的方法,其特征在于,依据所述请求消息,以及所述映射关系,将所述待写入数据写入所述芯片包括:
依据所述请求消息,确定用于写入所述待写入数据的内核态内存地址;
依据所述映射关系将确定的所述内核态内存地址转化为对应的用户态内存地址;
将填写在转化后的所述用户态内存地址中的所述待写入数据,依据确定的所述内核态内存地址写入所述芯片。
5.根据权利要求1至4中任一项所述的方法,其特征在于,在依据所述请求消息,以及所述映射关系,将所述待写入数据写入所述芯片之后,还包括:
释放用于写入所述待写入数据的所述内核态内存地址对应的内核空间。
6.一种数据写入装置,其特征在于,包括:
映射模块,用于建立用户态内存地址与内核态内存地址之间的映射关系;
接收模块,用于接收到用于为待写入芯片的待写入数据请求内核态内存地址的请求消息;
处理模块,用于依据所述请求消息,以及所述映射关系,将所述待写入数据写入所述芯片。
7.根据权利要求6所述的装置,其特征在于,所述映射模块包括:
确定单元,用于确定所述用户态内存地址与所述内核态地址之间的偏移量;
建立单元,用于依据确定的所述偏移量,建立所述用户态内存地址与所述内核态内存地址之间的所述映射关系。
8.根据权利要求7所述的装置,其特征在于,所述确定单元包括:
获取子单元,用于获取所述用户态内存地址的起始地址和所述内核态地址的起始地址;
确定子单元,用于确定所述用户态内存地址的起始地址与所述内核态地址的起始地址之间的偏差为所述偏移量。
9.根据权利要求6所述的装置,其特征在于,所述处理模块包括:
地址获取单元,用于依据所述请求消息,确定用于写入所述待写入数据的内核态内存地址;
地址转化单元,用于依据所述映射关系将确定的所述内核态内存地址转化为对应的用户态内存地址;
写入单元,用于将填写在转化后的所述用户态内存地址中的所述待写入数据,依据确定的所述内核态内存地址写入所述芯片。
10.根据权利要求6至9中任一项所述的装置,其特征在于,还包括:
内核空间释放模块,用于释放用于写入所述待写入数据的所述内核态内存地址对应的内核空间。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410667652.0A CN105677597A (zh) | 2014-11-20 | 2014-11-20 | 数据写入方法及装置 |
PCT/CN2015/076810 WO2016078313A1 (zh) | 2014-11-20 | 2015-04-16 | 数据写入方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410667652.0A CN105677597A (zh) | 2014-11-20 | 2014-11-20 | 数据写入方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN105677597A true CN105677597A (zh) | 2016-06-15 |
Family
ID=56013186
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410667652.0A Pending CN105677597A (zh) | 2014-11-20 | 2014-11-20 | 数据写入方法及装置 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN105677597A (zh) |
WO (1) | WO2016078313A1 (zh) |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106775462A (zh) * | 2016-11-30 | 2017-05-31 | 郑州云海信息技术有限公司 | 一种读写过程中减少内存拷贝的方法和装置 |
CN107729159A (zh) * | 2017-09-29 | 2018-02-23 | 华为技术有限公司 | 一种共享内存的地址映射方法及装置 |
CN108062253A (zh) * | 2017-12-11 | 2018-05-22 | 北京奇虎科技有限公司 | 一种内核态与用户态的通信方法、装置及终端 |
CN108717381A (zh) * | 2018-03-22 | 2018-10-30 | 新华三信息安全技术有限公司 | 一种报文处理方法及安全设备 |
CN109408226A (zh) * | 2018-09-19 | 2019-03-01 | 深圳传音通讯有限公司 | 数据处理方法、装置及终端设备 |
CN109426634A (zh) * | 2017-08-27 | 2019-03-05 | 南京理工大学 | 基于SoCFPGA采集数据的传输方法 |
CN110858145A (zh) * | 2018-08-22 | 2020-03-03 | 龙芯中科技术有限公司 | 一种Linux操作系统下BIOS的更新方法和装置 |
WO2020135504A1 (zh) * | 2018-12-27 | 2020-07-02 | 中兴通讯股份有限公司 | 一种虚拟化方法和装置 |
CN112463662A (zh) * | 2020-12-16 | 2021-03-09 | 福州创实讯联信息技术有限公司 | 一种用户态控制i2c设备的方法与终端 |
CN112532585A (zh) * | 2020-11-02 | 2021-03-19 | 杭州迪普科技股份有限公司 | 一种进程间报文传输的方法、设备及介质 |
CN116737602A (zh) * | 2023-08-11 | 2023-09-12 | 深圳市航顺芯片技术研发有限公司 | 将外设ram共享为系统ram的方法、装置及存储介质 |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111475099B (zh) * | 2019-01-23 | 2023-06-20 | 阿里巴巴集团控股有限公司 | 一种数据存储方法、装置及其设备 |
CN111813707B (zh) * | 2020-07-17 | 2023-12-22 | 济南浪潮数据技术有限公司 | 一种数据同步方法、装置、设备及存储介质 |
CN114003520B (zh) * | 2021-09-28 | 2023-06-20 | 苏州浪潮智能科技有限公司 | 一种主机与设备之间的数据传输方法、装置、系统及介质 |
CN114417761B (zh) * | 2022-03-30 | 2022-07-22 | 新华三半导体技术有限公司 | 一种芯片验证方法、装置、系统、控制服务器及介质 |
CN116455612B (zh) * | 2023-03-23 | 2023-11-28 | 京信数据科技有限公司 | 一种隐私计算中间数据流零拷贝装置及方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102082698A (zh) * | 2009-11-26 | 2011-06-01 | 上海大学 | 基于改进型零拷贝技术的高性能内核的网络数据处理系统 |
CN102402487A (zh) * | 2011-11-15 | 2012-04-04 | 北京天融信科技有限公司 | 一种零拷贝接收报文的方法和系统 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100464304C (zh) * | 2006-08-29 | 2009-02-25 | 飞塔信息科技(北京)有限公司 | 一种基于Linux操作系统实现零拷贝的装置和方法 |
CN101304373B (zh) * | 2008-06-25 | 2011-03-02 | 中兴通讯股份有限公司 | 一种实现局域网内高效传输大块数据的方法及系统 |
-
2014
- 2014-11-20 CN CN201410667652.0A patent/CN105677597A/zh active Pending
-
2015
- 2015-04-16 WO PCT/CN2015/076810 patent/WO2016078313A1/zh active Application Filing
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102082698A (zh) * | 2009-11-26 | 2011-06-01 | 上海大学 | 基于改进型零拷贝技术的高性能内核的网络数据处理系统 |
CN102402487A (zh) * | 2011-11-15 | 2012-04-04 | 北京天融信科技有限公司 | 一种零拷贝接收报文的方法和系统 |
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106775462A (zh) * | 2016-11-30 | 2017-05-31 | 郑州云海信息技术有限公司 | 一种读写过程中减少内存拷贝的方法和装置 |
CN109426634A (zh) * | 2017-08-27 | 2019-03-05 | 南京理工大学 | 基于SoCFPGA采集数据的传输方法 |
CN107729159A (zh) * | 2017-09-29 | 2018-02-23 | 华为技术有限公司 | 一种共享内存的地址映射方法及装置 |
CN108062253A (zh) * | 2017-12-11 | 2018-05-22 | 北京奇虎科技有限公司 | 一种内核态与用户态的通信方法、装置及终端 |
CN108717381A (zh) * | 2018-03-22 | 2018-10-30 | 新华三信息安全技术有限公司 | 一种报文处理方法及安全设备 |
CN108717381B (zh) * | 2018-03-22 | 2021-04-16 | 新华三信息安全技术有限公司 | 一种报文处理方法及安全设备 |
CN110858145A (zh) * | 2018-08-22 | 2020-03-03 | 龙芯中科技术有限公司 | 一种Linux操作系统下BIOS的更新方法和装置 |
CN109408226A (zh) * | 2018-09-19 | 2019-03-01 | 深圳传音通讯有限公司 | 数据处理方法、装置及终端设备 |
WO2020135504A1 (zh) * | 2018-12-27 | 2020-07-02 | 中兴通讯股份有限公司 | 一种虚拟化方法和装置 |
CN112532585A (zh) * | 2020-11-02 | 2021-03-19 | 杭州迪普科技股份有限公司 | 一种进程间报文传输的方法、设备及介质 |
CN112463662A (zh) * | 2020-12-16 | 2021-03-09 | 福州创实讯联信息技术有限公司 | 一种用户态控制i2c设备的方法与终端 |
CN112463662B (zh) * | 2020-12-16 | 2024-04-05 | 福州创实讯联信息技术有限公司 | 一种用户态控制i2c设备的方法与终端 |
CN116737602A (zh) * | 2023-08-11 | 2023-09-12 | 深圳市航顺芯片技术研发有限公司 | 将外设ram共享为系统ram的方法、装置及存储介质 |
CN116737602B (zh) * | 2023-08-11 | 2023-11-03 | 深圳市航顺芯片技术研发有限公司 | 将外设ram共享为系统ram的方法、装置及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
WO2016078313A1 (zh) | 2016-05-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105677597A (zh) | 数据写入方法及装置 | |
US20200387405A1 (en) | Communication Method and Apparatus | |
CN102880573B (zh) | 一种基于Linux系统的串行RapidIo数据传输方法 | |
CN101304373B (zh) | 一种实现局域网内高效传输大块数据的方法及系统 | |
CN111431757B (zh) | 虚拟网络的流量采集方法及装置 | |
CN102541984B (zh) | 一种分布式文件系统客户端的文件系统的实现方法 | |
CN107870879A (zh) | 一种数据搬移方法、加速器板卡、主机及数据搬移系统 | |
US9396014B2 (en) | Data swap in virtual machine environment | |
US11989588B2 (en) | Shared memory management method and device | |
EP3077914B1 (en) | System and method for managing and supporting virtual host bus adaptor (vhba) over infiniband (ib) and for supporting efficient buffer usage with a single external memory interface | |
US9069592B2 (en) | Generic transport layer mechanism for firmware communication | |
WO2015027806A1 (zh) | 一种内存数据的读写处理方法和装置 | |
WO2024082944A1 (zh) | 一种多处理器数据交互方法、装置、设备及存储介质 | |
CN113760560A (zh) | 一种进程间通信方法以及进程间通信装置 | |
CN112000287A (zh) | 一种io请求处理装置、方法、设备及可读存储介质 | |
CN104731711A (zh) | 一种网络设备写表方法及装置 | |
CN107368379A (zh) | 面向EVP的跨GuestOS进程间通信方法及系统 | |
CN103986585A (zh) | 报文预处理方法及其装置 | |
WO2020156797A1 (en) | Handling an input/output store instruction | |
CN102291298A (zh) | 一种高效的面向长消息的计算机网络通信方法 | |
CN104102550A (zh) | 一种多主机进程间通信的方法 | |
WO2022057481A1 (zh) | 一种存储器资源分配方法和网络设备 | |
CN115883022B (zh) | Dma传输控制方法、装置、电子设备及可读存储介质 | |
CN116070239A (zh) | 文件加密、解密方法、装置、设备及存储介质 | |
CN105573852B (zh) | 一种虚拟地址隔离环境下超高速数据对象通信的方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20160615 |