CN107102900A - 一种共享内存空间的管理方法 - Google Patents

一种共享内存空间的管理方法 Download PDF

Info

Publication number
CN107102900A
CN107102900A CN201610097234.1A CN201610097234A CN107102900A CN 107102900 A CN107102900 A CN 107102900A CN 201610097234 A CN201610097234 A CN 201610097234A CN 107102900 A CN107102900 A CN 107102900A
Authority
CN
China
Prior art keywords
chained list
list node
shared memory
data
memory space
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.)
Granted
Application number
CN201610097234.1A
Other languages
English (en)
Other versions
CN107102900B (zh
Inventor
李永海
廖军
沈凯立
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Datang Mobile Communications Equipment Co Ltd
Original Assignee
Datang Mobile Communications Equipment Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Datang Mobile Communications Equipment Co Ltd filed Critical Datang Mobile Communications Equipment Co Ltd
Priority to CN201610097234.1A priority Critical patent/CN107102900B/zh
Publication of CN107102900A publication Critical patent/CN107102900A/zh
Application granted granted Critical
Publication of CN107102900B publication Critical patent/CN107102900B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开一种共享内存空间的管理方法,包括:基于预设的链表模式,将待管理的共享内存空间初始化为公共区和私有区,且在私有区中初始化一块属性区,并将链表模式对应的链表结点的属性存放到属性区;在接收到一条待写入的数据时,从私有区的非属性区为该条数据申请一个链表结点空间;将该条数据写入到该链表结点的数据域,并在该链表结点的指针域记录与该链表结点相关的链表结点相对共享内存空间的首地址的地址偏移量。相比现有技术,本发明公开的共享内存空间的管理方法,利用链表结点的指针域记录相对共享内存空间首地址的地址偏移量,用以模拟链表结构,对共享内存空间实现灵活、高效的管理。

Description

一种共享内存空间的管理方法
技术领域
本发明涉及计算机技术领域,具体涉及一种共享内存空间的管理方法。
背景技术
进程是计算机进行资源分配和调度的基本单位,进程是一个实体。共享内存(shared memory,shm)是被多个进程共享的逻辑内存区域。每个进程将共享内存空间地址映射到各自的逻辑地址空间中,一个进程向共享内存空间写入了数据,使用共享内存空间的其他进程就可以看到该数据,从而实现进程间通信(Inter ProcessCommunication,IPC)。由于进程可以直接读写内存,不需要复制数据,因此使用共享内存空间通信是进程间通信(Inter ProcessCommunication,IPC)最有效的方式;此外,共享内存空间还可以缓存大数据。
由于共享内存空间在各进程的地址空间中的地址不同,因此,共享内存空间中只能存放数据,不能存放指针。在共享内存空间中使用相对共享内存空间首地址的地址偏移量来模拟指针。
共享内存空间的使用有如下几个特点:可以被多个进程打开访问;读写操作的进程在执行读写操作时其他进程不能进行读写操作;多个进程可以交替对共享内存空间执行写操作;一个进程执行了共享内存空间的写操作后,不影响其他进程对该共享内存空间的访问,同时其他进程对更新后的内存具有可见性。共享内存空间的使用需要通过信号量、全局锁通过、管道消息或IPC消息等来保证读写之间的同步。
传统的共享内存空间的管理方法只是单纯停留在地址偏移量的移动,来存储和读取数据,不仅使用上不灵活,多次读写后,地址偏移量的大小不好控制,因此很难发挥共享内存空间的作用。
发明内容
针对现有技术的缺陷,本发明提供一种共享内存空间的管理方法及系统,以解决现有共享内存空间管理技术单纯停留在偏移量的移动来存储和读取数据,不仅使用上不灵活,多次读写后,偏移量的大小不好控制,很难发挥共享内存空间的作用的技术问题。
为此目的,本发明提出一种共享内存空间的管理方法,包括:
基于预设的链表模式,将待管理的共享内存空间初始化为公共区和私有区,且在所述私有区中初始化一块属性区,并将所述链表模式对应的链表结点的属性存放到所述属性区;
在接收到一条待写入的数据时,从所述私有区的非属性区为该条数据申请一个链表结点;
将该条数据写入到该链表结点的数据域,并在该链表结点的指针域记录与该链表结点相关的链表结点相对所述共享内存空间的首地址的地址偏移量。
可选的,所述链表模式为容器vector;
相应地,所述将所述链表模式对应的链表结点属性存放到所述属性区,包括:
将链表结点的数据域预设的数据条数、每条数据预设的最大长度、第一个链表结点的指针域相对于共享内存空间的首地址的地址偏移量以及当前使用的链表结点的指针域相对于共享内存空间的首地址的地址偏移量存放到所述属性区。
可选的,所述从所述私有区的非属性区为该条数据申请一个链表结点空间,包括:
从所述私有区的非属性区为该条数据申请一个数据域大小为预设页大小的链表结点空间,所述预设页大小由所述链表结点的数据域预设的数据条数以及每条数据预设的最大长度确定。
可选的,所述在该链表结点的指针域记录与该链表结点相关的链表结点相对所述共享内存空间的首地址的地址偏移量,包括:
在该链表结点的指针域记录该链表结点的数据域相对所述共享内存空间的首地址的地址偏移量、前一链表结点的指针域相对所述共享内存空间的首地址的地址偏移量以及后一链表结点的指针域相对所述共享内存空间的首地址的地址偏移量。
可选的,所述从所述私有区的非属性区为该条数据申请一个链表结点空间之前,所述共享内存空间管理方法还包括:
判断当前使用的链表结点的数据域写入的数据条数是否达到预设的数据条数;
若是,则执行所述从所述私有区的非属性区为该条数据申请一个链表结点空间的步骤;
相应地,所述将该条数据写入到该链表结点的数据域,包括:
将该条数据写入到该链表结点的数据域的第一条数据中。
可选的,所述从所述私有区的非属性区为该条数据申请一个链表结点空间之后,所述共享内存空间的管理方法还包括:
将申请的链表结点空间的数据域相对于共享内存空间的首地址的地址偏移量存放到预先创建的栈空间中。
可选的,所述链表模式为表list;
相应地,所述在所述私有区中初始化一块属性区,包括:
在所述私有区中初始化一块具有N个归类标识Slot空间的属性区,所述N为Slot的预设个数,所述Slot空间用于存放该Slot当前使用的链表结点的指针域相对所述共享内存空间的首地址的地址偏移量;
相应地,所述将所述链表模式对应的链表结点属性存放到所述属性区,包括:
将第一个链表结点的数据域相对所述共享内存空间的首地址的地址偏移量、最后一个链表结点的数据域相对所述共享内存空间的首地址的地址偏移量存放到所述属性区的非Slot空间中。
可选的,所述从所述私有区的非属性区为该条数据申请一个链表结点空间,包括:
从所述私有区的非属性区为该条数据申请一个数据域长度为该条数据长度的链表结点空间。
可选的,所述将该条数据写入到该链表结点的数据域之前,所述共享内存空间的管理方法还包括:
基于预设的哈希规则哈希该条数据,得到该条数据的哈希值;
基于各Slot预设的哈希值范围,确定该条数据的哈希值所属的目标哈希值范围,得到目标Slot空间;
将该链表结点的指针域相对所述共享内存空间的首地址的地址偏移量存放到所述目标Slot空间中。
可选的,所述在该链表结点的指针域记录与该链表结点相关的链表结点相对所述共享内存空间的首地址的地址偏移量,包括:
在该链表结点的指针域记录该链表结点的数据域相对所述共享内存空间的首地址的地址偏移量、与该链表结点同属一个Slot的前一链表结点的指针域相对所述共享内存空间的首地址的地址偏移量以及后一链表结点的指针域相对所述共享内存空间的首地址的地址偏移量。
相比于现有技术,本发明的共享内存空间的管理方法,利用链表结点的指针域记录相对共享内存空间首地址的地址偏移量,用以模拟链表结构,对共享内存空间实现灵活、高效的管理。
附图说明
图1为本发明第一实施例提供的一种共享内存空间的管理方法流程图;
图2为本发明第二实施例提供的一种共享内存空间的管理方法流程图;
图3为本发明第三实施例提供的一种共享内存空间的管理方法流程图;
图4为本发明第四实施例提供的一种共享内存空间的管理方法流程图;
图5为本发明第五实施例提供的一种共享内存空间的管理方法流程图;
图6为本发明第六实施例提供的一种共享内存空间的管理方法流程图;
图7为本发明第七实施例提供的一种共享内存空间的管理方法流程图;
图8为本发明第八实施例提供的一种共享内存空间的管理方法流程图;
图9为本发明第九实施例提供的一种共享内存空间的管理方法流程图;
图10为本发明第十实施例提供的一种共享内存空间的管理方法流程图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。
如图1所示,本实施例公开一种共享内存空间的管理方法,可包括以下步骤101至103:
101、基于预设的链表模式,将待管理的共享内存空间初始化为公共区和私有区,且在所述私有区中初始化一块属性区,并将所述链表模式对应的链表结点的属性存放到所述属性区。
本实施例的管理方法的执行主体可以创建所述待管理的共享内存空间,当然,待管理的共享内存空间也可由其他进程创建。每创建一个共享内存空间,也即得到一个共享内存空间对象,在创建一个共享内存空间后要为其增加标识,也即该共享内存空间对象有唯一对象名称用于标识该共享内存空间对象。
本实施例的的管理方法,将待管理的共享内存空间初始化为公共区和私有区后,可以将待管理的共享内存空间的信息存储到公共区,共享内存空间的信息可包括:共享内存空间对象名称及共享内存空间的首地址等。
本实施例的管理方法中,预设的链表模式可为用户从多个预设的链表模式中任选的一个链表模式,也可为本实施例的管理方法的执行主体预先配置的链表模式。
102、在接收到一条待写入的数据时,从所述私有区的非属性区为该条数据申请一个链表结点空间。
私有区的非属性区用来存放数据及其相关信息,因此,私有区的非属性区也可称为数据区。
103、将该条数据写入到该链表结点的数据域,并在该链表结点的指针域记录与该链表结点相关的链表结点相对所述共享内存空间的首地址的地址偏移量。
本实施例中,步骤103执行后,可进一步地更新公共区中存放的信息,例如:共享内存空间中已存放的数据条数及共享内存空间容量等。
本实施例的共享内存空间的管理方法,采用链表模式,链表结点的指针域记录相对共享内存空间首地址的地址偏移量,从而实现高效灵活的共享内存空间管理。
在一个具体的例子中,可将公共区进一步初始化为共享内存空间环境管理区和对象管理区。
具体地,共享内存空间环境管理区中可存储的信息可包括:共享内存空间环境管理区标识、共享内存空间环境管理区版本号、共享内存空间环境管理区创建日期、共享内存空间长度(以字节计算)、共享内存空间已使用空间(以字节计算)、共享内存空间环境锁、共享内存空间对象字典表、共享内存空间环境管理区占用空间(以字节计算)、共享内存空间环境管理区结束位置。
对象管理区中可存储的信息可包括:共享内存空间对象类型定义、对象名称、对象在内存中的偏移位置、对象占用内存字节数、对象容量、对象中已保存数据条数。
如图2所示,本实施例公开一种共享内存空间的管理方法,可包括以下步骤201至203:
201、基于预设的链表模式:容器vector,将待管理的共享内存空间初始化为公共区和私有区,且在所述私有区中初始化一块属性区,将链表结点的数据域预设的数据条数、每条数据预设的最大长度、第一个链表结点的指针域相对于共享内存空间的首地址的地址偏移量以及当前使用的链表结点的指针域相对于共享内存空间的首地址的地址偏移量存放到所述属性区。
步骤202~203与图1所示的步骤102~103相同,在此不再赘述。
本实施例的共享内存空间的管理方法,采用链表模式:容器vector,将共享内存空间以页的方式进行管理,即每个链表结点的数据域的大小为页大小,并在初始化共享内存空间时即确定页大小,链表结点的指针域可称为页信息域,链表结点的数据域可称为页数据域,从而实现高效灵活的共享内存空间管理。
在一个具体的例子中,步骤201中在所述私有区中初始化一块属性区的同时也可申请一个链表结点空间。步骤201中属性区中还保存以下信息:页数(即页数据域个数)。
由于在初始化时申请了一个链表结点空间,则页数为1,后续每申请一个链表结点空间,则页数加1。
如图3所示,本实施例公开一种共享内存空间的管理方法,可包括以下步骤301至303:
步骤301与图2所示的步骤201相同,在此不再赘述。
302、在接收到一条待写入的数据时,从所述私有区的非属性区为该条数据申请一个数据域大小为预设页大小的链表结点空间,所述预设页大小由所述链表结点的数据域预设的数据条数以及每条数据预设的最大长度确定。
步骤303与图2所示的步骤203相同,在此不再赘述。
本实施例的共享内存空间的管理方法,采用链表模式:容器vector,在申请链表结点空间时,链表结点的数据域的大小是固定的即预设的页大小,以页的方式对共享内存空间进行管理,从而实现高效灵活的共享内存空间管理。
如图4所示,本实施例公开一种共享内存空间的管理方法,可包括以下步骤401至404:
步骤401~402与图2所示的步骤201~202相同,在此不再赘述。
403、将该条数据写入到该链表结点的数据域,并在该链表结点的指针域记录该链表结点的数据域相对所述共享内存空间的首地址的地址偏移量、前一链表结点的指针域相对所述共享内存空间的首地址的地址偏移量以及后一链表结点的指针域相对所述共享内存空间的首地址的地址偏移量。
本实施例的共享内存空间的管理方法,采用链表模式:容器vector,在将一条数据写入到链表结点的数据域后,在该链表结点的指针域记录与该链表结点相关的链表结点相对所述共享内存空间的首地址的地址偏移量,方便寻找待读取的数据,从而实现高效灵活的共享内存空间管理。
进一步地,本实施例的共享内存空间的管理方法,采用链表模式:容器vector,链表结点的指针域可称为页信息域,链表结点的数据域可称为页数据域,有效的将页信息域和页数据域解耦,在页数据域增加数据更方便,删除数据从末尾开始。
如图5所示,本实施例公开一种共享内存空间的管理方法,可包括以下步骤501至505:
步骤501与图2所示的步骤201相同,在此不再赘述。
502、在接收到一条待写入的数据时,判断当前使用的链表结点的数据域写入的数据条数是否达到预设的数据条数;若是,则执行步骤503~504;若否,则执行步骤505。
503、从所述私有区的非属性区为该条数据申请一个链表结点空间。
504、将该条数据写入到该链表结点的数据域的第一条数据中,并在该链表结点的指针域记录与该链表结点相关的链表结点相对所述共享内存空间的首地址的地址偏移量。
505、将该条数据写入到当前使用的链表结点的数据域中。
具体地,可将该条数据写入到当前使用的链表结点的数据域的已写入数据中最末条数据之后,例如:链表结点的数据域可存放30条数据,已写入了15条数据,则来一条数据,就写入到第16条中。若已写入的15条数据中第2条被删除了,则来一条数据,也是写到第16条中,方便管理。
本实施例的共享内存空间的管理方法,采用链表模式:容器vector,以页的方式对共享内存空间进行管理,在接收到一条待写入的数据时,判断当前使用的链表结点的数据域(页)是否用完,若用完则申请新的链表结点空间,若未用完,则继续使用,从而实现高效灵活的共享内存空间管理。
如图6所示,本实施例公开一种共享内存空间的管理方法,可包括以下步骤601至604:
步骤601~603与图2所示的步骤201~203相同,在此不再赘述。
步骤604为图2所示的步骤202之后新增的步骤:
605、将申请的链表结点空间的数据域相对于共享内存空间的首地址的地址偏移量存放到预先创建的栈空间中。
本实施例的共享内存空间的管理方法,采用链表模式:容器vector,以页的方式对共享内存空间进行管理,链表结点的指针域可称为页信息域,链表结点的数据域可称为页数据域,由于页数据域分散,本实施例通过预先创建的栈空间来管理页数据域,栈空间中每个存储单元存储一个页数据域相对于共享内存空间的首地址的地址偏移量,从而通过栈空间可以快速访问页数据域任一条数据,从而实现高效灵活的共享内存空间管理。
如图7所示,本实施例公开一种共享内存空间的管理方法,可包括以下步骤701至703:
701、基于预设的链表模式:表list,将待管理的共享内存空间初始化为公共区和私有区,且在所述私有区中初始化一块具有归类标识Slot空间的属性区,所述N为Slot的预设个数,所述Slot空间用于存放该Slot当前使用的链表结点的指针域相对所述共享内存空间的首地址的地址偏移量,并将第一个链表结点的数据域相对所述共享内存空间的首地址的地址偏移量、最后一个链表结点的数据域相对所述共享内存空间的首地址的地址偏移量存放到所述属性区的非Slot空间中。
步骤702~703与图1所示的步骤102~103相同,在此不再赘述。
本实施例的共享内存空间的管理方法,采用链表模式:表list,将共享内存空间分为多个归类标识Slot,每个Slot有Slot空间,这样写入的多条数据被归类到不同的Slot空间,读数据时可基于Slot空间快速找到待读取的数据的位置,从而实现高效灵活的共享内存空间管理。
进一步地,本实施例的共享内存空间的管理方法,采用链表模式:表list,与vector模式不同,list模式在初始化时不需要固定每次增加数据的长度,因此在频繁增加、删除数据的场景可以实现高效的共享内存空间管理。
进一步地,本实施例的共享内存空间的管理方法,采用链表模式:表list,与vector模式相比,vector模式可通过下标方式访问数据,list模式的数据地址不连续,不能通过下标方式来访问数据,速度上没有vector模式快,但是list模式通过Slot对数据归类,不像vector模式具有若干页信息域,因此,可腾出更多空间存放数据,并且可以加快搜索数据的速度。
vector模式通过下标方式访问数据举例如下:
下标为31,则表示要访问第31条数据。
页以0开始编号,则,第31条数据访问的过程如下:31除以30(每页30条)为1余1,前一个1表示数据在第1页,后一个1表示数据在第1条。
页以1开始编号,则,第31条数据访问的过程如下:31除以30(每页30条)为1余1,前一个1表示数据在第2页即商加1,后一个1表示数据在第1条。
如图8所示,本实施例公开一种共享内存空间的管理方法,可包括以下步骤801至803:
步骤801与图7所示的步骤701相同,在此不再赘述。
802、在接收到一条待写入的数据时,从所述私有区的非属性区为该条数据申请一个数据域长度为该条数据长度的链表结点空间。
步骤803与图7所示的步骤703相同,在此不再赘述。
本实施例的共享内存空间的管理方法,采用链表模式:表list,基于写入数据的长度来申请链表结点空间,从而实现高效灵活的共享内存空间管理。
如图9所示,本实施例公开一种共享内存空间的管理方法,可包括以下步骤901至906:
步骤901~902与图7所示的步骤701~702相同,在此不再赘述。
903、基于预设的哈希规则哈希该条数据,得到该条数据的哈希值。
904、基于各Slot预设的哈希值范围,确定该条数据的哈希值所属的目标哈希值范围,得到目标Slot空间。
905、将该链表结点的指针域相对所述共享内存空间的首地址的地址偏移量存放到所述目标Slot空间中。
步骤906与图7所示的步骤703相同,在此不再赘述。
本实施例的共享内存空间的管理方法,采用链表模式:表list,在将一条数据写入到一个链表结点的数据域前,通过采用哈希处理的方式,确定该条数据属于哪个Slot,从而实现高效灵活的共享内存空间管理。
如图10所示,本实施例公开一种共享内存空间的管理方法,可包括以下步骤1001至1003:
步骤1001~1002与图7所示的步骤701~702相同,在此不再赘述。
1003、将该条数据写入到该链表结点的数据域,在该链表结点的指针域记录该链表结点的数据域相对所述共享内存空间的首地址的地址偏移量、与该链表结点同属一个Slot的前一链表结点的指针域相对所述共享内存空间的首地址的地址偏移量以及后一链表结点的指针域相对所述共享内存空间的首地址的地址偏移量。
本实施例的共享内存空间的管理方法,采用链表模式:表list,在链表结点的指针域记录与该链表结点相关的链表结点相对所述共享内存空间的首地址的地址偏移量,从而实现高效灵活的共享内存空间管理。
需要说明的是,实施例中仅举出两种链表模式,本领域技术人员可基于本发明的思想,设计不同的链表模式,实现采用链表模式,链表结点的指针域记录相对共享内存空间首地址的地址偏移量,从而实现高效灵活的共享内存空间管理。
需要说明的是,本领域技术人员可基于实施例公开的共享内存空间的管理方法涉及对应的共享内存空间的管理软件或硬件。
本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。
虽然结合附图描述了本发明的实施方式,但是本领域技术人员可以在不脱离本发明的精神和范围的情况下做出各种修改和变型,这样的修改和变型均落入由所附权利要求所限定的范围之内。

Claims (10)

1.一种共享内存空间的管理方法,其特征在于,包括:
基于预设的链表模式,将待管理的共享内存空间初始化为公共区和私有区,且在所述私有区中初始化一块属性区,并将所述链表模式对应的链表结点的属性存放到所述属性区;
在接收到一条待写入的数据时,从所述私有区的非属性区为该条数据申请一个链表结点空间;
将该条数据写入到该链表结点的数据域,并在该链表结点的指针域记录与该链表结点相关的链表结点相对所述共享内存空间的首地址的地址偏移量。
2.根据权利要求1所述的共享内存空间的管理方法,其特征在于,
所述链表模式为容器vector;
相应地,所述将所述链表模式对应的链表结点属性存放到所述属性区,包括:
将链表结点的数据域预设的数据条数、每条数据预设的最大长度、第一个链表结点的指针域相对于共享内存空间的首地址的地址偏移量以及当前使用的链表结点的指针域相对于共享内存空间的首地址的地址偏移量存放到所述属性区。
3.根据权利要求2所述的共享内存空间的管理方法,其特征在于,
所述从所述私有区的非属性区为该条数据申请一个链表结点空间,包括:
从所述私有区的非属性区为该条数据申请一个数据域大小为预设页大小的链表结点空间,所述预设页大小由所述链表结点的数据域预设的数据条数以及每条数据预设的最大长度确定。
4.根据权利要求2所述的共享内存空间的管理方法,其特征在于,
所述在该链表结点的指针域记录与该链表结点相关的链表结点相对所述共享内存空间的首地址的地址偏移量,包括:
在该链表结点的指针域记录该链表结点的数据域相对所述共享内存空间的首地址的地址偏移量、前一链表结点的指针域相对所述共享内存空间的首地址的地址偏移量以及后一链表结点的指针域相对所述共享内存空间的首地址的地址偏移量。
5.根据权利要求2所述的共享内存空间的管理方法,其特征在于,
所述从所述私有区的非属性区为该条数据申请一个链表结点空间之前,所述共享内存空间的管理方法还包括:
判断当前使用的链表结点的数据域写入的数据条数是否达到预设的数据条数;
若是,则执行所述从所述私有区的非属性区为该条数据申请一个链表结点空间的步骤;
相应地,所述将该条数据写入到该链表结点的数据域,包括:
将该条数据写入到该链表结点的数据域的第一条数据中。
6.根据权利要求2所述的共享内存空间的管理方法,其特征在于,
所述从所述私有区的非属性区为该条数据申请一个链表结点空间之后,所述共享内存空间的管理方法还包括:
将申请的链表结点的数据域相对于共享内存空间的首地址的地址偏移量存放到预先创建的栈空间中。
7.根据权利要求1所述的共享内存空间的管理方法,其特征在于,
所述链表模式为表list;
相应地,所述在所述私有区中初始化一块属性区,包括:
在所述私有区中初始化一块具有N个归类标识Slot空间的属性区,所述N为Slot的预设个数,所述Slot空间用于存放该Slot当前使用的链表结点的指针域相对所述共享内存空间的首地址的地址偏移量;
相应地,所述将所述链表模式对应的链表结点属性存放到所述属性区,包括:
将第一个链表结点的数据域相对所述共享内存空间的首地址的地址偏移量、最后一个链表结点的数据域相对所述共享内存空间的首地址的地址偏移量存放到所述属性区的非Slot空间中。
8.根据权利要求7所述的共享内存空间的管理方法,其特征在于,
所述从所述私有区的非属性区为该条数据申请一个链表结点空间,包括:
从所述私有区的非属性区为该条数据申请一个数据域长度为该条数据长度的链表结点空间。
9.根据权利要求7所述的共享内存空间的管理方法,其特征在于,
所述将该条数据写入到该链表结点的数据域之前,所述共享内存空间的管理方法还包括:
基于预设的哈希规则哈希该条数据,得到该条数据的哈希值;
基于各Slot预设的哈希值范围,确定该条数据的哈希值所属的目标哈希值范围,得到目标Slot空间;
将该链表结点的指针域相对所述共享内存空间的首地址的地址偏移量存放到所述目标Slot空间中。
10.根据权利7所述的共享内存空间的管理方法,其特征在于,
所述在该链表结点的指针域记录与该链表结点相关的链表结点相对所述共享内存空间的首地址的地址偏移量,包括:
在该链表结点的指针域记录该链表结点的数据域相对所述共享内存空间的首地址的地址偏移量、与该链表结点同属一个Slot的前一链表结点的指针域相对所述共享内存空间的首地址的地址偏移量以及后一链表结点的指针域相对所述共享内存空间的首地址的地址偏移量。
CN201610097234.1A 2016-02-22 2016-02-22 一种共享内存空间的管理方法 Active CN107102900B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610097234.1A CN107102900B (zh) 2016-02-22 2016-02-22 一种共享内存空间的管理方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610097234.1A CN107102900B (zh) 2016-02-22 2016-02-22 一种共享内存空间的管理方法

Publications (2)

Publication Number Publication Date
CN107102900A true CN107102900A (zh) 2017-08-29
CN107102900B CN107102900B (zh) 2020-02-07

Family

ID=59658562

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610097234.1A Active CN107102900B (zh) 2016-02-22 2016-02-22 一种共享内存空间的管理方法

Country Status (1)

Country Link
CN (1) CN107102900B (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108496161A (zh) * 2017-09-29 2018-09-04 深圳市大疆创新科技有限公司 数据缓存装置及控制方法、数据处理芯片、数据处理系统
CN110109763A (zh) * 2019-04-12 2019-08-09 厦门亿联网络技术股份有限公司 一种共享内存管理方法及装置
CN110618883A (zh) * 2019-09-26 2019-12-27 迈普通信技术股份有限公司 一种用于共享内存链表的方法、装置、设备及存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7774374B1 (en) * 2004-03-02 2010-08-10 Qlogic Corporation Switching systems and methods using wildcard searching
CN102955817A (zh) * 2011-08-30 2013-03-06 腾讯数码(深圳)有限公司 一种基于共享内存的对象管理与恢复方法及系统
CN103034544A (zh) * 2012-12-04 2013-04-10 杭州迪普科技有限公司 一种用户态与内核态共享内存的管理方法和装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7774374B1 (en) * 2004-03-02 2010-08-10 Qlogic Corporation Switching systems and methods using wildcard searching
CN102955817A (zh) * 2011-08-30 2013-03-06 腾讯数码(深圳)有限公司 一种基于共享内存的对象管理与恢复方法及系统
CN103034544A (zh) * 2012-12-04 2013-04-10 杭州迪普科技有限公司 一种用户态与内核态共享内存的管理方法和装置

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108496161A (zh) * 2017-09-29 2018-09-04 深圳市大疆创新科技有限公司 数据缓存装置及控制方法、数据处理芯片、数据处理系统
CN110109763A (zh) * 2019-04-12 2019-08-09 厦门亿联网络技术股份有限公司 一种共享内存管理方法及装置
CN110618883A (zh) * 2019-09-26 2019-12-27 迈普通信技术股份有限公司 一种用于共享内存链表的方法、装置、设备及存储介质
CN110618883B (zh) * 2019-09-26 2022-09-13 迈普通信技术股份有限公司 一种用于共享内存链表的方法、装置、设备及存储介质

Also Published As

Publication number Publication date
CN107102900B (zh) 2020-02-07

Similar Documents

Publication Publication Date Title
CN104246764B (zh) 利用非均匀散列函数在非均匀访问存储器中放置记录的方法和装置
CN104238963B (zh) 一种数据存储方法、存储装置及存储系统
CN105574104B (zh) 一种基于ObjectStore的LogStructure存储系统及其数据写入方法
CN103136243B (zh) 基于云存储的文件系统去重方法及装置
CN103823865A (zh) 一种数据库主存索引方法
CN102194010B (zh) 虚拟文件系统碎片的零拷贝整理方法
CN104007993A (zh) 一种Linux系统内存敏感数据的清除方法及装置
CN107239569A (zh) 一种分布式文件系统子树存储方法及装置
CN108021513A (zh) 一种数据存储方法及装置
CN106527973A (zh) 一种数据重复删除的方法及装置
CN106599040A (zh) 一种面向云存储的分层索引方法与检索方法
CN104462388B (zh) 一种基于级联式存储介质的冗余数据清理方法
CN105260139B (zh) 一种磁盘管理方法以及系统
CN102184229A (zh) 一种海量rfid标签信息的内存数据存储方法
CN107102900A (zh) 一种共享内存空间的管理方法
US8239427B2 (en) Disk layout method for object-based storage devices
CN109086462A (zh) 一种分布式文件系统中元数据的管理方法
CN107402982A (zh) 数据写入、数据匹配方法、装置及计算设备
CN107408132A (zh) 在列存储中的插入和点查询操作的有效性能
CN107391040A (zh) 一种存储阵列磁盘io调度的方法及装置
CN107133183A (zh) 一种基于tcmu虚拟块设备的缓存数据访问方法及系统
CN110020272A (zh) 缓存方法、装置以及计算机存储介质
CN107609011A (zh) 一种数据库记录的维护方法和装置
CN107092685A (zh) 一种联合使用文件系统和rdbms存储事务数据的方法
CN103348653A (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