专利名称:在手机平台提高内存使用效率的方法
技术领域:
本发明涉及一种提内存使用效率的方法,特别涉及一种在手机平台上通过软件方式提高内存使用效率的方法。
背景技术:
目前,在我国,国产手机以价格优势抢占了大量的手机市场,国产手机用户的量非常大,但是国产手机的硬件因为成本关系,比较单薄,所以很少有高性能的智能手机,手机平台作为一个低配置的移动终端,在日益高涨的需求中,显得处理能力较为低下,特别是国产手机,物理内存即RAM往往只有4MB或者8MB,在扣去系统自身运行所必要的内存容量后, 实际可用的内存容量往往只有600KB至1MB左右,这样的内存容量只能够运行一些运算简单的程序,如果程序复杂,那么会出现内存溢出、死机等各种问题,但是在目前,人们对于手持终端的功能的要求越来越高,一些复杂程序的处理必不可少,对于一般的个人笔记本电脑、PDA上一般都会采用虚拟内存的形式来辅助物理内存进行数据处理,但是这需要CPU的支持,确切的说是需要有内存管理单元,它是中央处理器中用来管理虚拟存储器、物理存储器的控制线路,同时也负责虚拟地址映射为物理地址,以及提供硬件机制的内存访问授权, 但是这在低端手机平台上是不存在的,低端手机平台为了成本优势,一般不会选用带有内存管理单元的CPU,所以,一种能在手机平台上提高内存使用效率的方法必不可少。中国专利公告号CN 1818870A,公告日2006年8月16日,公开了一种嵌入式操作系统内存镜像启动优化的实现方法,本发明的方法在嵌入式操作系统运行过程中,将正在运行的操作系统的寄存器内容、使用中的内存内容以及相应状态保存下来,保存在硬件系统的NOR Flash上,在启动的时候自动将内存镜像到动态随机存储器,恢复保存时嵌入式操作系统的状态。此技术方案,优化了嵌入式操作系统的启动,但是对内存镜像的应用限定较为狭隘,对于较为复杂程序的运行没有优化功能,只能加快系统的启动速度,无法应用与手机平台内存的使用效率。
发明内容
本发明的目的在于解决上述现有技术中低端手机平台特别是在缺乏内存管理单元的低端手机平台上无法流畅运行较为复杂程序的问题,提供一种通过将物理内存中内容建立内存镜像存储在程序存储器中,通过调用内存镜像,提高内存使用效率的方法。本发明解决其技术问题所采用的技术方案是一种在手机平台提高内存使用效率的方法,通过在应用程序内设置主控模块,操作系统根据主控模块将物理内存内数据建立镜像,调用镜像的方式来提高可用内存量,提高程序执行效率,首先在应用程序内建立主控模块,然后通过以下步骤完成应用程序的运行
步骤一操作系统读取应用程序,并将应用程序中的主控模块加载至可用内存; 步骤二主控模块向操作系统申请,将剩余的可用内存划分为接管区和非接管区,其中所述的接管区用于执行应用子程序,非接管区用于数据交换;步骤三操作系统根据主控模块读取一个应用子程序,所述的应用子程序加载至接管区,操作系统执行所述的应用子程序,得出的执行结果数据存入非接管区;
步骤四正在执行的应用子程序请求主控模块调用下一个应用子程序,此时,主控模块在程序存储器中选取一段可用空间作为虚拟内存区,主控模块将接管区内的数据作内存镜像存入虚拟内存区;
步骤五主控模块清空接管区后加载下个应用子程序,此应用子程序根据设定读取非接管区内的相关联数据,操作系统执行物理内存中的应用子程序,得出的执行结果数据存入非接管区;
步骤六根据正在执行的应用子程序的请求主控模块选择是加载下个应用子程序还是加载上个应用子程序的内存镜像,如果选择是加载下个应用子程序则跳转执行步骤四,如果选择是加载内存镜像则执行步骤七;
步骤七正在执行的应用子程序请求主控模块加载一个内存镜像,此时,主控模块在程序存储器中选取一段可用空间作为虚拟内存区,主控模块将接管区内的数据作内存镜像存入虚拟内存区;
步骤八主控模块清空接管区后读取内存镜像,内存镜像中的应用子程序加载至物理内存,此应用子程序根据设定读取非接管区内的相关联数据,操作系统执行物理内存中的应用子程序,得出的执行结果数据存入非接管区;
步骤九根据正在执行的应用子程序的请求主控模块选择是加载下个应用子程序还是加载上个应用子程序的内存镜像,如果选择是加载下个应用子程序则跳转执行步骤四,如果选择是加载上个应用子程序的内存镜像则执行步骤七。在低端手机上,手机的内存数量虽然不足,但是程序存储器为T-Flash存储卡或 SD卡等存储器,一般可由使用者自行拓展,最大可为4GB,相对物理内存有较大的可用空间,通过设置主控模块,由主控模块控制申请将可用物理内存划分接管区和非接管区,通过软件方法控制接管区对应用子程序的加载,可以在运行较大程序的时候通过将物理内存中暂时不执行的应用子程序保存为内存镜像,将内存镜像移除出物理内存后保存至程序存储器,物理内存加载目前正要运行的应用子程序,提高物理内存的使用效率,同时非接管区作为数据交换的区域也保证了多个应用子程序的执行结果数据能有效地传递,在需要执行已执行的应用子程序时也可以直接加载内存镜像,降低了重复运算的发生,在手机平台提高程序执行效率,使得较小的内存也可运行较为复杂的应用程序,降低了手机平台应用程序开发的难度。作为优选,所述的步骤五中,物理内存中的应用子程序为退出子程序时,则操作系统对所有内存镜像执行删除操作然后清空物理内存,退出应用程序。通过对所有应用程序相关的内存镜像执行删除操作,保存了手机平台的程序存储器重新拥有较大的剩余空间, 在执行下一个应用程序时,可以有较多的资源作为内存镜像使用。作为优选,如果在所述的步骤七中物理内存中加载的应用子程序为通过加载上个应用子程序的内存镜像方式加载的,则主控模块将物理内存中接管区的数据保存为内存镜像覆盖虚拟内存区的原有内存镜像。这样设置可以保证一个应用子程序只存在有一个内存镜像,而且此内存镜像是最近一次调用加载进行数据处理过的应用子程序,降低了加载应用子程序后重复运算的可能性。
作为优选,所述的步骤四中,如果程序存储器中完全没有剩余空间,则主控模块发出提示信息,提醒使用者清理程序存储器,由使用者确定后执行应用程序的退出子程序。这样设置,可以提醒使用者需要对程序存储器进行清理,清理出一定的空间来增加应用程序的使用空间。本发明的有益效果是通过使用本发明提供的方法能在不改变硬件的条件下提高手机平台特别是低端手机平台物理内存的使用效率,提高程序执行效率,使得较小的内存也可运行较为复杂的应用程序,降低了手机平台应用程序开发的难度。
图1是本发明的一种流程图的第一部分; 图2是本发明的一种流程图的第二部分;
图3是本发明的一种流程图的第三部分; 图4是本发明的一种流程图的第四部分; 图5是本发明的一种流程图的第五部分; 图6是本发明的一种流程图的第六部分。
具体实施例方式下面通过具体实施例,并结合附图,对本发明的技术方案作进一步的具体说明。实施例
一种在手机平台提高内存使用效率的方法,本实施例的手机平台以常用MTK平台为例,其中本实施例的物理内存为4MB,在加载完操作系统后,剩余的可用内存为1MB,本实施例的使用方法如下(参见附图1),首先实行步骤Sl 在一个由多种应用子程序构成的应用程序中建立一个主控模块,将主控模块的优先级设为最高,运行此应用程序时运行步骤S2 操作系统首先会加载主控模块至物理内存,然后运行步骤S3 主控模块根据实际需求向操作系统提出内存管理的要求,得到回复后,主控模块通过调用API函数实现对可用内存的管理,主控模块将剩余的可用内存划分为接管区和非接管区,其中所述的接管区用于执行应用子程序,非接管区用于数据交换;然后运行步骤S4 操作系统根据主控模块申请读取一个应用子程序,所述的应用子程序加载至接管区;然后运行步骤S5 操作系统执行所述的应用子程序,步骤S6 得出的执行结果数据存入非接管区、将运行后重新赋值过的应用子程序在物理内存中的接管区内进行修改,此应用子程序完全执行后运行步骤S7 此物理内存的应用子程序将请求主控模块调用下一个应用子程序,此时运行步骤S8 主控模块在程序存储器中进行扫描,然后选取一段可用空间作为虚拟内存区,这里所述的程序存储器为T-Flash存储卡,一般可由使用者自行拓展,最大可为4GB,相对物理内存有较大的可用空间,如果此过程中T-Flash存储卡中没有可用空间,(参见附图5)那么执行步骤S91 主控模块发出提示信息,提醒使用者清理程序存储器,由使用者确定后执行应用程序的退出子程序,如果T-Flash存储卡中有足够可用空间,则执行步骤S9 主控模块将接管区内的数据作内存镜像存入虚拟内存区,步骤SlO 主控模块开始清空接管区,步骤Sll 主控模块将接管区内暂时不使用的数据清空后加载下个应用子程序,步骤S12:现在加载的应用子程序根据应用程序的设定读取非接管区内的相关联数据,然后执行步骤S13 操作系统执行目前物理内存中的应用子程序,当物理内存中加载的应用子程序为退出子程序时(参见附图4),执行步骤132 操作系统对所有内存镜像执行删除操作然后清空可用物理内存,退出应用程序;当物理内存中加载的应用子程序不是退出子程序时,执行步骤S14 (参见附图 2)得出的执行结果数据同样存入非接管区,将运行后重新赋值过的应用子程序在物理内存的接管区内进行修改;此时执行步骤S15 根据正在执行的应用子程序的请求主控模块选择是加载下个应用子程序还是加载上个应用子程序的内存镜像,如果选择是加载下个应用子程序则跳转执行步骤S7,如果选择是加载内存镜像则执行步骤S16 ;步骤S16 正在执行的应用子程序请求主控模块加载一个内存镜像,此时,主控模块在程序存储器中进行搜索,然后选取一段可用空间作为虚拟内存区,步骤S17:主控模块将接管区内的数据作内存镜像后存入虚拟内存区;步骤S18 主控模块清空接管区,然后执行步骤S19 (参见附图3): 操作系统根据主控模块的申请将目标的内存镜像加载入物理内存的接管区,步骤S20 操作系统读取此内存镜像中的应用子程序;步骤S21 操作系统根据应用子程序的设定读取非接管区内的相关联数据,步骤S22 操作系统执行物理内存中的应用子程序,得出的执行结果数据存入非接管区,将运行后重新赋值过的应用子程序在物理内存的接管区内进行修改;根据正在执行的应用子程序的请求主控模块选择是加载下个应用子程序还是加载上个应用子程序的内存镜像,如果选择是加载下个应用子程序则跳转执行步骤S7 ;如果是选择继续加载上个应用子程序的内存镜像,那么正在执行的应用子程序请求主控模块加载一个应用子程序的内存镜像,此时执行步骤S25 (参见附图6):主控模块在程序存储器中进行搜索,搜索到物理内存内刚加载的内存镜像对应的虚拟内存地址,然后主控模块将接管区内的数据作内存镜像后存入虚拟内存区,覆盖虚拟内存区中原有内存镜像,步骤S26:主控模块清空接管区,然后执行步骤S27:操作系统根据主控模块的申请将目标的内存镜像加载入物理内存的接管区,步骤观读取此内存镜像中的应用子程序,步骤S29 操作系统根据应用子程序的设定读取非接管区内的相关联数据,步骤S30 操作系统执行物理内存中的应用子程序,步骤S31 得出的执行结果数据存入非接管区,将运行后重新赋值过的应用子程序在物理内存的接管区内进行修改;当步骤S31执行完,主控模块将根据正在执行的应用子程序的请求主控模块选择是加载下个应用子程序还是加载内存镜像,如果选择是加载下个应用子程序则跳转执行步骤S7,如果是执行加载上个应用子程序的内存镜像,则跳转执行步骤S25。 以上所述的实施例只是本发明的一种较佳的方案,并非对本发明作任何形式上的限制,在不超出权利要求所记载的技术方案的前提下还有其它的变体及改型。
权利要求
1.一种在手机平台提高内存使用效率的方法,通过在应用程序内设置主控模块,操作系统根据主控模块将物理内存内数据建立镜像,调用镜像的方式来提高可用内存量,提高程序执行效率,其特征在于首先在应用程序内建立主控模块,然后通过以下步骤完成应用程序的运行步骤一操作系统读取应用程序,并将应用程序中的主控模块加载至可用内存;步骤二主控模块向操作系统申请,将剩余的可用内存划分为接管区和非接管区,其中所述的接管区用于执行应用子程序,非接管区用于数据交换;步骤三操作系统根据主控模块读取一个应用子程序,所述的应用子程序加载至接管区,操作系统执行所述的应用子程序,得出的执行结果数据存入非接管区;步骤四正在执行的应用子程序请求主控模块调用下一个应用子程序,此时,主控模块在程序存储器中选取一段可用空间作为虚拟内存区,主控模块将接管区内的数据作内存镜像存入虚拟内存区;步骤五主控模块清空接管区后加载下个应用子程序,此应用子程序根据设定读取非接管区内的相关联数据,操作系统执行物理内存中的应用子程序,得出的执行结果数据存入非接管区;步骤六根据正在执行的应用子程序的请求主控模块选择是加载下个应用子程序还是加载上个应用子程序的内存镜像,如果选择是加载下个应用子程序则跳转执行步骤四,如果选择是加载内存镜像则执行步骤七;步骤七正在执行的应用子程序请求主控模块加载一个内存镜像,此时,主控模块在程序存储器中选取一段可用空间作为虚拟内存区,主控模块将接管区内的数据作内存镜像存入虚拟内存区;步骤八主控模块清空接管区后读取内存镜像,内存镜像中的应用子程序加载至物理内存,此应用子程序根据设定读取非接管区内的相关联数据,操作系统执行物理内存中的应用子程序,得出的执行结果数据存入非接管区;步骤九根据正在执行的应用子程序的请求主控模块选择是加载下个应用子程序还是加载上个应用子程序的内存镜像,如果选择是加载下个应用子程序则跳转执行步骤四,如果选择是加载上个应用子程序的内存镜像则执行步骤七。
2.根据权利要求1所述的在手机平台提高内存使用效率的方法,其特征在于所述的步骤五中,物理内存中的应用子程序为退出子程序时,则操作系统对所有内存镜像执行删除操作然后清空物理内存,退出应用程序。
3.根据权利要求1所述的在手机平台提高内存使用效率的方法,其特征在于如果在所述的步骤七中物理内存中加载的应用子程序为通过加载上个应用子程序的内存镜像方式加载的,则主控模块将物理内存中接管区的数据保存为内存镜像覆盖虚拟内存区的原有内存镜像。
4.根据权利要求1或2或3所述的在手机平台提高内存使用效率的方法,其特征在于 所述的步骤四中,如果程序存储器中完全没有剩余空间,则主控模块发出提示信息,提醒使用者清理程序存储器,由使用者确定后执行应用程序的退出子程序。
全文摘要
本发明涉及一种在手机平台提高内存使用效率的方法。本发明的目的在于解决上述现有技术中低端手机平台特变是在缺少缺乏内存管理单元的低端手机平台上无法流畅运行较为复杂程序的问题,其技术方案要点是,通过在应用程序内设置主控模块,操作系统根据主控模块将物理内存内数据建立镜像,将物理内存中暂时不使用的数据保存为内存镜像移除物理内存保存,在需要的时候再重新调用内存镜像的方式来提高可用内存量。通过使用本发明提供的方法能在不改变硬件的条件下提高手机平台特别是低端手机平台物理内存的使用效率,使得较小的内存也可运行较为复杂的应用程序,降低了手机平台应用程序开发的难度。
文档编号G06F11/14GK102279762SQ20111017125
公开日2011年12月14日 申请日期2011年6月23日 优先权日2011年6月23日
发明者王泽芳 申请人:杭州斯凯网络科技有限公司