一种实现文件访问的高速缓存系统和方法

文档序号:6610692阅读:158来源:国知局

专利名称::一种实现文件访问的高速缓存系统和方法
技术领域
:本发明涉及磁盘文件的读取,尤其涉及的是,一种实现文件访问的高速緩存系统和方法。
背景技术
:为减少对i兹盘的访问,特别是对远程磁盘的访问,提高文件的检索效率,现有技术采用了高速緩存的方式,即将常用信息放到高速緩冲存储器。/磁盘高速緩存的价值在于两个方面第一,访问/磁盘的速度要远远低于访问内存的速度,因此,从内存访问数据比从磁盘访问速度更快。第二,数据一旦被访问,就很有可能在短期内再次被访问到。这种在短时期内集中访问同一片l丈据的原理-陂称作临时局部原理(tempomllocality)。临时局部原理能保证如果在第一次访问数据时,对其进行緩存,那就极有可能在短期内再次被高速緩存命中,即访问到高速緩存中的数据。因此,如何更有效地实现磁盘高速緩存,是在实际应用中需要改进的技术问题。
发明内容本发明所要解决的技术问题是提供一种具体的、高效的实现文件访问的高速緩存系统和方法。本发明的技术方案如下一种实现文件访问的高速緩存系统,其包括索引区单元、数据区单元和空闲指针链表单元;所述数据区单元包括连续的、固定大小的存储单元,用于根据预设置存储单元的大小和个数,占用连续的相应内存空间用作各存储单元,所述存储单元用于记录包括文件类型和文件名的文件信息;所述索引区单元设置索引管理区模块和至少一索引节点;为每一个目录设置一个索引节点,所述索引节点用于存储其对应目录的绝对路径,以及该绝对路径下的目录和文件的信息,并采用对象指针指向记录各文件信息的各存储单元;所述索引管理区模块用于管理所述索引节点;所述空闲指针链表单元用于维护一具有多个链表单元的空闲指针链表,各链表单元分别用于存放指向各存储单元的指针。所述的高速緩存系统,其中,所述空闲指针链表单元包括先进先出模块和锁机制模块,分别用于实现先进先出功能和锁机制,以维护所述空闲指'针链表。所述的高速緩存系统,其中,其还包括本地或远程^磁盘,所迷存储单元用于记录所述磁盘的文件信息,并为其建立对应的索引节点,更新所述索引管理区。一种实现文件访问的高速緩存方法,用于包括索引区、数据区和空闲指针链表的高速緩存系统,该方法包括以下步骤Al、在内存中预设置存储单元的大小和个数,初始化相应的内存空间作为具有至少一个所述存储单元的所述数据区,所述存储单元用于记录包括文件类型和文件名的文件信息;A2、初始化所述索引区中的索引管理区和至少一索引节点,为每一个目录设置一个索引节点,在所述索引节点存储其对应目录的绝对路径,以及该绝对路径下的目录和文件的信息,并采用对象指针指向记录了各文件信息的各存储单元;A3、在内存中预设置所述空闲指针链表,其中各链表单元分别存放指向各存储单元的指针;A4、收到文件访问请求,通过所述索引管理区,检索各索引节点;A5、判断是否检索得到所需文件,是则执行A6,否则执行A7;A6、根据得到的索引节点中的路径,读取本地或远程磁盘中的所需文件;A7、在本地或远程磁盘中搜索并读取所需文件。所述的高速援存方法,其中,步骤A2中,所述索引管理区采用MAP方式实现,采用索引节点的绝对目录路径作为关键字,采用对象指针作为关键字的值。所述的高速緩存方法,其中,步骤A3中,所述空闲指针链表为先进先出结构,并采用锁机制实现。所述的高速緩存方法,其中,步骤A5中,在索引管理区为空时,则判断没有^f企索得到所需文件。所述的高速緩存方法,其中,步骤A7之后,还执行以下步骤A71、通过所述空闲指针链表,获得一个空闲的存储单元,将所需文件的文件类型和文件名记录在该存储单元中,并为其建立对应的索引节点。所述的高速缓存方法,其中,步骤A71之后,还执行以下步骤A72、更新所述索引管理区,增加或修改存储该所需文件的目录和文件的信息的索引节点。所述的高速緩存方法,其中,步骤A71之后,还执行以下步骤A73、判断所需文件占用的存储单元使用完成,或所述空闲指针链表为空时选择未曾使用时间最长的存储单元;A74、释放存储单元的数据,使之成为空闲的存储单元,在所述空闲指针链表的一链表单元中存放指向该空闲的存储单元的指针。采用上述方案,本发明通过记录空闲的存储单元,以及对索引节点进行管理,应用灵活、方便,高效、迅速地实现了对本地或远程磁盘数据的高速緩存,提高了文件的检索效率。图l是本发明的一种实施方式的高速緩存示意图2是本发明的一种实施方式的空闲指针链表结构示意图3是本发明方法的流程图。具体实施例方式以下结合附图和具体实施例,对本发明进行详细说明。如图1所示,本发明提供了一种实现文件访问的高速緩存系统,其包括索引区单元、数据区单元和空闲指针链表单元;用于减少对磁盘的访问,特别是对远程磁盘的访问,提高文件信息的检索效率。该高速緩存系统具体说明如下。所述数据区单元包括连续的、固定大小的存储单元,用于根据预设置存储单元的大小和个数,占用连续的相应内存空间用作各存储单元,所述存储单元用于记录包括文件类型和文件名的文件信息;在本发明中,高速缓存采用固定存储单元设计,每个存储单元大小可配置,存储单元个数也可以配置,模块初始化时一次性申请足够的空间作为高速緩存的数据区。下面对内存数据区进行进一步说明,这个内存数据区是一个连续的、固定大小的数据储存内存空间,按照配置的数据单元大小和数据区总量进行创建,创建成功的同时将每个单元的指针存放在空闲指针链中。例如,数据区的存储格式如表l所示。<table>tableseeoriginaldocumentpage8</column></row><table>表1为减少对磁盘频繁操作,提高文件数据的检索效率,本发明设计了索引区,为文件检索功能专用。所述索引区单元设置索引管理区模块和至少一索引节点;所述索引管理区模块用于管理各个索引节点;为每一个目录设置一个索引节点,所述索引节点用于存储其对应目录的绝对路径,以及该绝对路径下的目录和文件的信息,并采用对象指针指向记录各文件信息的各存储单元。索引节点的数据结构定义如表2所示。<table>tableseeoriginaldocumentpage9</column></row><table>表3所述空闲指针链表单元用于维护一具有多个链表单元的空闲指针链表,各链表单元分别用于存放指向各存储单元的指针。本发明还需要建立一个链表,在链表中存放存储单元的首指针,称之为空闲指针链表。当外部系统向模块发出文件检索请求时,系统首先检索文件索引管理区,如果索引管理区为空或没有检索到对应的文件,然后从磁盘读取指定路径下的文件信息,然后从空闲链表中申请一个内存节点,然后将数据存储在该节点中;数据使用完毕,或空闲链表内存使用完毕,系统会通过相应的调度策略,找出内存数据区中最久没有访问的数据,要求数据进行释放,然后又将数据指针回收到空闲链表。具体地说,如图2所示,空闲指针链表可以是一个先进先出的链表结构,每个单元存放数据区中一个存储单元指针。其可以提供Alloc,用于取空闲的数据单元;Free方法,用完回归;以及GetAllocSize属性,用于定义操作接口。模块初始化时根据配置大小,得到链的大小,开辟一个统一大小的内存数据区,将内存数据区中所有的存储单元指针一一放入空闲指针链表中,当要求建立、更新文件索引区时,从空闲指针链表中申请空闲存储单元指针进行存储数据;当数据过期或开辟的内存数据区使用完毕,模块通过相关的调度策略,找出对应需要释放的文件节点,然后^^节点指针加到空闲队列尾,以达到内存释放的目的。如果在多线程环境对其操作,以上链表在使用时都必须使用一个锁机制进行保护,只有得到锁的线程才能操作链表。锁机制是指封锁正被一个事务修改的数据,防止其他用户访问到不一致的数据,完成以后要为被它封锁的对象解锁。一个实施例是,所述空闲指针链表单元包括先进先出;f莫块和锁机制模块,分别用于实现先进先出功能和锁机制,以维护所述空闲指针链表。另一个实施例是,所述的高速緩存系统还包括本地或远程磁盘,所述存储单元用于记录所述磁盘的文件信息,并为其建立对应的索引节点,更新所述索引管理区。并且,如图3所示,本发明还提供了一种实现文件访问的高速緩存方法,用于包括索引区、数据区和空闲指针链表的高速緩存系统,该方法具体包括以下步骤。Al、在内存中预设置存储单元的大小和个数,初始化相应的内存空间作为具有至少一个所述存储单元的所述数据区,所述存储单元用于记录包括文件类型和文件名的文件信息。文件信息还可以包括其它的内容,具体是实际需要而定;例如,在不考虑存储单元大小的情况下,文件信息还可以包括该文件的相关路径、摘要等等。A2、初始化所述索引区中的索引管理区和至少一索引节点,为每一个目录设置一个索引节点,在所述索引节点存储其对应目录的绝对路径,以及该绝对路径下的目录和文件的信息,并采用对象指针指向记录了各文件信息的各存储单元。所述索引管理区可以采用哈希(Hash)算法实现,更好的是,所述索引管理区采用MAP方式实现,采用索引节点的绝对目录路径作为关键字,采用对象指针作为关键字的值。A3、在内存中预设置所述空闲指针链表,其中各链表单元分别存放指向各存储单元的指针;更好的是,所述空闲指针链表为先进先出结构,并采用锁机制实现。A4、收到文件访问请求,通过所述索引管理区,检索各索引节点;然后,A5、判断是否检索得到所需文件,是则执行A6,否则执行A7;其中,当索引管理区为空时,则判断的结果也是认为没有检索得到所需文件。A6、根据得到的索引节点中的路径,读取本地或远程》兹盘中的所需文件;A7、在本地或远程i兹盘中搜索并读取所需文件。一个例子是,在步骤A7之后,还可以执行以下步骤A71、通过所述空闲指针链表,获得一个空闲存储单元,将所需文件的文件类型和文件名记录在该存储单元中,并为其建立对应的索引节点。又一个例子是,在步骤A71之后,还执行以下步骤A72、更新所述索引管理区,增加或修改存储该所需文件的目录和文件的信息的索引节点。或者,在步骤A71或步骤A72之后,还执行以下步骤A73、判断所需文件占用的存储单元使用完成,或所述空闲指针链表为空时选择未曾使用时间最长的存储单元;A74、释放存储单元的数据,使之成为空闲存储单元,在所述空闲指针链表的一链表单元中存放指向该空闲的存储单元的指针。需要说明的是,本发明方法在具体实现中,可以结合上述对高速緩存系统的说明,采用各种实施方式,在此不再重复赘述。应当理解的是,对本领域普通技术人员来说,可以根据上述说明加以改进或变换,而所有这些改进和变换都应属于本发明所附权利要求的保护范围。权利要求1、一种实现文件访问的高速缓存系统,其特征在于,包括索引区单元、数据区单元和空闲指针链表单元;所述数据区单元包括连续的、固定大小的存储单元,用于根据预设置存储单元的大小和个数,占用连续的相应内存空间用作各存储单元,所述存储单元用于记录包括文件类型和文件名的文件信息;所述索引区单元设置索引管理区模块和至少一索引节点;为每一个目录设置一个索引节点,所述索引节点用于存储其对应目录的绝对路径,以及该绝对路径下的目录和文件的信息,并采用对象指针指向记录各文件信息的各存储单元;所述索引管理区模块用于管理所述索引节点;所述空闲指针链表单元用于维护一具有多个链表单元的空闲指针链表,各链表单元分别用于存放指向各存储单元的指针。2、根据权利要求1所述的高速緩存系统,其特征在于,所述空闲指针链表单元包括先进先出模块和锁机制模块,分别用于实现先进先出功能和锁机制,以维护所述空闲指针链表。3、根据权利要求l所述的高速緩存系统,其特征在于,其还包括本地或远程磁盘,所述存储单元用于记录所述磁盘的文件信息,并为其建立对应的索引节点,更新所述索引管理区。4、一种实现文件访问的高速緩存方法,用于包括索引区、数据区和空闲指针链表的高速緩存系统,该方法包括以下步骤Al、在内存中预设置存储单元的大小和个数,初始化相应的内存空间作为具有至少一个所述存储单元的所述数据区,所述存储单元用于记录包括文件类型和文件名的文件信息;A2、初始化所述索引区中的索引管理区和至少一索引节点,为每一个目录设置一个索引节点,在所述索引节点存储其对应目录的绝对路径,以及该绝对路径下的目录和文件的信息,并采用对象指针指向记录了各文件信息的各存储单元;A3、在内存中预设置所述空闲指针链表,其中各链表单元分别存放指向各存储单元的指针;A4、收到文件访问请求,通过所述索引管理区,^r索各索引节点;A5、判断是否检索得到所需文件,是则执行A6,否则执行A7;A6、4艮据得到的索引节点中的路径,读取本地或远程》兹盘中的所需文件;A7、在本地或远程磁盘中搜索并读取所需文件。5、根据权利要求4所述的高速緩存方法,其特征在于,步骤A2中,所述索引管理区采用MAP方式实现,采用索引节点的绝对目录路径作为关键字,采用对象指针作为关键字的值。6、根据权利要求4所述的高速緩存方法,其特征在于,步骤A3中,所述空闲指针链表为先进先出结构,并采用锁机制实现。7、根据权利要求4所述的高速緩存方法,其特征在于,步骤A5中,在索引管理区为空时,则判断没有检索得到所需文件。8、根据权利要求4至7任一所述的高速緩存方法,其特征在于,步骤A7之后,还执行以下步骤A71、通过所述空闲指针链表,获得一个空闲的存储单元,将所需文件的文件类型和文件名记录在该存储单元中,并为其建立对应的索引节点。9、根据权利要求8所述的高速緩存方法,其特征在于,步骤A71之后,还执行以下步骤A72、更新所述索引管理区,增加或修改存储该所需文件的目录和文件的信息的索引节点。10、根据权利要求8所述的高速緩存方法,其特征在于,步骤A71之后,还执行以下步骤A73、判断所需文件占用的存储单元使用完成,或所述空闲指针链表为空时选择未曾使用时间最长的存储单元;A74、释放存储单元的数据,使之成为空闲的存储单元,在所述空闲指针链表的一链表单元中存放指向该空闲的存储单元的指针。全文摘要本发明公开了一种实现文件访问的高速缓存系统和方法,该系统包括索引区单元、数据区单元和空闲指针链表单元;数据区单元包括连续的、固定大小的存储单元,根据预设置存储单元的大小和个数,占用连续的相应内存空间用作各存储单元,存储单元记录文件信息;索引区单元设置索引管理区模块和至少一索引节点;为每一个目录设置一个索引节点,索引节点存储其对应目录的绝对路径,以及该绝对路径下的目录和文件的信息,并采用对象指针指向记录各文件信息的各存储单元;空闲指针链表单元维护空闲指针链表,其各链表单元分别存放指向各存储单元的指针。本发明应用灵活、方便,高效、迅速地实现了对本地或远程磁盘数据的高速缓存,提高了文件的检索效率。文档编号G06F12/08GK101187901SQ200710125440公开日2008年5月28日申请日期2007年12月20日优先权日2007年12月20日发明者毅刘申请人:康佳集团股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1