终端、应用数据的处理方法、数据处理设备及存储介质与流程

文档序号:17185584发布日期:2019-03-22 21:19阅读:146来源:国知局
本发明涉及通信
技术领域
:,具体涉及一种终端、应用数据的处理方法、数据处理设备及存储介质。
背景技术
::随着移动微处理器和移动操作系统的发展,移动设备(例如智能手机,平板等)越来越普及,针对移动设备设计的应用功能越来越丰富。这些功能丰富的应用一方面能帮助提高移动设备的用户体验,另一方面却需要更多的内存资源和存储资源。android操作系统为了提高用户的体验,当用户开启一个应用程序后,即使用户退出了应用程序,程序却没有真正的退出,仍然驻留在内存中。当用户再次打开该应用程序时,该应用程序就可以立即切换回来,而不用再次从存储设备上(例如闪存)加载到内存。由于这些应用程序消耗内存资源,当内存资源不足时,就会触发低内存管理(lowmemorykiller,lmk),lmk会选择一些进程并强制结束它们,导致这些应用程序的再启动时间延长,严重影响用户体验。通过增加内存的大小,可以让同时驻留在内存中的应用程序更多,能在一定程度上减少触发lmk的次数。但内存的增加会导致成本的上升,且内存耗电量大(最多可占用整个操作系统耗电量的30%),电池消耗快,同样影响用户体验。android操作系统是基于linuxkernel的操作系统,linuxkernel提供了通过交换分区即swap分区的方法来解决内存资源不足的问题。当内存不足时,操作系统会将一些不经常使用的内存页面的数据换出到swap分区,从而减少对内存的占用。传统swap机制采用磁盘、闪存等块设备(blockdevice)作为swap分区,内存和swap分区之间的数据传输由i/o驱动程序负责。操作系统把正在使用的内存页面维护在一个最近最少使用(leastrecentlyused,lru)链表中,当内存空闲页面不足时,页框实地址(pageframerealaddress,pfra)会从lru链表中回收一些较少被用到的内存页面中的数据放到swap分区中。现有linuxswap分区的结构如图1所示,swap分区按页槽(pageslot)进行组织,每个页槽的大小等于内存页面的大小,每个页槽对应一个计数器(counter)。counter用来标识该页槽是否空闲,同时也用来表示这个被置换出去的页面中的数据被多少个进程所引用,这些counter放在swap_map这个数组中。当一个内存页面中的数据需要被换出到swap分区时,内核会扫描swap_map数组,查找一个空闲的页槽即对应的counter为0的页槽,将内存页面中的数据换出到空闲页槽中。虽然基于块设备的swap分区能够解决内存不足等问题,但i/o设备仍然存在速度慢,延迟大等情况,且页面中数据的换入换出需要经过i/o,数据的传输需要由设备驱动程序负责,需要进行i/o调度,降低了应用程序的性能,影响了用户体验。此外,移动设备中作为交换分区的闪存设备的擦写次数有限,频繁的页面换入/换出会导致闪存设备过早的损坏,且数据在内存和交换分区中频繁的移动,会形成页面抖动,增加系统额外的开销。技术实现要素:本发明实施例提供了一种终端、应用数据的处理方法、数据处理设备及存储介质,可以提高内存中数据的换出速度,延长交换分区的使用时间。根据本发明实施例的一方面,提供一种终端,所述终端包括内存、非易失性存储器nvm缓存、交换分区、内存控制器mmu和i/o控制器;所述内存包括多个内存页面,所述nvm缓存包括多个缓存页面,所述交换分区包括多个页槽;所述mmu,用于控制所述内存和所述nvm缓存之间通过内存总线传输内存页面的应用数据和/或缓存页面的应用数据;所述i/o控制器,用于控制所述nvm缓存和所述交换分区之间通过i/o总线传输缓存页面的应用数据和/或页槽的应用数据。根据本发明实施例的另一方面,提供一种应用数据的处理方法,所述应用数据的处理方法包括:在内存中的空闲内存页面的数量小于第一设定值和/或满足设定条件时,控制所述内存和nvm缓存之间通过内存总线传输内存页面的应用数据和/或缓存页面的应用数据;在空闲缓存页面的数量小于第二设定值和/或进程访问页槽的应用数据时,控制所述nvm缓存和交换分区之间通过i/o总线传输缓存页面的应用数据和/或页槽的应用数据。根据本发明实施例的再一方面,提供一种数据处理设备,所述数据处理设备包括存储器和处理器;所述存储器用于储存可执行程序代码;所述处理器用于读取所述存储器中存储的可执行程序代码以执行本发明实施例中提供的应用数据的处理方法。根据本发明实施例的有一方面,提供一种可读存储介质,所述可读存储介质中存储有计算机指令,当所述计算机指令被存储器执行时,使得处理器执行本发明实施例中提供的应用数据的处理方法。本发明实施例所提供的终端、应用数据的处理方法、数据处理设备及存储介质,通过增设nvm缓存,使用nvm缓存作为内存和交换分区之间的缓存,在内存空间不足时,通过内存拷贝将内存页面的数据首先换出到缓存页面中,减少了数据换出的延迟,提高了数据的换出速度,减少了应用程序的响应时间。由于内存页面的应用数据不是直接转入到页槽中,从而减少了对交换分区的读写次数,延长了交换分区的使用寿命。通过本发明实施例的数据处理方法,还有效解决了现有技术中由于应用数据在内存页面和页槽中频繁移动所造成的页面抖动问题。附图说明通过阅读以下参照附图对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显,其中,相同或相似的附图标记表示相同或相似的特征。图1为现有技术中swap分区的结构示意图;图2为本发明实施例中一种终端的结构示意图;图3为本发明实施例中建立应用程序的进程虚拟地址和缓存页面的映射关系的示意图;图4为本发明实施例中缓存链表中缓存页面的结构示意图;图5为本发明实施例中将内存页面的应用数据转入缓存页面的流程示意图;图6为本发明实施例中nvm缓存中缓存页面的状态变化示意图;图7为可以实现本发明实施例所述的应用数据的处理方法的计算机设备的示例性硬件架构的结构图。具体实施方式下面将详细描述本发明的各个方面的特征和示例性实施例。在下面的详细描述中,提出了许多具体细节,以便提供对本发明的全面理解。但是,对于本领域技术人员来说很明显的是,本发明可以在不需要这些具体细节中的一些细节的情况下实施。下面对实施例的描述仅仅是为了通过示出本发明的示例来提供对本发明的更好的理解。本发明决不限于下面所提出的任何具体配置和算法,而是在不脱离本发明的精神的前提下覆盖了元素、部件和算法的任何修改、替换和改进。在附图和下面的描述中,没有示出公知的结构和技术,以便避免对本发明造成不必要的模糊。为了解决移动设备中内存资源不足的问题,目前主要是基于闪存设备的交换分区的方案,但由于移动设备的cpu和闪存设备在速度上差异巨大,在读取和写入数据时,cpu不能立即获取数据,而是需要将进行i/o的进程挂起,交由i/o调度器进行调度并读取数据。所以基于闪存的交换分区存在着读取页面慢的缺点,容易导致应用程序的响应延迟。主流移动设备一般都使用嵌入式多媒体存储卡(embeddedmultimediacard,emmc)作为其存储设备。emmc通常包含一个用作数据存储的闪存芯片和一个闪存控制器,然而emmc的数据带宽有限,交换分区中页面的换入和换出会占用一定的数据带宽,容易导致i/o竞争,延长应用程序的i/o响应时间。移动设备中使用的闪存设备多为多层单元(trinary-levelcell,tlc),但tlc的擦写次数有限,频繁的数据换入/换出操作会增加对闪存的擦写次数,从而导致闪存设备过早的损坏。由于移动设备的交互性较强,用户在不同应用之间进行切换时,刚换出到交换分区中的内存页面(一般为动态随机存取存储器(dram)页面)的数据可能被再次访问,这就需要将页面重新换回到dram中,然而该页面之后可能极少被访问,在dram内存不足时,该页面中的数据又再次被换出,使得数据在dram和交换分区(一般为flash交换分区)中频繁的移动,形成页面抖动,增加了系统额外的开销。为了解决目前移动设备中内存资源不足解决方案中的至少一个技术问题,本发明实施例提供了一种终端、应用数据的处理方法、数据处理设备及存储介质。图2示出了本发明实施例中一种终端的结构示意图,由图中可以看出,该终端主要可以包括内存、nvm缓存、交换分区、内存控制器(memorymanagementunit,mmu)和i/o控制器。其中,内存包括多个内存页面(内存中的数据存储单位),nvm缓存包括多个缓存页面(缓存中的数据存储单元),交换分区包括多个页槽。mmu,用于控制内存和nvm缓存之间通过内存总线传输内存页面的应用数据和/或缓存页面的应用数据。i/o控制器,用于控制nvm缓存和交换分区之间通过i/o总线传输缓存页面的应用数据和/或页槽的应用数据。本发明实施例的终端,在现有内存和交换分区的基础上,增设了nvm缓存,nvm缓存和内存直接连接在内存总线上,由mmu控制内存页面和缓存页面之间通过内存总线进行应用数据的传输。交换分区作为外存,nvm缓存和交换分区之间的应用数据传输通过i/o方式,由i/o控制器控制实现。由于nvm缓存直接和内存总线相连,nvm缓存和内存处于同一层次,因此,nvm缓存和内存之间的数据传输可以通过内存拷贝实现,而无需经过i/o调度,能够快速的进行内存和nvm缓存之间的数据传输。本发明实施例的终端,在内存中的空闲内存页面不足即空闲内存页面的数量小于第一设定值时,操作系统会启动页面回收程序,将不活跃的内存页面即应用进程访问少的内存页面中的应用数据首先换出到nvm缓存中,释放内存页面,快速缓解内存资源不足的状况。在nvm缓存空间不足即空闲缓存页面的数量小于第二设定值时,将缓存页面中的应用数据换出到交换分区中,以保证nvm缓存中有足够的空间实现内存页面中的应用数据向空闲缓存页面的转出,以满足内存中应用程序运行时的内存请求。本发明实施例的终端,使用nvm缓存作为内存和交换分区之间的缓存,先将内存页面中的应用数据换出至nvm缓存中,延迟了应用数据向交换分区的换出,提高了内存页面中应用数据的换出速度,满足了应用进程对内存中应用数据的快速访问需求,减少了应用程序的响应时间。此外,延迟将应用数据换出至交换分区减少对交换分区的写操作,减少了内部存储与外部存储的数据移动次数,减少了页面抖动,从而提高系统性能并延长了交换分区的使用寿命。此外,本发明实施例的终端,只有在nvm缓存中的空闲缓存页面不足时,才会通过后台线程将一些缓存页面中的应用数据从nvm缓存移动到交换分区中,减少数据转移操作与应用程序运行的i/o冲突,进一步的提升了应用程序的响应速度。本发明实施例中,内存包括但不限于dram,交换分区包括但不限于flash交换分区,nvm缓存包括但不限于相变存储器(pcm)、忆阻器(memristor)、相变随机存储器(pcram)、自旋扭矩转换随机存储器(stt-ram)、阻变式随机存储器(rram)等。保存在nvm里的数据具有掉电不丢失的特性,即非易失性,nvm能像dram一样按字节寻址且读写性能与dram相当。本发明实施例中,mmu还用于建立内存页面的应用数据的进程虚拟地址与缓存页面之间的映射关系,删除内存页面的应用数据的进程虚拟地址与内存页面之间的映射关系。cpu通过应用数据的进行虚拟地址来访问内存中的应用数据时,mmu需要将虚拟地址映射到与对应的物理地址即内存页面的地址。mmu通过页表项(pagetableentry,pte)实现进程虚拟地址与内存页面地址的映射。本发明实施例中,在有应用数据从内存页面转入到空闲的缓存页面时,mmu通过建立内存页面的应用数据即从内存页面被转出的应用数据的进程虚拟地址与缓存页面之间的映射关系,并删除内存页面的应用数据的进程虚拟地址与内存页面之间的映射关系,使得当应用数据再次被进程访问时,无需将应用数据转入到内存页面中,可以根据应用数据的进程虚拟地址与缓存页面的映射关系直接对缓存页面进行访问,避免了缺页中断以及应用数据再换入的操作。通过建立上述映射关系,使得应用数据会先缓存驻留在nvm缓存中,可被进程直接访问,提高了应用程序的响应速度。如图3所示,在将不活跃的dram页面中的应用数据换出到nvm缓存的空闲缓存页面时,更新pte表中的映射关系,建立缓存页面与应用数据的进程虚拟地址之间的映射,删除dram页面与进程虚拟地址之间的映射。本发明实施例中,mmu还用于建立缓存页面的应用数据的进程虚拟地址与内存页面之间的映射关系,删除缓存页面的应用数据的进程虚拟地址与缓存页面之间的映射关系。在满足设定条件,需要将缓存页面中的应用数据转入到内存页面时,在将应用数据从缓存页面转入到内存页面后,为了使应用数据能够被正常访问,mmu会建立缓存页面的应用数据即从缓存页面中被转出的进程虚拟地址与内存页面之间的映射关系,并删除缓存页面的应用数据的进程虚拟地址与缓存页面之间的映射关系。本发明实施例中,上述设定条件包括但不限于缓存页面的应用数据在设定时间内接收到设定次数的进程访问请求。例如,上述设定条件可以设置为页面中的应用数据在10分钟内接收到了两次的进程访问请求。由于在应用数据被转入到缓存页面时,mmu建立了应用数据的进程虚拟地址与缓存页面的映射关系,因此,可以在进程访问该应用数据时,可以直接访问缓存页面,而无需将缓存页面的应用数据先转入到内存页面中。但如果每组预设条件,如在设定时间内接收到了多次该缓存页面的应用数据的访问请求,则说明该页面中的数据之后被继续访问的可能性比较高,缓存页面属于活跃页面,此时可以将应用数据转会至空闲的内存页面中。本发明实施例中,mmu,还用于删除缓存页面的应用数据的进程虚拟地址与缓存页面之间的映射关系。本发明实施例中,mmu,还用于建立页槽的应用数据的进程虚拟地址与缓存页面之间的映射关系。在应用数据从缓存页面转入到页槽时,mmu会删除缓存页面的应用数据的进程虚拟地址与缓存页面之间的映射关系。在应用数据从页槽转入到缓存页面时,mmu会建立页槽的应用数据的进程虚拟地址与缓存页面之间的映射关系。本发明实施例中,i/o控制器,具体用于将应用数据由内存页面转入且应用数据未被进程访问过的缓存页面的应用数据转入页槽。即优选将不活跃的缓存页面中的应用数据转入到页槽。本发明实施例中,mmu,还用于根据预设的时间间隔,将应用数据由页槽转入的缓存页面的进程访问标识更新为未被进程访问过的标识。进程访问标识用于标识缓存页面中的应用数据是否被进程访问过,通过设置进程访问标识超时机制,即按照预设的时间间隔对应用数据由页槽转入的缓存页面的访问标识进行更新,以缓存页面的进程访问标识的时效性。应用数据由页槽转入的缓存页面,表示其应用数据的上一次操作是从页槽转入到缓存页面,由于在上述时间间隔内没有从缓存页面转入到内存页面,说明该页面中的应用数据被访问的可能性也不太高,因此可以将其访问标识进行上述更新,延迟将其中的应用数据换入到内存中。本发明实施例提供了一种应用数据的处理方法,该处理方法主要可以包括以下步骤:在内存中的空闲内存页面的数量小于第一设定值和/或满足设定条件时,控制内存和nvm缓存之间通过内存总线传输内存页面的应用数据和/或缓存页面的应用数据。在空闲缓存页面的数量小于第二设定值和/或进程访问页槽中的应用数据时,控制交换分区和nvm缓存之间通过i/o总线传输页槽的应用数据和/或缓存页面的应用数据。本发明实施例的应用数据的处理方法,适用于包括nvm缓存的终端中的应用数据的处理,nvm缓存分别连接到终端的内存总线上和i/o总线上。因此,本发明实施例的应用数据的处理方法,适用于本发明实施例中提供的上述任一项终端。本发明实施例的应用数据的处理方法,使用nvm缓存作为内存和交换分区之间的缓存,在内存中的空闲内存页面的数量小于第一设定值和/或满足设定条件时,即需要释放内存空间时,先将内存页面中的应用数据换出至nvm缓存中,由于nvm缓存直接与内存总线相连,因此,可以通过内存拷贝的方式实现两者间数据的传输,有效提高了内存空间的释放效率。此外,由于延迟了将应用数据换出到交换分区,减少了对页槽的读写操作,延长了交换分区的使用寿命。为了保证nvm缓存有足够的空间实现内存页面中的应用数据向空闲缓存页面的转出,满足快速释放内存的要求,在空闲缓存页面的数量小于第二设定值,需要将缓存页面中的应用数据通过i/o总线转入到交换分区的空闲页槽中。在有进程需要访问页槽中的应用数据时,需要将应用程序通过i/o总线转入到缓存页面中。本发明实施例中,内存包括但不限于dram,交换分区包括但不限于flash交换分区,nvm缓存包括但不限于pcm、memristor、pcram、自stt-ram、rram等。本发明实施例中,在内存中的空闲内存页面的数量小于第一设定值和/或满足设定条件时,控制内存和nvm缓存之间通过内存总线传输内存页面的应用数据和/或缓存页面的应用数据,包括:在空闲内存页面的数量小于第一设定值时,控制内存页面的应用数据转入缓存页面和/或在满足设定条件时,控制缓存页面的应用数据转入内存页面。本发明实施例中,在空闲缓存页面的数量小于第二设定值和/或进程访问页槽中的应用数据时,控制nvm缓存和交换分区之间通过i/o总线传输缓存页面的应用数据和/或页槽的应用数据,包括:在空闲缓存页面的数量小于第二设定值时,控制缓存页面中的应用数据转入页槽和/或在进程访问页槽中的应用数据时,控制所要访问的页槽的应用数据转入缓存页面。其中,第一设定值和第二设定值均可以根据实际应用需要设置。第一设定值和第二设定值可以是整数值,也可以是比例值。当为比例值时,空闲内存页面的数量小于第一设定值指的是空闲内存页面的数量占总的内存页面数量的比例小于第一设定值,空闲缓存页面的数量小于第二设定值指的是空闲缓存页面的数量占总的缓存页面数量的比例小于第二设定值。本发明实施例中,在空闲内存页面的数量小于第一设定值时,控制内存页面的应用数据转入缓存页面后,还可以包括:建立内存页面的应用数据的进程虚拟地址与缓存页面之间的映射关系,删除内存页面的应用数据的进程虚拟地址与上述内存页面之间的映射关系。本发明实施例中,在满足设定条件时,控制缓存页面的应用数据转入内存页面后,还包括:建立缓存页面的应用数据的进程虚拟地址与内存页面之间的映射关系,删除缓存页面的应用数据的进程虚拟地址与缓存页面之间的映射关系。本发明实施例中,在空闲缓存页面的数量小于第二设定值时,控制缓存页面中的应用数据转入页槽后,还包括:删除缓存页面的应用数据的进程虚拟地址与缓存页面之间的映射关系。本发明实施例中,在进程访问页槽中的应用数据时,控制所要访问的页槽的应用数据转入缓存页面后,还包括:建立页槽的应用数据的进程虚拟地址与缓存页面之间的映射关系。在应用数据从内存页面转入到空闲的缓存页面时,通过建立内存页面的应用数据即从内存页面被转出的应用数据的进程虚拟地址与缓存页面之间的映射关系,并删除内存页面的应用数据的进程虚拟地址与内存页面之间的映射关系,由于nvm缓存是直接连接在内存总线上,因此使得当应用数据再次被进程访问时,无需将应用数据转入到内存页面中,可以根据应用数据的进程虚拟地址和建立的映射关系直接对缓存页面进行访问,避免了缺页中断以及应用数据再换入的操作。通过建立上述映射关系,使得应用数据会先缓存驻留在nvm缓存中,可被进程直接访问,提高了应用程序的响应速度。本发明实施例中,上述设定条件包括但不限于缓存页面的应用数据在设定时间内接收到设定次数的进程访问请求。当进程对已经从内存页面中换出的应用数据进行访问时,需要对该应用数据进行换入。本发明实施例中,延迟换入技术让从内存页面换出的应用数据首先被换入到nvm缓存中,因此,从内存页面中换出的应用数据可能在nvm缓存中,也可能在交换分区中。若应用数据在nvm缓存中,由于缓存页面中的应用数据也可以被进程直接访问,因此,在进程第一次访问缓存页面中的应用数据,可以不将应用数据立即转入内存页面,而在满足设定条件时再转入。若应用数据在页槽中,则首先需要将应用数据从页槽转入到缓存页面,将其标志位更新为pg_swap=0,pg_reference=1,并将该页面映射到进程虚地址空间即建立映射关系,此时,由于是第一次访问,进程可直接对该缓存页面中的应用数据进行访问。通过本实施例中的方式,缓存页面中的应用数据只有在满足设定条件时,才会换回到内存页面中,减少了数据换入/换出的频率,降低了出现页面抖动的可能性。本发明实施例中,上述设定条件可以设置为缓存页面中的应用数据在设定时间s内接收到两次进程访问请求。本发明实施例中,应用数据的处理方法还可以包括:设置每个缓存页面的延迟换出标识和访问标识。其中,延迟换出标识包括用于表示应用数据是从内存页面转入的换出标识和用于表示应用数据是从页槽转入的换入标识,延迟换出标识的初始值为换出标识,访问标识包括用于表示缓存页面中的应用数据被进程访问过的第一标识和用于表示缓存页面中的应用数据未被进程访问过的第二标识,访问标识的初始值为第二标识。通过设置缓存页面的延迟换出标识和访问标识,可以在应用数据的换入/换出时,根据这两个标识实现所要换入/换出的应用数据的选择。本发明实施例中,在空闲缓存页面的数量小于第二设定值时,控制缓存页面的应用数据转入页槽,包括:将延迟换出标识为换出标识且访问标识为第二标识的缓存页面的应用数据转入页槽。换出标识说明应用数据是由内存页面中转出的,数据在内存中时被进程访问的概率不高,而访问标识为第二标识则说明应用程序在缓存页面存储时,也没有被进程访问过,因此,优选将满足上述条件的不活跃的应用数据转入页槽,以尽可能减少应用数据在不同存储位置的交换次数,减少系统资源的消耗。本发明实施例中,nvm缓存中的所有缓存页面构成缓存链表。将延迟换出标识为换出标识且访问标识为第二标识的缓存页面的应用数据转入页槽,包括:从缓存链表的链表头开始扫描,将扫描到的延迟换出标识为换出标识且访问标识为第二标识的缓存页面的应用数据转入页槽,将扫描过的缓存页面的访问标识更新为第二标识。每次向nvm缓存中的空闲缓存页面添加应用数据之后,需要对nvm缓存的剩余空间即看空闲的缓存页面进行检查。当nvm缓存中空闲缓存页面的数量低于第二设定值时,需要将缓存页面中的应用数据转入到交换分区的页槽中,以增加nvm缓存中空闲缓存页面的数量。在选取需要将应用数据转出的缓存页面时,需要选取不活跃的缓存页面,即这些页面中的应用数据很少被应用进程所访问,以减少应用数据的换入/换出次数。为了高效的实现将不活跃的缓存页面中的应用数据转入页槽中,本发明实施例中,将nvm缓存中的每个缓存页面关联了一个延迟换出标志位pg_swap即上述延迟换出标识和一个访问位pg_reference即上述访问标识。为了描述方便,本发明实施例中,将换出标识对应的缓存页面称为延迟换出页面(由内存页面换出的、尽可能延迟换出到交换分区),将换入标识对应的缓存页面称为延迟换入页面(由页槽换入的、尽可能延迟换入到内存页面)。若pg_swap为1,则标识缓存页面为延迟换出页面,若pg_swap为0,则标识缓存页面为延迟换入页面。若pg_reference为1,则标识缓存页面中的应用数据被进程所访问过,若pg_reference为0,则标识缓存页面中的应用数据未被进程所访问过。本发明实施例中,nvm缓存中的所有缓存页面被维护在一个链表即上述缓存链表中。如图4所示,为本发明一具体实施例中缓存页面的缓存链表结构示意图,图中page0、page1、……、pagen、pagek均表示缓存页面,每个缓存页面的延迟换出标识pg_swap和访问标识pg_reference如图中所示。当应用数据从内存页面中换出到nvm缓存的缓存页面中时,该缓存页面可以被加入到链表的尾部,该缓存页面的pg_swap为1,pg_reference为0,如图4所示。在需要选择应用数据从缓存页面中换出到交换分区的页槽中时,指针从缓存链表的链表头开始扫描,如图4所示,若当前指针所指向的页面的pg_swap为0,则该页面不做任何改变,指针指向下一个页面;若pg_swap为1且pg_reference为1,说明该延迟换出页面在nvm缓存中被访问过,暂时不将其迁移到flash交换分区中,但将其pg_reference置为0;若指针所指页面的pg_swap为1且pg_reference为0,如page2,说明在上次扫描之后,该延迟换出页面未被进程所访问,page2页面为不活跃页面,将page2页面中的应用数据转入到交换分区的页槽中,并移除页表项pte中进程虚拟地址与该页面之间的映射。当指针到达链表尾时,则从链表头从新开始扫描,直到nvm缓存中回收到指定数量的页面,即空闲缓存页面中的数量等于第二设定值。本发明实施例中,应用数据的处理方法还可以包括:按照预设的时间间隔,将延迟换出标识为换入标识的缓存页面的访问标识更新为第二标识。通过按照预设的时间间隔对应用数据由页槽转入的缓存页面的访问标识进行更新保证了缓存页面的访问标识的时效性。本发明一实施例中,在缓存页面中的应用数据转入内存页面的设定条件为缓存页面中的应用数据在设定时间s内接收到两次进程访问请求时,优选将设定条件中的设定时间s和进行访问标识更新的时间间隔设置为相同。此时,可以依据pg_reference来判断是否满足上述设定条件,具体的,如果在缓存页面的pg_reference为1时,在上述时间s内又接收到了进程访问请求,则满足上述设定条件。如在一具体实施例中,设定条件为在5分钟之内接收到2次进程访问请求。在pg_reference为0时,则直接对该缓存页面中的应用数据进行访问,并将pg_reference置为1;若在距离上次访问5分钟之内(访问标识未被更新为第二标识)又再次接收到了进程访问请求,则说明该缓存页面中的应用数据之后被继续访问的可能性较高,所以无论该页面为延迟换出的页面,还是延迟换入的页面,都将该缓存页面中的应用数据换回到内存中。本发明实施例中,在空闲内存页面的数量小于第一设定值时,控制内存页面的应用数据转入缓存页面,包括:判断内存页面的应用数据是否为缓存页面的应用数据;若内存页面的应用数据不是缓存页面的应用数据,则将内存页面的应用数据转入缓存页面。本发明实施例中,应用数据的处理方法还可以包括:若内存页面的应用数据是缓存页面的应用数据,则不将内存页面的应用数据转入缓存页面,并将应用数据所在的缓存页面的延迟换出标识更新为换出标识。当内存不足时,即内存中空闲内存页面的数量小于第一设定值时,由操作系统负责选择不活跃的内存页面即需要将应用数据转出到缓存页面的内存页面(该步骤具体实现方式可以直接采用现有技术)。为了使缓存页面中的应用数据可直接被进程所访问,nvm缓存中的页面被映射到了进程的虚拟地址空间即上述的建立内存页面中的应用数据的进程虚拟地址与缓存页面的映射关系,建立页槽中的应用数据与缓存页面的映射关系,所以操作系统在选择不活跃页面时,所选取的页面可能是缓存页面,此时,则不需要进行数据传输,只需将该缓存页面的延迟换出标识更新为延迟换出即可,即将pg_swap置为1。如图5所示,在将内存页面的应用数据换出至缓存页面时,会首先判断所选择的不活跃的内存页面是否为缓存页面,如果是,则只需要进行标识变更,如果不是,则将内存页面的应用数据换出至缓存页面。在完成数据的传输之后,需要判断缓存页面中的空闲缓存页面数据是否大于或等于第二设定值,如果小于第二设定值,则需要启动一个线程,将不活跃的缓存页面中的应用数据换出至页槽,直至空闲缓存页面数量等于第二设定值。图6示出了本发明一具体实施例中nvm缓存中缓存页面状态的变化示意图,本实施例中,内存为dram,交换分区为flash。图中“换出”指该页面被操作系统选择为不活跃的内存页面,需要进行换出,因为此时该页面位于nvm缓存中,所以直接将该页面设为延迟换出页面pg_swap=1,“访问清零”是指在nvm缓存中空闲缓存页面不足时,在扫描缓存链表时将页面的访问标志位清零即将扫描过的缓存页面的访问标识更新为第二标识,“页面替换”是指在扫描缓存链表时,将pg_reference为0的页面迁移到flash交换分区中,“访问”是指进程访问。由该变化示意图,可以清楚的看出本实施例中应用数据的转入/转出方向及标识位变化。现有移动设备中,内存基本上使用的都是dram,交换分区多采用flash。表1中示出了几种nvm与dram、flash的性能参数比较结果,由表中可以看出,nvm具有和dram相当的读取性能,但其写性能比dram差,因而nvm不适合直接替代dram作为主存。但相比dram,nvm在静态功耗和可缩性上具有很大的优势,适用于存放访问不频繁的数据。flash与nvm以及dram的读写性能差距较大(>1000x),但价格低廉,适用于作为后备存储器。表1性能参数pcramrramstt-ramdramflash耐久性108108>1015>1015104~105读延迟20-50ns10-50ns2-20ns30ns25us写/擦除延迟50/120ns10-50ns2-20ns15ns200us/1.5ms是否需要刷新否否否是否功耗~100mw/die~100mw/die~100mw/die~w/gb~100mw/die静态功耗<<0.1w<<0.1w<<0.1w~w/gb<<0.1w本发明实施例中提供的终端和应用数据的处理方法,使用nvm缓存作为交换分区的缓存比直接使用内存作为缓存具有如下的优势:与传统操作系统中的缓存不同,交换分区缓存中的数据都是不活跃数据,被访问的几率较小,nvm缓存具有低静态功耗,低访问延迟和高存储密度的特点,因此使用nvm缓存作为缓存可以显著的降低存储器功耗。和内存相比,nvm缓存具有更高的存储密度,在相同大小缓存的情况下,使用nvm缓存可以减少芯片面积。结合本发明实施例的应用数据的处理方法的至少一部分可以由计算设备实现。图7示出了本发明实施例的计算设备的示意性结构框图。如图7所示,计算设备700可以包括输入设备701、输入接口702、中央处理器703、存储器704、输出接口705、以及输出设备706。其中,输入接口702、处理器703、存储器704、以及输出接口705通过总线710相互连接,输入设备701和输出设备706分别通过输入接口702和输出接口705与总线710连接,进而与计算设备700的其他组件连接。具体地,输入设备701接收来自外部的输入信息,并通过输入接口702将输入信息传送到处理器703;处理器703基于存储器704中存储的计算机可执行指令对输入信息进行处理以生成输出信息,将输出信息临时或者永久地存储在存储器704中,然后通过输出接口705将输出信息传送到输出设备706;输出设备706将输出信息输出到计算设备700的外部供用户使用。也就是说,图7所示的计算设备700可以被实现为数据处理设备,该数据处理设备包括:处理器703和存储器704。该存储器704用于储存有可执行程序代码;处理器703用于读取存储器中存储的可执行程序代码以执行上述实施例的应用数据的处理方法。本发明实施例还提供了一种可读存储介质,上述可读存储介质中存储有计算机指令,当上述计算机指令被存储器执行时,使得处理器执行本发明实施例中提供的上述任一种应用数据的处理方法。以上所述的结构框图中所示的功能块可以实现为硬件、软件、固件或者它们的组合。当以硬件方式实现时,其可以例如是电子电路、专用集成电路(asic)、适当的固件、插件、功能卡等等。当以软件方式实现时,本发明的元素是被用于执行所需任务的程序或者代码段。程序或者代码段可以存储在机器可读介质中,或者通过载波中携带的数据信号在传输介质或者通信链路上传送。“机器可读介质”可以包括能够存储或传输信息的任何介质。机器可读介质的例子包括电子电路、半导体存储器设备、rom、闪存、可擦除rom(erom)、软盘、cd-rom、光盘、硬盘、光纤介质、射频(rf)链路,等等。代码段可以经由诸如因特网、内联网等的计算机网络被下载。本发明可以以其他的具体形式实现,而不脱离其精神和本质特征。例如,特定实施例中所描述的算法可以被修改,而系统体系结构并不脱离本发明的基本精神。因此,当前的实施例在所有方面都被看作是示例性的而非限定性的,本发明的范围由所附权利要求而非上述描述定义,并且,落入权利要求的含义和等同物的范围内的全部改变从而都被包括在本发明的范围之中。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1