一种嵌入式设备图像内存管理方法及装置的制作方法

文档序号:6432538阅读:177来源:国知局
专利名称:一种嵌入式设备图像内存管理方法及装置的制作方法
技术领域
本发明涉及计算机领域,特别是涉及一种嵌入式设备图像内存管理方法及装置。
背景技术
DirectFB是一个在嵌入式系统中广泛应用的函数库。是针对嵌入式设备的特殊需求环境,为图形加速和图形增强支持开发的一个小巧、强大和易于使用的技术。DirectFB的函数利用链表来实现图像内存(video memory)的管理。初始状态时, 链表只有一个空闲节点(free memory node),记录整个内存池的起始地址和末地址。当应用程序需要从内存池中分配一块内存时,DirectFB的内存管理器遍历链表中的所有free memory node,找出最匹配的free memory node返回给应用程序。如果找不到大小正好匹配的free memory node,则从最接近所需内存大小的free memory node中分配,并在链表中插入一个新的内存节点来记录新分配的内存块信息,并且该新的内存节点被标示为已分配状态。在链表中相邻的内存节点所描述的内存块在物理上也是邻近的。现有技术中,DirectFB管理内存的方式为当应用程序释放内存块时,记录该内存块信息的节点会被置为空闲状态,如果与该空闲节点相邻的节点也是空闲状态,则会完成节点合并,将两个节点所记录的空闲内存块合并成一个更大的空闲内存块,如图1所示 block4与block5合并为block4。在上述内存管理的方式下,在物理上连续的内存块,如果其生命周期不一样,就会出现内存碎片。于是出现这样一种状况虽然可用的空闲内存的总量大于所需要分配的内存,但是所有的空闲节点都小于所需要分配内存的大小,于是内存管理器会出现分配内存失败的情况。如何在空闲的内存大于需要分配的内存的情况下,确保能使应用程序分配到需要的内存是目前需要解决的问题。

发明内容
本发明主要解决的技术问题是提供一种嵌入式设备图像内存管理方法及装置,能够在空闲的内存的总大小大于需要分配的内存但是单独的空闲的内存块都小于需要分配的内存的情况下,大大提高应用程序分配到需要的内存的概率。为解决上述技术问题,本发明采用的一个技术方案是提供一种嵌入式设备图像内存管理方法,包括从图像内存链表中获取节点;判断该节点对应的内存块中是否有有效数据;如果该节点对应的内存块中没有有效数据,则判断该节点的前一个节点对应的内存块中是否有有效数据;如果该前一个节点对应的内存块中有有效数据,则判断该有效数据是否可移动;如果该前一个节点对应的内存块中存储的有效数据可移动,则将该节点所描述的内存块信息与前一个节点所描述的内存块信息进行交换,并且将该前一个节点对应的内存块中存储的有效数据移动至该节点对应的内存块中。为解决上述技术问题,本发明采用的另一个技术方案是提供一种嵌入式设备图像内存管理装置,包括第一获取模块,用于从图像内存链表中获取节点;第一判断模块,用于判断获取模块获取的节点对应的内存块中是否有有效数据;第二判断模块,用于当第一判断模块判断出第一获取模块获取的节点对应的内存块中没有有效数据时,再判断该节点的前一个节点对应的内存块中是否有有效数据;第三判断模块,用于当第二判断模块判断出前一个节点对应的内存块中有有效数据时,再判断该有效数据是否可移动;交换模块,用于当第三判断模块判断出前一个节点对应的内存块中存储的有效数据可移动时,将前该节点所描述的内存块信息与前一个节点所描述的内存块信息进行交换,并且将前一个节点对应的内存块中存储的有效数据移动至该节点对应的内存块中。本发明通过从图像内存链表获取节点,如果检测到非空闲节点对应的内存块中存储的有效数据是可以移动的,则通过将空闲节点描述的内存块信息和非空闲节点所描述的内存块信息进行交换,然后将非空闲节点对应的内存块的有效数据移动到空闲节点对应的内存块中,将空闲节点往链表的起始方向移动,将非空闲节点往链表末尾方向移动,最后移动后的空闲内存块将位于图像内存的起始位置;通过对图像内存的内存碎片进行管理,将多个内存碎片都移动至图像内存的起始位置,形成一个大的并且在物理上连续的空闲内存块,从而当应用程序需要申请较大的内存块时,能够满足申请要求。


图1是现有技术中相邻的空闲内存块合并的示意图;图2是本发明实施例图像内存管理方法的数据流程图;图3是本发明实施例图像内存管理方法的应用场景示意图;图4是本发明实施例图像内存管理方法在实际应用中的数据流程图;图5是本发明实施例图像内存管理装置的逻辑结构示意图。
具体实施例方式参阅图2,本发明嵌入式设备图像内存管理方法的实施例包括201、获取图像内存链表中的倒数第一个节点;从图像内存链表的倒数第一个节点开始获取节点,首先获取倒数第一个节点;202、判断该节点是否为空;每获取一个节点,首先判断该节点是否是空节点,如果是空节点,则说明上一个获取的节点是本图像内存链表的倒数最后一个节点;如果节点为空节点,则执行步骤203 ;如果节点不为空节点,则执行步骤204 ;203、结束;如果步骤202中判断出节点为空节点,说明已经将整个图像内存链表整理完了, 则流程结束;204、判断该节点对应的内存块中是否有有效数据;
判断该节点对应的内存块中是否有有效数据,如果有有效数据,则执行步骤205 ; 如果没有有效数据,则执行步骤206 ;205、获取前一个节点;如果步骤204中判断出该节点对应的内存块中有有效数据,则获取该节点的前一个节点,然后返回步骤202,判断本步骤中获取的节点是否为空,如果不为空,则再执行步骤 204判断该节点对应的内存块中是否有有效数据,依次循环,直至转到步骤206,获取到对应的内存块中没有有效数据的节点;206、获取前一个节点;如果步骤204中判断出该节点对应的内存块中没有有效数据,则获取该节点的前一个节点;207、判断该节点是否为空;判断步骤206中获取的前一个节点是否是空节点,如果是空节点,则说明上一个获取的节点是本图像内存链表的倒数最后一个节点,执行步骤203,结束流程;如果判断出节点不为空节点,则执行步骤208 ;208、判断该节点对应的内存块中是否有有效数据;判断该节点对应的内存块中是否有有效数据,如果有有效数据,则执行步骤210 ; 如果没有有效数据,则执行步骤209 ;209、合并;将步骤201中获取的节点或者步骤205中获取的节点,与步骤206中获取的节点合并,具体的将步骤201中获取的节点或者步骤205中获取的节点的起始地址改为步骤206中获取的节点的起始地址,并将步骤201中获取的节点或者步骤205中获取的节点指向前一个节点的指针改为指向步骤206中获取的节点的前一个节点,并删除步骤206中获取的节点。或者,合并的步骤还可以为将步骤206中获取的节点的结束地址改为步骤201中获取的节点或者步骤205中获取的节点的结束地址,并将步骤206中获取的节点指向下一个节点的指针改为指向步骤 201中获取的节点或者步骤205中获取的节点的后一个节点,并删除步骤201中获取的节点或者步骤205中获取的节点。210、判断该节点对应的内存块是否为layer surface ;判断步骤206中获取的节点对应的内存块是否为layer surface,如果是layer surface,说明该节点对应的内存块中存储的有效数据是不能移动的,则返回步骤206,获取前一个节点;如果判断出步骤206中获取的节点对应的内存块不为layer surface,说明该节点对应的内存块中存储的有效数据是可以移动的,则执行步骤211 ;211、判断该节点对应的内存块是否被锁定;如果内存块正在被使用,则该内存块是被锁定的;如果内存块被锁定,那么内存块中存储的有效数据是不能被移动的;如果判断出步骤206中获取的节点对应的内存块是被锁定的,则返回步骤206,获取前一个节点;如果判断出步骤206中获取的节点对应的内存块没有被锁定,说明该节点对应的内存块中存储的有效数据是可以移动的,则执行步骤212 ;212、判断该节点对应的内存块是否于最近一次被GPU访问过;如果内存块最近一次被GPU访问过,有可能GPU还在使用该内存块中存储的数据, 所以该内存块中存储的有效数据暂时还不能被移动,该内存块中存储的有效数据需要等待 GPU访问完成才能移动;判断步骤206中获取的节点对应的内存块是否于最近一次被GPU 访问过,如果最近一次被GPU访问过,则执行步骤213 ;如果最近一次没有被GPU访问过,则执行步骤214;213、等待GPU访问完成;如果步骤212中判断出步骤206中获取的节点对应的内存块最近一次被GPU访问过,则等待GPU访问完成;214、内存块中存储的数据交换;如果判断出步骤206中获取的节点对应的内存块中存储的有效数据可移动,则将步骤206中获取的节点所描述的内存块信息与步骤201中获取的节点或者步骤205中获取的节点所描述的内存块信息进行交换,并且将步骤206中获取的节点对应的内存块中存储的有效数据移动至步骤201中获取的节点或者步骤205中获取的节点对应的内存块中;在执行完交换内存块中存储的数据的步骤后,再返回步骤206,获取前一个节点, 依次循环,直到判断出获取的节点为空节点,即将没有有效数据的内存块都移到图像内存的前面部分。需要进一步说明的是,在另外的实施例中,步骤210和步骤211的执行顺序是可以互换的,即可以先执行步骤211,再执行步骤210。例如有一个图像内存被分成η个内存块,分别为从blockl至blockn,该图像内存由一个对应的链表管理,链表中每个节点对应一个内存块block,即blockl至blockn分别对应第一节点至第η节点;如图3所示,具体的首先从链表的末节点开始获取节点,每次获取节点都需要判断该节点是否为空, 来确认是否已经将链表中的节点取完了 ;例如先取末节点,即第一节点,第一节点对应 blockl, blockl是有有效数据的,则获取下一个节点,即第二节点,第二节点对应block2, block2是没有有效数据的,即block2处于空闲状态;然后获取第三节点,第三节点对应block3,block3有有效数据,再判断block3的有效数据是否是可移动的,如果判断出 block3既不是layer surface,也没有被锁定,并且也没有最近一次被GPU访问过,说明 block3的有效数据是可以被移动的,则将block3的有效数据移动到block2中,具体的先将第三节点所描述的内存块信息和第二节点所描述的内存块信息进行交换,然后将block3 中的有效数据移动到block2中,如图3中的301所示;然后获取下一个节点,即第四节点,第四节点不为空,再判断出第四节点对应的 block4中没有有效数据,则将第二节点和第四节点合并成第二节点,具体的,将第二节点的起始地址改为第四节点的起始地址,将第二节点的上一个节点改为第四节点的上一个节点,即将第二个节点的上一个节点改为第五节点,然后删除第四节点,如图3中302所示;然后获取下一个节点,即第五节点,第五节点不为空,判断出第五节点对应的 block5中是有有效数据的,再判断block5中存储的有效数据是否可移动,具体的,如果判断出block5既不是layer surface,也没有被锁定,但是block5最近一次被GPU访问过,则需要等待GPU访问完成,block5中存储的有效数据才能被移动,在等待GPU访问完成后, 则将block5中存储的有效数据移动到block2中,具体的先将第五节点所描述的内存块信息和第二节点所描述的内存块信息进行交换,然后将block5中存储的有效数据移动到 block2中,如图3中的303所示;然后获取下一个节点,即第六节点,第六节点不为空,再判断出第六节点对应的 blocM中没有有效数据,则将第二节点和第六节点合并成第二节点,具体的,将第二节点的起始地址改为第六节点的起始地址,将第二节点的上一个节点改为第六节点的上一个节点,即将第二节点的上一个节点改为第七节点,然后删除第六节点,如图3中304所示;如此循环,直到处理完链表中倒数最后一个节点,即当取到的节点为空节点时,说明已经处理完链表中倒数最后一个节点,结束流程。在本实施例中,通过从链表的末尾开始往前遍历图像内存链表的节点,如果检测到非空闲节点对应的内存块中存储的有效数据是可以移动的,则通过将空闲节点描述的内存块信息和非空闲节点所描述的内存块信息进行交换,然后将非空闲节点对应的内存块中存储的有效数据移动到空闲节点对应的内存块中,将空闲节点往链表的起始方向移动,合并形成新的空闲节点,将非空闲节点往链表末尾方向移动,最后合并后的空闲内存块将位于图像内存的起始位置;通过对图像内存的内存碎片进行管理,将多个碎片合并成一个大的并且在物理上连续的空闲内存块,从而当应用程序需要申请较大的内存块时,能够满足申请要求。应用程序在申请内存时,如果没有内存块的大小能满足该应用程序的要求,则需要利用上述实施例中的方法对内存碎片进行整理,具体流程如图4所示,具体的401、应用程序申请内存块;402、内存分配测试;在接收到应用程序的内存块申请后,DirectFB首先要对该申请进行内存分配测试,即测试当前是否有空闲的内存块的大小能满足该应用程序的要求,如果当前有空闲的内存块的大小能满足该应用程序的要求,则执行步骤405,如果当前没有空闲的内存块的大小能够满足该应用程序的要求,则执行步骤403 ;403、内存碎片整理;DirectFB对图像内存的碎片进行整理,具体的整理流程如上述DirectFB内存管理方法的实施例中所示,此处不做赘述;对图像内存的碎片进行整理后,执行步骤404 ;404、内存分配测试;当步骤403中对图像内存的碎片进行整理后,再次进行内存分配测试,如果合并后的空闲内存块的大小能够满足该应用程序的需要,则执行步骤405,如果合并后的空闲内存块的大小不能够满足该应用程序的需要,则执行步骤406 ;405、执行内存分配;如果内存分配测试成功,则执行内存分配;406、内存分配失败;如果内存分配测试失败,则反馈给应用程序内存不够的信息;由于内存碎片的存在,使用越久,内存碎片越多,应用程序申请内存失败的概率越大,从而导致程序执行中断,通过本实施例提供的方法,在第一次内存分配测试失败后,不马上返回失败的信息,而是对内存碎片进行整理,如果整理后的空闲内存块的大小还是不能满足应用程序的需要,才返回内存不够的信息,本实施例提供的分配内存的方法大大增加了应用程序能够分配到内存的概率。参阅图5,本发明嵌入式设备图像内存管理装置的实施例包括第一获取模块501,用于从图像内存链表中获取节点;第一判断模块502,用于判断获取模块501获取的节点对应的内存块中是否有有效数据;第二判断模块503,用于当第一判断模块502判断出第一获取模块501获取的节点对应的内存块中没有有效数据时,再判断该节点的前一个节点对应的内存块中是否有有效数据;第三判断模块504,用于当第二判断模块503判断出该前一个节点对应的内存块中有有效数据时,再判断该有效数据是否可移动;交换模块505,用于当第三判断模块504判断出前一个节点对应的内存块中存储的有效数据可移动时,将该节点所描述的内存块信息与前一个节点所描述的内存块信息进行交换,并且将该前一个节点对应的内存块中存储的有效数据移动至该节点对应的内存块中;本实施例中的装置还包括第二获取模块506,用于当第一判断模块502判断出该节点对应的内存块中有有效数据时,获取该节点的前一个节点,然后由第二判断模块503判断该前一个节点对应的内存块中是否有有效数据,直至图像内存链表的第一个节点;第二获取模块506还用于当第一判断模块502判断出该节点对应的内存块中没有有效数据,第二判断模块503判断出该前一个节点对应的内存块中有有效数据,且第三判断模块504判断出该前一个节点描述的内存块中存储的有效数据不可移动时,获取该前一个节点的前一个节点,然后由第二判断模块503判断该获取的节点对应的内存块中是否有有效数据,直至图像内存链表的第一个节点;第三判断模块504包括第一判断单元,用于判断获取的节点的前一个节点对应的内存块是否为layer surface,如果该前一个节点对应的内存块为layer surface,则该前一个节点对应的内存块中存储的有效数据不能移动;第二判断单元,用于当第一判断单元判断出该前一个节点对应的内存块不为 layer surface时,再判断该前一个节点对应的内存块是否处于锁定状态,如果该前一个节点对应的内存块处于锁定状态,则该前一个节点对应的内存块中存储的有效数据不能移动;第三判断单元,用于当第一判断单元判断出该前一个节点对应的内存块不为 layer surface,第二判断单元判断出该前一个节点对应的内存块没处于锁定状态时,再判断该前一个节点对应的内存块是否于最近一次被GPU访问过,如果该前一个节点对应的内存块最近一次被GPU访问过,则该前一个节点对应的内存块中存储的有效数据需要等待 GPU访问完成才能被移动;本实施例中的装置还包括
合并模块507,用于当第二判断模块判断出获取的节点的前一个节点没有有效数据时,将该节点和该前一个节点合并;具体的,合并模块507包括合并单元,用于将该节点的起始地址改为该前一个节点的起始地址,并将该节点指向前一个节点的指针改为指向该前一个节点的前一个节点;该合并单元还用于将前一个节点的结束地址改为该节点的结束地址,并将前一个节点指向下一个节点的指针改为指向该节点的后一个节点;删除单元,用于删除节点;在本实施例中,通过从链表的末尾开始往前遍历图像内存链表的节点,如果检测到非空闲节点对应的内存块中存储的有效数据是可以移动的,则通过将空闲节点描述的内存块信息和非空闲节点所描述的内存块信息进行交换,然后将非空闲节点对应的内存块中存储的有效数据移动到空闲节点对应的内存块中,将空闲节点往链表的起始方向移动,合并形成新的空闲节点,将非空闲节点往链表末尾方向移动,最后合并后的空闲内存块将位于图像内存的起始位置;通过对图像内存的内存碎片进行管理,将多个碎片合并成一个大的并且在物理上连续的空闲内存块,从而当应用程序需要申请较大的内存块时,能够满足申请要求。本发明实施例中对嵌入式设备图像内存管理方法以及嵌入式设备图像内存管理装置的描述,是基于DirectFB技术进行描述的,当然,本发明所体现的思想还可以适用于嵌入式设备图像内存管理方面的其他技术,此处不做限制。以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
权利要求
1.一种嵌入式设备图像内存管理方法,其特征在于,包括从图像内存链表中获取节点;判断所述节点对应的内存块中是否有有效数据;如果所述节点对应的内存块中没有有效数据,则判断所述节点的前一个节点对应的内存块中是否有有效数据;如果所述前一个节点对应的内存块中有有效数据,则判断所述有效数据是否可移动;如果所述前一个节点对应的内存块中存储的有效数据可移动,则将所述节点所描述的内存块信息与所述前一个节点所描述的内存块信息进行交换,并且将所述前一个节点对应的内存块中存储的有效数据移动至所述节点对应的内存块中。
2.根据权利要求1所述的方法,其特征在于,所述从图像内存链表中获取节点的步骤具体为从图像内存链表中倒数第一个节点开始获取节点。
3.根据权利要求1所述的方法,其特征在于,所述判断所述节点对应的内存块中是否有有效数据的步骤之后还包括如果所述节点描述的内存块中有有效数据,则继续获取所述节点的前一个节点,然后执行判断所述前一个节点对应的内存块中是否有有效数据的步骤,直至所述图像内存链表的第一个节点。
4.根据权利要求3所述的方法,其特征在于,所述判断所述前一个节点对应的内存块中存储的有效数据是否可移动的步骤之后还包括如果所述前一个节点对应的内存块中存储的有效数据不可移动,则继续获取所述前一个节点的前一个节点,并执行判断该获取的节点对应的内存块中是否有有效数据的步骤, 直至所述图像内存链表的第一个节点。
5.根据权利要求4所述的方法,其特征在于,所述判断前一个节点对应的内存块中存储的有效数据是否可移动的步骤包括判断所述前一个节点对应的内存块是否为层面(layer surface),如果所述前一个节点对应的内存块为layer surface,则所述前一个节点对应的内存块中存储的有效数据不能移动;如果所述前一个节点对应的内存块不是layer surface,则再判断所述前一个节点对应的内存块是否处于锁定状态,如果所述前一个节点对应的内存块处于锁定状态,则所述前一个节点对应的内存块中存储的有效数据不能移动。
6.根据权利要求5所述的方法,其特征在于,所述方法还包括如果所述前一个节点对应的内存块没处于锁定状态,则再判断所述前一个节点对应的内存块是否于最近一次被图形处理器GPU访问过,如果所述前一个节点对应的内存块最近一次被GPU访问过,则等待GPU访问完成后,执行所述将该节点所描述的内存块信息与所述前一个节点所描述的内存块信息进行交换,并且将所述前一个节点对应的内存块中存储的有效数据移动至所述节点对应的内存块中的步骤。
7.根据权利要求6所述的方法,其特征在于,所述判断所述前一个节点是否有有效数据的步骤之后还包括如果所述前一个节点没有有效数据,则将所述节点和所述前一个节点合并。
8.根据权利要求7所述的方法,其特征在于,所述将该节点和所述前一个节点合并的步骤包括将所述节点的起始地址改为所述前一个节点的起始地址,并将所述节点指向前一个节点的指针改为指向所述前一个节点的前一个节点,并删除所述前一个节点。
9.根据权利要求7所述的方法,其特征在于,所述将该节点和所述前一个节点合并的步骤包括将所述前一个节点的结束地址改为所述节点的结束地址,并将所述前一个节点指向下一个节点的指针改为指向所述节点的下一个节点,并删除所述节点。
10.一种嵌入式设备图像内存管理装置,其特征在于,包括第一获取模块,用于从图像内存链表中获取节点;第一判断模块,用于判断所述获取模块获取的节点对应的内存块中是否有有效数据;第二判断模块,用于当所述第一判断模块判断出第一获取模块获取的节点对应的内存块中没有有效数据时,再判断所述节点的前一个节点对应的内存块中是否有有效数据;第三判断模块,用于当所述第二判断模块判断出所述前一个节点对应的内存块中有有效数据时,再判断所述有效数据是否可移动;交换模块,用于当所述第三判断模块判断出所述前一个节点对应的内存块中存储的有效数据可移动时,将所述节点所描述的内存块信息与所述前一个节点所描述的内存块信息进行交换,并且将所述前一个节点对应的内存块中存储的有效数据移动至所述节点对应的内存块中。
11.根据权利要求10所述的装置,其特征在于,所述装置还包括第二获取模块,用于当所述第一判断模块判断出所述节点对应的内存块中有有效数据时,获取所述节点的前一个节点,然后由第二判断模块判断所述前一个节点对应的内存块中是否有有效数据,直至所述图像内存链表的第一个节点。
12.根据权利要求11所述的装置,其特征在于,所述第二获取模块还用于当所述第一判断模块判断出所述节点对应的内存块中没有有效数据,而第二判断模块判断出所述前一个节点对应的内存块中有有效数据,且第三判断模块判断出所述前一个节点描述的内存块中存储的有效数据不可移动时,获取所述前一个节点的前一个节点,然后由第二判断模块判断该获取的节点对应的内存块中是否有有效数据,直至所述图像内存链表的第一个节点ο
13.根据权利要求12所述的装置,其特征在于,所述第三判断模块包括第一判断单元,用于判断所述前一个节点对应的内存块是否为layersurface,如果所述前一个节点对应的内存块为layer surface,则所述前一个节点对应的内存块中存储的有效数据不能移动;第二判断单元,用于当第一判断单元判断出所述前一个节点对应的内存块不为layer surface时,再判断所述前一个节点对应的内存块是否处于锁定状态,如果所述前一个节点对应的内存块处于锁定状态,则所述前一个节点对应的内存块中存储的有效数据不能移动;第三判断单元,用于当第一判断单元判断出所述前一个节点对应的内存块不为layer surface,而第二判断单元判断出所述前一个节点对应的内存块没处于锁定状态时,再判断所述前一个节点对应的内存块是否于最近一次被GPU访问过,如果所述前一个节点对应的内存块最近一次被GPU访问过,则所述前一个节点对应的内存块中存储的有效数据需要等待GPU访问完成才能被移动。
14.根据权利要求13所述的装置,其特征在于,所述装置还包括合并模块,用于当第二判断模块判断出所述前一个节点没有有效数据时,将所述节点和所述前一个节点合并。
15.根据权利要求14所述的装置,其特征在于,所述合并模块包括合并单元,用于将所述节点的起始地址改为所述前一个节点的起始地址,并将所述节点指向前一个节点的指针改为指向所述前一个节点的前一个节点;删除单元,用于删除节点。
16.根据权利要求15所述的装置,其特征在于,所述合并单元还用于将所述前一个节点的结束地址改为所述节点的结束地址,并将所述前一个节点指向下一个节点的指针改为指向所述节点的后一个节点。
全文摘要
本发明实施例公开了一种嵌入式设备图像内存管理方法,本发明实施例还公开了相应的装置。本方法通过从图像内存链表中获取节点,然后判断该节点对应的内存块中是否有有效数据,如果没有有效数据,则再判断该节点的前一个节点对应的内存块中是否有有效数据,如果有有效数据,则再判断该有效数据是否可移动,如果可移动,则将两个节点所描述的内存块信息进行交换,并且将前一个节点对应的内存块中存储的有效数据移动至该节点对应的内存块中;通过上述方式,本发明能够将空闲的内存块整理为一个大的内存块,从而在空闲的内存的总大小大于需要分配的内存但是单独的空闲的内存块都小于需要分配的内存的情况下,大大提高应用程序分配到需要的内存的概率。
文档编号G06F12/06GK102279808SQ201110262710
公开日2011年12月14日 申请日期2011年9月6日 优先权日2011年9月6日
发明者何虎 申请人:晨星半导体股份有限公司, 晨星软件研发(深圳)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1