CN108845822B - 实现软件不中断业务升级的内存管理方法及系统 - Google Patents

实现软件不中断业务升级的内存管理方法及系统 Download PDF

Info

Publication number
CN108845822B
CN108845822B CN201810525251.XA CN201810525251A CN108845822B CN 108845822 B CN108845822 B CN 108845822B CN 201810525251 A CN201810525251 A CN 201810525251A CN 108845822 B CN108845822 B CN 108845822B
Authority
CN
China
Prior art keywords
memory space
memory
pool
key data
mem
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
Application number
CN201810525251.XA
Other languages
English (en)
Other versions
CN108845822A (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.)
Wuhan Changjiang Computing Technology Co ltd
Fiberhome Telecommunication Technologies Co Ltd
Original Assignee
Fiberhome Telecommunication Technologies 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 Fiberhome Telecommunication Technologies Co Ltd filed Critical Fiberhome Telecommunication Technologies Co Ltd
Priority to CN201810525251.XA priority Critical patent/CN108845822B/zh
Publication of CN108845822A publication Critical patent/CN108845822A/zh
Application granted granted Critical
Publication of CN108845822B publication Critical patent/CN108845822B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • G06F8/654Updates using techniques specially adapted for alterable solid state memories, e.g. for EEPROM or flash memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • G06F8/656Updates while running

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

本发明公开了实现软件不中断业务升级的内存管理方法及系统,涉及计算机通信技术领域,本发明将不中断业务升级涉及的关键数据的分配和使用在操作系统无法访问的内存空间中,只需要将关键数据保存到预留的内存空间中,而无须将关键数据复制到文件系统中,节省了大量的时间和缓存空间。同时,省去了传统方案中分步查找关键数据并复制到文件系统的过程,并且不存在遗漏的问题。

Description

实现软件不中断业务升级的内存管理方法及系统
技术领域
本发明涉及计算机通信技术领域,具体涉及一种实现软件不中断业务升级的内存管理方法及系统。
背景技术
不中断业务升级(ISSU)是指在不停机也不用中断网络服务的情况下升级网络设备上的软件。它省去了重启整个设备的麻烦。软件不中断业务升级技术逐渐成为市场上因需求更改、bug修复等需要升级软件的首选技术,它能保证系统的连续运行时间和稳定性。
目前,软件不中断业务升级技术主要通过复制方式恢复关键数据:即把关键数据存储到文件系统中,并在升级成功后把文件系统中的数据复制至内存中恢复。利用此种方法可以实现在线升级软件且不中断业务,但是这种方式需要占用大量的缓存空间,不适用于存储容量较小的扣板;并且关键数据需要一个个复制到文件系统中,耗时较长且容易出现遗漏的问题。
发明内容
针对现有技术中存在的缺陷,本发明的目的在于提供一种实现软件不中断业务升级的内存管理方法及系统,节省了大量的时间和缓存空间。
为达到以上目的,本发明采取的技术方案是:一种实现软件不中断业务升级的内存管理方法,包括以下步骤:
执行软件升级前,在系统内存中预留一块操作系统无法访问的内存空间;按照预设的数据结构,为预留的内存空间创建管理内存的管理结构体和分配关键数据的管理结构体,并初始化预留的内存空间;通过更新管理内存的管理结构体和分配关键数据的管理结构体的值为关键数据分配内存空间;
执行软件升级后,若操作系统重新加载,在系统内存中预留一块与执行软件升级前预留的相同的内存空间,按照预设的数据结构,为预留的内存空间创建管理内存的管理结构体和分配关键数据的管理结构体,并初始化升级后预留的内存空间,再通过更新管理内存的管理结构体和分配关键数据的管理结构体的值为关键数据分配内存空间,计算出关键数据的首地址,并赋给升级后的软件;
若操作系统未重新加载,按照预设的数据结构,为预留的内存空间创建管理内存的管理结构体和分配关键数据的管理结构体,并初始化升级前预留的内存空间,再通过更新管理内存的管理结构体和分配关键数据的管理结构体的值为关键数据分配内存空间,计算出关键数据的首地址,并赋给升级后的软件。
在上述技术方案的基础上,所述按照预设的数据结构,为预留的内存空间创建管理内存的管理结构体和分配关键数据的管理结构体,并初始化预留的内存空间,具体包括以下步骤:
为shmem_pool_size和buf_size_min赋值;shmem_pool_size表示预留的内存空间的大小;buf_size_min表示最小内存块的大小;
为shmem_pool_phys和shmem_pool_ptr赋值;shmem_pool_phys表示预留的内存空间的物理地址;shmem_pool_ptr表示预留的内存空间的逻辑地址;
为mem_free和first_free赋值;mem_free表示全局剩余内存空间的大小;first_free表示全局剩余空间的首地址;
为num_tbl_entries和mem_pool_tbl_ptr赋值;num_tbl_entries表示mem_pool_tbl_ptr的数量;mem_pool_tbl_ptr用来管理从预留的内存空间中创建的内存块;
为fh_mem_pooL_t和fh_mem_pooL_buf_t赋值;fh_mem_pooL_t为从预留的内存空间中创建的内存的管理结构体;fh_mem_pooL_buf_t为从创建的预留的内存空间中分配关键数据的管理结构体。
在上述技术方案的基础上,通过更新管理内存的管理结构体和分配关键数据的管理结构体的值为关键数据分配内存空间,具体包括以下步骤:
更新fh_mem_pool_list_t结构体中的fh_mem_pool_t结构体的值,并更新first_free的值和mem_free的值;
更新fh_mem_poot_t结构体中的fh_mem_pool_but_t结构体的值。
在上述技术方案的基础上,在VxWorks操作系统中,直接操作预留的内存空间完成初始化;在Linux系统中,通过内存映射文件mmap,映射预留的内存完成初始化。
在上述技术方案的基础上,为关键数据分配内存空间时,当关键数据所占用的预留的内存空间不是最小内存块的倍数时,强行补齐。
本发明还公开了一种实现软件不中断业务升级的内存管理系统,包括:
内存空间预留模块,其用于执行软件升级前,在系统内存中预留一块操作系统无法访问的内存空间;执行软件升级后,若操作系统重新加载,在系统内存中预留一块与执行软件升级前预留的相同的内存空间;
内存空间初始化模块,其用于执行软件升级前,按照预设的数据结构,为预留的内存空间创建管理内存的管理结构体和分配关键数据的管理结构体,并初始化预留的内存空间;执行软件升级后,若操作系统重新加载,按照预设的数据结构,为预留的内存空间创建管理内存的管理结构体和分配关键数据的管理结构体,并初始化软件升级后预留的内存空间,若操作系统未重新加载,按照预设的数据结构,为预留的内存空间创建管理内存的管理结构体和分配关键数据的管理结构体,并初始化软件升级前预留的内存空间;
内存空间分配模块,其用于执行软件升级前,通过更新管理内存的管理结构体和分配关键数据的管理结构体的值为关键数据分配内存空间;执行软件升级后,若操作系统重新加载,在软件升级后预留的内存空间中通过更新管理内存的管理结构体和分配关键数据的管理结构体的值为关键数据分配内存空间,计算出关键数据的首地址并赋给升级后的软件,若操作系统未重新加载,在软件升级前预留的内存空间中通过更新管理内存的管理结构体和分配关键数据的管理结构体的值为关键数据分配内存空间,计算出关键数据的首地址并赋给升级后的软件。
在上述技术方案的基础上,所述内存空间初始化模块按照预设的数据结构,为预留的内存空间创建管理内存的管理结构体和分配关键数据的管理结构体,并初始化预留的内存空间,具体包括以下步骤:
为shmem_pool_size和buf_size_min赋值;shmem_pool_size表示预留的内存空间的大小;buf_size_min表示最小内存块的大小;
为shmem_pool_phys和shmem_pool_ptr赋值;shmem_pool_phys表示预留的内存空间的物理地址;shmem_pool_ptr表示预留的内存空间的逻辑地址;
为mem_free和first_free赋值;mem_free表示全局剩余内存空间的大小;first_free表示全局剩余空间的首地址;
为num_tbl_entries和mem_pool_tbl_ptr赋值;num_tbl_entries表示mem_pool_tbl_ptr的数量;mem_pool_tbl_ptr用来管理从预留的内存空间中创建的内存块;
为fh_mem_pooL_t和fh_mem_pooL_buf_t赋值;fh_mem_pooL_t为从预留的内存空间中创建的内存的管理结构体;fh_mem_pooL_buf_t为从创建的预留的内存空间中分配关键数据的管理结构体。
在上述技术方案的基础上,所述内存空间分配模块通过更新管理内存的管理结构体和分配关键数据的管理结构体的值为关键数据分配内存空间,具体包括以下步骤:
更新fh_mem_pool_list_t结构体中的fh_mem_pool_t结构体的值,并更新first_free的值和mem_free的值;
更新fh_mem_poot_t结构体中的fh_mem_pool_but_t结构体的值。
在上述技术方案的基础上,在VxWorks操作系统中,所述内存空间初始化模块直接操作预留的内存空间完成初始化;在Linux系统中,所述内存空间初始化模块通过内存映射文件,映射预留的内存完成初始化。
在上述技术方案的基础上,内存空间分配模块为关键数据分配内存空间时,当关键数据所占用的预留的内存空间不是最小内存块的倍数时,强行补齐。
与现有技术相比,本发明的优点在于:
本发明将不中断业务升级涉及的关键数据的分配和使用在操作系统无法访问的内存空间中,只需要将关键数据保存到预留的内存空间中,而无须将关键数据复制到文件系统中,节省了大量的时间和缓存空间。同时,省去了传统方案中分步查找关键数据并复制到文件系统的过程,并且不存在遗漏的问题。
附图说明
图1为本发明实施例中实现软件不中断业务升级的内存管理方法的流程示意图;
图2为本发明实施例中实现软件不中断业务升级的内存管理方法的预设的数据结构的示意图。
具体实施方式
以下结合附图及实施例对本发明作进一步详细说明。
实施例1:
参见图1所示,本发明实施例提供一种实现软件不中断业务升级的内存管理方法,包括以下步骤:
执行软件升级前,在系统内存中预留一块操作系统无法访问的内存空间;按照预设的数据结构,为预留的内存空间创建管理内存的管理结构体和分配关键数据的管理结构体,并初始化预留的内存空间;通过更新管理内存的管理结构体和分配关键数据的管理结构体的值为关键数据分配内存空间;
执行软件升级后,若操作系统重新加载,在系统内存中预留一块与执行软件升级前预留的相同的内存空间,按照预设的数据结构,为预留的内存空间创建管理内存的管理结构体和分配关键数据的管理结构体,并初始化升级后预留的内存空间,再通过更新管理内存的管理结构体和分配关键数据的管理结构体的值为关键数据分配内存空间,计算出关键数据的首地址,并赋给升级后的软件;
若操作系统未重新加载,按照预设的数据结构,为预留的内存空间创建管理内存的管理结构体和分配关键数据的管理结构体,并初始化升级前预留的内存空间,再通过更新管理内存的管理结构体和分配关键数据的管理结构体的值为关键数据分配内存空间,计算出关键数据的首地址,并赋给升级后的软件。
本发明将不中断业务升级涉及的关键数据的分配和使用在操作系统无法访问的内存空间中,只需要将关键数据保存到预留的内存空间中,而无须将关键数据复制到文件系统中,节省了大量的时间和缓存空间。同时,省去了传统方案中分步查找关键数据并复制到文件系统的过程,并且不存在遗漏的问题。
实施例2:
在实施例1的基础上,在页表建立之前,通过引导内存分配器(boot memoryallocator–缩写为bootmem分配器),在内存中预留一块操作系统无法访问的内存空间。
bootmem分配器基于最先适配(first-first)分配器的原理,使用一个位图来管理页,以位图代替原来的空闲链表结构来表示存储空间,位图的比特位的数目与系统中物理内存页面数目相同。若位图中某一位是1,则标识该页面已经被分配(已用页),否则表示未被占有(未用页)。在需要分配内存时,分配器逐位的扫描位图,直至找到一个能提供足够连续页的位置,即所谓的最先最佳(first-best)或最先适配位置。该分配机制通过记录上一次分配的页面帧号(PFN)结束时的偏移量来实现分配大小小于一页的空间,连续的小的空闲空间将被合并存储在一页上。
在内存中预留一块操作系统无法访问的内存空间时,所述预留的内存空间系统设于系统内存的最末端。因为操作系统一般在内存低地址段完成中断等关键操作,因此预留内存的首地址尽量选择在高地址段,如系统内存的最末端,并根据关键数据合理的选择预留空间的大小。
实施例3:
在实施例1的基础上,在VxWorks操作系统中,直接操作预留的内存空间完成初始化;在Linux系统中,通过内存映射文件(mmap)的方法,映射预留的内存完成初始化。mmap将一个文件或者其它对象映射进内存。文件被映射到多个页上,如果文件的大小不是所有页的大小之和,最后一个页不被使用的空间将会清零。mmap在用户空间映射调用系统中作用很大。
为关键数据分配内存空间时,当关键数据所占用的预留的内存空间不是最小内存块的倍数时,将通过算法强行补齐,有助于某些关键资源对于特殊bit位对齐的要求。
实施例4:
在实施例1的基础上,实现软件不中断业务升级的内存管理方法,包括以下步骤:
S1、内存空间预留:在页表建立之前通过reserve_bootmem(…)方法预留一块操作系统无法访问的内存空间。由于操作系统一般在内存低地址段完成中断等关键操作,因此预留内存的首地址尽量选择在高地址段,如系统内存的最末端,并根据关键数据合理的选择预留空间的大小。
S2、按照图2设计的数据结构初始化操作系统无法访问的内存。
其中,first_free为mem_free的首地址,shmem_pool_ptr为共享内存逻辑首地址,fh_mem_pooL_t为从共享内存中create的内存的管理结构体,fh_mem_pooL_buf_t为从create的内存中分配关键数据的管理结构体,buf_ptr为分配的关键数据内存块逻辑首地址。
参见图2所示,数据结构初始化的具体步骤如下:
首先为shmem_pool_size和buf_size_min赋值。shmem_pool_size表示预留的内存空间的大小,以byte为单位计量,如8M内存空间时,shmem_pool_size=8*220=8388608。buf_size_min表示最小内存块的大小,以byte为计量单位buf_size_min=256。
第二步为shmem_pool_phys和shmem_pool_ptr赋值。shmem_pool_phys表示预留的内存空间的物理地址,如从512M内存中预留最后8M空间,那么shmem_pool_phys=504M。shmem_pool_ptr表示预留的内存空间的逻辑地址,当VxWorks系统时,shmem_pool_ptr=504M;当Linux系统时,shmem_pool_ptr=mmap预留的内存空间返回的值。
第三步为mem_free和first_free赋值。mem_free表示全局剩余内存空间的大小,如8M内存空间时,mem_free=8*220,它会随着关键资源的分配过程而更新。first_free表示全局剩余空间的首地址,如8M内存空间时,first_free=504M,它会随着关键资源的分配过程而更新。
第四步为num_tbl_entries和mem_pool_tbl_ptr赋值。num_tbl_entries表示mem_pool_tbl_ptr的数量,当8M内存空间时,num_tbl_entries=8M/256=32768。mem_pool_tbl_ptr用来管理从预留的内存空间中create的内存块,在初始化时,置位flag=0,当create时再对其它的结构体成员赋值。
第五步为fh_mem_pooL_t和fh_mem_pooL_buf_t赋值;fh_mem_pooL_t为从预留的内存空间中create的内存的管理结构体,fh_mem_pooL_buf_t为从create的预留的内存空间中分配关键数据的管理结构体,buf_ptr为分配的关键数据内存块逻辑首地址。
VxWorks系统直接操作预留的物理内存完成初始化,Linux系统通过mmap方式,映射预留的内存完成初始化。初始化预留的内存空间指对管理内存的数据结构赋初值,它指的是逻辑概念,初始化的对象是数据结构,并不是操作物理内存,如图2中的全局数据区,具体就是给它赋初值。
S3、按照预设的内存分配方法为关键数据分配内存空间,本发明中,最小的内存块为256bytes,当关键数据占用内存空间不是最小内存块的倍数时,将通过算法强行补齐,这样做可能会带来资源的浪费,但有助于某些关键资源对于特殊bit位对齐的要求。
按照预设的内存分配方法为关键数据分配内存空间,即通过更新管理结构体成员关键数据分配内存空间,具体包括以下过程:
初始化预留的内存空间后,管理结构体成员的值显示预留的内存空间全部可用,当需要为关键数据a分配内存空间时,首先从预留的内存空间中create一片sizeof(a)*n(一般情况下,n=1)的内存空间m,此过程主要更新fh_mem_pool_list_t结构体中的fh_mem_pool_t结构体、first_free和mem_free,完成对create的内存空间和全局剩余的内存空间的管理。然后再从内存空间m中malloc一片sizeof(a)的内存空间,此过程主要更新fh_mem_poot_t结构体中的fh_mem_pool_but_t结构体,完成对malloc的内存空间的管理,也即为关键数据a分配的内存空间。
S4、执行软件包升级不中断业务,软件包升级,此步骤不涉及关键数据的copy。
S5、根据操作系统是否重新加载,选择不同的流程。若重新加载,执行S6,在系统内存中预留S1预留的空间,否则执行步骤S7。
S6、在系统内存中预留与S1同样的内存空间,一定保持一致,否则会出现关键数据恢复失败的情况。
S7、重新初始化预留的内存空间,并按照S3中预设的内存分配方法重新分配内存资源。由于软件升级不中断业务过程中不断电,内存空间的值保持完备性,并且内存资源分配的算法一致,顺序相同,因此恢复的关键数据与软件升级前保持一致。
重新分配内存资源指为各个关键数据寻找首地址,分配内存资源就是按照专利的算法计算出关键数据块的首地址。
特别在linux系统下,每次mmap预留的内存空间返回的逻辑地址可能不一样,所以需要重新分配内存资源找出各个关键数据的首地址,并且由于算法是一致的,且分配关键数据的方法和S3步骤一样,所以能正确的寻找到每个关键数据。
实施例5:
本实施例公开了一种实现软件不中断业务升级的内存管理系统,包括:
内存空间预留模块,其用于执行软件升级前,在系统内存中预留一块操作系统无法访问的内存空间;执行软件升级后,若操作系统重新加载,在系统内存中预留一块与执行软件升级前预留的相同的内存空间;
内存空间初始化模块,其用于执行软件升级前,按照预设的数据结构,为预留的内存空间创建管理内存的管理结构体和分配关键数据的管理结构体,并初始化预留的内存空间;执行软件升级后,若操作系统重新加载,按照预设的数据结构,为预留的内存空间创建管理内存的管理结构体和分配关键数据的管理结构体,并初始化软件升级后预留的内存空间,若操作系统未重新加载,按照预设的数据结构,预留的内存空间创建管理内存的管理结构体和分配关键数据的管理结构体,并初始化软件升级前预留的内存空间;
内存空间分配模块,其用于执行软件升级前,通过更新管理内存的管理结构体和分配关键数据的管理结构体的值为关键数据分配内存空间;执行软件升级后,若操作系统重新加载,在软件升级后预留的内存空间中通过更新管理内存的管理结构体和分配关键数据的管理结构体的值为关键数据分配内存空间,计算出关键数据的首地址并赋给升级后的软件,若操作系统未重新加载,在软件升级前预留的内存空间中通过更新管理内存的管理结构体和分配关键数据的管理结构体的值为关键数据分配内存空间,计算出关键数据的首地址并赋给升级后的软件。
实施例6:
在实施例5的基础上,内存空间预留模块通过引导内存分配器在内存中预留一块操作系统无法访问的内存空间。内存空间预留模块在内存中预留一块操作系统无法访问的内存空间时,预留的内存空间系统设于系统内存的最末端。
在VxWorks操作系统中,内存空间初始化模块直接操作预留的内存空间完成初始化;在Linux系统中,内存空间初始化模块通过内存映射文件的方法,映射预留的内存完成初始化。
内存空间分配模块为关键数据分配内存空间时,关键数据所占用的预留的内存空间不是最小内存块的倍数时,将通过算法强行补齐,有助于某些关键资源对于特殊bit位对齐的要求。
本发明不局限于上述实施方式,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围之内。本说明书中未作详细描述的内容属于本领域专业技术人员公知的现有技术。

Claims (10)

1.一种实现软件不中断业务升级的内存管理方法,其特征在于,包括以下步骤:
执行软件升级前,在系统内存中预留一块操作系统无法访问的内存空间;按照预设的数据结构,为预留的内存空间创建管理内存的管理结构体和分配关键数据的管理结构体,并初始化预留的内存空间;通过更新管理内存的管理结构体和分配关键数据的管理结构体的值为关键数据分配内存空间;
执行软件升级后,若操作系统重新加载,在系统内存中预留一块与执行软件升级前预留的相同的内存空间,按照预设的数据结构,为软件升级,操作系统重新加载时预留的内存空间创建管理内存的管理结构体和分配关键数据的管理结构体,并初始化升级后预留的内存空间,再通过更新管理内存的管理结构体和分配关键数据的管理结构体的值为关键数据分配内存空间,计算出关键数据的首地址,并赋给升级后的软件;
若操作系统未重新加载,按照预设的数据结构,为预留的内存空间创建管理内存的管理结构体和分配关键数据的管理结构体,并初始化升级前预留的内存空间,再通过更新管理内存的管理结构体和分配关键数据的管理结构体的值为关键数据分配内存空间,计算出关键数据的首地址,并赋给升级后的软件。
2.如权利要求1所述的一种实现软件不中断业务升级的内存管理方法,其特征在于:所述按照预设的数据结构,为预留的内存空间创建管理内存的管理结构体和分配关键数据的管理结构体,并初始化预留的内存空间,具体包括以下步骤:
为shmem_pool_size和buf_size_min赋值;shmem_pool_size表示预留的内存空间的大小;buf_size_min表示最小内存块的大小;
为shmem_pool_phys和shmem_pool_ptr赋值;shmem_pool_phys表示预留的内存空间的物理地址;shmem_pool_ptr表示预留的内存空间的逻辑地址;
为mem_free和first_free赋值;mem_free表示全局剩余内存空间的大小;first_free表示全局剩余空间的首地址;
为num_tbl_entries和mem_pool_tbl_ptr赋值;num_tbl_entries表示mem_pool_tbl_ptr的数量;mem_pool_tbl_ptr用来管理从预留的内存空间中创建的内存块;
为fh_mem_pool_t和fh_mem_pool_buf_t赋值;fh_mem_pool_t为从预留的内存空间中创建的内存的管理结构体;fh_mem_pool_buf_t为从创建的预留的内存空间中分配关键数据的管理结构体。
3.如权利要求2所述的一种实现软件不中断业务升级的内存管理方法,其特征在于:通过更新管理内存的管理结构体和分配关键数据的管理结构体的值为关键数据分配内存空间,具体包括以下步骤:
更新fh_mem_pool_list_t结构体中的fh_mem_pool_t结构体的值,并更新first_free的值和mem_free的值;
更新fh_mem_pool_t结构体中的fh_mem_pool_buf_t结构体的值。
4.如权利要求1所述的一种实现软件不中断业务升级的内存管理方法,其特征在于:在VxWorks操作系统中,直接操作预留的内存空间完成初始化;在Linux系统中,通过内存映射文件mmap,映射预留的内存完成初始化。
5.如权利要求1所述的一种实现软件不中断业务升级的内存管理方法,其特征在于:为关键数据分配内存空间时,当关键数据所占用的预留的内存空间不是最小内存块的倍数时,强行补齐。
6.一种实现软件不中断业务升级的内存管理系统,其特征在于,包括:
内存空间预留模块,其用于执行软件升级前,在系统内存中预留一块操作系统无法访问的内存空间;执行软件升级后,若操作系统重新加载,在系统内存中预留一块与执行软件升级前预留的相同的内存空间;
内存空间初始化模块,其用于执行软件升级前,按照预设的数据结构,为预留的内存空间创建管理内存的管理结构体和分配关键数据的管理结构体,并初始化预留的内存空间;执行软件升级后,若操作系统重新加载,按照预设的数据结构,为预留的内存空间创建管理内存的管理结构体和分配关键数据的管理结构体,并初始化软件升级后预留的内存空间,若操作系统未重新加载,按照预设的数据结构,为预留的内存空间创建管理内存的管理结构体和分配关键数据的管理结构体,并初始化软件升级前预留的内存空间;
内存空间分配模块,其用于执行软件升级前,通过更新管理内存的管理结构体和分配关键数据的管理结构体的值为关键数据分配内存空间;执行软件升级后,若操作系统重新加载,在软件升级后预留的内存空间中通过更新管理内存的管理结构体和分配关键数据的管理结构体的值为关键数据分配内存空间,计算出关键数据的首地址并赋给升级后的软件,若操作系统未重新加载,在软件升级前预留的内存空间中通过更新管理内存的管理结构体和分配关键数据的管理结构体的值为关键数据分配内存空间,计算出关键数据的首地址并赋给升级后的软件。
7.如权利要求6所述的一种实现软件不中断业务升级的内存管理系统,其特征在于:所述内存空间初始化模块按照预设的数据结构,为预留的内存空间创建管理内存的管理结构体和分配关键数据的管理结构体,并初始化预留的内存空间,具体包括以下步骤:
为shmem_pool_size和buf_size_min赋值;shmem_pool_size表示预留的内存空间的大小;buf_size_min表示最小内存块的大小;
为shmem_pool_phys和shmem_pool_ptr赋值;shmem_pool_phys表示预留的内存空间的物理地址;shmem_pool_ptr表示预留的内存空间的逻辑地址;
为mem_free和first_free赋值;mem_free表示全局剩余内存空间的大小;first_free表示全局剩余空间的首地址;
为num_tbl_entries和mem_pool_tbl_ptr赋值;num_tbl_entries表示mem_pool_tbl_ptr的数量;mem_pool_tbl_ptr用来管理从预留的内存空间中创建的内存块;
为fh_mem_pool_t和fh_mem_pool_buf_t赋值;fh_mem_pool_t为从预留的内存空间中创建的内存的管理结构体;fh_mem_pool_buf_t为从创建的预留的内存空间中分配关键数据的管理结构体。
8.如权利要求7所述的一种实现软件不中断业务升级的内存管理系统,其特征在于:所述内存空间分配模块通过更新管理内存的管理结构体和分配关键数据的管理结构体的值为关键数据分配内存空间,具体包括以下步骤:
更新fh_mem_pool_list_t结构体中的fh_mem_pool_t结构体的值,并更新first_free的值和mem_free的值;
更新fh_mem_pool_t结构体中的fh_mem_pool_buf_t结构体的值。
9.如权利要求6所述的一种实现软件不中断业务升级的内存管理系统,其特征在于:在VxWorks操作系统中,所述内存空间初始化模块直接操作预留的内存空间完成初始化;在Linux系统中,所述内存空间初始化模块通过内存映射文件,映射预留的内存完成初始化。
10.如权利要求6所述的一种实现软件不中断业务升级的内存管理系统,其特征在于:内存空间分配模块为关键数据分配内存空间时,当关键数据所占用的预留的内存空间不是最小内存块的倍数时,强行补齐。
CN201810525251.XA 2018-05-28 2018-05-28 实现软件不中断业务升级的内存管理方法及系统 Active CN108845822B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810525251.XA CN108845822B (zh) 2018-05-28 2018-05-28 实现软件不中断业务升级的内存管理方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810525251.XA CN108845822B (zh) 2018-05-28 2018-05-28 实现软件不中断业务升级的内存管理方法及系统

Publications (2)

Publication Number Publication Date
CN108845822A CN108845822A (zh) 2018-11-20
CN108845822B true CN108845822B (zh) 2022-03-01

Family

ID=64208010

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810525251.XA Active CN108845822B (zh) 2018-05-28 2018-05-28 实现软件不中断业务升级的内存管理方法及系统

Country Status (1)

Country Link
CN (1) CN108845822B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111352730B (zh) * 2020-02-11 2023-07-14 浙江大华技术股份有限公司 应用程序升级的缓存方法、装置、计算机设备和存储介质
CN115981685A (zh) * 2021-10-14 2023-04-18 华为技术有限公司 应用升级方法、装置、计算设备和芯片系统
CN117785248B (zh) * 2024-02-28 2024-05-24 上海励驰半导体有限公司 程序升级中关键变量的注册方法、装置、存储介质及芯片

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101770383A (zh) * 2010-01-22 2010-07-07 中兴通讯股份有限公司 一种跨平台版本在线升级的方法及装置
CN102081540A (zh) * 2011-01-18 2011-06-01 杭州华三通信技术有限公司 一种分布式双主控网络设备软件升级方法和装置
CN102917267A (zh) * 2012-09-27 2013-02-06 深圳创维数字技术股份有限公司 一种机顶盒升级方法及装置
CN106610849A (zh) * 2015-10-22 2017-05-03 湖南国奥电力设备有限公司 一种复杂可编程逻辑器件的升级处理方法

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8099570B2 (en) * 2008-02-22 2012-01-17 International Business Machines Corporation Methods, systems, and computer program products for dynamic selective memory mirroring
US9354857B2 (en) * 2008-03-19 2016-05-31 Lenovo (Singapore) Pte. Ltd. System and method to update firmware on a hybrid drive

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101770383A (zh) * 2010-01-22 2010-07-07 中兴通讯股份有限公司 一种跨平台版本在线升级的方法及装置
CN102081540A (zh) * 2011-01-18 2011-06-01 杭州华三通信技术有限公司 一种分布式双主控网络设备软件升级方法和装置
CN102917267A (zh) * 2012-09-27 2013-02-06 深圳创维数字技术股份有限公司 一种机顶盒升级方法及装置
CN106610849A (zh) * 2015-10-22 2017-05-03 湖南国奥电力设备有限公司 一种复杂可编程逻辑器件的升级处理方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
"基于VxWorks的基站控制板MCU2的软件设计和实现";金赞;《中国优秀硕士学位论文全文数据库 信息科技辑》;20110315;全文 *

Also Published As

Publication number Publication date
CN108845822A (zh) 2018-11-20

Similar Documents

Publication Publication Date Title
CN109725847B (zh) 存储器系统及控制方法
US11768632B2 (en) Memory system and method of controlling nonvolatile memory
CN109725846B (zh) 存储器系统及控制方法
US8375167B2 (en) Storage system, control apparatus and method of controlling control apparatus
CN110795206B (zh) 用于促进集群级缓存和内存空间的系统和方法
US9355028B2 (en) Data-storage device and flash memory control method
CN108845822B (zh) 实现软件不中断业务升级的内存管理方法及系统
US11726707B2 (en) System and method of writing to nonvolatile memory using write buffers
US20120303927A1 (en) Memory allocation using power-of-two block sizes
CN114372007A (zh) 存储器系统及控制非易失性存储器的控制方法
CN106557427B (zh) 共享内存数据库的内存管理方法及装置
US10310984B2 (en) Storage apparatus and storage control method
JP7547231B2 (ja) メモリシステムおよび制御方法
JP2007199905A (ja) 半導体記憶装置の制御方法
CN110069336A (zh) 内存资源分配方法、分配装置、芯片和存储装置
CN115617542A (zh) 内存交换方法、装置、计算机设备及存储介质
WO2023169161A1 (zh) 一种动态的、离散的、碎片化的嵌入式系统nand flash使用方法
US9727486B1 (en) Writing pages to a storage system
CN105068896A (zh) 基于raid备份的数据处理方法及装置
CN113778688A (zh) 内存管理系统、内存管理方法、内存管理装置
US20240330116A1 (en) Allocating system rdp metadata space with io performance priority
JP5601516B2 (ja) コンピュータ装置及びメモリリソース割当て方法
US20200057576A1 (en) Method and system for input/output processing for write through to enable hardware acceleration
US12111756B2 (en) Systems, methods, and apparatus for wear-level aware memory allocation
US12124735B2 (en) System and method of writing to nonvolatile memory using write buffers

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
TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20240704

Address after: 430000 No. 6, High-tech Fourth Road, Donghu High-tech Development Zone, Wuhan City, Hubei Province

Patentee after: FIBERHOME TELECOMMUNICATION TECHNOLOGIES Co.,Ltd.

Country or region after: China

Patentee after: Wuhan Changjiang Computing Technology Co.,Ltd.

Address before: 430000 No. 6, High-tech Fourth Road, Donghu High-tech Development Zone, Wuhan City, Hubei Province

Patentee before: FIBERHOME TELECOMMUNICATION TECHNOLOGIES Co.,Ltd.

Country or region before: China