CN102495807B - 一种支持物理存储器动态加载或卸载的方法 - Google Patents
一种支持物理存储器动态加载或卸载的方法 Download PDFInfo
- Publication number
- CN102495807B CN102495807B CN201110385498.4A CN201110385498A CN102495807B CN 102495807 B CN102495807 B CN 102495807B CN 201110385498 A CN201110385498 A CN 201110385498A CN 102495807 B CN102495807 B CN 102495807B
- Authority
- CN
- China
- Prior art keywords
- physical storage
- physical
- data structure
- storage
- block
- 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.)
- Expired - Fee Related
Links
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明公开了一种支持物理存储器动态加载或卸载的方法,属于信息技术领域。本方法为:1)初始化计算机物理存储器;建立数据结构M记录当前可用存储器总数、物理存储器总数、该计算机物理存储器的连接能力;2)建立一动态数据结构A记录物理存储器页框的占用状态及物理属性;3)在系统缺页处理时将A中的记录引入系统页表;4)当系统收到物理存储器可访问状态信号后,根据M执行遍历和新增存储器的初始化,更新A和M;当系统收到指定区块的物理存储器释放请求后,检索A,若没有满足释放条件的区块,转移数据至释放条件达成;最终将满足释放条件的区块在A中的标识恢复为未初始化状态,并更新M。本发明增强计算机系统的可维护性和扩展能力。
Description
技术领域
本发明属于信息技术领域,具体涉及一种支持物理存储器动态加载和卸载的方法。
背景技术
现有计算机物理存储器的管理采用静态编制方式,即在计算机上电自检时检查物理内存的大小并将其编址到操作系统中,并不支持物理内存的热插拔。但在对服务器等一些7×24小时的计算机进行升级时,停机升级将会产生不必要、甚至重大的损失。
存储管理子系统是操作系统中最重要的组成部分之一。经典的存储管理主要面向如何高效利用物理存储器,减少内存分配碎片,加快读写效率;主要的存储管理方式包括:
1.分区存储管理
分区存储管理又有三种不同的方式:静态分区、可变分区、可重定位分区。这种早期的逻辑管理方法有很多弊端,现主要用于编译阶段和简单嵌入式系统。
2.分页存储管理
分页存储管理是将一个进程的逻辑地址空间分成若干个大小相等的片,称为页面或页,并为各页加以编号,从0开始,如第0页、第1页等。相应地,也把内存空间分成与页面相同大小的若干个存储块,称为(物理)块或页框(frame),也同样为它们加以编号,如0#块、1#块等等。这种管理方法主要为了解决内存碎片问题。
3.分段存储管理
分段存储管理方式将逻辑地址空间被划分为若干个段,每个段定义了一组逻辑信息。主要用于解决读写保护引发的效率问题。
4.段页式存储管理
分段存储管理方式和基本分页存储管理方式原理的结合,同时解决读写保护的效率问题和内存碎片的问题。
5.虚拟存储管理
依据程序的局部性原理,虚拟存储技术利用物理内存空间和相对大得多的外部储存器存储空间相结合构成一个远远大于实际内存空间的虚拟存储空间。主要解决线性内存空间受物理存储器限制的问题。
以上存储管理方法均假定物理存储器的数量已确定、连接方式已确定。在此基础上实施对内存资源的高效使用。主要管理对象是对存储器的逻辑空间进行管理,并不支持物理空间的动态变化。
而现代计算机系统的可维护性要求越来越高,物理存储器的加载和卸载需要计算机执行重新初始化的过程,因此必须停止服务以重新初始化。针对现代的硬件技术而言,这种停机后重新启动的初始化过程并不是必要的,但由于软件算法的限制,涉及物理存储器的维护,仍需停机执行重新初始化。
发明内容
针对现有技术中存在的技术问题,本发明的目的在于提供一种支持物理存储器动态加载或卸载的方法,本方法允许计算机系统运行时动态地激活使用物理内存,也可以随时释放和关闭特定的物理内存,为计算机系统的物理内存实现热插拔提供了一种实现方法。
本发明的技术方案为:
一种支持物理存储器动态加载或卸载的方法,其步骤为:、
1)初始化计算机的物理存储器;建立数据结构M记录当前可用存储器总数、物理存储器总数、该计算机物理存储器的连接能力;
2)建立一动态数据结构A记录物理存储器页框的占用状态及物理属性;
3)在系统缺页处理时将数据结构A中的记录引入系统页表,实现由数据结构A所记录的存储器能被系统使用;
4)当系统收到物理存储器可访问状态信号后,探测新连入系统的物理存储器,根据数据结构M执行遍历和新增存储器的初始化,根据遍历和初始化结果更新数据结构A和M,使新增存储器能被当前系统使用;
当系统收到指定区块的物理存储器释放请求后,检索数据结构A中相应的区块占用状态和物理属性,若有不能满足释放条件的区块,转移数据至释放条件达成;最终将满足释放条件的区块在数据结构A中的标识恢复为未初始化状态,并更新M。
进一步的,所述数据结构M中包含至少3个元素;其中,M[0]记录可用存储器总数,M[1]记录物理存储器总数,M[2]记录物理存储器的连接能力,M[1]等于M[0]加上计算机已连接但未初始化的物理存储器,M[2]≥M[1]。
进一步的,所述数据结构A中包含页框所属物理存储器属性的数据结构或包含指向该数据结构的指针。
进一步的,所述数据结构A的长度可变。
进一步的,所述物理存储器属性包括:所属总线、区块、性能、功耗。
进一步的,根据物理存储器的区块属性、或性能属性、或功耗属性对物理存储器内存进行区别化操作。
进一步的,若没有满足释放条件的区块,则触发页交换调用,将部分页框交换到外存储设备,直至有足够的空闲区块或需保留页交换完成,转移数据至释放条件达成。
进一步的,根据存储器的物理属性数据,将分散于不同物理区块的数据集中到一起,实现对某块物理存储器彻底释放或完全占用。
进一步的,采用块操作指令完成物理内存数据的转移复制。
本发明仍支持现有计算机的虚拟存储和页式管理算法,通过设置如下机制:
1.开放编址机制,允许系统在加电启动时不初始化全部物理内存;允许在运行中添加和初始化新的物理内存并纳入全局编址中;允许运行中释放特定的物理内存器件或模块。
2.动态聚合机制,系统以物理区块标识作为页表映射依据,并在需要的时候批量分配和转移区块内的内容,透明地完成重新映射。
3.存储分配算法中加入物理属性因子,使物理内存的分配可以按照区块、性能、功耗分别优化。
实现对物理存储器按物理连接关系进行动态占用和释放;任何独立的物理存储器被释放后,都可以被物理地移出计算机系统,或切断能源而实现细粒度的能耗管理。其中:
开放编址机制通过设定一组系统全局变量来实现,该全局变量记录当前系统中已初始化存储器的数量(可用物理存储器总数)、已连接但未初始化的物理存储器数量(物理存储器总数)和最大可连接物理存储器数量(系统物理连接能力)。
动态聚合机制通过为物理存储器设定区块标识(与物理连接对应)和一种地址重映射算法来实现。该地址重映射算法主要完成:按照区块标识完成物理存储器中的内容由源(待卸载的物理区块)向目的(空闲的物理区块或外部页交换设备)复制;修改系统页表以完成物理地址的重新映射。
本发明中的存储分配算法主要完成传统存储管理方法中不能实现的、针对物理存储器特性的内存分配。具体实现依据是根据物理存储器的物理特征设定存储器分配的优先级,使存储器分配能够考虑存储器的物理区块、性能、功耗因素,将存储器的占用与物理区块性质关联起来,为按照物理区块加载和释放物理存储器提供更好的效率。
与现有技术相比,本发明的积极效果为:
本发明方法允许计算机系统动态地停止或启动物理内存的使用,既可以实现对部分存储器的热插拔维护,也可以按需切断和恢复指定物理存储器的供电,实现系统功耗的深度管理。同时本发明允许计算机系统按存储器的物理属性有区别地动态加载、操作及卸载一部分物理存储器,增强计算机系统的可维护性和扩展能力。
附图说明
图1示例了本发明中的系统物理内存热插拔流程图。
图2示例本发明中的物理存储器开放编址和聚合机制的数据结构。
具体实施方式
下面结合附图对本发明的技术内容进行进一步详细描述。本发明方法的流程如图1所示:
1.计算机初始化物理内存时,物理内存大小以全局变量形式存在;
该全局变量可以是一个整型数组M[y](见图2),其中:M[0]记录系统中可用存储器总数,M[1]记录物理存储器总数,M[2]记录系统物理连接能力。在简化系统中,该全局变量可以简化为一个整型变量(即仅有M[0]),此时系统的动态物理存储器加载和卸载只能在地址高端按顺序执行(不能在任意物理存储区块上执行动态加载和卸载,只能按顺序进行)。
变量之间的关系如下:
M[1]=M[0]+已连接但未初始化的物理存储器
M[2]≥M[1]
2.物理内存映射位图以动态数组的方式初始化;
如图2中所示,系统中设置一个可变长动态数组A[x],该数组的每一个元素记录物理存储器页框的占用状态,整个数组被称为物理内存映射位图,该数组是可变长数组。系统在初始化物理内存时,同时维护该映射位图,以体现当前系统中所有物理页框的状态(占用状态及可访问状态)。这种方法使本发明能够与传统的存储器管理算法兼容。
3.物理内存映射位图上增加属性指针或链表,指向物理属性标识数据;
如图2所示,物理内存映射位图中的每个元素中包含一个指针P,该指针指向一个存储物理存储器属性的数组结构,这一数组结构可以初始化为固定格式、链表或为空,根据存储器的物理属性复杂度确定。在简化情况下,物理存储器的物理属性可直接存储于物理内存映射位图中,从而省略指针P。该物理属性标识数据的作用为:具备同类物理属性的,可采用同一种操作算法来处理,用户可以按需来根据速度、功耗、连接位置等任何感兴趣的物理属性来操作存储器。
4.需重映射的数据在物理地址上具备天然的局部连续性,用批量复制或移动操作来提高效率;
当涉及操作的物理存储器中仍有正在使用的数据时,采用移动或复制,并重映射物理地址的方式实现地址重定位。当CPU指令系统包含块操作指令时,使用块操作指令完成物理内存内容的转移复制。在效率要求更高的系统中,可设置数据转储硬件来完成复制。
5.系统缺页处理例程中增加针对聚合机制的页表重映射操作;
在系统缺页处理中将页表状态指针指向A[x]中相应的元素(即引起缺页时对应的元素),完成本发明的物理存储器状态与传统存储管理器的地址映射过程。另外,当对物理存储器执行聚合操作时(该操作将分散于不同物理区块的存储器占用集中到一起;为对某块物理存储器实现彻底释放或完全占用,而做的重新整理操作,本发明称为聚合机制。),系统中原有的虚拟存储管理器触发缺页调用,调用地址重映射算法完成页表重映射操作。
6.以物理内存器件或模块作为新的管理单位标识加入或移出存储管理器。
以上操作机制提供了动态初始化物理存储器所需的数据结构和状态信息,将该信息引入系统中原有的存储管理数据中,即可实现后续物理存储器的动态扩展及加载。新加入的存储器被原有系统以新释放的内存看待和处理。同理,动态卸出的物理存储器被原有系统视为不可访问区域(内存空洞)。
典型流程:
初始:系统上电→初始化物理内存→建立全局变量(物理内存大小及物理内存映射位图数组)→建立页表并正常运作;
例:上电,遍历地址总线获得:已连接存储器2GB,总线能力8GB。此时:
M[0]=0
M[1]=80000000(16)
M[2]=200000000(16)
初始化物理内存后,
M[0]=80000000(16)
M[1]=80000000(16)
M[2]=200000000(16)
初始化内存映射位图,物理内存映射位图A[x]建立,其中x=M[1]/物理页框大小。初始化值为未占用可访问状态(具体状态定义视系统而定,如00)。
原系统根据按照正常流程建立系统初始页表,进入正常运作。随后正常访问触发系统缺页调用,缺页处理例程调用本发明中的地址映射机制,替换页表原指针指向A[x]。缺页调用返回。
系统进入正常运作。
增加物理内存:可访问状态信号触发→初始化新的物理内存→检索物理内存映射位图数组寻找空洞→插入合适的内存空洞并更新数组或→未发现合适的内存空洞,扩展内存映射位图数组→更新物理内存大小的全局变量;
例:增加1GB物理内存
增加前M[x]数组状态:
M[0]=80000000(16)
M[1]=80000000(16)
M[2]=200000000(16)
系统管理员触发(硬件方式自动触发或手动运行触发程序)物理存储器状态更新信号,遍历M[0]以外的地址空间,探测新连入系统的物理存储器,执行遍历初始化,根据遍历结果获知新存储空间大小及状态。
检索A[x]数组,寻找合适大小的空洞,若发现可用空洞,根据遍历结果更新数组相应元素状态,若未发现可用空洞,扩展A[x]数组的大小,根据遍历结果更新扩展后元素的状态。
成功后更新M[x]数组状态:
M[0]=80000000(16)
M[1]=C0000000(16)
M[2]=200000000(16)
系统存储器扩展完毕,新扩展部分的访问过程同上一例。
释放物理内存:管理员发出释放请求→检索物理内存映射位图检查占用情况→按区块标识批量复制至空闲页→重映射系统页表→更新物理内存大小全局变量→置释放标志
例:移除2GB物理存储器
管理员触发释放指定区块的物理存储器,检索A[x]中相应的区块状态,查询占用情况。
根据A[x]中的状态,释放可废弃页框(即占用状态为未占用的页框),计算需保留页框的大小。
在A[x]中寻找合适大小的空闲区块,若成功,将需保留页框的内容复制至空闲页。
若无合适大小空闲区块,触发页交换调用,将部分页框交换到外存储设备。直至有足够的空闲区块或需保留页交换完成(即区块的释放条件满足)。
更新A[x]中相应的元素。
更新M[x]数组状态:
M[0]=40000000(16)
M[1]=C0000000(16)
M[2]=200000000(16)
已完成释放,尚未物理移除。可随时重新加载。
断开物理存储器的连接,实施电气移除。触发(硬件自动或管理员手动运行触发程序)物理存储器状态更新信号,执行M[0]以上的物理存储器遍历操作,根据遍历结果确认已经完成电气移除,更新M[x]数组状态:
M[0]=40000000(16)
M[1]=40000000(16)
M[2]=200000000(16)
物理移除过程结束。
Claims (8)
1.一种支持物理存储器动态加载或卸载的方法,其步骤为:
1)初始化计算机的物理存储器;建立数据结构M;所述数据结构M中包含至少3个元素;其中,M[0]记录已连接并可用的物理存储器总数,M[1]记录已连接的物理存储器总数,M[2]记录可连接物理存储器的最大数量,M[1]等于M[0]加上计算机已连接但未初始化的物理存储器,M[2]≥M[1];
2)建立一动态数据结构A记录物理存储器页框的占用状态及物理属性;
3)在系统缺页处理时将数据结构A中的记录映射入系统页表,实现由数据结构A所记录的物理存储器能被系统使用;
4)当系统收到物理存储器可访问状态信号后,探测新连入系统的物理存储器,根据数据结构M执行遍历和新增物理存储器的初始化,根据遍历和初始化结果更新数据结构A和M,使新增物理存储器能被当前系统使用;
当系统收到指定区块的物理存储器释放请求后,检索数据结构A中相应的区块占用状态和物理属性,若没有满足释放条件的区块,转移数据至释放条件达成;最终将满足释放条件的区块在数据结构A中的标识恢复为未初始化状态,并更新M。
2.如权利要求1所述的方法,其特征在于所述数据结构A中包含页框所属物理存储器属性的数据结构或包含指向该数据结构的指针。
3.如权利要求2所述的方法,其特征在于所述数据结构A的长度可变。
4.如权利要求2所述的方法,其特征在于所述物理存储器属性包括:所属总线、区块、性能、功耗。
5.如权利要求4所述的方法,其特征在于根据物理存储器的区块属性、或性能属性、或功耗属性对物理存储器内存进行区别化操作。
6.如权利要求1所述的方法,其特征在于若没有满足释放条件的区块,则触发页交换调用,将部分页框交换到外存储设备,直至有足够的空闲区块或需保留页交换完成,转移数据至释放条件达成。
7.如权利要求4所述的方法,其特征在于根据物理存储器的物理属性数据,将分散于不同物理区块的数据集中到一起,实现对某块物理存储器彻底释放或完全占用。
8.如权利要求1或6或7所述的方法,其特征在于采用块操作指令完成物理内存数据的转移复制。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110385498.4A CN102495807B (zh) | 2010-12-23 | 2011-11-28 | 一种支持物理存储器动态加载或卸载的方法 |
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010604775.1 | 2010-12-23 | ||
CN201010604775 | 2010-12-23 | ||
CN201110385498.4A CN102495807B (zh) | 2010-12-23 | 2011-11-28 | 一种支持物理存储器动态加载或卸载的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102495807A CN102495807A (zh) | 2012-06-13 |
CN102495807B true CN102495807B (zh) | 2014-09-03 |
Family
ID=46187632
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201110385498.4A Expired - Fee Related CN102495807B (zh) | 2010-12-23 | 2011-11-28 | 一种支持物理存储器动态加载或卸载的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102495807B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110519363B (zh) * | 2019-08-23 | 2022-03-22 | 苏州浪潮智能科技有限公司 | 一种存储设备集群及其管理方法 |
CN114968130B (zh) * | 2022-08-01 | 2022-09-30 | 深圳云豹智能有限公司 | 链表初始化装置、方法、系统、计算机设备和存储介质 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7149841B2 (en) * | 2003-03-31 | 2006-12-12 | Micron Technology, Inc. | Memory devices with buffered command address bus |
CN101859279B (zh) * | 2010-05-21 | 2012-05-09 | 北京星网锐捷网络技术有限公司 | 一种内存分配、释放方法及装置 |
-
2011
- 2011-11-28 CN CN201110385498.4A patent/CN102495807B/zh not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
CN102495807A (zh) | 2012-06-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP2455865B1 (en) | Memory management device | |
CN105224478B (zh) | 一种映射表的形成、更新和恢复方法及电子设备 | |
US9792227B2 (en) | Heterogeneous unified memory | |
CN101221536B (zh) | 嵌入式系统的内存管理方法及装置 | |
US9529537B2 (en) | Storage system and storage method | |
KR101484816B1 (ko) | 비휘발성 메모리 시스템 내의 미사용 논리 어드레스들의 마운트 시간 맵핑 해제 | |
CN105243025B (zh) | 一种映射表的形成及加载方法、电子设备 | |
US7536500B2 (en) | Header blocks for flash memory writes | |
US7146455B2 (en) | System and method for optimized access to memory devices requiring block writing | |
CN105027093A (zh) | 用于压缩和紧凑虚拟存储器的方法和装置 | |
CN114115747A (zh) | 存储器系统及控制方法 | |
CN105630405B (zh) | 一种存储系统及采用该存储系统的读写方法 | |
CN104281528A (zh) | 一种数据存储方法及装置 | |
US10754785B2 (en) | Checkpointing for DRAM-less SSD | |
CN107203411A (zh) | 一种基于远程ssd的虚拟机内存扩展方法及系统 | |
JP3527765B2 (ja) | プログラムキャッシュ装置 | |
US20240338135A1 (en) | Storage space allocation method, terminal device and storage medium | |
CN103218305A (zh) | 存储空间的分配方法 | |
CN102609218A (zh) | 并行闪存转换层方法与系统 | |
CN103229150B (zh) | 数据控制方法及系统 | |
CN102495807B (zh) | 一种支持物理存储器动态加载或卸载的方法 | |
CN101403966A (zh) | 一种实现可移植软件的方法 | |
CN101826055B (zh) | 一种用于Linux系统数据缓存分配的管理方法 | |
CN104915265A (zh) | 数据备份方法和电子设备 | |
CN110109677B (zh) | 一种动态对象缓存池分配方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20140903 Termination date: 20181128 |
|
CF01 | Termination of patent right due to non-payment of annual fee |