System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 一种记忆体扩充与计算机持久记忆体机制及其运行系统技术方案_技高网

一种记忆体扩充与计算机持久记忆体机制及其运行系统技术方案

技术编号:40556076 阅读:12 留言:0更新日期:2024-03-05 19:17
本发明专利技术涉及计算器软件技术领域,具体提供了一种记忆体扩充与计算机持久记忆体机制及其运行系统,基于mmap和C/C++程序语言,具有如下步骤:S1、建立mmap区域和映像的文件档案;S2、自制客订记忆体分配器;S3、忆体分配器的程序开关;S4、辅助宏。与现有技术相比,本发明专利技术能够使得具有16GB记忆体的服务器上托管和运行800GB数据库成为可能。运行时数据和驻留在硬盘中的持久数据融为一体,不再需要在运行时数据格式和持久性数据格式之间进行转换。

【技术实现步骤摘要】

本专利技术涉及计算器软件,具体提供一种记忆体扩充与计算机持久记忆体机制及计算机可读介质。


技术介绍

1、linux中的交换空间在实体记忆体(ram)已满时使用。如果系统需要更多记忆体资源且记忆体已满,记忆体中的非活动页面将移至交换空间。计算机交换空间的目的只是为了缓解系统记忆体空间压力。它并不是为了扩展有效记忆体容量而设计的。

2、linux/posix mmap(2)memory-mapped file-i/o:

3、linux实作了posix标准mmap()系统调用,用于将档案对应到记忆体。mmap()是一个系统调用,用户进程可以使用它来要求操作系统核心将档案映像到该进程的记忆体(即地址空间)。

4、这是mmap()的函数原型:

5、void*mmap(void addr,size_t length,int prot,int flags,

6、int fd,off_t offset);

7、addr-此参数提示操作系统核心使用此地址,虚拟映像应在进程的虚拟记忆体(即虚拟地址空间)中开始。该值可以指定为null,以指示核心可以将虚拟映像放置在它认为合适的任何位置。如果不为null,则addr应该是页面大小的倍数。

8、length-此参数将长度指定为映像的字节数。该长度应该是页面大小的倍数。

9、prot-对映射记忆体的保护。prot的值是以下各单位值的位或:

10、prot_read-使映像记忆体的内容可供进程读取。</p>

11、prot_write-使映像记忆体的内容可由进程写入。

12、prot_exec-使映像记忆体的内容可由程序作为cpu机器指令执行。

13、flags-控制映像的各种选项。下面描述了一些更常见的标志值:

14、map_anonymous(或map_anon)-分配匿名记忆体;这些页面没有任何文件支持。

15、map_file-预设设定;无需指定。映像区域由常规文件支持。

16、map_fixed-不要将addr解释为提示:将映像准确放置在该地址处,该地址必须是页面大小的倍数。

17、map_private-对映像记忆体区域的修改对于映像相同档案的其他进程不可见。

18、map_shared-对映像记忆体区域的修改对于映像同一文件的其他进程是可见的,并最终反映在文件中。

19、fd-用于填满记忆体区域的档案的开启档案描述符。如果指定了map_anonymous,则fd应指定为-1。

20、offset-如果这不是匿名映射,则记忆体映像区域将填充从作为文件描述符fd开启的文件开头的offset字节位置开始的数据。应该是页面大小的倍数。

21、基于上述内容,如何增加更多实体记忆体,增加计算机系统的有效记忆体容量是本领域技术人员亟待解决的问题。


技术实现思路

1、本专利技术是针对上述现有技术的不足,提供一种实用性强的记忆体扩充与计算机持久记忆体机制。

2、本专利技术进一步的技术任务是提供一种设计合理,安全适用的记忆体扩充与计算机持久记忆体机制运行系统。

3、本专利技术解决其技术问题所采用的技术方案是:

4、一种记忆体扩充与计算机持久记忆体机制,基于mmap和c/c++程序语言,具有如下步骤:

5、s1、建立mmap区域和映像的文件档案;

6、s2、自制客订记忆体分配器;

7、s3、忆体分配器的程序开关;

8、s4、辅助宏。

9、进一步的,在步骤s1中,使用名为mmap_mem.cfg的配置文件,所述配置文件包含mmap档案路径、档案大小和映像地址。

10、进一步的,在步骤s2中,自制客订记忆体分配器用于管理映射记忆体的分配和释放记忆体分配器,为标准记忆体分配器运用于指定的记忆体区域,或客制化自定义设计的记忆体分配器。

11、进一步的,在步骤s3中,用c/c++实作的记忆体分配器开关,第2行的use_mmap_mem是一个全局变量,用作使用系统默认记忆体分配器和自定义mmap记忆体分配器之间的切换;

12、开关设定为每个线程开关,这样每个执行线程均单独以打开或关闭开关,而不影响其他正在执行的线程。

13、进一步的,在步骤s4中,c/c++宏mmap_malloc(statement)用于开启记忆体分配器开关,执行一个或多个c/c++语句,然后关闭开关。

14、一种记忆体扩充与计算机持久记忆体机制运行系统,基于mmap和c/c++程序语言,首先,建立mmap区域和映像的文件档案,自制客订记忆体分配器,配置忆体分配器的程序开关,创建辅助宏。

15、进一步的,建立mmap区域和映像的文件档案,使用名为mmap_mem.cfg的配置文件,所述配置文件包含mmap档案路径、档案大小和映像地址。

16、进一步的,自制客订记忆体分配器用于管理映射记忆体的分配和释放记忆体分配器,为标准记忆体分配器运用于指定的记忆体区域,或客制化自定义设计的记忆体分配器。

17、进一步的,用c/c++实作的记忆体分配器开关,第2行的use_mmap_mem是一个全局变量,用作使用系统默认记忆体分配器和自定义mmap记忆体分配器之间的切换;

18、开关设定为每个线程开关,这样每个执行线程均单独以打开或关闭开关,而不影响其他正在执行的线程。

19、进一步的,c/c++宏mmap_malloc(statement)用于开启记忆体分配器开关,执行一个或多个c/c++语句,然后关闭开关。

20、本专利技术的一种记忆体扩充与计算机持久记忆体机制及其运行系统和现有技术相比,具有以下突出的有益效果:

21、本专利技术使得在仅具有16gb记忆体的服务器上托管和运行800gb数据库成为可能。运行时数据和驻留在硬盘中的持久数据融为一体。不再需要在运行时数据格式和持久性数据格式之间进行转换。

本文档来自技高网...

【技术保护点】

1.一种记忆体扩充与计算机持久记忆体机制,其特征在于,基于mmap和C/C++程序语言,具有如下步骤:

2.根据权利要求1所述的一种记忆体扩充与计算机持久记忆体机制,其特征在于,在步骤S1中,使用名为mmap_mem.cfg的配置文件,所述配置文件包含mmap档案路径、档案大小和映像地址。

3.根据权利要求2所述的一种记忆体扩充与计算机持久记忆体机制,其特征在于,在步骤S2中,自制客订记忆体分配器用于管理映射记忆体的分配和释放记忆体分配器,为标准记忆体分配器运用于指定的记忆体区域,或客制化自定义设计的记忆体分配器。

4.根据权利要求3所述的一种记忆体扩充与计算机持久记忆体机制,其特征在于,在步骤S3中,用C/C++实作的记忆体分配器开关,第2行的use_mmap_mem是一个全局变量,用作使用系统默认记忆体分配器和自定义mmap记忆体分配器之间的切换;

5.根据权利要求3所述的一种记忆体扩充与计算机持久记忆体机制,其特征在于,在步骤S4中,C/C++宏MMAP_MALLOC(statement)用于开启记忆体分配器开关,执行一个或多个C/C++语句,然后关闭开关。

6.一种记忆体扩充与计算机持久记忆体机制运行系统,其特征在于,基于mmap和C/C++程序语言,首先,建立mmap区域和映像的文件档案,自制客订记忆体分配器,配置忆体分配器的程序开关,创建辅助宏。

7.根据权利要求6所述的一种记忆体扩充与计算机持久记忆体机制运行系统,其特征在于,建立mmap区域和映像的文件档案,使用名为mmap_mem.cfg的配置文件,所述配置文件包含mmap档案路径、档案大小和映像地址。

8.根据权利要求7所述的一种记忆体扩充与计算机持久记忆体机制运行系统,其特征在于,自制客订记忆体分配器用于管理映射记忆体的分配和释放记忆体分配器,为标准记忆体分配器运用于指定的记忆体区域,或客制化自定义设计的记忆体分配器。

9.根据权利要求8所述的一种记忆体扩充与计算机持久记忆体机制运行系统,其特征在于,用C/C++实作的记忆体分配器开关,第2行的use_mmap_mem是一个全局变量,用作使用系统默认记忆体分配器和自定义mmap记忆体分配器之间的切换;

10.根据权利要求9所述的一种记忆体扩充与计算机持久记忆体机制运行系统,其特征在于,C/C++宏MMAP_MALLOC(statement)用于开启记忆体分配器开关,执行一个或多个C/C++语句,然后关闭开关。

...

【技术特征摘要】

1.一种记忆体扩充与计算机持久记忆体机制,其特征在于,基于mmap和c/c++程序语言,具有如下步骤:

2.根据权利要求1所述的一种记忆体扩充与计算机持久记忆体机制,其特征在于,在步骤s1中,使用名为mmap_mem.cfg的配置文件,所述配置文件包含mmap档案路径、档案大小和映像地址。

3.根据权利要求2所述的一种记忆体扩充与计算机持久记忆体机制,其特征在于,在步骤s2中,自制客订记忆体分配器用于管理映射记忆体的分配和释放记忆体分配器,为标准记忆体分配器运用于指定的记忆体区域,或客制化自定义设计的记忆体分配器。

4.根据权利要求3所述的一种记忆体扩充与计算机持久记忆体机制,其特征在于,在步骤s3中,用c/c++实作的记忆体分配器开关,第2行的use_mmap_mem是一个全局变量,用作使用系统默认记忆体分配器和自定义mmap记忆体分配器之间的切换;

5.根据权利要求3所述的一种记忆体扩充与计算机持久记忆体机制,其特征在于,在步骤s4中,c/c++宏mmap_malloc(statement)用于开启记忆体分配器开关,执行一个或多个c/c++语句,然后关闭开关。

6.一种记忆体扩充与计算机持久记忆体机制运行系...

【专利技术属性】
技术研发人员:徐胜康蒋清春
申请(专利权)人:山东浪潮数据库技术有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1