一种次级内存的分配方法和装置的制作方法

文档序号:6581391阅读:139来源:国知局
专利名称:一种次级内存的分配方法和装置的制作方法
技术领域
本发明属于存储器领域,尤其涉及一种次级内存的分配方法和装置。
背景技术
一个典型的微控制器组成结构如图1所示,操作系统一般通过MMU(Memory Management Unit,内存管理单元)对物理内存进行管理,应用程序一般运行于逻辑地址空 间,而不直接访问物理内存。现代操作系统一般对物理内存进行分页管理,页大小可以为1Kbyte、4Kbyte、 16Kbyte、lM byte等。创建应用程序时,操作系统一般只给当前代码访问到的页面分配一页 物理内存并映射到应用程序的逻辑地址空间。当应用程序当前访问到的逻辑地址页面不在 物理内存中时,便会触发某种形式的异常,由操作系统异常处理程序分配一页空闲的物理 内存并做好相应的页表映射,这样应用程序就可以继续运行了。在嵌入式系统中,通常有些片上设备或者片外设备需要直接和内存进行数据交换 (写入内存数据或者从内存读取数据),这类直接存储器存取(DirectMemory Access,DMA) 操作一般不经过微控制器的MMU,因此无法感知微控制器的分页映射机制,所以这类操作通 常需要直接访问连续的物理地址空间。在电子系统中,内存一般是作为程序的执行空间而存在的。程序的代码段、数据 段、堆栈空间等一般都运行于内存中。对程序的代码段来说,存储其的内存空间不能有Ibit 的损坏,如果有损坏就会改变对应的指令码,当程序执行到此指令时就会发生不可预料的 错误;对程序的数据段和堆栈空间来说,存储其的内存空间如果有损坏,不一定会导致程序 流程出错。比如损坏的数据只是用来输出到显示屏上的数据,则至多就是显式屏上的一个 色点显示非正常。但是如果损坏的数据正好是一个程序的判断条件,则此损坏的数据就会 导致程序的执行流程出错。综上所述,电子系统可以兼容次级内存,其中次级内存是指存在坏点的内存,现有 的次级内存兼容方法大都采用硬件兼容的方式,通过对内存芯片的地址线或者数据线进行 切割,将大容量的内存芯片“降级”成小容量内存芯片使用,或者将数片次级内存抽象为1 片完好内存使用,这种内存兼容方法成本高、使用效率低。

发明内容
本发明实施例的目的在于提供一种次级内存的分配方法,旨在解决现有的次级内 存分配方法成本高、使用效率低的问题。本发明实施例是这样实现的,一种次级内存的分配方法,所述方法包括A、按照预设的分页大小对次级内存进行分页处理,将次级内存处理成多个大小为 预设的分页大小的物理内存页;B、以预设的分页大小为单位,扫描次级内存,记录每个物理内存页的物理地址和 损坏程度;
C、在接收到申请物理内存的请求时,获取物理内存页的分配情况,并根据记录的 次级内存中物理内存页的物理地址和损坏程度以及物理内存页的分配情况分配物理内存。本发明实施例的另一目的在于提供一种次级内存分配装置,所述装置包括分页处理单元,用于按照预设的分页大小对次级内存进行分页处理,将次级内存 处理成多个大小为预设的分页大小的物理内存页;内存扫描单元,用于以预设的分页大小为单位,扫描所述分页处理单元处理后的 次级内存,记录每个物理内存页的物理地址和损坏程度;内存分配单元,用于在接收到物理内存申请请求时,获取物理内存页的分配情况, 并根据内存扫描单元记录的次级内存中物理内存页的物理地址和损坏程度以及物理内存 页的分配情况分配物理内存。在本发明实施例中,按照预设的页大小对次级内存进行分页处理,以页为单位, 扫描次级内存,并记录每个物理内存页的物理地址和损坏程度,根据物理内存页的物理地 址和损坏程度以及物理内存页的分配情况分配物理内存,以主动避开严重损坏的物理内存 页,最大程度使用轻度损坏的物理内存页,从而提高次级内存的使用效率。通过对物理内存 页进行分级处理,并根据物理内存页的损坏级别分配内存,从而提高次级内存的使用效率。 通过对不同损坏级别物理内存页的区域进行从小到大排序,普通内存分配按照从小到大的 方向进行检索,在检索到符合要求的该损坏级别物理内存页的区域时,按照从低地址到高 地址的顺序进行分配;对大于阀值的连续物理内存申请按照从大到小的方向进行检索,在 检索到符合要求的该损坏级别物理内存页的区域时,按照从高地址到低地址的顺序进行分 配,从而提高申请连续物理内存的成功率。


图1是现有技术提供的微控制器的结构框图;图2是本发明实施例提供的次级内存的分配方法的实现流程图;图3是本发明实施例提供的扫描次级内存后,记录的次级内存中物理内存页的损 坏程度、物理地址和分配情况的示意图;图4是本发明实施例提供的对图3所示的完好内存区域和次完好内存区域进行从 小到大排序的示意图;图5是本发明实施例提供的根据物理内存页的损坏程度将物理内存页映射为逻 辑地址连续的存储空间的示意图;图6是本发明实施例提供的次级内存分配装置的结构框图。
具体实施例方式为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对 本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并 不用于限定本发明。在本发明实施例中,按照预设的分页大小对次级内存进行分页处理,以预设的分 页大小对次级内存进行扫描,并记录每个物理内存页的物理地址和损坏程度,根据物理内 存页的物理地址和损坏程度以及物理内存页的分配情况分配内存,以主动避开严重损坏的物理内存页,最大程度使用轻度损坏的物理内存页,从而提高次级内存的使用效率。图2示出了本发明实施例提供的次级内存的分配方法的实现流程,详述如下在步骤S201中,按照预设的分页大小对次级内存进行分页处理,将次级内存分为 多个大小为预设的分页大小的物理内存页。在本发明实施例中,预设的分页大小P可以根据分配该次级内存的终端的硬件以 及操作系统可以支持的分页大小进行设置。在步骤S202中,以预设的分页大小为单位,扫描次级内存,并记录每个物理内存 页的物理地址和损坏程度。其中物理内存页的损坏程度是指检测到的该物理内存页中的坏
点数量。由于当某一物理内存页被占用时,则无论该物理内存页是否损坏,均不能将该内 存分配给应用程序,否则将造成混乱,因此,在分配物理内存时,标记物理内存页的分配情 况,其中物理内存页的分配情况可以为未占用或者已占用。在本发明实施例中,在以预设的分页大小P为单位,对次级内存进行扫描时,可以 检测到每个物理内存页的物理地址和坏点的数量,根据检测到的每个物理内存页的坏点数 量即可确定该物理内存页的损坏程度。在电子系统中,内存一般是作为应用程序的执行空间而存在的,应用程序的代码 段、数据段、堆栈空间等一般都运行于内存中。对于应用程序的代码段来说,只要用于存储 应用程序的代码段的内存空间有损坏,将造成应用程序流程发生错误,从而造成不可预料 的错误,因此,为了避免应用程序的流程发生不可预料的错误,用于存储应用程序的代码段 的内存空间不允许有任何的损坏。而对于应用程序的数据段和堆栈空间来说,用于存储应 用程序的数据段和堆栈空间的内存如果有损坏,则不一定导致应用程序的流程发生错误, 如损坏的数据只是用来输出到显示屏上的数据,则只会导致显示屏上的一个色点显示非正 常,而不会导致应用程序的流程发生错误,当然如果被损坏的数据是一个程序的判断条件, 则会导致程序流程出错。根据上述内存的存储需要,为了提高次级内存的使用效率,在本发明实施例中,该 方法还包括下述步骤根据物理内存页的损坏程度和预设的物理内存页分级标准,对物理内存页进行分 级处理,得到每个物理内存页的损坏级别。其中物理内存页分级标准可以根据电子系统中 内存的分配情况进行设置,如可以将物理内存页分为不包括任何坏点的完好页、存在小于 或者等于预设数量坏点的次完好页和存在大于预设数量坏点的损坏页三个损坏级别。当 然,物理内存页分级标准还可以为其他形式,不以上述设置方式为限。当物理内存页分级标准为完好页、次完好页和损坏页时,则根据次级内存中每一 物理内存页的损坏程度对物理内存页进行分级处理后,即可得到该物理内存页的损坏级 别,为完好页、次完好页或者损坏页。为了便于说明,在本发明实施例的以下说明中,以将物理内存页处理成完好页、次 完好页和损坏页三个损坏级别为例。由于在电子系统中,用于存储应用程序的代码段以及部分数据段和堆栈空间的内 存不允许任何的损坏,因此,每一个电子系统均有其自身可以兼容的次级内存的限度,举例 说明如下,如果电子系统中用于存储应用程序的代码段以及部分数据段和堆栈空间的不允
7许任何损坏的内存空间为3M,而扫描后,该次级内存中没有任何损坏的内存空间小于3M, 则无论采用何种次级内存分配方法均难以兼容该次级内存,因此,为了避免上述问题,在本 发明另一实施例中,在以预设的分页大小为单位,对次级内存进行扫描的步骤之后,所述方 法还包括下述步骤A、预先设置电子系统可兼容的次级内存的阈值。当物理内存页分级标准为完好页、次完好页和损坏页时,需要预先设置的电子系 统可兼容的次级内存的阈值包括最大完好内存使用量L、最大次完好内存的内存使用量 Li、最大完好连续物理内存使用量N和最大次完好连续物理内存使用量W。其中L、L1、N、 Nl均为P的整数倍。P为预设的物理内存页的分页大小。B、根据扫描得到的次级内存的损坏程度与预设的电子系统可以兼容的次级内存 阈值,判断电子系统是否可兼容该次级内存。当物理内存页分级标准为完好页、次完好页和损坏页时,在扫描次级内存时,获取 该次级内存中所有完好页的总内存容量L’,所有次完好页的总内存容量Li’,最大的连续 完好页区域的内存容量N’,以及最大的连续次完好页区域的内存容量m’。根据扫描得到 的次级内存的损坏程度与预设的电子系统可以兼容的次级内存的阈值,判断电子系统是否 兼容该次级内存的具体过程如下判断如下关系是否成立a、L,>=L。b、N,>=N。c、L,+Li,>= L+Ll。d、N,+Ni,>= N+Nl。当上述关系均成立时,则判定电子系统可以兼容该次级内存,此时,记录物理内存 页的物理地址和损坏程度,否则,判定电子系统不兼容该次级内存,并提示此次级内存损坏 过于严重,电子系统不能兼容。请参阅图3,为本发明实施例提供的扫描次级内存后,记录的次级内存中物理内存 页的物理地址、损坏程度和分配情况的示意图,在此示意图中,采用2bit记录物理内存页 的物理地址、损坏程度和分配情况,其中ObOO表示完好未占用物理内存页,ObOl表示完好 已占用物理内存页,OblO表示次完好未占用物理内存页,Obll表示完好已占用或者已损坏 物理内存页,其中第一行表示物理内存页的损坏程度和分配情况,第二行表示物理内存页 的物理地址。在步骤S203中,在接收到申请物理内存的请求时,获取物理内存页的分配情况, 并根据记录的次级内存中物理内存页的物理地址和损坏程度以及物理内存页的分配情况 分配物理内存。由于当某一物理内存页已被分配,即其处于被占用状态时,则无论该物理内存页 是否损坏,均不能将该内存分配给应用程序,否则将造成混乱,因此,在分配物理内存时,标 记物理内存页的分配情况,其中物理内存页的分配情况可以为未占用或者已占用。当物理 内存页已被分配时,即该物理内存页已被占用,则标记物理内存页的分配情况为已占用,在 接收到物理内存申请请求时,获取物理内存页的分配情况,并根据记录的次级内存中物理 内存页的物理地址和损坏程度以及物理内存页的分配情况分配物理内存。
8
在本发明实施例中,当接收到申请物理内存的请求,如接收到某应用程序的申请 物理内存的请求时,将次级内存中物理内存页的坏点数量小于或者等于预设数量的物理内 存页分配给即使对应内存页损坏也不会导致应用程序流程转变的内存申请使用,如即使对 应内存页损坏也不会导致应用程序的流程转变的数据段或者堆栈空间,而将次级内存中不 存在坏点的物理内存页分配给如果对应的内存页损坏会导致应用程序流程转变的内存申 请使用,如应用程序的代码段以及如果对应的内存页损坏可导致应用程序的流程转变的数 据段或堆栈空间。而当对次级内存中的物理内存页进行了分级处理,得到物理内存页的损坏级别 时,在分配物理内存时,根据次级内存中物理内存页的损坏级别分配物理内存。如将次级内 存中的次完好页分配给即使对应内存页损坏也不会导致应用程序流程转变的内存申请使 用,如即使对应内存页损坏也不会导致的流程转变的数据段或者堆栈空间,而将次级内存 中的完好页分配给如果对应的内存页损坏会导致应用程序流程转的内存申请使用,如应用 程序的代码段以及如果对应的内存页损坏可导致应用程序的流程转变的数据段或堆栈空 间。为了提高申请连续物理内存的成功率,在本发明另一实施例中,根据记录的次级内存中 物理内存页的物理地址、损坏程度以及分配情况分配物理内存的步骤具体为A、根据电子系统中内存的分配情况,设置申请连续同损坏级别物理内存页的阈值 M ;当对次级内存中的物理内存页进行了分级处理,得到物理内存页的损坏级别为完 好页、次完好页和损坏页时,设置申请连续完好物理内存的阈值K和申请连续次完好物理 内存的阈值Kl。B、当接收到用于请求单一的任一损坏级别物理内存页的申请请求时,对该损坏级 别物理内存页的区域按照从小到大的顺序进行检索,在检索到符合要求的该损坏级别物理 内存页的区域时,按照从低地址到高地址的顺序进行检索,并分配空闲的所述损坏级别物 理内存页,当不存在空闲的物理内存页时,返回内存申请失败并给出相应提示;当将物理内存页分为完好页、完好页次完好页和损坏页三个损坏级别时,则在接 收到用于请求单一的完好或者次完好页的申请请求时,对次级内存的完好页的区域或者次 完好页的区域按照从小到大的顺序进行检索,在检索到符合要求的完好页的区域或者次完 好页的区域时,按照从低地址到高地址的顺序进行检索,并分配空闲的完好页或者次完好 页,当不存在空闲的内存时,返回内存申请失败并给出相应提示;请参阅图4,是本发明实施例提供的对图3所示的完好页的区域和次完好页的区 域进行从小到大排序的示意图。C、当接收到用于请求小于或者等于M的连续同损坏级别物理内存页的申请请求 时,对同损坏级别物理内存页的区域按照从小到大的顺序进行检索,在检索到符合要求的 该损坏级别物理内存页的区域时,按照从低地址到高地址的顺序进行检索,并分配满足条 件的连续同损坏级别物理内存页,当不存在满足条件的内存时,返回内存申请失败并给出 相应提示;当将物理内存页分为完好页、完好页次完好页和损坏页三个损坏级别时,则在接 收到用于请求小于或者等于K或者Kl的连续完好内存或者次完好内存的申请请求时,对次 级内存的完好页的区域或者次完好页的区域按照从小到大的顺序进行检索,在检索到符合要求的完好页的区域或者次完好页的区域时,按照从低地址到高地址的顺序进行检索,并 分配满足条件的连续完好页或者次完好页,当不存在满足条件的内存时,返回内存申请失 败并给出相应提示;D、当接收到用于请求大于M的连续同损坏级别物理内存页的申请请求时,对同损 坏级别内存页的区域按照从大到小的顺序进行检索,在检索到符合要求的该损坏级别物理 内存页的区域时,按照从高地址到低地址的顺序进行检索,并分配满足条件的连续同损坏 级别物理内存页,当不存在满足条件的内存时,返回内存申请失败并给出相应提示;当将物理内存页分为完好页、完好页次完好页和损坏页三个损坏级别时,则在接 收到用于请求大于K或者Kl的连续完好内存或者次完好内存的申请请求时,对次级内存的 完好页的区域或者次完好页的区域按照从大到小的顺序进行检索,在检索到符合要求的完 好页的区域或者次完好页的区域时,按照从高地址到低地址的顺序进行检索,并分配满足 条件的连续完好页或者次完好页,当不存在满足条件的内存时,返回内存申请失败并给出 相应提示;E、更新物理内存页的分配情况,并且当申请的是逻辑地址空间内存时,将分配的 物理内存页映射到此逻辑地址空间。如将分配的物理内存页标记为“已占用”。请参阅图5,为本发明实施例提供的根据物理内存页的损坏程度将物理内存页映 射为逻辑地址连续的存储空间的示意图。以下以系统引导阶段的物理内存申请为例,详述上述内存分配过程,在该例中,次 级内存的物理内存页的损坏程度分为完好页、次完好页和损坏页在系统引导阶段读取记录的次级内存中物理内存页的物理地址、损坏程度和分配 情况的表,并对次级内存的完好页的区域和次完好页的区域按照从小到大的顺序进行排 序,且每种完好页的区域和次完好页的区域内再按照从低地址到高地址的顺序进行排序, 如图4所示。系统引导程序读取操作系统镜像所占用的内存大小,并按照从小到大的完好 页的区域和次完好页的区域顺序,且在同一完好页的区域和次完好页的区域按照从低地址 到高地址的顺序依次为操作系统分配完好页和次完好页,将操作系统加载到分配的物理内 存页中并作好相应的页表映射,更新表中已使用的物理内存页的对应分配情况。最后系统 引导程序将此更新后的物理内存页的物理地址、损坏程度和分配情况的表传递给操作系 统,开启内存映射机制并跳转到操作系统入口地址。综上所述,本发明实施例提供的次级内存的分配方法,包括下述步骤A、按照预设的分页大小对次级内存进行分页处理,将次级内存处理成多个大小为 预设的分页大小的物理内存页;B、以预设的分页大小为单位,扫描次级内存,记录每个物理内存页的物理地址和 损坏程度;C、在接收到物理内存申请请求时,获取物理内存页的分配情况,并根据记录的次 级内存中物理内存页的物理地址和损坏程度以及物理内存页的分配情况分配物理内存。图6示出了本发明实施例提供的次级内存分配装置的结构,为了便于说明,仅示 出了与本发明实施例相关的部分。该次级内存分配装置可以是内置于任意需要使用内存的 电子设备中的软件单元、硬件单元或者软硬件相结合的单元,也可以作为独立的挂件集成 到任意需要使用内存的电子设备中或者电子设备的应用系统中。其中
10
存储单元61存储预设的次级内存的分页大小。在本发明实施例中,该存储单元61 还存储预设的物理内存页分级标准、可兼容的次级内存的阈值、申请连续同损坏级别物理 内存的阈值中的一种或者多种。其中物理内存页分级标准是指根据物理内存页的损坏程度将物理内存页分成多 个损坏级别,如可以将物理内存页分为不包括任何坏点的完好页、存在小于或者等于预设 数量坏点的次完好页和存在大于预设数量坏点的损坏页三个损坏级别,当然,也可以根据 电子系统的内存分配情况,将物理内存页分为更多个或者更少个损坏级别。可兼容的次级内存的阈值是指该电子系统中可以兼容的次级内存的阈值。如当将 物理内存页分为完好页、次完好页和损坏页三个损坏级别时,则根据电子系统中内存的分 配情况,预设可兼容的次级内存的阈值如下包括最大完好页的总内存使用量L、最大次完 好页的总内存使用量Li、最大的连续完好页区域的内存使用量N和最大的连续次完好页的 内存使用量附。其中L、Li、N、附均为P的整数倍。其中P为预设的次级内存中物理内存 页的分页大小。为了最大限度的避免内存碎片,预先设置申请连续同损坏级别物理内存的阈值。 如当将物理内存页分为完好页、次完好页和损坏页三个损坏级别时,则根据电子系统中内 存的分配情况,预设申请连续同损坏级别物理内存的阈值如下设置申请连续完好物理内 存的阈值K和申请连续次完好内存的阈值K1。分页处理单元62按照预设的分页大小对次级内存进行分页处理,将次级内存分 为多个大小为预设的分页大小的物理内存页。内存扫描单元63以预设的分页大小为单位,扫描分页处理单元62处理后的次级 内存,记录每个物理内存页的物理地址和损坏程度。其中物理内存页的损坏程度是指检测 到的该物理内存页中的坏点数量。为了提高次级内存的使用效率,在本发明实施例中,该装置还包括内存分级处理 单元65。该内存分级处理单元65根据内存扫描单元63记录的物理内存页的损坏程度以及 存储单元61存储的物理内存页分级标准对次级内存中的物理内存页进行分级处理,得到 物理内存页的损坏级别。此时内存分配单元64在接收到物理内存申请请求时,根据内存分 级处理单元65得到的物理内存页的损坏级别分配物理内存。如当物理内存页分级标准为完好页、次完好页和损坏页时,则内存分级处理单元 65根据检测到的物理内存页中的坏点数量将内存分为完好页、次完好页和损坏页三个损坏 级别。由于在电子系统中,用于存储应用程序的代码段以及部分数据段和堆栈空间的内 存不允许任何的损坏,因此,每一个电子系统均有其自身可以兼容的次级内存的限度,因 此,为了避免电子系统中的应用程序的流程发生不可预料的错误,在本发明另一实施例中, 该装置还包括内存兼容判断单元66。该内存兼容判断单元66根据存储单元61存储的电子 系统可兼容的次级内存的阈值以及内存扫描单元63得到的次级内存的损坏程度判断电子 系统是否可兼容该次级内存。当物理内存页分级标准为完好页、次完好页和损坏页时,则预先设置最大完好页 的总内存使用量L、最大次完好页的总内存使用量Li、最大的连续完好页区域的内存使用 量N和最大的连续次完好页区域的内存使用量m,此时根据内存扫描单元63扫描得到的该次级内存的损坏程度如下时该次级内存中所有完好页的总内存容量L’,所有完好页次完 好页的总内存容量Li’,最大的连续完好页区域的内存容量N’,以及最大的连续完好页次 完好页区域的内存容量m’,内存兼容判断单元66判断如下关系是否成立,当如下关系成 立时,判定电子系统可以兼容该次级内存,否则,判定电子系统不兼容该次级内存a、L,>=L。b、N,>=N。c、L,+Li,>= L+Ll。d、N,+Ni,>= N+Nl。当内存兼容判断单元66判定电子系统可以兼容该次级内存时,内存扫描单元63 记录每个物理内存页的物理地址和损坏程度,当内存兼容判断单元66判定电子系统不兼 容该次级内存时,提示此次级内存损坏过于严重,电子系统不能兼容。内存分配单元64在接收到物理内存申请请求时,获取物理内存页的分配情况,并 根据内存扫描单元63记录的物理内存页的物理地址和损坏程度以及物理内存页的分配情 况分配物理内存。由于当某一物理内存页被占用时,则无论该物理内存页是否损坏,均不能将该内 存分配给应用程序,否则将造成混乱,因此,该内存分配单元64根据物理内存页被占用的 情况标记物理内存页的分配情况,并在接收到物理内存申请请求时,根据记录的次级内存 中物理内存页的物理地址和损坏程度以及物理内存页的分配情况分配物理内存。其中物理 内存页的分配情况可以为未占用或者已占用。在本发明实施例中,当接收到物理内存申请 请求,如接收到某应用程序的物理内存申请请求时,将次级内存中物理内存页的坏点数量 小于或者等于预设数量的物理内存页分配给即使对应内存页损坏也不会导致应用程序流 程转变的流程转变的内存申请使用,如即使对应内存页损坏也不会导致应用程序的流程转 变的数据段或者堆栈空间,而将次级内存中不存在坏点的物理内存页分配给如果对应的内 存页损坏会导致应用程序流程转变的内存申请使用,如应用程序的代码段以及如果对应的 内存页损坏可导致应用程序的流程转变的数据段或堆栈空间。当内存分级处理单元65对物理内存页进行了分级处理,得到物理内存页的损坏 级别时,内存分配单元64在接收到物理内存申请请求时,根据内存分级处理单元65得到的 物理内存页的损坏级别分配物理内存。为了提高申请连续物理内存的成功率,在本发明另一实施例中,该内存分配单元 64包括单一页面分配模块641在接收到用于请求单一的任一损坏级别物理内存页的申 请请求时,对该损坏级别物理内存页的区域按照从小到大的顺序进行检索,在检索到符合 要求的该损坏级别物理内存页的区域时,按照从低地址到高地址的顺序进行检索,分配空 闲的该损坏级别物理内存页,并更新分配的物理内存页的分配情况。在不存在空闲的物理 内存页时,返回内存申请失败并给出相应提示;当将物理内存页分为完好页、完好页次完好页和损坏页三个损坏级别时,则单一 页面分配模块641在接收到用于请求单一的完好或者次完好页的申请请求时,对次级内存 的完好页的区域或者次完好页的区域按照从小到大的顺序进行检索,在检索到符合要求的 完好页的区域或者次完好页的区域时,按照从低地址到高地址的顺序进行检索,并分配空
12闲的完好页或者次完好页,并更新分配的物理内存页的分配情况。当不存在空闲的内存时, 返回内存申请失败并给出相应提示;第一连续内存分配模块642在接收到用于请求小于或者等于M的连续同损坏级 别物理内存的申请请求时,对该损坏级别物理内存的区域按照从小到大的顺序进行检索, 在检索到符合要求的该损坏级别物理内存的区域时,按照从低地址到高地址的顺序进行检 索,并分配空闲的所述损坏级别物理内存,并更新分配的物理内存页的分配情况。在不存在 满足条件的内存时,返回内存申请失败并给出相应提示。其中M为预设的申请连续同损坏 级别物理内存页的阈值;当将物理内存页分为完好页、次完好页和损坏页三个损坏级别时,第一连续内存 分配模块642在接收到用于请求小于或者等于K或者Kl的连续完好内存或者次完好内存 的申请请求时,对次级内存的完好页的区域或者次完好页的区域按照从小到大的顺序进行 检索,在检索到符合要求的完好页的区域或者次完好页的区域时,按照从低地址到高地址 的顺序进行检索,并分配满足条件的连续完好页或者次完好页,并更新分配的物理内存页 的分配情况。当不存在满足条件的内存时,返回内存申请失败并给出相应提示;第二连续内存申请模块643在接收到用于请求大于M的连续同损坏级别物理内存 的申请请求时,对所述损坏级别内存区域按照从大到小的顺序进行检索,在检索到符合要 求的该损坏级别物理内存页的区域时,按照从高地址到低地址的顺序进行检索,并分配满 足条件的连续同损坏级别物理内存页,并更新分配的物理内存页的分配情况。在不存在满 足条件的内存时,返回内存申请失败并给出相应提示。其中M为预设的申请连续同损坏级 别物理内存的阈值;当将物理内存页分为完好页、完好页次完好页和损坏页三个损坏级别时,第二连 续内存申请模块643在接收到用于请求大于K或者Kl的连续完好内存或者次完好内存的 申请请求时,对次级内存的完好页的区域或者次完好页的区域按照从大到小的顺序进行检 索,在检索到符合要求的完好页的区域或者次完好页的区域时,按照从高地址到低地址的 顺序进行检索,并分配满足条件的连续完好页或者次完好页,并更新分配的物理内存页的 分配情况。当不存在满足条件的内存时,返回内存申请失败并给出相应提示;内存映射模块644在申请的是逻辑地址空间内存时,将分配的物理内存页映射到 此逻辑地址空间,同时更新物理内存页的分配情况。如将分配给申请者使用的物理内存页 标记为“已占用”。在本发明实施例中,按照预设的分页大小对次级内存进行分页处理,以预设的分 页大小对次级内存进行扫描,并记录每个物理内存页的物理地址、损坏程度和分配情况,根 据物理内存页的物理地址、损坏程度和分配情况分配内存,以主动避开严重损坏的物理内 存页,最大程度使用轻度损坏的物理内存页,从而提高次级内存的使用效率。通过对物理内 存页进行分级处理,并根据物理内存页的损坏级别分配内存,从而提高次级内存的使用效 率。通过对不同损坏级别物理内存页的区域进行从小到大排序,普通内存分配按照从小到 大的方向进行检索,在检索符合要求的该损坏级别物理内存页的区域时,按照从低地址到 高地址的顺序进行分配,大于阀值的连续物理内存申请从大到小进行检索,在检索到符合 要求的该损坏级别物理内存页的区域时,按照从高地址到低地址的顺序进行分配,从而提 高申请连续物理内存的成功率。
13
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精 神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
权利要求
1.一种次级内存的分配方法,其特征在于,所述方法包括A、按照预设的分页大小对次级内存进行分页处理,将次级内存处理成多个大小为预设 的分页大小的物理内存页;B、以预设的分页大小为单位,扫描次级内存,记录每个物理内存页的物理地址和损坏 程度;C、在接收到申请物理内存的请求时,获取物理内存页的分配情况,并根据记录的次级 内存中物理内存页的物理地址和损坏程度以及物理内存页的分配情况分配物理内存。
2.如权利要求1所述的方法,其特征在于,在以页为单位,扫描次级内存的步骤之后, 所述方法还包括下述步骤根据扫描得到的次级内存的损坏程度与预设的电子系统可以兼容的次级内存阈值,判 断电子系统是否可兼容所述次级内存。
3.如权利要求1所述的方法,其特征在于,在根据记录的次级内存中物理内存页的物 理地址、损坏程度以及分配情况分配物理内存时,标记物理内存的分配情况。
4.如权利要求1至3任一权利要求所述的方法,其特征在于,在所述步骤C之前,所述 方法还包括下述步骤⑶、根据物理内存页的损坏程度和预设的物理内存页分级标准,对物理内存页进行分 级处理,得到每个物理内存页的损坏级别。
5.如权利要求4所述的方法,其特征在于,所述步骤C具体包括Cl、当接收到用于请求单一的任一损坏级别物理内存页的申请请求时,对所述损坏级 别物理内存页的区域按照从小到大的顺序进行检索,在检索到符合要求的该损坏级别物理 内存页的区域时,按照从低地址到高地址的顺序进行检索,并分配空闲的所述损坏级别物 理内存页;C2、当接收到用于请求小于或者等于M的连续同损坏级别物理内存页的申请请求时, 对所述损坏级别物理内存页的区域按照从小到大的顺序进行检索,在检索到符合要求的该 损坏级别物理内存页的区域时,按照从低地址到高地址的顺序进行检索,并分配满足条件 的连续同损坏级别物理内存页,所述M为预设的申请连续同损坏级别物理内存页的阈值;C3、当接收到用于请求大于M的连续同损坏级别物理内存页的申请请求时,对所述损 坏级别物理内存页的区域按照从大到小的顺序进行检索,在检索到符合要求的该损坏级别 物理内存页的区域时,按照从高地址到低地址的顺序进行检索,并分配满足条件的连续同 损坏级别物理内存页,所述M为预设的申请连续同损坏级别物理内存页的阈值。
6.如权利要求5所述的方法,其特征在于,所述步骤C还包括C4、更新分配的物理内存页的分配情况,并且当申请的是逻辑地址空间内存时,将分配 的物理内存页映射到此逻辑地址空间。
7.如权利要求4所述的方法,其特征在于,所述物理内存页的损坏级别包括完好页、次 完好页和损坏页。
8.如权利要求7所述的方法,其特征在于,所述步骤CO具体包括通过判断如下关系是否均成立来判断电子系统是否可分配该次级内存L,>= L ;N,>= N ;L,+Li,>= L+L1 ;N,+Ni' >= N+N1,其中 L,为该次级内存中所 有完好页的总内存容量,Li’为次级内存中所有次完好页的总内存容量,N’为次级内存中最大的连续完好页区域的内存容量,ΝΓ为次级内存中最大的连续次完好页区域的内存容量, L为预先设置的电子系统可兼容的次级内存中最大完好页的总内存使用量,Ll为预先设置 的电子系统可兼容的次级内存中最大次完好页的总内存使用量,N为预先设置的电子系统 可兼容的次级内存中最大的连续完好页区域的内存使用量,W为预先设置的电子系统可兼 容的次级内存中最大的连续次完好页的内存使用量。
9.如权利要求7所述的方法,其特征在于,所述步骤C具体包括Cl’、在接收到用于请求单一的完好或者次完好页的申请请求时,对次级内存的完好页 的区域或者次完好页的区域按照从小到大的顺序进行检索,在检索到符合要求的完好页的 区域或者次完好页的区域时,按照从低地址到高地址的顺序进行检索,并分配空闲的完好 页或者次完好页;C2’、在接收到用于请求小于或者等于K或者Kl的连续完好内存或者次完好内存的 申请请求时,对次级内存的完好页的区域或者次完好页的区域按照从小到大的顺序进行检 索,在检索到符合要求的完好页的区域或者次完好页的区域时,按照从低地址到高地址的 顺序进行检索,并分配满足条件的连续完好页或者次完好页,其中K为预设的申请连续完 好物理内存的阈值,Kl为预设的申请连续次完好物理内存的阈值;C3’、在接收到用于请求大于K或者Kl的连续完好内存或者次完好内存的申请请求时, 对次级内存的完好页的区域或者次完好页的区域按照从大到小的顺序进行检索,在检索到 符合要求的完好页的区域或者次完好内存页的区域时,按照从高地址到低地址的顺序进行 检索,并分配满足条件的连续完好页或者次完好页,其中K为预设的申请连续完好物理内 存的阈值,Kl为预设的申请连续次完好物理内存的阈值。
10.如权利要求9所述的方法,其特征在于,所述步骤C还包括C4’、更新物理内存页的分配情况,并且当申请的是逻辑地址空间内存时,将分配的物 理内存页映射到此逻辑地址空间。
11.一种次级内存分配装置,其特征在于,所述装置包括分页处理单元,用于按照预设的分页大小对次级内存进行分页处理,将次级内存处理 成多个大小为预设的分页大小的物理内存页;内存扫描单元,用于以预设的分页大小为单位,扫描所述分页处理单元处理后的次级 内存,记录每个物理内存页的物理地址和损坏程度;内存分配单元,用于在接收到物理内存申请请求时,获取物理内存页的分配情况,并根 据内存扫描单元记录的次级内存中物理内存页的物理地址和损坏程度以及物理内存页的 分配情况分配物理内存。
12.如权利要求11所述的装置,其特征在于,所述装置还包括内存兼容判断单元,用于根据扫描得到的次级内存的损坏程度与预设的电子系统可以 兼容的次级内存的阈值,判断电子系统是否可兼容该次级内存;和/或内存分级处理单元,根据物理内存页的损坏程度和预设的物理内存页分级标准,对物 理内存页进行分级处理,得到每个物理内存页的损坏级别。
13.如权利要求12所述的装置,其特征在于,所述内存分配单元包括单一页面分配模块,用于在接收到用于请求单一的任一损坏级别物理内存页的申请请 求时,对所述损坏级别物理内存页的区域按照从小到大的顺序进行检索,在检索到符合要求的该损坏级别物理内存页的区域时,按照从低地址到高地址的顺序进行检索,并分配空 闲的所述损坏级别物理内存页,并更新物理内存页的分配情况;第一连续内存分配模块,用于在接收到用于请求小于或者等于M的连续同损坏级别 物理内存页的申请请求时,对所述损坏级别物理内存页的区域按照从小到大的顺序进行检 索,在检索到符合要求的该损坏级别物理内存页的区域时,按照从低地址到高地址的顺序 进行检索,并分配空闲的所述损坏级别物理内存页,并更新物理内存页的分配情况,所述M 为预设的申请连续同损坏级别物理内存的阈值;第二连续内存申请模块,用于在接收到用于请求大于M的连续同损坏级别物理内存页 的申请请求时,对所述损坏级别内存页的区域按照从大到小的顺序进行检索,在检索到符 合要求的该损坏级别物理内存页的区域时,按照从高地址到低地址的顺序进行检索,并分 配满足条件的连续同损坏级别物理内存页,并更新物理内存页的分配情况,所述M为预设 的申请连续同损坏级别物理内存的阈值。
全文摘要
本发明适用于存储器领域,提供一种次级内存的分配方法和装置,该方法包括按照预设的分页大小对次级内存进行分页处理,将次级内存处理成多个大小为预设的分页大小的物理内存页;以预设的分页大小为单位,扫描次级内存,记录每个物理内存页的物理地址和损坏程度;在接收到物理内存申请请求时,获取物理内存页的分配情况,并根据记录的物理内存页的物理地址和损坏程度以及物理内存页的分配情况分配物理内存。本发明通过对次级内存进行扫描,并记录每个物理内存页的物理地址和损坏程度,根据物理内存页的物理地址和损坏程度以及分配情况分配内存,以主动避开严重损坏的物理内存页,最大程度使用轻度损坏的物理内存页,从而提高次级内存的使用效率。
文档编号G06F12/06GK102004701SQ200910189918
公开日2011年4月6日 申请日期2009年8月28日 优先权日2009年8月28日
发明者李国平, 樊卿华, 黄河 申请人:炬才微电子(深圳)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1