专利名称:一种管理系统内存的方法及装置的制作方法
技术领域:
本发明涉及计算机领域,尤其涉及一种管理系统内存的方法及装置。
背景技术:
目前,在进行应用操作时需要应用系统频繁的从物理磁盘中读取数据或写数据; 由于从物理磁盘中读写数据的速度较慢,耗时较长,因此,在管理系统内存时,为提高应用执行效率,在内存中开辟多个cache缓存块来临时缓存物理磁盘上的数据,以方便应用系统从该多个cache缓存块中读写数据,提高数据读写速度。目前,在嵌入式设备中,RAM (Random Access Memory,随机存储器)的内存分配情况如图1所示,将内存按照物理地址从低到高的顺序依次划分为中断向量表、带初始值的全局变量分配区、未初始化全局变量分配区、堆空间、系统/用户模式堆栈和异常模式堆栈六个部分,其中堆空间是用于分配动态内存的空间,未初始化全局变量分配区用于缓存物理磁盘中的数据;当应用系统需要动态内存时,可从堆空间中为应用系统分配相应大小的内存。目前,嵌入式设备的内存比较小,为确保嵌入式设备的正常使用需要以合理的内存管理机制来降低内存的消耗。内存的可用量是衡量嵌入式设备的系统性能的重要指标, 当嵌入式设备的内容消耗较多时将可能使得可分配给当前应用操作的内存量不够,从而导致当前应用操作失败的问题。为了尽量减少内存消耗量,目前主要通过减少变量(如全局变量、静态变量等)的定义、紧凑地安排变量定义顺序以及按照空间优化原则编写代码等方式来减少内存消耗量。但是随着应用的日益增多,仅仅通过上述方式来降低内存消耗量, 并不能从本质上解决内存不够用的问题;因此,采用现有的内存管理方法,将会存在以下缺陷由于堆空间只用于动态内存的分配,未初始化全局变量分配区仅用于缓存物理磁盘数据,堆空间与未初始化全局变量分配区不能共享;因此,当应用操作较多时,可能会由于堆空间中可使用的内存较少而导致某些应用操作不能执行,而此时的未初始化全局变量分配区中可使用内存却较多,因此,采用现有的内存管理方式存在内存分配不合理、不均衡从而导致内存利用率较低、灵活性较差的问题,而且还可能会由于不能执行应用操作而降低系统性能。
发明内容
针对现有技术中管理内存的方法存在的物理内存利用率低和系统性能差的问题, 本发明实施例提供一种管理系统内存的方法及装置,以实现动态内存区与cache缓存区之间的内存共享,提高系统内存的利用率,确保应用操作的成功执行,从而提高系统性能。一种管理系统内存的方法,包括接收应用系统发送的动态内存分配请求,所述动态内存分配请求中携带有请求分配的空间大小;当动态内存区中未使用内存小于所述请求分配的空间大小时,将动态内存区中所有未使用内存和cache缓存区中的部分内存分配给所述应用系统,所述动态内存区中所有未使用内存与所述cache缓存区的所述部分内存的和值与请求分配的空间大小相同;或者,从cache缓存区中为所述应用系统分配与所述请求分配的空间大小相同的内存;当动态内存中未使用内存大于或等于所述请求分配的空间大小时,从所述动态内存区的未使用内存中为所述应用系统分配与所述请求分配的空间大小相同的内存。一种管理系统内存的装置,包括接收单元,用于接收应用系统发送的动态内存分配请求,所述动态内存分配请求中携带有请求分配的空间大小;判断单元,用于判断动态内存区中未使用内存是否小于所述请求分配的空间大小;动态内存分配单元,用于在所述判断单元判断为是时,将动态内存区中所有未使用内存和cache缓存区中的部分内存分配给所述应用系统,所述动态内存区中所有未使用内存与所述cache缓存区的所述部分内存的和值与请求分配的空间大小相同;或者,从 cache缓存区中为所述应用系统分配与所述请求分配的空间大小相同的内存;以及,在判断单元判断为否时,从所述动态内存区的未使用内存中为所述应用系统分配与所述请求分配的空间大小相同的内存。一种智能卡,包括前述管理系统内存的装置。本发明实施例中,在接收到应用系统发送的动态内存分配请求时,当动态内存区未使用内存小于请求分配的空间大小时,将动态内存区中所有未使用内存和cache缓存区中的部分内存分配给所述应用系统,所述动态内存区中所有未使用内存与所述cache缓存区的所述部分内存的和值与请求分配的空间大小相同;或者,从cache缓存区中为所述应用系统分配与所述请求分配的空间大小相同的内存;因此,采用本发明技术方案,在接收到应用系统发送的动态内存分配请求时,若动态内存区中的未使用内存不够时,还可从cache 缓存区中为应用系统分配一定量的内存,从而实现动态内存区和cache缓存区的内存共享,克服了现有技术中动态内存区不够用时而cache缓存区内存空闲,从而导致内存空间利用率较低的问题,采用本发明技术方案不仅提高了系统内存的利用率,而且确保了有足够的内存空间用于分配给应用系统,从而确保了应用操作的成功率,提高系统性能。
图1为现有技术中对嵌入式设备中的系统内存进行分配的结构示意图;图2为本发明实施例一中对系统内存进行分配的结构示意图;图3为本发明实施例二中对系统内存进行分配的结构示意图;图4为本发明实施例一中管理系统内存的方法流程图;图5A为本发明实施例一中对系统内存进行分配的结构示意图之一;图5B为本发明实施例一中对系统内存进行分配的结构示意图之二 ;图5C为本发明实施例一中对系统内存进行分配的结构示意图之三;图6A为本发明实施例中当前未为应用系统分配动态内存时的共享内存的结构示意图;图6B为本发明实施例中当前为应用系统分配相应的动态内存之后的共享内存的结构示意图;图7为本发明实施例中建立的用于存储预定义动态内存和全局变量内存的相关信息的链表;图8为本发明实施例二中管理系统内存的方法流程图;图9A为本发明实施例二中对系统内存进行分配的结构示意图之一;图9B为本发明实施例二中对系统内存进行分配的结构示意图之二 ;图10为本发明实施例中管理系统内存的装置的结构示意图之一;图11为本发明实施例中管理系统内存的装置的结构示意图之二 ;图12A为本发明实施例中管理系统内存的装置的结构示意图之三;图12B为本发明实施例中管理系统内存的装置的结构示意图之四。
具体实施例方式本发明实施例提供一种管理系统内存的方法及装置,以实现动态内存区与cache 缓存区之间的内存共享,提高系统内存的利用率,确保应用操作的成功执行,从而提高系统性能。管理系统内存的方法,包括接收应用系统发送的动态内存分配请求,所述动态内存分配请求中携带有请求分配的空间大小;当动态内存区中未使用内存小于所述请求分配的空间大小时,将动态内存区中所有未使用内存和cache缓存区中的部分内存分配给所述应用系统,所述动态内存区中所有未使用内存与所述cache缓存区的所述部分内存的和值与请求分配的空间大小相同;或者,从cache缓存区中为所述应用系统分配与所述请求分配的空间大小相同的内存;当动态内存中未使用内存大于或等于所述请求分配的空间大小时,从所述动态内存区的未使用内存中为所述应用系统分配与所述请求分配的空间大小相同的内存。采用本发明技术方案,在接收到应用系统发送的动态内存分配请求时,若动态内存区中的未使用内存不够时,还可从cache缓存区中为应用系统分配一定量的内存,从而实现动态内存区和cache缓存区的内存共享,克服了现有技术中动态内存区不够用时而 cache缓存区内存空闲,从而导致内存空间利用率较低的问题,采用本发明技术方案不仅提高了系统内存的利用率,而且确保了有足够的内存空间用于分配给应用系统,从而确保了应用操作的成功率,提高系统性能。本发明实施例中,动态内存区可以为预定义的用于分配动态内存的空间,所述 cache缓存区为用于缓存物理磁盘数据的全局变量空间;当接收到应用系统发送的动态内存分配请求时,首先判断动态内存区的未使用内存是否够用,若不够用时除了将动态内存区的所有未使用内存分配给应用系统之外,还需要从cache缓存块中分配一部分内存;或者,直接从cache缓存区中为应用系统分配与请求分配的空间大小相同的内存。或者,本发明实施例中,还可以是不预定义动态内存区,当接收到应用系统发送的动态内存分配请求时,直接从cache缓存区中为所述应用系统分配与请求分配的空间大小相同的内存,并将分配的内存标记为动态内存区;当应用系统释放内存时,将释放的内存标记为cache缓存区。优选地,动态内存区和cache缓存区为从未初始化全局变量分配区中分配得到。较佳地,本发明实施例中,为了更好的管理系统内存以及确保应用操作的成功执行,在将cache缓存区中作为动态内存分配给应用系统的内存标记为动态内存区,以免后续再将该部分内存作为cache缓存区的内存使用从而导致应用操作失败的问题。较佳地,为尽量确保cache缓存区的正常使用,本发明实施例中,在应用系统释放内存时,判断释放的内存中是否有从cache缓存区分配得到的部分内存,若是则将该部分内存标记为cache 缓存区。较佳地,当动态内存区与cache缓存区连续时,将动态内存区未使用内存分配给应用系统之后,将cache缓存区中与动态内存区中未使用内存的地址相连的部分内存分配给所述应用系统(即所述动态内存区的未使用内存的尾地址与所述cache缓存区中分配给所述应用系统的内存的首地址相连),以确保分配给应用系统的内存为一块物理地址连续的空间。当动态内存区与所述cache缓存区不连续时,为了更好的获知cache缓存区中哪些内存分配给所述应用系统,本发明实施例的方法还包括记录所述cache缓存区中分配给所述应用系统的内存的首地址和尾地址;以及,记录所述动态内存区中分配给所述应用系统的内存的首地址和尾地址。本发明实施例中,cache缓存区中的多个cache缓存块可以是连续的也可以是不连续的,为尽量将物理地址较近的内存分配给应用系统,以进一步确保执行应用操作的成功率,本发明实施例中,当所述cache缓存区中的cache缓存块连续,且所述cache缓存区中分配给所述应用系统的内存大于单个cache缓存块的大小时,从cache缓存区中的至少两个连续的cache缓存块中为所述应用系统分配相应大小的内存;当所述cache缓存区中的cache缓存块连续,且所述cache缓存区中分配给所述应用系统的内存大于单个cache 缓存块的大小时,从cache缓存区中至少两个相邻的cache缓存块中为所述应用系统分配相应大小的内存。较佳地,为确保有足够的内存分配给应用系统,以成功执行应用操作,本发明实施例中,在接收到所述应用系统发送的动态内存分配请求时,若所述动态内存区中未使用内存与cache缓存区中未使用内存的和值小于所述请求分配的空间大小时,将所述cache缓存区中所有或部分的cache缓存块中缓存的数据写入到物理磁盘中。为更清楚、详细的对本发明技术方案进行描述,可以以一具体的实例进行详细的描述,该实例中动态内存区与cache缓存区从未初始化全局变量分配区中分配得到;下面结合说明书附图对本发明技术方案进行详细的描述。本发明实施例中,在系统初始化时,相对于现有技术而言,堆空间和未初始化全局变量分配区的总量不变,通过减少堆空间的大小来增加未初始化全局变量分配区的大小; 将该未初始化全局变量分配区作为共享内存,既可以为系统分配动态内存区,也可以分配用于缓存物理磁盘数据的cache缓存区。在管理系统内存时,将共享内存划分为两种结构类型,具体如下类型1、共享内存包括预定义动态内存区和用于缓存物理磁盘数据的cache缓存区,其中cache缓存区包括多个cache缓存块,如图2所示。类型2、共享内存包括用于缓存物理磁盘数据的cache缓存区,该cache缓存区包括多个cache缓存块,如图3所示。本发明实施例中,共享内存中的所有cache缓存块的大小相同。针对共享内存的上述两种结构,下面以两个实施例对本发明技术方案进行详细的描述。实施例一中的共享内存的结构为类型1 ;实施例二中的共享内存的内存结构为类型 2。
实施例一参见图4,为本发明实施例一中管理系统内存的方法流程图,该实施例一中,未初始化全局变量分配区包括预定义动态内存区和用于缓存物理磁盘数据的cache缓存区,该方法包括步骤401、接收应用系统发送的动态内存分配请求。该动态内存分配请求中携带有请求分配的空间大小。步骤402、判断所述预定义动态内存区中未使用的内存是否小于请求分配的空间大小,若是则执行步骤403,否则执行步骤404。步骤403、将动态内存区中所有未使用内存和cache缓存区中的部分内存分配给所述应用系统,所述动态内存区中所有未使用内存与所述cache缓存区的所述部分内存的和值与请求分配的空间大小相同;或者,从cache缓存区中为所述应用系统分配与所述请求分配的空间大小相同的内存。步骤404、从预定义动态内存区的未使用内存中为所述应用系统分配与请求分配的空间大小相同的内存。步骤405、当应用系统释放内存时,若释放的内存中包括从cache缓存区分配得到的部分内存时,将该部分内存标记为cache缓存区。本发明实施例一中,共享内存还可细划分为以下3种子类型,分别如图5A、图5B和图5C所示,其中第一子类型,如图5A所示,多个cache缓存块连续,且所述预定义动态内存区与所述多个cache缓存块连续;第二子类型,如图5B所示,多个cache缓存块不连续, 且所述预定义动态内存区与所述多个cache缓存块连续;第三子类型,如图5C所示,多个 cache缓存块不连续,且所述预定义动态内存区与所述多个cache缓存块不连续。下面以共享内存的结构为第一子类型为例,对本发明技术方案为应用系统分配动态内存进行详细的描述将共享内存按照物理地址从低到高的顺序依次划分为连续的预定义动态内存区和cache缓存区,其中cache缓存区包括cache缓存块1、cache缓存块2、. . .、cache缓存块 η ;记录每个cache缓存块的物理空间大小、cache缓存块1的首地址,无须存储其他cache 缓存块的物理地址,即可获知每个cache缓存块的首地址。在系统初始化时,定义一个全局缓冲变量buf,用于管理共享内存中动态内存区和 cache缓存区的分配,并指定每个cache缓存块的大小、cache缓存块的数量和预定义动态内存区的大小;获取全局缓冲变量buf的首地址、cache缓存块1的首地址以及当前分配指针指向的地址(分配指针指向的地址为当前已经使用的动态内存所对应的尾地址,该当前已经使用的动态内存的首地址与buf首地址相同),并保存,具体如图6A所示。在接收到应用系统发送的动态内存分配请求时,判断预定义动态内存区中未使用的内存的大小是否够用,若不够用时,根据请求分配的空间大小、预定义动态内存区中未使用内存、单个cache缓存块的大小确定出待选取cache缓存块的数量N(具体可参见公式 (1)),从cache缓存块1 cache缓存块η中选取连续或不连续的N个cache缓存块,并将该N个cache缓存块标记为动态内存区。较佳地,本发明实施例选取连续的N个cache缓存块(比如说N为2,则选取cache缓存块1和cache缓存块2),并从预定义动态内存区中的未使用内存、cache缓存块1和cache缓存块2中为所述应用系统分配与所述请求分配的空间大小相同的内存,并将分配指针往高地址方向移动请求分配的空间大小,如图6B所示#=^^式(1);式(1)中,N为待选取cache缓存块的数量,Ql为请求分配的空间大小,Q2为预定义动态内存区中未使用的内存大小,AQ为单个cache缓存块的大小。较佳地,若在为所述应用系统分配动态内存之前,所述cache块缓存1中保存着有用的缓冲数据时,可将该缓冲数据写入到其他空闲的cache缓存块中。较佳地,若在为所述应用系统分配动态内存之前,判断共享内存中所有可使用内存的和值低于请求分配的空间大小时,将共享内存中部分或全部cache缓存块中的数据写入到物理磁盘中。较佳地,在需要将部分cache缓存块的数据写入到物理磁盘中时,可将数据缓存时间较长、数据较长时间未读取的cache缓存块中的数据写入到物理磁盘中。较佳地,每一次为应用系统分配动态内存成功之后,更新存储的分配指针指向的地址、系统全局cache缓存块的数量(如将系统全局cache缓存块的数量的当前值减去N)。 并将N个cache缓存块的状态标记设置为动态内存区(如当cache缓存块的状态标记为 “1”时表示该cache缓存块已经设置为动态内存区,并作为动态内存使用;当cache缓存块的状态标记为“0”时表示该cache缓存块已经标记为cache缓存区,用于缓存物理磁盘数据)。较佳地,为尽快将标记为动态内存区的cache缓存块还原成cache缓存区,本发明实施例中,当应用系统释放内存时,若应用系统释放的内存中包括从N个cache缓存块中分配的部分内存时,将该部分内存对应的M(M小于或等于N)个cache缓存块标记为cache缓存区,并更新存储的系统全局cache缓存块的数量,具体地,将系统全局cache缓存块的数量的当前值加上M。下面以共享内存的结构为第二子类型为例,对本发明技术方案为应用系统分配动态内存进行详细的描述将共享内存按照物理地址从低到高的顺序依次划分为预定义动态内存区和cache 缓存区,其中cache缓存区包括cache缓存块1、cache缓存块2、. . .、cache缓存块n,其中该η个cache缓存块不连续;需要建立一个链表,如图7所示,该链表的首节点记录预定义动态内存的相关信息(包括预定义动态内存的首地址、尾地址、物理内存大小以及cache 缓存块1的首地址等信息),该链表其他节点记录相应一个cache缓存块的相关信息(如 cache缓存块的首地址、尾地址、物理内存大小、状态参数以及下一 cache缓存块的首地址等信息)。在接收到应用系统发送的动态内存分配请求时,如果预定义动态内存区中未使用的内存不够用时,根据预定义动态内存区中未使用的内存、单个cache缓存块的大小和请求分配的空间大小确定出待选取cache缓存块的数量N,从cache缓存块1 cache缓存块η中选取N个cache缓存块,并将该N个cache缓存块标记为动态内存区。依次查找上述链表的每个节点,即可获取到选取的N个cache缓存块的首地址;假设N为2,且选取 cache缓存块1和cache缓存块2,,可以从预定义动态内存区中未使用的内存、cache缓存块1和cache缓存块2中为所述应用系统分配与请求分配的空间大小相同的动态内存。较佳地,将链表中上述N个cache缓存块对应的节点中的状态标记设置为1。
针对共享内存为第三种子类型的情况,如何为应用系统分配动态内存如前第二子类型的分配方式一致,在此不再赘述。实施例二参见图8,为本发明实施例二中管理系统内存的方法流程图,该实施例二中,未初始化全局变量分配区包括用于缓存物理磁盘数据的cache缓存区,该cache缓存区包括多个cache缓存块,方法包括步骤801、接收应用系统发送的动态内存分配请求。该动态内存分配请求中携带有请求分配的空间大小。步骤802、根据请求分配的空间大小从所述多个cache缓存块中选取至少一个 cache缓存块。步骤803、将选取的cache缓存块标记为动态内存区,从选取的所述至少一个 cache缓存块中为所述应用系统分配与所述请求分配的空间大小相同的内存。步骤804、当应用系统释放内存时,将释放的全部内存标记为cache缓存区。本发明实施例二中,共享内存还可细划分为以下两种子类型,分别如图9A和图9B 所示,其中第一子类型,如图9A所示,多个cache缓存块连续;第二子类型,如图9B所示, 多个cache缓存块不连续。当共享内存的结构为第一子类型时,上述步骤802,具体可包括以下步骤采用前述公式(1)确定出待选取cache缓存块的数量为N,并从η个cache缓存块中选取连续或不连续的N个cache缓存块;较佳地,本发明实施例中选取物理地址从低到高的连续的N个cache缓存块。当共享内存的结构为第二子类型时,上述步骤802,具体可包括以下步骤采用前述公式(1)确定出待选取cache缓存块的数量为N,并从η个cache缓存块中选取相邻或不相邻的N个cache缓存块;较佳地,本发明实施例中选取相邻的N个cache 缓存块,即该N个cache缓存块的物理地址相近。较佳地,本发明实施例二中,当接收到所述应用系统发送的所述动态内存分配请求时,若共享内存中所有cache缓存块中未使用内存的和值小于请求分配的空间大小时, 将共享内存中所有或部分的cache缓存块中缓存的数据写入到物理磁盘中。较佳地,本发明实施例二中,在需要将部分cache缓存块的数据写入到物理磁盘中时,可将数据缓存时间较长、数据较长时间未读取的cache缓存块中的数据写入到物理磁盘中。基于前述方法流程,本发明实施例还提供一种管理系统内存的装置,该装置的结构如图10所示,包括接收单元1001,用于接收应用系统发送的动态内存分配请求,所述动态内存分配请求中携带有请求分配的空间大小。判断单元1002,用于在接收单元1001接收到动态内存分配请求时,判断动态内存区中未使用内存是否小于所述请求分配的空间大小。动态内存分配单元1003,用于在判断单元1002判断为是时,将动态内存区中所有未使用内存和cache缓存区中的部分内存分配给所述应用系统,所述动态内存区中所有未使用内存与所述cache缓存区的所述部分内存的和值与请求分配的空间大小相同;或者, 从cache缓存区中为所述应用系统分配与所述请求分配的空间大小相同的内存;以及,在判断单元1002判断为否时,从所述动态内存区的未使用内存中为所述应用系统分配与所述请求分配的空间大小相同的内存。较佳地,动态内存分配单元1003进一步用于,将所述cache缓存区中分配给所述应用系统的内存标记为动态内存区;以及,在应用系统释放的内存中包括从cache缓存区分配得到的部分内存时,将该部分内存标记为cache缓存区。较佳地,上述装置还可包括记录单元1004,如图11所示记录单元1004,用于在所述动态内存区与所述cache缓存区不连续,且在动态内存分配单元1003为所述应用系统分配内存之后,记录所述cache缓存区中分配给所述应用系统的内存的首地址和尾地址;以及,记录所述动态内存区中分配给所述应用系统的内存的首地址和尾地址。较佳地,当所述cache缓存区中的cache缓存块连续,且所述cache缓存区中分配给所述应用系统的内存大于单个cache缓存块的大小时,所述cache缓存区中分配给所述应用系统的内存从至少两个连续的cache缓存块中分配得到;当所述cache缓存区中的 cache缓存块连续,且所述cache缓存区中分配给所述应用系统的内存大于单个cache缓存块的大小时,所述cache缓存区中分配给所述应用系统的内存从至少两个相邻的cache缓存块中分配得到。较佳地,在上述图10和图11所述的装置中,还可包括数据写单元1005,分别如图 12A和图12B所示,其中判断单元1002进一步用于,在接收单元1001接收到所述应用系统发送的动态内存分配请求时,确定所述动态内存区中未使用内存与cache缓存区中未使用内存的和值小于所述请求分配的空间大小时,启动所述数据写单元1005 ;数据写单元1005,用于将所述cache缓存区中所有或部分的cache缓存块中缓存的数据写入到物理磁盘中。本发明实施例还提供一种智能卡,该智能卡包括前述图10、图11、图12A或图12B 所示的装置。显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若对本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
权利要求
1.一种管理系统内存的方法,其特征在于,包括接收应用系统发送的动态内存分配请求,所述动态内存分配请求中携带有请求分配的空间大小;当动态内存区中未使用内存小于所述请求分配的空间大小时,将动态内存区中所有未使用内存和cache缓存区中的部分内存分配给所述应用系统,所述动态内存区中所有未使用内存与所述cache缓存区的所述部分内存的和值与请求分配的空间大小相同;或者,从 cache缓存区中为所述应用系统分配与所述请求分配的空间大小相同的内存;当动态内存中未使用内存大于或等于所述请求分配的空间大小时,从所述动态内存区的未使用内存中为所述应用系统分配与所述请求分配的空间大小相同的内存。
2.如权利要求1所述的方法,其特征在于,还包括将所述cache缓存区中分配给所述应用系统的内存标记为动态内存区;当应用系统释放内存,且所述应用系统释放的内存中包括从cache缓存区分配得到的部分内存时,将该部分内存标记为cache缓存区。
3.如权利要求1所述的方法,其特征在于,所述动态内存区与所述cache缓存区连续, 包括所述动态内存区的未使用内存的尾地址与所述cache缓存区中分配给所述应用系统的内存的首地址相连;或者,所述动态内存区与所述cache缓存区不连续,所述方法还包括记录所述cache缓存区中分配给所述应用系统的内存的首地址和尾地址;以及,记录所述动态内存区中分配给所述应用系统的内存的首地址和尾地址。
4.如权利要求3所述的方法,其特征在于,当所述cache缓存区中的cache缓存块连续,且所述cache缓存区中分配给所述应用系统的内存大于单个cache缓存块的大小时,所述cache缓存区中分配给所述应用系统的内存从至少两个连续的cache缓存块中分配得到;当所述cache缓存区中的cache缓存块连续,且所述cache缓存区中分配给所述应用系统的内存大于单个cache缓存块的大小时,所述cache缓存区中分配给所述应用系统的内存从至少两个相邻的cache缓存块中分配得到。
5.如权利要求1 4任一项所述的方法,其特征在于,还包括在接收到所述应用系统发送的动态内存分配请求时,若所述动态内存区中未使用内存与cache缓存区中未使用内存的和值小于所述请求分配的空间大小时,将所述cache缓存区中所有或部分的cache缓存块中缓存的数据写入到物理磁盘中。
6.如权利要求1 4任一项所述的方法,其特征在于,所述动态内存区与所述cache缓存区构成的空间为未初始化全局变量分配区。
7.—种管理系统内存的装置,其特征在于,包括接收单元,用于接收应用系统发送的动态内存分配请求,所述动态内存分配请求中携带有请求分配的空间大小;判断单元,用于判断动态内存区中未使用内存是否小于所述请求分配的空间大小;动态内存分配单元,用于在所述判断单元判断为是时,将动态内存区中所有未使用内存和cache缓存区中的部分内存分配给所述应用系统,所述动态内存区中所有未使用内存与所述cache缓存区的所述部分内存的和值与请求分配的空间大小相同;或者,从cache缓存区中为所述应用系统分配与所述请求分配的空间大小相同的内存;以及,在判断单元判断为否时,从所述动态内存区的未使用内存中为所述应用系统分配与所述请求分配的空间大小相同的内存。
8.如权利要求7所述的装置,其特征在于,所述动态内存分配单元进一步用于,将所述 cache缓存区中分配给所述应用系统的内存标记为动态内存区;以及,在应用系统释放的内存中包括从cache缓存区分配得到的部分内存时,将该部分内存标记为cache缓存区。
9.如权利要求7所述的装置,其特征在于,还包括记录单元,用于在所述动态内存区与所述cache缓存区不连续时,记录所述cache缓存区中分配给所述应用系统的内存的首地址和尾地址;以及,记录所述动态内存区中分配给所述应用系统的内存的首地址和尾地址。
10.如权利要求9所述的装置,其特征在于,当所述cache缓存区中的cache缓存块连续,且所述cache缓存区中分配给所述应用系统的内存大于单个cache缓存块的大小时,所述cache缓存区中分配给所述应用系统的内存从至少两个连续的cache缓存块中分配得到;当所述cache缓存区中的cache缓存块连续,且所述cache缓存区中分配给所述应用系统的内存大于单个cache缓存块的大小时,所述cache缓存区中分配给所述应用系统的内存从至少两个相邻的cache缓存块中分配得到。
11.如权利要求7 10任一项所述的装置,其特征在于,还包括数据写单元所述判断单元进一步用于,在所述接收单元接收到所述应用系统发送的动态内存分配请求时,确定所述动态内存区中未使用内存与cache缓存区中未使用内存的和值小于所述请求分配的空间大小时,启动所述数据写单元;数据写单元,用于将所述cache缓存区中所有或部分的cache缓存块中缓存的数据写入到物理磁盘中。
12.—种智能卡,其特征在于,包括如权利要求7 11任一项所述的装置。
全文摘要
本发明公开了一种管理系统内存的方法及装置,以实现动态内存区与cache缓存区之间的内存共享,提高系统内存的利用率,确保应用操作的成功执行,从而提高系统性能。管理系统内存方法,包括接收应用系统发送的动态内存分配请求;当动态内存区中未使用内存小于所述请求分配的空间大小时,将动态内存区中所有未使用内存和cache缓存区中的部分内存分配给所述应用系统,所述动态内存区中所有未使用内存与所述cache缓存区的所述部分内存的和值与请求分配的空间大小相同;或者,从cache缓存区中为所述应用系统分配与所述请求分配的空间大小相同的内存。
文档编号G06F12/08GK102567225SQ20111044824
公开日2012年7月11日 申请日期2011年12月28日 优先权日2011年12月28日
发明者曲晓晶, 王强, 郭雁斌 申请人:北京握奇数据系统有限公司