数据处理方法、装置、终端及介质与流程

文档序号:19385418发布日期:2019-12-11 00:54阅读:178来源:国知局
数据处理方法、装置、终端及介质与流程
本申请涉及互联网
技术领域
,具体涉及投屏
技术领域
,尤其涉及一种数据处理方法、一种数据处理装置、一种终端及一种介质。
背景技术
:电脑和智能手机等终端的存储器包括内部存储器(内存)和外部存储器(磁盘),内存是磁盘数据和处理器数据交换的中转站,属于临时存储器,根据用户操作可以随时改写内存中的数据,存储容量较小,磁盘可以长期存储数据,存储容量较大。当处理器需要获取数据时,会从内存中获取该数据,内存中存储的数据可供处理器随时获取,但是内存的存储量是有限的,如果存放了一些处理器长期都不会使用的数据会导致内存占用量较大,因此可以将这部分处理器不常用的数据存放在磁盘中,在内存中存储常用的数据以方便随时读取,如何更好地利用终端的内存成为研究的热点问题。技术实现要素:本申请实施例提供了一种数据处理方法、装置、终端及介质,可更好地利用智能终端的内存,提升终端性能。第一方面,本申请实施例提供了一种数据处理方法,所述方法包括:在检测到文件访问请求时,根据所述文件访问请求中携带的文件标识,查找与所述文件标识对应的内存页标识;若没有查找到对应的内存页标识,根据所述文件标识查找与所述文件标识对应的磁盘页标识,并从所述磁盘页标识对应的磁盘页中读取目标数据,将所述目标数据存入内存中的目标内存页;当所述目标数据为文件元数据时,将所述文件标识和所述目标内存页的目标内存页标识关联记录到元数据页缓存链表中;当所述目标数据为文件数据内容时,将所述文件标识和所述目标内存页的目标内存页标识关联记录到数据内容页缓存链表中。第二方面,本申请实施例提供了一种数据处理装置,包括:查找单元,用于在检测到文件访问请求时,根据所述文件访问请求中携带的文件标识,查找与所述文件标识对应的内存页标识;存储单元,用于若没有查找到对应的内存页标识,根据所述文件标识查找与所述文件标识对应的磁盘页标识,并从所述磁盘页标识对应的磁盘页中读取目标数据,将所述目标数据存入内存中的目标内存页;第一记录单元,用于当所述目标数据为文件元数据时,将所述文件标识和所述目标内存页的目标内存页标识关联记录到元数据页缓存链表中;第二记录单元,用于当所述目标数据为文件数据内容时,将所述文件标识和所述目标内存页的目标内存页标识关联记录到数据内容页缓存链表中。第三方面,本申请实施例提供了一种终端,所述终端包括输入设备和输出设备,所述终端还包括:处理器,适于实现一条或多条指令;以及,计算机存储介质,所述计算机存储介质存储有一条或多条指令,所述一条或多条指令适于由所述处理器加载并执行如下步骤:在检测到文件访问请求时,根据所述文件访问请求中携带的文件标识,查找与所述文件标识对应的内存页标识;若没有查找到对应的内存页标识,根据所述文件标识查找与所述文件标识对应的磁盘页标识,并从所述磁盘页标识对应的磁盘页中读取目标数据,将所述目标数据存入内存中的目标内存页;当所述目标数据为文件元数据时,将所述文件标识和所述目标内存页的目标内存页标识关联记录到元数据页缓存链表中;当所述目标数据为文件数据内容时,将所述文件标识和所述目标内存页的目标内存页标识关联记录到数据内容页缓存链表中。第四方面,本申请实施例提供了一种计算机存储介质,所述计算机存储介质存储有一条或多条指令,所述一条或多条指令适于由处理器加载并执行如下步骤:在检测到文件访问请求时,根据所述文件访问请求中携带的文件标识,查找与所述文件标识对应的内存页标识;若没有查找到对应的内存页标识,根据所述文件标识查找与所述文件标识对应的磁盘页标识,并从所述磁盘页标识对应的磁盘页中读取目标数据,将所述目标数据存入内存中的目标内存页;当所述目标数据为文件元数据时,将所述文件标识和所述目标内存页的目标内存页标识关联记录到元数据页缓存链表中;当所述目标数据为文件数据内容时,将所述文件标识和所述目标内存页的目标内存页标识关联记录到数据内容页缓存链表中。本申请实施例提供的数据处理方法在检测到文件访问请求时,会先根据文件访问请求中携带的文件标识,查找与文件标识对应的内存页标识,若没有查找到对应的内存页标识,再根据文件标识查找与文件标识对应的磁盘页标识,并从磁盘页标识对应的磁盘页中读取目标数据,将读取到的目标数据存入内存中的目标内存页。当目标数据为文件元数据时,将文件标识和目标内存页的目标内存页标识关联记录到元数据页缓存链表中,当目标数据为文件数据内容时,将文件标识和目标内存页的目标内存页标识关联记录到数据内容页缓存链表中,以便于根据目标内存页标识从内存中读取到目标数据。由此可见,根据文件数据的类型将文件数据分为了元数据页缓存链表和数据内容页缓存链表,从而在从磁盘中读取到目标数据之后,可以根据目标数据的类型确定将目标数据存储到元数据内存页还是数据内容内存页,并进一步确定将目标内存页标识和文件标识记录到元数据缓存链表中还是数据内容缓存链表中。通过将不同类型的文件数据分开缓存,可以提高文件缓存命中率,从而提高大容量磁盘文件系统的输入输出性能。附图说明为了更清楚地说明本申请实施例技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1是本申请实施例提供的一种文件访问请求读取文件数据的交互流程示意图;图2是本申请实施例提供的一种数据处理方法的流程示意图;图3是本申请实施例提供的一种页缓存链表的参考示意图;图4是本申请实施例提供的另一种数据处理方法的流程示意图;图5是本申请实施例提供的一种数据共享系统的结构示意图;图6是本申请实施例提供的一种区块结构的参考示意图;图7是本申请实施例提供的一种产生新区块的流程示意图;图8是本申请实施例提供的一种数据处理装置的结构示意图;图9是本申请实施例提供的一种终端的结构示意图。具体实施方式文件系统是操作系统用于明确存储设备或分区上的文件的方法和数据结构,可以理解为是在存储设备上组织文件的方法。操作系统中负责管理和存储文件信息的软件机构称为文件管理系统,简称文件系统。所谓文件系统是对文件存储设备的空间进行组织和分配,负责文件存储并对存入的文件进行保护和检索的系统。如图1所示,为本申请实施例提供的一种文件访问请求读取文件数据的交互流程示意图,本申请实施例提供的数据处理方法可用于基于大容量机械磁盘的(本地或分布式)文件系统。文件系统中包括文件访问逻辑的程序指令和针对缓存中间件的程序指令,文件访问逻辑是指从用户观点出发看到的文件的组织形式,是用户可以直接处理的数据及其结构,也可以理解为在文件的内部,逻辑上数据是如何被组织起来的,文件访问逻辑的程序指令由终端的处理器来执行。缓存中间件的程序指令用于对缓存中间件进行管理,所述缓存中间件可以是指随机存取存储器ram等形式的内存。基于文件访问逻辑的程序指令,处理器可以对内存进行管理,以实现本申请实施例的相应功能。当文件访问请求(读请求或者写请求)到达处理器后,请求文件系统的页缓存链表,根据文件访问请求中的文件标识在页缓存链表中查找到对应文件的内存页标识,如果查找到了可以直接根据内存页标识从对应内存页中读取目标数据,如果没有查找到则需要根据文件标识,从磁盘中的对应磁盘页中读取目标数据并将目标数据存入到内存,包括读盘和写盘的过程,在将目标数据存入到内存后,即可在内存中读取到目标数据。如果文件标识对应的内存页标识指示的内存页为元数据内存页,可以通过缓存中间件程序请求对应文件的元数据内存页,根据元数据内存页中的元数据内容得到数据内容页的地址,进而通过缓存中间件程序请求对应的数据内容页。本申请实施例可应用于终端,具体由终端的处理器来执行。此处的终端可以包括但不限于:智能手机、平板电脑、膝上计算机以及台式电脑等等。终端的处理器可以从内存和本地缓存中读取指令(例如文件访问请求),放入指令寄存器,并能够发出控制指令来完成一条指令的执行,但是处理器并不能直接从磁盘中读取程序或数据,因此,内存作为与处理器直接进行沟通的部件,所有程序都是在内存中运行的,起到暂时存放处理器运算数据以及与磁盘交换的数据,相当于处理器和磁盘之间沟通的桥梁。可见,所有的文件操作都需要在内存中运行的,并且终端在运行时,处理器就会把磁盘中的部分数据写入到内存中,但是内存的大小是固定的,因此不能把所有的文件数据都缓存到内存中,在文件访问时只有被存入到内存中的这部分文件数据可以被直接访问到。操作系统以内存页为单位管理文件数据,内存页的大小对系统性能有一定的影响,内存页设置得太小,内存页会很多,管理内存页的数组会比较大,耗内存,内存页设置得太大,因为一个进程拥有的内存是内存页大小的整数倍,会导致碎片,及申请了很多内存,真正要用到的内存只有一点。在操作系统中运行程序时,必须将磁盘中的数据加载到内存中,在内存中有一部分数据存的是磁盘的缓存数据,这样做可以加速磁盘的访问速度。内存中存储数据的数据结构为链表,链表中的数据并不是连续存储的,所以无法像数组那样,通过寻址公式可以直接计算出对应的地址,而是需要根据指针一个结点一个结点的一次遍历,直到找到相应的内存页标识,因此时间复杂度较高。当有一个新的数据被访问时,会依次遍历遍历链表中的各个结点,查找文件标识对应的内存页标识,为了提高遍历的效率,一般情况下,会将最近访问过的数据和经常访问的数据存放在链表头部,以方便下次访问时,可以快速遍历查找到这部分数据。页缓存链表用来记录内存中的多个内存页中存储的文件数据,以链表的形式来记录数据,相比数组需要一块连续的内存空间来存储,链表不需要一块连续的内存空间,它通过指针将一组零散的内存页串联起来使用,每个内存页可以成为链表的结点,为了将所述结点串起来,页缓存链表的每个内存页除了储存数据以外,还需要记录下每个内存页的地址,即内存页标识,文件数据按照数据类型,可以分为文件元数据和文件数据内容,元数据指用来描述一个文件的特征的系统数据,例如访问权限、文件拥有者以及文件数据块的分布信息等等,数据内容实质普通文件中的实际数据,即文件的实际内容。在集群文件系统中,分布信息包括文件在磁盘上的位置以及磁盘在集群中的位置,用户操作一个文件必须首先得到文件的元数据,才能定位到文件的位置并且得到文件的内容或者相关属性信息,因此,可以将内存中存储的元数据记录到元数据页缓存链表中,数据内容记录到数据内容页缓存链表中,讲不通类型的文件数据分开缓存,独立进行内存页置换更新,能够提高大容量磁盘文件系统的文件缓存命中率,提高文件系统的输入输出性能。基于此,本申请实施例提出一种数据处理方案,在该方案中,在检测到文件访问请求时,文件访问请求包括写请求和读请求,文件访问请求中携带有文件标识,通过文件访问逻辑程序查找页缓存链表中是否有和文件标识对应的内存标识页,如果没有查找到和文件标识对应的内存页标识,则根据文件标识查找对应的磁盘页标识,根据查找到的磁盘页标识,从对应的磁盘空间中读取目标数据,并将读取到的目标数据存入到目标内存页,将目标内存页标识和文件标识的对应关系记录到页缓存链表中,从而可以在内存中读取到文件访问请求所需要读取的数据。其中,在检测到目标数据为文件元数据时,需要将文件标识和目标内存页标识关联记录到元数据页缓存链表中,在检测到目标数据为文件内容数据时,则需要将文件标识和目标内存页标识关联记录到数据内容页缓存链表中。可见,在文件访问请求索要读取的文件数据不在内存中时,需要从磁盘中调入到内存空间,但是当内存中无空闲空间,或者内存空间的占用较多时,为了保证文件系统的正常运行,处理器必须从内存中选取至少一个内存页作为待置换内存页以释放部分内存空间,如何选取待置换内存页将直接影响到文件系统的性能。一般情况下会选择长时间没有被访问的内存页作为待置换内存页,从而降低页面更换频率,但是没有考虑到待置内存换页中存储的数据为文件元数据还是文件普通数据,若将存储有文件元数据的内存页置换掉,相较于置换掉存储有文件普通数据的内存页,会对文件系统性能造成更大的影响,本申请实施例中以一定的比例关系选取文件元数据内存页和文件数据内容内存页作为待置内存换页,从而实现提高文件缓存命中率。本申请实施例所提供的数据处理方法,在检测到文件访问请求时,会先根据文件访问请求中携带的文件标识,查找与文件标识对应的内存页标识,若没有查找到对应的内存页标识,再根据文件标识查找与文件标识对应的磁盘页标识,并从磁盘页标识对应的磁盘页中读取目标数据,将读取到的目标数据存入内存中的目标内存页。当目标数据为文件元数据时,将文件标识和目标内存页的目标内存页标识关联记录到元数据页缓存链表中,当目标数据为文件数据内容时,将文件标识和目标内存页的目标内存页标识关联记录到数据内容页缓存链表中,以便于根据目标内存页标识从内存中读取到目标数据。由此可见,根据文件数据的类型将文件数据分为了元数据页缓存链表和数据内容页缓存链表,从而在从磁盘中读取到目标数据之后,可以根据目标数据的类型确定将目标数据存储到元数据内存页还是数据内容内存页,并进一步确定将目标内存页标识和文件标识记录到元数据缓存链表中还是数据内容缓存链表中。通过将不同类型的文件数据分开缓存,可以提高文件缓存命中率,从而提高大容量磁盘文件系统的输入输出性能。基于上述的描述,本申请实施例提出一种数据处理方法,该数据处理方法可以由终端的处理器执行,所述的终端可以是指个人电脑、智能手机、平板电脑、智能可穿戴设备等。请参见图2,该数据处理方法可包括以下步骤s201-s204:s201,在检测到文件访问请求时,根据所述文件访问请求中携带的文件标识,查找与所述文件标识对应的内存页标识。处理器建立有预设级数的记录有若干内存页的页缓存链表,根据文件数据类型的不同,页缓存链表包括元数据页缓存链表和数据内容页缓存链表,元数据页缓存链表中记录有若干元数据内存页,以及该若干元数据内存页对应的元数据内存页标识和文件标识,数据内容页缓存链表中记录有若干数据内容内存页,以及该若干数据内容内存页对应的数据内容内存页标识和文件标识。任何文件系统中的数据分为数据和元数据,数据是指普通文件中的实际数据,即文件实际内容,而元数据是指用来描述一个文件的特征的系统数据,例如访问权限、文件拥有者以及文件数据块的分布信息等等。用户需要操作一个文件必须首先得到它的元数据,才能定位到文件的位置并且得到文件的内容或相关属性。元数据内存页用于存储文件的元数据,数据内容内存页用于存储文件的普通数据。页缓存链表中记录有文件标识和内存页标识的对应关系,如图3所示,页缓存链表中元数据页缓存链表中记录有多个文件标识和元数据内存页标识的对应关系,数据内容页缓存链表中记录有多个文件标识和数据内容内存页标识的对应关系,通过内存页标识可以确定指定的内存页,从而获取内存页中的文件数据。在检测到携带有文件标识的文件访问请求时,通过文件标识可以查找到页缓存链表中是否有对应的内存页标识,如果有则表明内存中缓存有文件访问请求所需要访问的数据,可以根据对应的内存页标识直接从目标内存页中读取到要访问的目标数据,如果没有则表明内存中没有缓存文件访问请求所需要访问的数据,因此需要从磁盘中读取目标数据并缓存到内存中,此时可以根据文件标识查找到对应的磁盘页,并从磁盘页中读取目标数据存入内存中,从而可以从内存中访问到目标数据。s202,若没有查找到对应的内存页标识,根据所述文件标识查找与所述文件标识对应的磁盘页标识,并从所述磁盘页标识对应的磁盘页中读取目标数据,将所述目标数据存入内存中的目标内存页。通过文件访问逻辑程序可以查找到文件标识和内存页标识的对应关系,以及文件标识和磁盘页标识的对应关系,当没有查找到文件访问请求携带的文件标识对应的内存页标识时,表明文件访问请求所要读取的文件数据还未存入到内存中,但是要请求这些文件数据,必须先从磁盘中获取这些文件数据并存入到内存中。此时需要查找文件标识对应的磁盘页标识,根据磁盘页标识从磁盘中获取到目标数据,目标数据即为文件访问请求所需要读取的数据,将目标数据存入到内存中后即可从内存中读取到目标数据。由于文件数据包括文件元数据和文件数据内容,当目标数据为文件元数据时,需要将目标数据存入到元数据内存页,当目标数据为文件数据时,则需要将目标数据存入到数据内容内存页。本次的文件访问请求访问的是目标数据,目标数据作为最近被访问的数据,一般情况下来说,将来被访问的频率也较高,因此在内存中缓存目标数据时,可以将目标数据作为新数据插入到页缓存链表的头部,如果页缓存链表被装满了或者即将被装满,可以将链表尾部的数据丢弃。因此,目标内存页可以是页缓存链表中的头部指示的内存页。在具体实施过程中,若查找到对应的内存页标识,将查找到的关于文件标识和内存页标识对应的表项移动到对应页缓存链表的头部,并更新该内存页的内存页标识。页缓存链表是一个有序的单链表,越靠近链表尾部的节点是越早之前访问的,当一个新的数据被访问时,会从链表头部开始顺序遍历链表。因此,当文件访问请求要访问的目标数据已经缓存在页缓存链表中了,遍历页缓存链表的每个结点,每个结点对应一个内存页标识,如果遍历到目标内存页标识即可获取到目标数据,并将内存页标识从原来的位置删除,插入到链表头部,当需要再次访问目标数据时,由于目标数据所在内存页的内存页标识位于链表头部,因此可以迅速查找到该内存页标识,从而读取到目标数据。s203,当所述目标数据为文件元数据时,将所述文件标识和所述目标内存页的目标内存页标识关联记录到元数据页缓存链表中。s204,当所述目标数据为文件数据内容时,将所述文件标识和所述目标内存页的目标内存页标识关联记录到数据内容页缓存链表中。在具体实施过程中,所述文件标识和所述目标内存页的目标内存页标识,是被关联记录到元数据页缓存链表的表头部分;所述文件标识和所述目标内存页的目标内存页标识,是被关联记录到数据内容页缓存链表的表头部分。当文件数据在最近一段时间内经常被访问时,那么极有可能它在以后也会被经常访问,这就意味着,针对经常被访问的文件数据,用户希望其能够被快速命中,而针对不经常被访问的数据,在内存容量超出限制时,需要将其清理掉。因此,每次访问的数据都应该存放在页缓存链表的表头,以方便后续再次访问这部分数据,当目标数据为文件元数据时,将文件标识和目标内存页标识的对应关系记录到元数据页缓存链表的表头部分,当目标数据为文件数据内容时,将文件标识和目标内存页标识的对应关系记录到数据内容页缓存链表的表头部分。本申请实施例所提供的数据处理方法,在检测到文件访问请求时,会先根据文件访问请求中携带的文件标识,查找与文件标识对应的内存页标识,若没有查找到对应的内存页标识,再根据文件标识查找与文件标识对应的磁盘页标识,并从磁盘页标识对应的磁盘页中读取目标数据,将读取到的目标数据存入内存中的目标内存页。当目标数据为文件元数据时,将文件标识和目标内存页的目标内存页标识关联记录到元数据页缓存链表中,当目标数据为文件数据内容时,将文件标识和目标内存页的目标内存页标识关联记录到数据内容页缓存链表中,以便于根据目标内存页标识从内存中读取到目标数据。由此可见,根据文件数据的类型将文件数据分为了元数据页缓存链表和数据内容页缓存链表,从而在从磁盘中读取到目标数据之后,可以根据目标数据的类型确定将目标数据存储到元数据内存页还是数据内容内存页,并进一步确定将目标内存页标识和文件标识记录到元数据缓存链表中还是数据内容缓存链表中。通过将不同类型的文件数据分开缓存,可以提高文件缓存命中率,从而提高大容量磁盘文件系统的输入输出性能。请参考图4,是本申请实施例提供的另一种数据处理方法的流程示意图,该数据处理方法可以由终端的处理器执行,所述的终端可以是指个人电脑、智能手机、平板电脑、智能可穿戴设备等。请参见图4,该数据处理方法可包括以下步骤s401-s409:s401,建立预设级数的页缓存链表。s402,在检测到文件访问请求时,根据所述文件访问请求中携带的文件标识,查找与所述文件标识对应的内存页标识。s403,根据所述文件标识查找与所述文件标识对应的磁盘页标识,并从所述磁盘页标识对应的磁盘页中读取目标数据,将所述目标数据存入内存中的目标内存页。s404,检测内存的占用量是否满足内存释放条件。当内存的占用量过高时,需要释放一定的内存空间,以保证文件系统的稳定运行,内存释放条件例如可以是内存的占用量超过70%时,释放一部分内存的占用量,从而使内存的占用量低于70%。例如,内存的大小的4g,当将目标数据存储到内存中的目标内存页之后,如果检测到此时内存的占用量为3g,则内存的占用量超过的70%,满足内存释放条件,可见,至少需要释放至少0.2g的内存空间,才可使内存的占用量低于70%。在判断为否的情况下,执行下述的s409。s405,若是,根据页缓存链表清理策略获取待置换内存页集合。在内存的占用量满足内存释放条件时,根据页缓存链表清理策略,从页缓存链表中获取多个内存页作为待置换内存页,页缓存链表清理策略包括针对元数据内存页和数据内容内存的清理方法,待置换内存页集合中包括:被占用的用于存储元数据的元数据内存页和被占用的用于存储数据内容的数据内容内存页,被占用的元数据内存页和被占用的数据内容内存页之间满足预设的比例条件。例如,当内存的占用超过70%满足内存释放条件时,4g的内存已经被占用了3g,可见至少要清除的内存空间为0.2g,即要保证待置换内存页集合中的多个内存页占用的内存空间是大于0.2g的。待置换内存页中的内存页包括元数据内存页和数据内容内存页,被选取到作为待置换内存页中的元数据内存页和数据内容内存页之间满足预设的比例条件,例如,元数据内存页的比例范围为0%-10%,数据内容内存页的比例范围为90%-100%,可见,优先选取数据内容内存页作为待置换内存页。其中,由于页缓存链表包括文件元数据页缓存链表和文件数据内容页缓存链表,按照一定的比例条件对页缓存链表采用lru策略进行置换,该策略能更好的利用访问局部性原则,提高缓存命中率,通过,由于元数据页缓存链表和数据内容页缓存链表内部使用lru,减小了实现复杂度,有利于提高文件的缓存命中率。lru策略是大部分操作系统为最大化页面命中率而广泛采用的一种页面置换算法,在发生缺页中断时,即无法根据文件标识在页缓存链表中查找到对应的内存页标识,会选择未使用时间最长的内存页置换出去,依据是如果某个内存页最近被使用过,那么将来被访问和使用的几率也更高,在存入新数据时,将新数据存入的内存页的内存页标识插入到链表头部,并且每当有内存页中的缓存数据被访问时,也会将该内存页的内存页标识移动到链表头部,当内存占用量满足内存释放条件时,将其尾部内存页标识对应的内存页中的数据清除掉。在根据预设的比例条件,确定待置换元数据内存页数目和待置换数据内容内存页数目后,分别对元数据页缓存链表和数据内容页缓存链表实施lru策略来选取待置换元数据内存页和待置换数据内容内存页,当文件系统是元数据与数据同时读取的应用场景时,根据本申请实施例提供的按比例置换的lru策略,可以提高文件缓存命中率,从而提高大容量磁盘文件系统的输入输出性能。相应的,步骤s206可包括以下步骤s11-s12:s11,根据页缓存链表清理策略从所述元数据页缓存链表的尾部获取第一数目的内存页作为所述待置换内存页;s12,根据页缓存链表清理策略从所述数据内容页缓存链表的尾部获取第二数目的内存页作为所述待置换内存页;其中,所述第一数目和所述第二数目的比例为预设比例。根据页缓存链表清理策略,从元数据页缓存链表的尾部获取第一数目的内存页作为待置换内存页,以及从数据内容页缓存链表的尾部获取第二数目的内存页作为待置换内存页,由于链表尾部的数据为长期没有被访问的数据,因此后续被访问的概率也不高,选取链表尾部的内存页作为置换内存页,清理掉这部分内存页中的数据后,对文件系统的读取性能影响不大。第一数目和第二数目为预设比例,例如,第一数目和第二数目的比例为1/32,当要选取33个内存页作为待置换内存页时,则可以根据lru策略从元数据页缓存链表中选取1个内存页,从数据内容页缓存链表中选取32个内存页,得到待置换内存页集合。s406,依次检测各个目标待置换内存页是否为脏状态,在所述脏状态下的目标待置换内存页中的数据和对应磁盘页中的数据不一致。s407,若是,将所述脏状态的目标待置换内存页中存储的缓存数据写入到对应磁盘页中,并释放该脏状态的目标待置换内存页。当内存页中的数据和对应磁盘页中的数据不一致时,该内存页为脏页,即该内存页处于脏状态,当内存页中的数据已经写入了磁盘,此时内存页中的数据和对应磁盘页中的数据一致了,该内存页即为干净页,即该内存页处于干净状态。依次检测待置换内存页集合中的各个目标待置换内存页是否为脏状态,如果是从话,则需要将脏状态的目标待置内存换页中存储的缓存数据写入到对应的磁盘页中,再释放掉脏状态的目标待置内存换页,从而获取到更多的内存空间。磁盘中存储有所有的文件数据,内存中只存储了部分文件数据,为了避免文件数据丢失,可以对文件数据进行备份,本申请中的终端可以作为数据共享系统中的一个节点,可以将存储在终端磁盘中的数据分享数据共享系统中的其他节点。参见图5所示的数据共享系统,数据共享系统100是指用于进行节点与节点之间数据共享的系统,该数据共享系统中可以包括多个节点101,多个节点101可以是指数据共享系统中各个客户端。每个节点101在进行正常工作可以接收到输入信息,并基于接收到的输入信息维护该数据共享系统内的共享数据。为了保证数据共享系统内的信息互通,数据共享系统中的每个节点之间可以存在信息连接,节点之间可以通过上述信息连接进行信息传输。例如,当数据共享系统中的任意节点接收到输入信息时,数据共享系统中的其他节点便根据共识算法获取该输入信息,将该输入信息作为共享数据中的数据进行存储,使得数据共享系统中全部节点上存储的数据均一致。对于数据共享系统中的每个节点,均具有与其对应的节点标识,而且数据共享系统中的每个节点均可以存储有数据共享系统中其他节点的节点标识,以便后续根据其他节点的节点标识,将生成的区块广播至数据共享系统中的其他节点。每个节点中可维护一个如下表所示的节点标识列表,将节点名称和节点标识对应存储至该节点标识列表中。其中,节点标识可为ip(internetprotocol,网络之间互联的协议)地址以及其他任一种能够用于标识该节点的信息,表1中仅以ip地址为例进行说明。节点名称节点标识节点1117.114.151.174节点2117.116.189.145……节点n119.123.789.258数据共享系统中的每个节点均存储一条相同的区块链。区块链由多个区块组成,参见图6,区块链由多个区块组成,创始块中包括区块头和区块主体,区块头中存储有输入信息特征值、版本号、时间戳和难度值,区块主体中存储有输入信息;创始块的下一区块以创始块为父区块,下一区块中同样包括区块头和区块主体,区块头中存储有当前区块的输入信息特征值、父区块的区块头特征值、版本号、时间戳和难度值,并以此类推,使得区块链中每个区块中存储的区块数据均与父区块中存储的区块数据存在关联,保证了区块中输入信息的安全性。在生成区块链中的各个区块时,参见图7,区块链所在的节点在接收到输入信息时,对输入信息进行校验,完成校验后,将输入信息存储至内存池中,并更新其用于记录输入信息的哈希树;之后,将更新时间戳更新为接收到输入信息的时间,并尝试不同的随机数,多次进行特征值计算,使得计算得到的特征值可以满足下述公式:sha256(sha256(version+prev_hash+merkle_root+ntime+nbits+x))<target其中,sha256为计算特征值所用的特征值算法;version(版本号)为区块链中相关区块协议的版本信息;prev_hash为当前区块的父区块的区块头特征值;merkle_root为输入信息的特征值;ntime为更新时间戳的更新时间;nbits为当前难度,在一段时间内为定值,并在超出固定时间段后再次进行确定;x为随机数;target为特征值阈值,该特征值阈值可以根据nbits确定得到。这样,当计算得到满足上述公式的随机数时,便可将信息对应存储,生成区块头和区块主体,得到当前区块。随后,区块链所在节点根据数据共享系统中其他节点的节点标识,将新生成的区块分别发送给其所在的数据共享系统中的其他节点,由其他节点对新生成的区块进行校验,并在完成校验后将新生成的区块添加至其存储的区块链中。s408,若否,释放所述干净状态的目标待置换内存页。目标待置内存换页可以是待置换内存页集合中的所有待置换内存页,也可以是部分待置换内存页,只需要保证释放了目标待置换内存页中的数据之后,内存空间的占用量不满足内存释放条件即可。依次检测各个目标待置换内存页是否为干净状态,如果是的话,由于干净页中存储的数据已经存入到磁盘中,因此可以直接释放掉干净状态的目标待置换内存页,可见,为了减少内存的写,减少将内存中的数据写入到磁盘中的过程,可以尽可能的替换掉干净页,从而提高置换内存页的在步骤处理效率。如图4所示,在步骤s406中,通过判断目标待置换内存页是否为脏状态,可以确定是直接清除掉目标待置换内存页中的缓存数据,还是先将目标待置换内存页中的缓存数据存入磁盘后再清楚。s409,将目标内存页标识和文件标识记录到预缓存链表的表头部分。上述的s401-s403以及s409的具体实现可参考前述各个实施例中相关内容的描述。本申请实施例所提供的数据处理方法,在检测到文件访问请求时,会先根据文件访问请求中携带的文件标识,查找与文件标识对应的内存页标识,若没有查找到对应的内存页标识,再根据文件标识查找与文件标识对应的磁盘页标识,并从磁盘页标识对应的磁盘页中读取目标数据,将读取到的目标数据存入内存中的目标内存页。当目标数据为文件元数据时,将文件标识和目标内存页的目标内存页标识关联记录到元数据页缓存链表中,当目标数据为文件数据内容时,将文件标识和目标内存页的目标内存页标识关联记录到数据内容页缓存链表中,以便于根据目标内存页标识从内存中读取到目标数据。由此可见,根据文件数据的类型将文件数据分为了元数据页缓存链表和数据内容页缓存链表,从而在从磁盘中读取到目标数据之后,可以根据目标数据的类型确定将目标数据存储到元数据内存页还是数据内容内存页,并进一步确定将目标内存页标识和文件标识记录到元数据缓存链表中还是数据内容缓存链表中。通过将不同类型的文件数据分开缓存,可以提高文件缓存命中率,从而提高大容量磁盘文件系统的输入输出性能。基于上述数据处理方法实施例的描述,本申请实施例还公开了一种数据处理装置,所述数据处理装置可以是运行于终端中的一个计算机程序(包括程序代码)。该数据处理装置可以执行图2或图4所示的方法。请参见图8,所述数据处理装置可以运行如下单元:查找单元801,用于在检测到文件访问请求时,根据所述文件访问请求中携带的文件标识,查找与所述文件标识对应的内存页标识;存储单元802,用于若没有查找到对应的内存页标识,根据所述文件标识查找与所述文件标识对应的磁盘页标识,并从所述磁盘页标识对应的磁盘页中读取目标数据,将所述目标数据存入内存中的目标内存页;第一记录单元803,用于当所述目标数据为文件元数据时,将所述文件标识和所述目标内存页的目标内存页标识关联记录到元数据页缓存链表中;第二记录单元804,用于当所述目标数据为文件数据内容时,将所述文件标识和所述目标内存页的目标内存页标识关联记录到数据内容页缓存链表中。在一种实施方式中,存储单元802在将所述目标数据存入内存中的目标内存页之后,具体用于:检测内存的占用量是否满足内存释放条件;若是,根据页缓存链表清理策略获取待置换内存页集合;释放所述待置换内存页集合中的目标待置换内存页的内存空间,以使所述内存的占用量不满足所述内存释放条件;所述待置换内存页集合中包括:被占用的用于存储元数据的元数据内存页和被占用的用于存储数据内容的数据内容内存页,被占用的元数据内存页和被占用的数据内容内存页之间满足预设的比例条件。再一种实施方式中,所述文件标识和所述目标内存页的目标内存页标识,是被关联记录到元数据页缓存链表的表头部分;所述文件标识和所述目标内存页的目标内存页标识,是被关联记录到数据内容页缓存链表的表头部分。再一种实施方式中,存储单元802在所述根据页缓存链表清理策略获取待置换内存页集合时,具体用于:根据页缓存链表清理策略从所述元数据页缓存链表的尾部获取第一数目的内存页作为所述待置换内存页;根据页缓存链表清理策略从所述数据内容页缓存链表的尾部获取第二数目的内存页作为所述待置换内存页;其中,所述第一数目和所述第二数目的比例为预设比例。再一种实施方式中,存储单元802在所述释放所述待置换内存页集合中的目标待置换内存页的内存空间时,具体用于:依次检测各个目标待置换内存页是否为脏状态,在所述脏状态下的目标待置换内存页中的数据和对应磁盘页中的数据不一致;若是,将所述脏状态的目标待置换内存页中存储的缓存数据写入到对应磁盘页中,并释放该脏状态的目标待置换内存页。再一种实施方式中,存储单元802在所述释放所述待置换内存页集合中的目标待置换内存页的内存空间时,具体用于:依次检测各个目标待置换内存页是否为干净状态,在所述干净状态下的目标待置换内存页中的数据和对应磁盘页中的数据一致;若是,释放所述干净状态的目标待置换内存页。再一种实施方式中,查找单元801,具体用于:若查找到对应的内存页标识,将查找到的关于文件标识和内存页标识对应的表项移动到对应页缓存链表的头部,并更新该内存页的内存页标识。根据本申请的一个实施例,图2或图4所示的方法所涉及的各个步骤均可以是由图8所示的数据处理装置中的各个单元来执行的。例如,图2中所示的步骤s201可以由图8中所示的查找单元801来执行,步骤s202可以由图8中所示的存储单元802来执行,步骤s203可以由图8中所示的第一记录单元803来执行,步骤s204可以由图8中所示的第二记录单元804来执行;又如,图4中所示的步骤s401和s402可以由图8中所示的查找单元801来执行,步骤s403-s408可以由图8中所示的存储单元802来执行,步骤s409可以由图8中所示的第一记录单元803和第二记录单元804来执行。根据本申请的另一个实施例,图8所示的数据处理装置中的各个单元可以分别或全部合并为一个或若干个另外的单元来构成,或者其中的某个(些)单元还可以再拆分为功能上更小的多个单元来构成,这可以实现同样的操作,而不影响本申请的实施例的技术效果的实现。上述单元是基于逻辑功能划分的,在实际应用中,一个单元的功能也可以由多个单元来实现,或者多个单元的功能由一个单元实现。在本申请的其它实施例中,基于数据处理装置也可以包括其它单元,在实际应用中,这些功能也可以由其它单元协助实现,并且可以由多个单元协作实现。根据本申请的另一个实施例,可以通过在包括中央处理单元(cpu)、随机存取存储介质(ram)、只读存储介质(rom)等处理元件和存储元件的例如计算机的通用计算设备上运行能够执行如图2或图4中所示的相应方法所涉及的各步骤的计算机程序(包括程序代码),来构造如图8中所示的数据处理装置设备,以及来实现本申请实施例的数据处理方法。所述计算机程序可以记载于例如计算机可读记录介质上,并通过计算机可读记录介质装载于上述计算设备中,并在其中运行。本申请实施例所提供的数据处理方法,在检测到文件访问请求时,会先根据文件访问请求中携带的文件标识,查找与文件标识对应的内存页标识,若没有查找到对应的内存页标识,再根据文件标识查找与文件标识对应的磁盘页标识,并从磁盘页标识对应的磁盘页中读取目标数据,将读取到的目标数据存入内存中的目标内存页。当目标数据为文件元数据时,将文件标识和目标内存页的目标内存页标识关联记录到元数据页缓存链表中,当目标数据为文件数据内容时,将文件标识和目标内存页的目标内存页标识关联记录到数据内容页缓存链表中,以便于根据目标内存页标识从内存中读取到目标数据。由此可见,根据文件数据的类型将文件数据分为了元数据页缓存链表和数据内容页缓存链表,从而在从磁盘中读取到目标数据之后,可以根据目标数据的类型确定将目标数据存储到元数据内存页还是数据内容内存页,并进一步确定将目标内存页标识和文件标识记录到元数据缓存链表中还是数据内容缓存链表中。通过将不同类型的文件数据分开缓存,可以提高文件缓存命中率,从而提高大容量磁盘文件系统的输入输出性能。基于上述方法实施例以及装置实施例的描述,本申请实施例还提供一种终端。请参见图9,该终端至少包括处理器901、输入设备902、输出设备903以及计算机存储介质904。其中,终端内的处理器901、输入设备902、输出设备903以及计算机存储介质904可通过总线或其他方式连接。计算机存储介质904可以存储在终端的存储器中,所述计算机存储介质904用于存储计算机程序,所述计算机程序包括程序指令,所述处理器901用于执行所述计算机存储介质904存储的程序指令。处理器901(或称cpu(centralprocessingunit,中央处理器))是终端的计算核心以及控制核心,其适于实现一条或多条指令,具体适于加载并执行一条或多条指令从而实现相应方法流程或相应功能;在一个实施例中,本申请实施例所述的处理器901可以用于进行一系列的数据处理,包括:在检测到文件访问请求时,根据所述文件访问请求中携带的文件标识,查找与所述文件标识对应的内存页标识;若没有查找到对应的内存页标识,根据所述文件标识查找与所述文件标识对应的磁盘页标识,并从所述磁盘页标识对应的磁盘页中读取目标数据,将所述目标数据存入内存中的目标内存页;当所述目标数据为文件元数据时,将所述文件标识和所述目标内存页的目标内存页标识关联记录到元数据页缓存链表中;当所述目标数据为文件数据内容时,将所述文件标识和所述目标内存页的目标内存页标识关联记录到数据内容页缓存链表中,等等。本申请实施例还提供了一种计算机存储介质(memory),所述计算机存储介质是终端中的记忆设备,用于存放程序和数据。可以理解的是,此处的计算机存储介质既可以包括终端中的内置存储介质,当然也可以包括终端所支持的扩展存储介质。计算机存储介质提供存储空间,该存储空间存储了终端的操作系统。并且,在该存储空间中还存放了适于被处理器901加载并执行的一条或多条的指令,这些指令可以是一个或一个以上的计算机程序(包括程序代码)。需要说明的是,此处的计算机存储介质可以是高速ram存储器,也可以是非不稳定的存储器(non-volatilememory),例如至少一个磁盘存储器;可选的还可以是至少一个位于远离前述处理器的计算机存储介质。在一个实施例中,可由处理器901加载并执行计算机存储介质中存放的一条或多条指令,以实现上述有关数据处理实施例中的方法的相应步骤;具体实现中,计算机存储介质中的一条或多条指令由处理器901加载并执行如下步骤:在检测到文件访问请求时,根据所述文件访问请求中携带的文件标识,查找与所述文件标识对应的内存页标识;若没有查找到对应的内存页标识,根据所述文件标识查找与所述文件标识对应的磁盘页标识,并从所述磁盘页标识对应的磁盘页中读取目标数据,将所述目标数据存入内存中的目标内存页;当所述目标数据为文件元数据时,将所述文件标识和所述目标内存页的目标内存页标识关联记录到元数据页缓存链表中;当所述目标数据为文件数据内容时,将所述文件标识和所述目标内存页的目标内存页标识关联记录到数据内容页缓存链表中。再一种实施方式中,在将所述目标数据存入内存中的目标内存页之后,所述一条或多条指令还可由处理器901加载并具体执行:检测内存的占用量是否满足内存释放条件;若是,根据页缓存链表清理策略获取待置换内存页集合;释放所述待置换内存页集合中的目标待置换内存页的内存空间,以使所述内存的占用量不满足所述内存释放条件;所述待置换内存页集合中包括:被占用的用于存储元数据的元数据内存页和被占用的用于存储数据内容的数据内容内存页,被占用的元数据内存页和被占用的数据内容内存页之间满足预设的比例条件。再一种实施方式中,所述文件标识和所述目标内存页的目标内存页标识,是被关联记录到元数据页缓存链表的表头部分;所述文件标识和所述目标内存页的目标内存页标识,是被关联记录到数据内容页缓存链表的表头部分。再一种实施方式中,在所述根据页缓存链表清理策略获取待置换内存页集合时,所述一条或多条指令还可由处理器901加载并具体执行:根据页缓存链表清理策略从所述元数据页缓存链表的尾部获取第一数目的内存页作为所述待置换内存页;根据页缓存链表清理策略从所述数据内容页缓存链表的尾部获取第二数目的内存页作为所述待置换内存页;其中,所述第一数目和所述第二数目的比例为预设比例。再一种实施方式中,在所述释放所述待置换内存页集合中的目标待置换内存页的内存空间时,所述一条或多条指令还可由处理器901加载并具体执行:依次检测各个目标待置换内存页是否为脏状态,在所述脏状态下的目标待置换内存页中的数据和对应磁盘页中的数据不一致;若是,将所述脏状态的目标待置换内存页中存储的缓存数据写入到对应磁盘页中,并释放该脏状态的目标待置换内存页。再一种实施方式中,在所述释放所述待置换内存页集合中的目标待置换内存页的内存空间时,所述一条或多条指令还可由处理器901加载并具体执行:依次检测各个目标待置换内存页是否为干净状态,在所述干净状态下的目标待置换内存页中的数据和对应磁盘页中的数据一致;若是,释放所述干净状态的目标待置换内存页。再一种实施方式中,所述一条或多条指令还可由处理器901加载并具体执行:若查找到对应的内存页标识,将查找到的关于文件标识和内存页标识对应的表项移动到对应页缓存链表的头部,并更新该内存页的内存页标识。本申请实施例提供的数据处理方法在检测到文件访问请求时,会先根据文件访问请求中携带的文件标识,查找与文件标识对应的内存页标识,若没有查找到对应的内存页标识,再根据文件标识查找与文件标识对应的磁盘页标识,并从磁盘页标识对应的磁盘页中读取目标数据,将读取到的目标数据存入内存中的目标内存页。当目标数据为文件元数据时,将文件标识和目标内存页的目标内存页标识关联记录到元数据页缓存链表中,当目标数据为文件数据内容时,将文件标识和目标内存页的目标内存页标识关联记录到数据内容页缓存链表中,以便于根据目标内存页标识从内存中读取到目标数据。由此可见,根据文件数据的类型将文件数据分为了元数据页缓存链表和数据内容页缓存链表,从而在从磁盘中读取到目标数据之后,可以根据目标数据的类型确定将目标数据存储到元数据内存页还是数据内容内存页,并进一步确定将目标内存页标识和文件标识记录到元数据缓存链表中还是数据内容缓存链表中。通过将不同类型的文件数据分开缓存,可以提高文件缓存命中率,从而提高大容量磁盘文件系统的输入输出性能。以上所揭露的仅为本申请较佳实施例而已,当然不能以此来限定本申请之权利范围,因此依本申请权利要求所作的等同变化,仍属本申请所涵盖的范围。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1