CN110858162B - 内存管理方法及装置、服务器 - Google Patents
内存管理方法及装置、服务器 Download PDFInfo
- Publication number
- CN110858162B CN110858162B CN201810975221.9A CN201810975221A CN110858162B CN 110858162 B CN110858162 B CN 110858162B CN 201810975221 A CN201810975221 A CN 201810975221A CN 110858162 B CN110858162 B CN 110858162B
- Authority
- CN
- China
- Prior art keywords
- memory
- memory space
- processor
- data
- processes
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0253—Garbage collection, i.e. reclamation of unreferenced memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5022—Mechanisms to release resources
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请公开了一种内存管理方法及装置、服务器,属于内存技术领域。所述方法包括:统计处理器上运行的多个进程所需的总共享内存容量;根据所需的总内存容量从内存中分配共享内存,共享内存的容量大于或等于多个进程所需的总共享内存容量;获取多个进程中的第一进程触发的内存分配请求;响应于内存分配请求,从共享内存中为第一进程分配内存空间。本申请解决了处理器从内存中为每个进程分配共享内存需要花费较长的时间,导致进程间的通信效率也较低的问题,并减少了为进程分配内存所需的时间,提高了进程间通信的效率,本申请用于内存的管理。
Description
技术领域
本申请涉及内存技术领域,特别涉及一种内存管理方法及装置、服务器。
背景技术
随着内存技术的不断发展,同一台服务器的处理器上运行的进程的个数在越来越多。运行在同一处理器上的多个进程可以通过共享内存进行通信。
示例地,服务器包括处理器和内存,处理器可以获取每个进程触发的内存分配请求,并根据该内存分配请求,为该进程分配内存中的共享内存,以便于该进程可以对该共享内存进行读写操作。在某一进程在共享内存中写入数据后,若另一进程读取共享内存中的该数据,则可以称为这两个进程通过共享内存进行了通信。
但是,由于每个进程在对共享内存进行读写操作前,处理器均需要从内存中为该进程分配共享内存,且从内存中分配共享内存需要花费较长的时间,因此,每个进程对共享内存的读写效率较低,导致进程间的通信效率也较低。
发明内容
本申请提供了一种内存管理方法及装置、服务器,可以解决处理器从内存中为每个进程分配共享内存需要花费较长的时间,导致进程间的通信效率也较低的问题,所述技术方案如下:
第一方面,提供了一种内存管理方法,所述方法应用于服务器中的处理器,所述服务器还包括内存,所述方法包括:统计所述处理器上运行的多个进程所需的总共享内存容量;根据所述所需的总内存容量从所述内存中分配共享内存,所述共享内存的容量大于或等于所述多个进程所需的总共享内存容量;获取所述多个进程中的第一进程触发的内存分配请求;响应于所述内存分配请求,从所述共享内存中为所述第一进程分配内存空间。由于处理器预先从内存中分配了一大块共享内存,之后,处理器可以将该共享内存中的内存空间分配给进程,以使得进程间可以通过该内存空间进行通信。由于每个进程在与其他进程通信所使用的内存空间均为从预先分配的共享内存中分配得到的,因此处理器无需从内存中为每个进程分配共享内存,减少了为进程分配内存所需的时间,提高了进程对共享内存的读写效率,提高了进程间通信的效率。
可选的,所述共享内存包括第一集合和第二集合;所述从所述共享内存中为所述第一进程分配内存空间,包括:从所述第一集合中为所述第一进程分配内存空间;所述方法还包括:将所述第一进程对应的数据写入所述内存空间;将所述内存空间中所述数据写入的地址保存在所述第二集合中;在所述多个进程中的第二进程触发读数据请求时,根据所述第二集合中的所述地址读取所述数据,并反馈给所述第二进程。也即在第一进程与第二进程通信时,处理器仅需将第一进程对应的数据写入内存空间,并将该数据写入的地址写入第二集合,从而通过该第二集合实现第一进程和第二进程之间信息的传递,且整个过程中无需对该第一进程对应的数据进行拷贝,因此进程间通信的效率较高。
可选的,所述内存中保存有至少两个空闲链表,所述至少两个空闲链表用于以不同粒度管理所述第一集合中的可分配空间;所述从所述第一集合中为所述第一进程分配内存空间,包括:根据所述第一进程所需的内存容量从所述至少两个空闲链表选择目标链表;从所述目标链表管理的可分配空间中为所述第一进程分配内存空间。由于内存中的多个空闲链表能够以不同的粒度管理可分配空间,因此,可以根据进程所需的内存容量选择相应的空闲链表,进行内存空间的分配,从而能够为进程分配多种不同粒度的内存空间。
可选的,所述第二集合包含多个子集合,其中,每个子集合与所述多个进程中的每个进程对应;所述将所述内存空间中所述数据写入的地址保存在所述第二集合中,包括:将所述内存空间中所述数据写入的地址保存在所述第二进程对应的子集合中。也即在第一进程与第二进程通信时,处理器需将第一进程对应的数据写入的地址写入第二进程对应的子集合,从而通过该子集合实现第一进程和第二进程之间信息的传递。
可选的,所述方法还包括:接收所述第一进程触发的第一释放指示,所述第一释放指示用于指示释放所述数据所占用的内存空间;接收所述第二进程触发的第二释放指示,所述第二释放指示用于指示释放所述数据所占用的内存空间;在接收所述第一释放指示和所述第二释放指示之后,删除所述数据,并释放所述内存空间。也即处理器在接收到每个释放指示后,需要检测是否接收到所有使用该内存空间的进程发送的释放指示,并在接收到这些释放指示后才可以对该内存空间进行释放,以防止在部分进程需要释放某一内存空间,而部分进程正在使用该内存空间时,释放该内存空间而造成数据的丢失。
第二方面,提供了一种内存管理装置,所述内存管理装置包括用于执行上述内存管理方法的各个模块。
第三方面,提供了一种服务器,所述服务器包括:处理器和内存,所述处理器包括上述内存管理装置。
第四方面,提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当所述计算机可读存储介质在计算机上运行时,使得计算机执行上述内存管理方法。
第五方面,提供了一种包含指令的计算机程序产品,当所述计算机程序产品在计算机上运行时,使得计算机执行上述内存管理方法。
附图说明
图1为本发明实施例提供的一种服务器的结构示意图;
图2为本发明实施例提供的一种内存管理方法的流程图;
图3为本发明实施例提供的一种单位内存空间的示意图;
图4为本发明实施例提供的一种空闲链表的示意图;
图5为本发明实施例提供的一种为第一进程分配内存空间的方法流程图;
图6为本发明实施例提供的一种分割单位内存空间的示意图;
图7为本发明实施例提供的另一种分割单位内存空间的示意图;
图8为本发明实施例提供的一种第一信息和第二信息的示意图;
图9为本发明实施例提供的另一种内存管理方法的流程图;
图10为本发明实施例提供的一种内存管理装置的结构示意图;
图11为本发明实施例提供的另一种内存管理装置的结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
图1为本发明实施例提供的一种服务器的结构示意图,如图1所示,该服务器0可以包括:处理器01和内存02,处理器01上可以运行有多个进程。
可选的,服务器上可以部署有虚拟机和/或容器(container),其中,虚拟机包含服务器的一部分软件资源和一部分虚拟化的硬件资源,容器包含服务器的一部分软件资源。该多个进程可以包括:服务器本地的进程(不属于虚拟机也不属于容器);在服务器上部署有容器时,该多个进程还包括:容器中的进程;在服务器上部署有虚拟机时,该多个进程还包括:虚拟机中的进程。
可选地,请继续参考图1,该服务器0还可以包括:至少一个网络接口03和至少一个总线04,总线04用于实现处理器、网络接口和内存之间的连接通信,内存02与网络接口03分别通过总线04与处理器01相连。处理器01用于执行内存02中存储的可执行模块,例如计算机程序。内存02可能包含高速随机存取存储器(Random Access Memory,RAM),也可能还包括非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。通过至少一个网络接口03(有线或者无线)实现该服务器与至少一个其他装置之间的通信连接。在一些实施方式中,内存02存储了管理程序A,该管理程序A能够被处理器01执行以实现本发明实施例提供的内存管理方法。该内存02上还存储了多个业务程序B,且在业务程序B运行在处理器01上时,可以形成运行在处理器01上的上述进程。
本发明实施例提供了一种用于处理器的内存管理方法。示例地,该方法可以应用于如图1所示的服务器中的处理器01,如图2所示,该内存管理方法可以包括:
步骤201、处理器01统计处理器01上运行的多个进程所需的总共享内存容量。
在本发明实施例中,处理器01需要预先统计处理器01上运行的多个进程(也即图1中存储在内存中的业务程序B在运行在处理器01上时形成的进程,可以称为业务进程)进行通信所需的总共享内存容量。示例地,任意两个进程通信所需的内存容量可以等于这两个进程进行通信时的输入/输出(Input/Output,I/O)深度,该多个进程通信所需的内存容量等于这些进程进行通信时的IO深度之和。
步骤202、处理器01根据所需的总共享内存容量从内存中分配共享内存,共享内存的容量大于或等于多个进程所需的总共享内存容量。
在确定处理器01上运行的多个进程所需的总共享内存容量后,处理器01可以根据该总共享内存容量,从服务器的内存中分配共享内存,步骤201中的多个进程需要通过该共享内存进行通信,因此,该共享内存的容量需要大于或等于该多个进程所需的总共享内存容量。
示例地,假设该多个进程所需的总共享内存容量为60千字节(kilobyte,k),则处理器01可以从内存中分配容量为70k的共享内存,以供该多个进程通信。
步骤203、处理器01获取多个进程中的第一进程触发的内存分配请求。
可选地,第一进程可以为该多个进程中的任一进程,该第一进程也可以为该多个进程之外的其他进程,本发明实施例对此不作限定。
示例的,在第一进程接收到用户触发的写请求时,第一进程可以触发该内存分配请求,以使得处理器根据该内存分配请求为第一进程分配内存空间,之后,第一进程可以在该内存空间中存储该写请求中携带的数据。在第一进程接收到用户触发的读请求时,第一进程可以触发该内存分配请求,以使得处理器根据该内存分配请求为第一进程分配内存空间,之后,第一进程可以在该内存空间中临时存储读取到的数据。在第一进程需要与其他进程(如第二进程)进行通信时,第一进程也可以触发内存分配请求,以触发处理器01根据该内存分配请求为该进程分配内存空间,之后,第一进程就可以通过该内存空间与第二进程通信。需要说明的是,本发明实施例中仅以第一进程触发内存分配请求的上述三种场景为例,实际应用中,第一进程还可以在其他场景中触发内存分配请求,本发明实施例对此不作限定。
步骤204、处理器01响应于内存分配请求,从共享内存中为第一进程分配内存空间。
可选地,处理器01从内存中分配的共享内存可以包括第一集合和第二集合,该第一集合用于进程的数据读写,第二集合用于进程间通信的中转。处理器01在捕获到第一进程触发的内存分配请求后,可以从第一集合中为第一进程分配内存空间。
进一步地,内存中可以存储有至少两个空闲链表,该至少两个空闲链表用于以不同粒度管理第一集合中的可分配空间,处理器可以基于这些空闲链表为第一进程分配内存空间。可选地,这些粒度中的最小粒度可以为:8字节,或者其他粒度(如16字节、32字节或64字节等),本发明实施例对此不作限定。
可选地,该至少两个空闲链表包括n级空闲链表,该n级空闲链表用于以不同的粒度管理第一集合中的可分配空间,且n级空闲链表中,第i级空闲链表管理可分配空间的粒度为第i-1级空闲链表管理可分配空间的粒度的两倍,1<i≤n。示例的,每个空闲链表用于以一种粒度管理第一集合中的可分配空间,也即是:该空闲链表用于管理该可分配空间中一种粒度的单位内存空间。每个空闲链表可以包括至少一个结点,空闲链表能够通过结点对其管理的单位内存空间进行记录(如通过记录单位内存空间的地址记录该单位内存空间)。在处理器01还未为任何进程分配内存空间时,这些空闲链表中的第n级空闲链表包括:头结点和非头结点,除第n级空闲链表之外的其他级空闲链表均只包含头结点。其中,头结点仅包含指针而并不包括用于记录单位内存空间的数据,非头结点不仅包括指针还包括用于记录单位内存空间的数据,且此时所有第n级空闲链表中的非头结点记录的单位内存空间组成第一集合中的可分配空间。
示例地,如图3和图4所示,假设该第一集合的容量为64k,内存中的空闲链表可以包括:四级空闲链表。其中,第四级空闲链表用于以64k的粒度管理第一集合中的可分配空间,该第一集合可以按照64k的粒度划分为:单位内存空间1(容量为64k);第三级空闲链表用于以32k的粒度管理第一集合中的可分配空间,该第一集合可以按照32k的粒度划分为:单位内存空间2和单位内存空间3(容量均为32k);第二级空闲链表用于以16k的粒度管理第一集合中的可分配空间,该第一集合可以按照16k的粒度划分为:单位内存空间4、单位内存空间5、单位内存空间6和单位内存空间7(容量均为16k);第一级空闲链表用于以8k的粒度管理第一集合中的可分配空间,该第一集合可以按照8k的粒度划分为:单位内存空间8、单位内存空间9、单位内存空间10、单位内存空间11、单位内存空间12、单位内存空间13、单位内存空间14、单位内存空间15和单位内存空间16(容量均为8k)。处理器01在还未向任何进程分配内存空间时,第四级空闲链表包括:头结点和一个用于记录64k的单位内存空间的非头结点,而其他级空闲链表均只包括一个头结点。
可选地,每级空闲链表均可以为双向循环链表,也即,空闲链表中的每个结点中均包括两个指针,其中一个指针用于指示该结点的下一个结点,另一个指针用于指示该结点的上一个结点。上述n级空闲链表可以组成一组空闲链表,也即本发明实施例中以内存中存储有一组空闲链表为例,可选的,内存中还可以存储有多组这样的空闲链表,本发明实施例对此不作限定。
处理器01在基于这些空闲链表从第一集合中为第一进程分配内存空间时,可以根据第一进程所需的内存容量从至少两个空闲链表中选择目标链表。处理器01还需要查询目标链表,以确定目标链表是否管理有单位内存空间。在该目标链表管理有单位内存空间时,处理器01需要对该目标链表进行修改,并从目标链表管理的单位内存空间中为第一进程分配内存空间。在该目标链表未管理有单位内存空间时,处理器01需要对其他级空闲链表管理的单位内存空间进行分割或合并,以得到目标链表管理的单位内存空间,进而从该单位内存空间中为第一进程分配内存空间。如图5所示,步骤204可以包括:
步骤2041、处理器01根据第一进程所需的内存容量,选择第j级空闲链表为目标链表,其中,第j级空闲链表管理可分配空间的粒度为:第一级至第n级空闲链表管理可分配空间的粒度中,达到第一进程所需的内存容量且与该内存容量的差值最小的粒度,1≤j≤n。执行步骤2042。
可选地,第一进程触发的内存分配请求中可以携带有第一进程所需的内存容量。处理器01可以根据该内存分配请求确定第一进程所需的内存容量。之后,处理器01可以将每级空闲链表管理可分配空间的粒度与该第一进程所需的内存容量做差;然后,处理器01将得到的最小非负差对应的粒度作为目标粒度,并将用于以目标粒度管理可分配空间的第j级空闲链表确定为目标链表。
示例的,请继续结合图3和图4,假设第一进程所需的内存容量为16k,则处理器01可以将四个空闲链表管理可分配空间的粒度(8k、16k、32k和64k)均与16k进行做差,以确定8k与16k的差为-8k,16k与16k的差为0k,32k与16k的差为16k,64k与16k的差为48k,进而可以确定用于以16k的粒度管理可分配空间的第二级空闲链表为目标链表。
步骤2042、处理器01对第j级空闲链表至第n级空闲链表进行查询,直至查询到管理有单位内存空间的非空链表。执行步骤2043。
处理器01在确定第j级空闲链表为目标链表后,可以从第j级空闲链表开始,依次查询第j级空闲链表至第n级空闲链表中的每级空闲链表是否为非空链表(非空链表也即管理有单位内存空间的链表)。若从第j级空闲链表查询至第n级空闲链表,仍然未查询到非空链表,则处理器01可以再次对第j级空闲链表至第n级空闲链表中的每级空闲链表进行查询。且一旦查询到非空链表,处理器就可以停止查询。
示例的,请继续参考图4,假设目标链表为第二级空闲链表,则处理器01可以从第二级空闲链表开始,依次查询第二级空闲链表至第四级空闲链表中的每级空闲链表是否为非空链表。处理器在查询到第四级空闲链表时,可以确定第二级空闲链表和第三级空闲链表均不是非空链表,且可以确定第四级空闲链表管理有容量为64k的单位内存空间,进而确定该第四级空闲链表为非空链表,并停止查询。
可选地,在每次查询到第n级空闲链表后,若未检测到非空链表,则处理器01可以依次查询第一级空闲链表至第j-1级空闲链表中的每级空闲链表是否管理有至少一组伙伴空间。在确定第p级空闲链表管理有至少一组伙伴空间时,处理器01将第p级空闲链表中用于记录该至少一组伙伴空间的结点移除,并在第p+1级空闲链表中添加记录有每组伙伴空间组成的单位内存空间的结点,1≤p<j-1。处理器01移除空闲链表中的结点以及在空闲链表中添加结点,均可以通过对空闲链表中的指针进行修改实现。在确定第一级空闲链表至第j-1级空闲链表均未管理有至少一组伙伴空间时,处理器01才开始再次查询第j级空闲链表至第n级空闲链表中是否存非空链表。
以下将对伙伴空间进行解释说明,示例的,共享内存中的第一集合可以按照每个空闲链表管理可分配空间的粒度,划分为物理地址连续且容量相同的多个单位内存空间,当这些单位内存空间中的第x+1个单位内存空间和第x+2个单位内存空间均为属于第一集合中的可分配空间时,该第x+1个单位内存空间和第x+2个单位内存空间为一组伙伴空间,x为非负偶数。示例的,假设第一级空闲链表管理有物理地址连续的八个8k的单位内存空间,且这八个单位内存空间均属于可分配空间,则这八个单位内存空间中的第一个和第二个单位内存空间为一组伙伴空间,第三个和第四个单位内存空间为一组伙伴空间,第五个和第六个单位内存空间为一组伙伴空间,第七个和第八个单位内存空间为一组伙伴空间。
可选地,本发明实施例中,处理器01在对每个空闲链表进行查询时,均可以从空闲链表中的头结点开始查询,也即,处理器01每次均从空闲链表的同一位置开始查询,使得该空闲链表可以存在内存中的缓存(cache)中。且处理器01对存储在缓存中的文件进行处理的效率较高,因此,本发明实施例中处理器01查询链表的速度较快。需要说明的是,处理器01在对每个空闲链表进行查询时,还可以总是从空闲链表的其他结点(如最后一个结点)开始查询,本发明实施例对此不作限定。
步骤2043、处理器01判断查询到的非空链表是否为第j级空闲链表。若非空链表为第j级空闲链表,则执行步骤2045;若非空链表不为第j级空闲链表,则执行步骤2044。
步骤2044、处理器01将非空链表管理的任一单位内存空间分割为第j级空闲链表管理的单位内存空间。执行步骤2045。
处理器01可以将非空链表中记录有任一单位内存空间的结点移除,并将该单位内存空间进行分割,以及根据分割结果在第j级空闲链表和其他级空闲链表中添加记录有单位内存空间的结点。
示例地,如图4所示,假设查询到的非空链表为第四级空闲链表,且第j级空闲链表为第二级空闲链表,则如图6所示,处理器01可以首先将第四级空闲链表管理的一个容量为64k的单位内存空间1进行分割,以得到容量均为32k的单位内存空间2和3,并将第四级空闲链表中记录有单位内存空间1的非头结点移除,在第三级空闲链表中添加记录有单位内存空间2和3的两个非头结点。然后,如图7所示,处理器01可以将单位内存空间2再分割为容量均为16k的单位内存空间4和5,并将第三级空闲链表中记录有该单位内存空间2的非头结点移除,在第二级空闲链表中添加记录单位内存空间4和5的两个非头结点。这样一来,就使得第二级空闲链表管理有单位内存空间。
步骤2045、处理器01为第一进程分配第j级空闲链表管理的任一单位内存空间。
处理器在为第一进程分配第j级空闲链表管理的任一单位内存空间时,还需要将第j级空闲链表中记录有该任一单位内存空间的结点移除。
另外,处理器01在分配共享内存后,还可以按照每级空闲链表管理可分配空间的粒度,将第一集合划分得到的多个单位内存空间(如图3所示的多个单位内存空间)中每个单位内存空间的状态信息。其中,该状态信息包括:用于指示该单位内存空间是否被分割的第一信息,用于指示该单位内存空间是否被分配至进程的第二信息,以及在该单位内存空间属于可分配空间时,用于管理该单位内存空间的空闲链表的第三信息,且在该单位内存空间被分配至进程时,该状态信息还包括:用于指示该单位内存空间被分配至的进程的第四信息。并在每个单位内存空间的状态发生改变时,处理器01需要对其状态信息进行调整。如在步骤2045后,处理器01还可以将该任一单位内存空间的第二信息和第四信息进行修改。
可选地,单位内存空间的第一信息和第二信息可以通过位图的方式进行记录,如图8所示,图3所示的16个单位内存空间中,每个单位内存空间的第一信息和第二信息均可以占用一个二进制位,这样一来,总共需要3个字节就能够对16个单位内存空间的第一信息和第二信息进行记录。
综上所述,在步骤204中,处理器01可以根据第一进程触发的内存分配请求,对至少一个空闲链表进行如步骤2041至步骤2042中的查询和修改,以为第一进程分配共享内存中的内存空间。
进一步地,为了防止多个进程的互斥操作,处理器01在根据第一进程触发的内存分配请求,对某一空闲链表进行查询和修改中的至少一种操作时,可以将该空闲链表加锁,以使该空闲链表仅允许被处理器01根据第一进程触发的内存分配请求进行操作,而不能被处理器01根据其他进程触发的内存分配请求进行操作。并且,处理器01在根据第一进程触发的内存分配请求,对该空闲链表进行完毕该至少一种操作后,可以将该空闲链表解锁,以使该空闲链表允许被处理器01根据任一进程(如第一进程或除第一进程之外的其他进程)触发的内存分配请求进行操作。
示例地,内存上可以存储有每个空闲链表的锁信息,在处理器01并未对该空闲链表进行操作时,该空闲链表的锁信息包括:空闲链表的解锁状态值(如-1或0),在处理器01根据某一进程触发的内存分配请求,对该空闲链表进行至少一种操作时,若该空闲链表的锁信息包括解锁状态值,则处理器01需要将该解锁状态值更改为加锁状态值(如改为1),并在该锁信息中记录该进程的标识。在对该链表操作完毕后,处理器01可以将该锁信息中空闲链表的加锁状态值还原为上述解锁状态值,并删除锁信息中进程的标识。
步骤205、处理器01将第一进程对应的数据写入分配给第一进程的内存空间。
需要说明的是,处理器01在从内存中分配共享内存后,还需要将该共享内存中物理地址与逻辑地址的映射关系发送给每个进程。处理器01在为第一进程分配内存空间时,可以向第一进程反馈分配给其的内存空间的物理地址。
处理器01在为第一进程分配内存空间后,第一进程可以根据共享内存中物理地址与逻辑地址的映射关系,将分配的内存空间的物理地址转换为逻辑地址。之后,第一进程可以将需要写入的数据和该逻辑地址均发送给处理器01。处理器01可以将第一进程发送的逻辑地址转换为物理地址,并将第一进程需要写入的数据(也即第一进程对应的数据)写入为该物理地址对应的内存空间(也即分配给第一进程的内存空间)。
步骤206、处理器01将第一进程对应的数据写入内存空间中的地址保存在第二集合中。
示例地,该第二集合可以包含多个子集合,其中,每个子集合与该多个进程中的每个进程对应,也即该多个子集合与该多个进程一一对应。
处理器01在步骤206中可以将分配给第一进程的内存空间中该数据写入的地址(物理地址,也可以是逻辑地址),保存在第一进程需要通信的第二进程对应的子集合中,以便于后续第二进程可以根据该地址读取该数据。可选地,每个子集合均可以将多次写入的地址按照队列的方式进行存储,以保证后续能够按照地址的写入顺序读取地址,进而依次获取地址中的数据。
步骤207、处理器01向第一进程反馈写入完毕指示。
处理器01在将第一进程对应的数据写入内存空间,并将该数据写入的地址写入第二进程对应的子集合后,可以向第一进程反馈写入完毕指示。
步骤208、处理器01接收第一进程触发的第一释放指示,第一释放指示用于指示释放数据所占用的内存空间。
需要说明的是,第一进程在接收到处理器01反馈的写入完毕指示后,若无需再与第二进程通信,可以触发第一释放指示,以指示第一进程当前不需要使用该内存空间,以及指示处理器01释放该第一进程对应的数据所占用的内存空间。
步骤209、在多个进程中的第二进程触发读数据请求时,处理器01根据第二集合中的地址读取数据,并反馈给第二进程。
可选地,每个进程(如第二进程)可以每隔预设时长触发一个读数据请求,或者,处理器01在每个进程对应的子集合中存储了地址后,可以向该进程发送指示,以使该进程触发一个读数据请求,本发明实施例对此不作限定。
当处理器01捕获到第二进程触发的读数据请求时,处理器01需要在第二集合中查找第二进程对应的子集合,并读取该子集合中存入的地址上的数据,并将读取到的数据反馈给第二进程。由于处理器01在分配给第一进程的内存空间中写入第一进程对应的数据后,还向第二进程对应的子集合中写入了该数据写入该内存空间的地址,因此,在步骤209中,处理器01可以根据第二进程对应的子集合中的地址,读取并向第二进程反馈该第一进程对应的数据,从而实现第一进程通过该共享内存将该数据发送至第二进程,实现第一进程与第二进程的通信。
步骤210、处理器01接收第二进程触发的第二释放指示,第二释放指示用于指示释放第一进程对应的数据所占用的内存空间。
在处理器01将第一进程对应的数据反馈至第二进程后后,第二进程若无需再与第一进程通信,就可以触发第二释放指示,以指示处理器01第二进程当前无需使用分配给第一进程的内存空间,并指示释放该数据所占用的内存空间。
需要说明的是,本发明实施例以在处理器01向第一进程反馈写入完毕指示后,第一进程无需与第二进程通信,且在处理器01将第一进程对应的数据反馈至第二进程后后,第二进程就触发第二释放指示为例。
可选地,在处理器01将第一进程对应的数据反馈至第二进程后,第二进程还可以根据该数据向处理器01触发数据写入请求,以使得处理器01根据该数据写入请求,在分配给第一进程的内存空间上写入第二进程对应的数据,以及将第二进程对应的数据写入的地址写入第一进程对应的子集合。之后,处理器01在接收到第一进程触发的数据读取请求时,可以根据第一进程对应的子集合中的地址读取数据,并反馈给第一进程,从而实现第一进程与第二进程通过共享内存的再次通信。第一进程和第二进程还可以通过该共享内存进行更多次的通信,本发明实施例对此不作限定。一旦第一进程确定无需与第二进程通信,就可以触发第一释放指示,一旦第二进程确定无需与第一进程通信,第二进程就可以触发第二释放指示。
步骤211、处理器01在接收第一释放指示和第二释放指示之后,删除第一进程对应的数据,并释放分配给第一进程的内存空间。
处理器01在接收到每个释放指示后,需要检测是否接收到所有使用该内存空间的进程发送的释放指示,并在接收到这些释放指示后才可以对该内存空间进行释放,以防止在部分进程需要释放某一内存空间,而部分进程正在使用该内存空间时,释放该内存空间而造成数据的丢失。
示例的,处理器01在接收到第一进程触发的第一释放指示,以及第二进程触发的第二释放指示后,可以确定当前使用分配给第一进程的内存空间的进程均无需使用该内存空间,此时可以删除第一进程对应的数据,并释放该内存空间,以将该内存空间变为第一集合中的可分配空间,便于可以将该内存空间分配给其他进程。处理器01在释放分配给第一进程的内存空间时,可以根据该内存空间的第三信息,确定在该内存空间属于可分配空间时,用于管理该内存空间的空闲链表,并在该空闲链表中添加记录有该内存空间的非头结点。
综上所述,本发明实施例中,在第一进程与第二进程通信时,处理器01仅需将第一进程对应的数据写入内存空间,并将该数据写入的地址写入第二进程对应的子集合,从而通过该子集合实现第一进程和第二进程之间信息的传递,且整个过程中无需对该第一进程对应的数据进行拷贝,因此进程间通信的效率较高。
可选地,本发明实施例中处理器01还可以实时的监测进程是否崩溃,并对崩溃的进程所执行的操作进行回退,以及将分配给崩溃的进程的内存空间进行回收,以防止内存泄漏。如图9所示,该内存管理方法还可以包括:
步骤301、处理器01检测第一进程是否崩溃。若检测到第一进程崩溃,则执行步骤302;若未检测到第一进程崩溃,则执行步骤301。
处理器01可以实时的(或者每隔一段时间)对第一进程是否崩溃进行检测。
步骤302、处理器01判断处理器01是否正在根据第一进程的触发对任一空闲链表进行修改。若确定处理器01正在根据第一进程的触发对任一空闲链表进行修改,则执行步骤303;若确定处理器01并未正在根据第一进程的触发对任一空闲链表进行修改,则执行步骤304。
示例地,处理器01对空闲链表进行修改可以包括:在空闲链表中增加非头结点,或从空闲链表中移除非头结点。
步骤303、处理器01将该任一空闲链表回退至修改前的状态。执行步骤304。
处理器01若确定正在根据第一进程的触发对某一空闲链表进行修改,则可以根据已经对该空闲链表进行的修改,将该空闲链表回退至该修改发生前的状态。
示例地,假设在第一进程崩溃时,处理器01正在根据第一进程的触发,在某一空闲链表中增加一个结点。当该空闲链表仅包括头结点时,处理器01在该空闲链表中增加一个非头结点共需要修改四个指针,这四个指针分别为头结点中的两个指针,以及增加的一个非头结点中的两个指针。当该空闲链表不仅包括头结点还包括非头结点时,处理器01在该空闲链表中增加一个非头结点共需要修改六个指针,这六个指针分别为头结点中的两个指针,最后一个非头结点的两个指针,以及增加的一个非头结点中的两个指针。在步骤303中,处理器01需要将根据第一进程的触发修改过的指针(如上述四个指针中修改过的指针,或者上述六个指针中修改过的指针)均回退至修改前的状态,从而使得空闲链表回退至修改前的状态。
步骤304、处理器01判断第一集合中是否存在被分配至第一进程的目标内存空间。若第一集合中存在目标内存空间,则执行步骤305。若第一集合中不存在目标内存空间,则执行步骤301。
处理器01在内存中记录了多个单位内存空间的状态信息,其中,该状态信息包括:用于指示单位内存空间是否被分割的第一信息,用于指示单位内存空间是否被分配至进程的第二信息,以及用于管理单位内存空间的空闲链表的第三信息,且在单位内存空间被分配至进程时,该状态信息还包括:用于指示该单位内存空间被分配至的进程的第四信息。并在每个单位内存空间的状态发生改变时,处理器01需要对其状态信息进行调整。在步骤304中处理器01还可以根据记录的第一信息,确定第一集合中是否存在未被分割的至少一个单位内存空间。当存在该至少一个单位内存空间时,处理器01根据该至少一个单位内存空间的第四信息,判断这些单位内存空间中是否存在分配至第一进程的目标内存空间。
步骤305、处理器01删除目标内存空间上的数据,并释放目标内存空间。
处理器01在释放目标内存空间时,可以根据记录的目标内存空间的第三信息,确定在该目标内存空间属于可分配空间时,用于管理目标内存空间的空闲链表,并在该空闲链表中添加记录有该目标内存空间的非头结点。
综上所述,本发明实施例提供的内存管理方法中,处理器预先从内存中分配了一大块共享内存,之后,处理器可以将该共享内存中的内存空间分配给进程,以使得进程间可以通过该内存空间进行通信。由于每个进程在与其他进程通信所使用的内存空间均为从预先分配的共享内存中分配得到的,因此处理器无需从内存中为每个进程分配共享内存,减少了为进程分配内存所需的时间,提高了进程对共享内存的读写效率,提高了进程间通信的效率。
需要说明的是,本发明实施例中进行通信的多个进程可以包括:服务器本地的进程,可选的,该多个进程还可以包括容器中的进程和虚拟机中的进程中的至少一种进程。通常这三种能够在内存中访问的库相互独立,因此相关技术中这三种进程中的任意两种进程无法通信。为了使这三种进程中的任意两种进程进行通信,相关技术中还可以将内存中划分出一个能够被这三种进程中的任意两种进程访问的库(这个库处于内核态),但是,一旦这个库出现问题,就会影响整个内存的稳定性。而本发明实施例中,处理器预先在内存中分配了共享内存,使该共享内存已经从内存中分配出去(该共享内存处于用户态),因此该共享内存能够被这三种进程访问,从而能够实现上述三种进程中任意两种进程的通信。并且,由于该共享内存已经从内存中分配出去,因此,在该共享内存出现问题时,并不会影响内存中剩余部分的稳定性。
另外,本发明实施例中处理器可以自由地设置空闲链表管理可分配空间的粒度,因此,可以统计大多数进程所需的内存容量,将空闲链表管理可分配空间的最小粒度设置为该内存容量,从而能够快速地在共享内存中查找到能够分配给进程的单位内存空间,进一步地提高进程间通信的效率。
图10为本发明实施例提供的一种内存管理装置的结构示意图,该内存管理装置可以应用于图1中服务器中的处理器01,如图10所示,该内存管理装置10可以包括:
统计模块101,用于统计处理器上运行的多个进程所需的总共享内存容量;
第一分配模块102,用于根据所需的总内存容量从内存中分配共享内存,共享内存的容量大于或等于多个进程所需的总共享内存容量;
获取模块103,用于获取多个进程中的第一进程触发的内存分配请求;
第二分配模块104,用于响应于内存分配请求,从共享内存中为第一进程分配内存空间。
综上所述,本发明实施例提供的内存管理装置中,第一分配模块预先从内存中分配了一大块共享内存,之后,第二分配模块可以将该共享内存中的内存空间分配给进程,以使得进程间可以通过该内存空间进行通信。由于每个进程在与其他进程通信所使用的内存空间均为从预先分配的共享内存中分配得到的,因此处理器无需从内存中为每个进程分配共享内存,减少了为进程分配内存所需的时间,提高了进程对共享内存的读写效率,提高了进程间通信的效率。
可选的,共享内存包括第一集合和第二集合,第二分配模块104可以包括:分配子模块,用于从第一集合中为第一进程分配内存空间;图11为本发明实施例提供的另一种内存管理装置的结构示意图,如图11所示,在图10的基础上,该内存管理装置还可以包括:
写入模块105,用于将第一进程对应的数据写入内存空间;
保存模块106,用于将内存空间中数据写入的地址保存在第二集合中;
读取模块107,用于在多个进程中的第二进程触发读数据请求时,根据第二集合中的地址读取数据,并反馈给第二进程。
可选的,内存中保存有至少两个空闲链表,至少两个空闲链表用于以不同粒度管理第一集合中的可分配空间;上述分配子模块用于:根据第一进程所需的内存容量从至少两个空闲链表选择目标链表;从目标链表管理的可分配空间中为第一进程分配内存空间。
可选的,第二集合包含多个子集合,其中,每个子集合与多个进程中的每个进程对应;保存模块106可以用于:将内存空间中数据写入的地址保存在第二进程对应的子集合中。
可选的,内存管理装置10还可以包括:
第一接收模块108,用于接收第一进程触发的第一释放指示,第一释放指示用于指示释放数据所占用的内存空间;
第二接收模块109,用于接收第二进程触发的第二释放指示,第二释放指示用于指示释放数据所占用的内存空间;
释放模块110,用于在接收第一释放指示和第二释放指示之后,删除数据,并释放内存空间。
综上所述,本发明实施例提供的内存管理装置中,第一分配模块预先从内存中分配了一大块共享内存,之后,第二分配模块可以将该共享内存中的内存空间分配给进程,以使得进程间可以通过该内存空间进行通信。由于每个进程在与其他进程通信所使用的内存空间均为从预先分配的共享内存中分配得到的,因此处理器无需从内存中为每个进程分配共享内存,减少了为进程分配内存所需的时间,提高了进程对共享内存的读写效率,提高了进程间通信的效率。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现,所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机的可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线)或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(例如,软盘、硬盘、磁带)、光介质,或者半导体介质(例如固态硬盘)等。
需要说明的是,本发明实施例提供的方法实施例能够与相应的装置实施例相互参考,本发明实施例对此不做限定。本发明实施例提供的方法实施例步骤的先后顺序能够进行适当调整,步骤也能够根据情况进行相应增减,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化的方法,都应涵盖在本发明的保护范围之内,因此不再赘述。
以上所述仅为本申请的可选实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (10)
1.一种内存管理方法,其特征在于,所述方法应用于服务器中的处理器,所述服务器还包括内存,所述方法包括:
统计所述处理器上运行的多个进程所需的总共享内存容量;
根据所述所需的总内存容量从所述内存中分配共享内存,所述共享内存的容量大于或等于所述多个进程所需的总共享内存容量;所述共享内存包括第一集合和第二集合;
获取所述多个进程中的第一进程触发的内存分配请求;
响应于所述内存分配请求,从所述第一集合中为所述第一进程分配内存空间;
将所述第一进程对应的数据写入所述内存空间;
将所述内存空间中所述数据写入的地址保存在所述第二集合中;
在所述多个进程中的第二进程触发读数据请求时,根据所述第二集合中的所述地址读取所述数据,并反馈给所述第二进程。
2.根据权利要求1所述的方法,其特征在于,所述内存中保存有至少两个空闲链表,所述至少两个空闲链表用于以不同粒度管理所述第一集合中的可分配空间;
所述从所述第一集合中为所述第一进程分配内存空间,包括:
根据所述第一进程所需的内存容量从所述至少两个空闲链表选择目标链表;
从所述目标链表管理的可分配空间中为所述第一进程分配内存空间。
3.根据权利要求1所述的方法,其特征在于,所述第二集合包含多个子集合,其中,每个子集合与所述多个进程中的每个进程对应;
所述将所述内存空间中所述数据写入的地址保存在所述第二集合中,包括:将所述内存空间中所述数据写入的地址保存在所述第二进程对应的子集合中。
4.根据权利要求1至3任一所述的方法,其特征在于,所述方法还包括:
接收所述第一进程触发的第一释放指示,所述第一释放指示用于指示释放所述数据所占用的内存空间;
接收所述第二进程触发的第二释放指示,所述第二释放指示用于指示释放所述数据所占用的内存空间;
在接收所述第一释放指示和所述第二释放指示之后,删除所述数据,并释放所述内存空间。
5.一种内存管理装置,其特征在于,所述内存管理装置应用于服务器中的处理器,所述服务器还包括内存,所述内存管理装置包括:
统计模块,用于统计所述处理器上运行的多个进程所需的总共享内存容量;
第一分配模块,用于根据所述所需的总内存容量从所述内存中分配共享内存,所述共享内存的容量大于或等于所述多个进程所需的总共享内存容量;所述共享内存包括第一集合和第二集合;
获取模块,用于获取所述多个进程中的第一进程触发的内存分配请求;
第二分配模块,用于响应于所述内存分配请求,从所述第一集合中为所述第一进程分配内存空间;
写入模块,用于将所述第一进程对应的数据写入所述内存空间;
保存模块,用于将所述内存空间中所述数据写入的地址保存在所述第二集合中;
读取模块,用于在所述多个进程中的第二进程触发读数据请求时,根据所述第二集合中的所述地址读取所述数据,并反馈给所述第二进程。
6.根据权利要求5所述的内存管理装置,其特征在于,所述内存中保存有至少两个空闲链表,所述至少两个空闲链表用于以不同粒度管理所述第一集合中的可分配空间;
所述分配子模块用于:
根据所述第一进程所需的内存容量从所述至少两个空闲链表选择目标链表;
从所述目标链表管理的可分配空间中为所述第一进程分配内存空间。
7.根据权利要求5所述的内存管理装置,其特征在于,所述第二集合包含多个子集合,其中,每个子集合与所述多个进程中的每个进程对应;
所述保存模块用于:将所述内存空间中所述数据写入的地址保存在所述第二进程对应的子集合中。
8.根据权利要求5至7任一所述的内存管理装置,其特征在于,所述内存管理装置还包括:
第一接收模块,用于接收所述第一进程触发的第一释放指示,所述第一释放指示用于指示释放所述数据所占用的内存空间;
第二接收模块,用于接收所述第二进程触发的第二释放指示,所述第二释放指示用于指示释放所述数据所占用的内存空间;
释放模块,用于在接收所述第一释放指示和所述第二释放指示之后,删除所述数据,并释放所述内存空间。
9.一种服务器,其特征在于,所述服务器包括:处理器和内存,所述处理器包括权利要求5至8任一所述的内存管理装置。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有指令,当所述计算机可读存储介质在计算机上运行时,使得计算机执行如权利要求1至4任一所述的内存管理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810975221.9A CN110858162B (zh) | 2018-08-24 | 2018-08-24 | 内存管理方法及装置、服务器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810975221.9A CN110858162B (zh) | 2018-08-24 | 2018-08-24 | 内存管理方法及装置、服务器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110858162A CN110858162A (zh) | 2020-03-03 |
CN110858162B true CN110858162B (zh) | 2022-09-23 |
Family
ID=69636300
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810975221.9A Active CN110858162B (zh) | 2018-08-24 | 2018-08-24 | 内存管理方法及装置、服务器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110858162B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20240054015A1 (en) * | 2022-08-11 | 2024-02-15 | Next Silicon Ltd | Memory management in a multi-processor environment |
US12020069B2 (en) * | 2022-08-11 | 2024-06-25 | Next Silicon Ltd | Memory management in a multi-processor environment |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111488123B (zh) * | 2020-04-07 | 2022-11-04 | Tcl移动通信科技(宁波)有限公司 | 存储空间管理方法、装置、存储介质及移动终端 |
CN112669852B (zh) * | 2020-12-15 | 2023-01-31 | 北京百度网讯科技有限公司 | 内存分配方法、装置及电子设备 |
CN112995610A (zh) * | 2021-04-21 | 2021-06-18 | 浙江所托瑞安科技集团有限公司 | 共享内存在多路视频监控中运用的方法 |
CN115878343A (zh) * | 2021-09-29 | 2023-03-31 | 华为技术有限公司 | 一种进程间通信方法及相关装置 |
CN114327868B (zh) * | 2021-12-08 | 2023-12-26 | 中汽创智科技有限公司 | 一种内存动态调控方法、装置、设备及介质 |
CN114385370B (zh) * | 2022-01-18 | 2022-10-25 | 重庆紫光华山智安科技有限公司 | 内存分配方法、***、设备及介质 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020032844A1 (en) * | 2000-07-26 | 2002-03-14 | West Karlon K. | Distributed shared memory management |
CN103425592B (zh) * | 2013-08-05 | 2016-08-10 | 大唐移动通信设备有限公司 | 一种多进程***中的内存管理方法及装置 |
CN104980454B (zh) * | 2014-04-02 | 2019-08-06 | 腾讯科技(深圳)有限公司 | 一种资源数据共享方法、服务器及*** |
WO2016127291A1 (zh) * | 2015-02-09 | 2016-08-18 | 华为技术有限公司 | 内存管理装置和方法 |
CN106681842A (zh) * | 2017-01-18 | 2017-05-17 | 迈普通信技术股份有限公司 | 一种多进程***中共享内存的管理方法及装置 |
-
2018
- 2018-08-24 CN CN201810975221.9A patent/CN110858162B/zh active Active
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20240054015A1 (en) * | 2022-08-11 | 2024-02-15 | Next Silicon Ltd | Memory management in a multi-processor environment |
US12020069B2 (en) * | 2022-08-11 | 2024-06-25 | Next Silicon Ltd | Memory management in a multi-processor environment |
Also Published As
Publication number | Publication date |
---|---|
CN110858162A (zh) | 2020-03-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110858162B (zh) | 内存管理方法及装置、服务器 | |
US11474972B2 (en) | Metadata query method and apparatus | |
US11461027B2 (en) | Deduplication-aware load balancing in distributed storage systems | |
US11262916B2 (en) | Distributed storage system, data processing method, and storage node | |
US10120588B2 (en) | Sliding-window multi-class striping | |
JP7467593B2 (ja) | リソース割振り方法、記憶デバイス、および記憶システム | |
US11314454B2 (en) | Method and apparatus for managing storage device in storage system | |
CN103324533A (zh) | 分布式数据处理方法、装置及*** | |
CN113396566B (zh) | 分布式存储***中基于全面i/o监测的资源分配 | |
WO2022120522A1 (zh) | 内存空间的分配方法、装置及存储介质 | |
WO2024099448A1 (zh) | 内存释放、内存恢复方法、装置、计算机设备及存储介质 | |
US9934248B2 (en) | Computer system and data management method | |
CN111190537B (zh) | 一种追加写场景下顺序存储磁盘管理的方法及*** | |
US11231964B2 (en) | Computing device shared resource lock allocation | |
CN109960662A (zh) | 一种内存回收方法及设备 | |
CN117215485A (zh) | Zns ssd管理方法及数据写入方法、存储装置、控制器 | |
CN106537321B (zh) | 存取文件的方法、装置和存储*** | |
CN114785662B (zh) | 一种存储管理方法、装置、设备及机器可读存储介质 | |
CN107102898B (zh) | 一种基于numa架构的内存管理、构建数据结构的方法及装置 | |
CN115756838A (zh) | 内存释放、内存恢复方法、装置、计算机设备及存储介质 | |
CN115904211A (zh) | 一种存储***、数据处理方法及相关设备 | |
CN113391757B (zh) | 一种节点扩展方法、装置及迁入节点 | |
CN115509437A (zh) | 存储***、网卡、处理器、数据访问方法、装置及*** | |
CN113741787B (zh) | 一种数据存储方法、装置、设备、介质 | |
CN113312522B (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 |