用于在逻辑文件系统中查找文件的方法

文档序号:6361887阅读:220来源:国知局
专利名称:用于在逻辑文件系统中查找文件的方法
技术领域
本发明一般涉及一种用于在逻辑文件系统的存储配置(memorylayout)中查找文件的方法。本发明对于(但不局限于)向操作系统公开(expose)逻辑文件系统的存储配置以提高逻辑文件系统的效率特别有用。
背景技术
现代的计算机操作系统通常包括虚拟文件系统(VFS),它将与系统相联系的所有文件进行组织和分目录管理。当诸如附加存储器模块的硬件连接到计算机上的时候,VFS就建立与新的硬件的逻辑文件系统的接口,这个接口将新的硬件连接到现有的文件系统体系中的载入点(mount point)。载入点通常只是空的目录。在将新的硬件载入到载入点后,就可以通过载入点目录访问新的硬件的逻辑文件系统的文件树。
在一些操作系统中,VFS使用称为信息节点(inodes)的特专用指针(pointer)来维护关于文件系统中的所有文件的信息。信息节点是包含特定文件中的数据存储位置的特定地址的代码段。因此,VFS目录只是包括其它文件的名字和指向其它文件的位置的相关信息节点的一种文件类型。
然而有时VFS并不了解附加的逻辑文件系统的内部结构,并且类似地,逻辑文件系统也不知道VFS的结构和相关的内核互斥(exclusive mutex)的机制。这就带来了两个可以显著地降低系统的性能和稳定性的问题。首先,逻辑文件系统的逻辑文件管理器需要自己管理所有互斥冲突。这就会导致非常低效率的数据传送。第二,由于VFS不熟悉逻辑文件系统树,当VFS需要在逻辑文件系统中定位文件的时候,它必须从载入点开始对逻辑文件系统进行全面的查寻。这就导致了要从逻辑文件系统中读取大量不必要的数据,这再次降低了系统的性能。
由于部分上述问题,标准的Linux虚拟文件系统就不能有效地与诸如闪速存储器模块的某种硬件进行有效地通信。Linux操作系统应用于包括移动电话、个人数字助理(PDA)、HDTV、数码摄像机(DVR)、车载通信系统、高级远程控制、打印机、等等的各种类型的电子设备中。OEM经常选择Linux,因为它是成熟、稳定和支持多种关键结构和技术的开放的系统平台。
参看图1,这是显示诸如包括可编程的闪速存储器的移动电话的设备中现有技术的硬件和软件组件的示意图。箭头表示信息流(诸如来自高层应用105的请求)向下穿过各个子层。首先,信息穿过包括VFS115的操作系统110。然后信息流过包括操作系统接口125如VFS封装层、文件系统驱动器130、闪速媒体管理器(FMM)135、和低级驱动器140的逻辑文件系统。最后,信息到达实际的可编程闪速存储器硬件145。
在操作系统110是Linux的时候,Linux的内核支持一种到VFS115的信息节点结构,它是为管理关于逻辑文件系统120的结构的信息设计的。然而,由于前面所说的原因,操作系统110可能不了解逻辑文件系统120的内部结构,并且支持VFS115的信息节点结构可能没有包含逻辑文件系统中的文件的详细位置信息。
因此所需要的是一种用于向VFS115公开逻辑文件系统的存储配置以提高逻辑文件系统120的效率和提高逻辑文件系统120的稳定性的方法。

发明内容
根据本发明的一个方面,本发明是一种用于在可操作地与操作系统的虚拟文件系统连接的逻辑文件系统中查找文件的方法,所述逻辑文件系统包括第一连接点结构,所述方法包括如下步骤在所述第一连接点结构中公开所述逻辑文件系统的存储配置的扇区(sector),和从在所述第一连接点结构中所标识的扇区开始搜索所述逻辑文件系统。
所述方法可以还包括在多个连接点结构中公开所述逻辑文件系统的存储配置的扇区的步骤。
所述在多个连接点结构中公开所述逻辑文件系统的存储配置的扇区的步骤可以包括在所述子目录的连接点结构中存储子目录的存储配置。
所述方法可以还包括如下步骤从所述逻辑文件系统中的所述虚拟文件系统接收多个查寻请求,和查找在所述多个查找请求的一个中标识的文件。
所述逻辑文件系统可以是闪速存储器系统。
所述连接点结构可以是“vfm_inode_info”结构。
公开所述逻辑文件系统的存储配置扇区的所述步骤可以包括在所述“vfm_inode_info”结构中存储FNT扇区和FET扇区。
所述操作系统可以是Linux操作系统。


为了容易理解本发明并获得可实现的效果,现在将参看附图来说明优选的实施例,其中相同的序号表示相同的单元,在这些附图中图1是图解说明诸如包括可编程的闪速存储器的移动电话的设备中现有技术的硬件和软件组件的示意图件1;图2是图解说明本发明中用于在逻辑文件系统中查找文件的方法的流程图;图3是逻辑文件系统的目录树组件的示意图;和图4是本发明中目录的信息节点结构的示意图。
本发明优选实施例的详细描述现在将参考与英特尔公司开发的虚拟小块文件管理器(VFM)接口连接(interfacing)的Linux操作系统来描述本发明的实施例。然而那些本技术领域中的一般技术人员应当认识到本发明可以适用于任何现代的操作系统。为了与英特尔(注册商标)的闪速存储器接口连接,信息节点可以包括为保存逻辑文件系统120的私有信息(诸如关于逻辑文件系统120的文件树结构的文件逻辑信息)而设计的“vfm_inode_info”连接点结构。然而,当逻辑文件系统120不能够向VFS115输出它的文件位置信息的时候,任何来自VFS115的要从闪速存储器145中找回(retrieve)文件的请求都会强制逻辑文件系统120开始从闪速存储器硬件145的载入点搜索闪速存储器的文件树。
在VFS115向逻辑文件系统120提交文件查寻请求的时候,逻辑文件系统120首先尝试根据包含在连接点结构中的信息来定位文件。在VFM中,连接点结构是“vfm_inode_info”结构。在搜索路径的时候(例如,“/usr/src/linux/Makrfile”),VFS115执行搜索过程,这个过程把路径分成若干个只在直接的父目录中搜索文件的短的搜索。例如,在上述的路径中,尽管实际的搜索请求是在“/usr/src/linux/”下查找“Makrfile”文件,但是VFS115将把搜索分成分离的短的搜索并向逻辑文件系统120提交四个分离的查寻请求。第一个查寻请求将在载入点(“/”)中定位“usr”目录;第二个查寻请求将在“usr”目录中定位“src”子目录;第三个查寻请求将在“src”子目录中定位“linux”子目录;和最后第四个查寻请求将在“linux”子目录中定位“Makrfile”文件。
再次参考上述搜索的例子,在本发明中,当第一个查寻请求试图在载入点(“/”)中定位“usr”目录的时候,载入点的存储配置就存储在载入点的“vfm_inode_info”结构中。逻辑文件系统将读取与载入点相关的扇区并在那个扇区中搜索“usr”目录。当将“usr”目录定位时,“usr”目录的存储配置就将存储在“usr”目录的“vfm_inode_info”结构中。接着是处理在“usr”目录中的“src”子目录的第二查询请求,逻辑文件系统120将在“usr”目录的“vfm_inode_info”结构中找到“usr”目录的存储配置。然后逻辑文件系统将从闪速存储器145读取适当的扇区,并在这个扇区中搜索“src”子目录。类似地,后续的对“linux”子目录和“Makefile”文件的查寻请求也同样按照上述高效的方式执行。
参看图2,这是图解说明本发明中用于在逻辑文件系统120中查找文件的方法200流程图。在步骤210处,逻辑文件系统120接收到来自VFS 115的对第一子目录的第一查寻请求。当定位了子目录的时候,逻辑文件系统120就在步骤220公开处在第一子目录的连接点结构中的第一子目录的存储配置的扇区。在步骤230处,逻辑文件系统120接收来自VFS 115的对第二子目录的第二查寻请求。然后,在步骤240处,逻辑文件系统120从在第一子目录的连接点结构中标记的扇区处开始搜索第一子目录的存储配置。然后将通过多个子目录不断重复方法200的上述步骤,直到在步骤250处找到VFS 115请求的文件为止。
再次参考上述的例子,在现有技术中,第一查寻请求从载入点开始搜索“usr”目录。逻辑文件系统120将知道与载入点相关的存储配置,这样逻辑文件系统120就可以读取载入点扇区并查寻“usr”目录。因此这个步骤是有效率的;然而,接下来将在RAM中创建“usr”目录的“vfm_inode_info”结构,但是“usr”目录的存储配置将不存储在“vfm_inode_info”结构中。因此,在接下来对“src”子目录的第二查寻请求中,逻辑文件系统120将访问“usr”目录的“vfm_inode_info”结构,但是将找查寻“usr”目录的存储配置。这样,搜索将从载入点开始,然后通过“usr”目录最终到达“src”子目录。然后将在RAM中创建“src”子目录的“vfm_inode_info”结构,但是“src”子目录的存储配置将不存储在“vfm_inode_info”结构中。因此每个查寻请求都将从载入点开始直到在“linux”子目录中找到“Makefile”文件为止。上述重复的查寻操作是没有效率的,并且会显著地降低逻辑文件系统120的性能,在有包括多个嵌套的子目录的“深”的查寻请求的时候这个问题尤为严重。
在使用上述VFM的本发明的一个实施例中,可以通过添加FNT_VSB位置和#1 FIT_VSB或#1 FET_VSB位置来修改“vfm_inode_info”结构。这公开了闪速存储器硬件145的存储配置扇区。然后VFS 115就可以在父目录中直接搜索目标目录,这是因为在父目录的“vfm_inode_info”结构中保存了父目录的#1 FET_VSB位置。VSB代表虚拟小块,或扇区。它是由用户所定义的字节数构成的逻辑存储单元。闪速存储器硬件145分成了多个VSB。FET代表文件条目表(File Entry Table)。它是支持VFM文件条目(entry)的顺序控制结构。FIT代表文件信息表。它是支持具体文件的数据条目的顺序控制结构。因此FET_VSB是包含带有当前文件条目的文件条目表的VSB。FIT_VSB域是在包含文件的初始文件信息表结构的组件中的VSB。FIT_VSB包含文件的初始文件信息表结构。FNT代表文件名表,FNT_VSB域是包括文件名数据和其它文件系统元数据(meta data)的VSB。
因此这就修改了“vfm_inode_info”结构,这样就可以在父目录中而不是它的载入点中搜索文件。如上所述,可以按如下形式来定义本发明的“vfm_inode_info”结构<pre listing-type="program-listing">  struct vfm_inode_info{  struct semaphore sem;/*Mutual exclusion for the file handle mess&lt;br/&gt;and for the operations which must seek/read or seek/write because VFM&lt;br/&gt;lacks pread/pwrite*/  WORD handle;/*FSD File handle-VFM cannot handle multipleopens*/  int nr_opens;/*Use count for above*/  VSB_OFFSET fnt_vsb;//The FileNameTable Sector  VSB_OFFSET fit_vsb;//The first FIT_VSB(or FET_VSB)infile’s FIT chain(or directory’s FET chain)  BYTE valid;// keep the consistence with data in RFA//  };</pre>参看图3,这里显示了逻辑文件系统120的目录树组件的示意图。根据上述“vfm_inode_info”结构,VSF 115就可以在元素的父目录中搜索任何元素(目录、文件或符号连接(symlink)),而不需要从载入点开始。例如,VFS 115可以立即在目录“DirC”中而不是从载入点搜索名为“test1.txt”的文件。
图3同样还显示了在现有技术的“vfm_inode_info”结构中,VFS115将不得不从载入点处搜索并且在找到文件“test1.txt”之前要从“DirA”到“DirB”到“DirC”进行处理。这是因为“DirC”的存储配置信息没有存储在相关的“vfm_inode_info”结构中。
参看图4,这里显示了上面参照图3描述的目录“DirC”的信息节点结构的示意图。“DirC”的信息节点结构显示出VFS 115能够直接从扇区55搜索文件“test1.txt”,扇区55是“DirC”的目录链表扇区。在“vfm_inode_info”结构中的存储配置信息包括目录的文件名表(FNT)扇区和目录的文件条目表(FET)链表扇区。
因此本发明是一种用于在逻辑文件系统120中查找文件的更有效的方法。通过公开逻辑文件系统120的私有信息诸如文件位置信息,本发明提供了一种操作系统110,通过它可以有效地搜索逻辑文件系统120的捷径。当把这个方法应用于具有多个嵌套的子目录的逻辑文件系统120的时候,本发明所提高的效率就加倍了。
上面详细的描述只是提供了优选的典型实施例,并且不是出于限制本发明的范围、适用性、或配置的目的的。事实上,对本发明的优选的典型实施例的描述为本技术领域中的一般技术人员提供了可以让他们实现本发明的优选的典型实施例的描述。应当理解,在不背离如同在权利要求书中所提出的本发明的精神和范围的前提下,可以对功能和元素或步骤的安排进行各种修改。
权利要求
1.一种用于在可操作地与操作系统的虚拟文件系统连接的逻辑文件系统中查找文件的方法,所述逻辑文件系统包括第一连接点结构,所述方法包括如下步骤在所述第一连接点结构中公开所述逻辑文件系统的存储配置的扇区;和从在所述第一连接点结构中所标识的扇区开始搜索所述逻辑文件系统。
2.如权利要求1中的所述方法,还包括在多个连接点结构中公开所述逻辑文件系统的存储配置扇区的步骤。
3.如权利要求2中的所述方法,其中在多个连接点结构中公开所述逻辑文件系统的存储配置扇区的所述步骤包括在所述子目录的连接点结构中存储子目录的存储配置。
4.如权利要求3中的所述方法,还包括如下步骤在所述逻辑文件系统中,从所述虚拟文件系统接收多个查找请求;和查寻在所述多个查找请求的一个中所标识的文件。
5.如权利要求1中的所述方法,其中所述逻辑文件系统是闪速存储器系统。
6.如权利要求1中的所述方法,其中所述连接点结构是“vfm_inode_info”结构。
7.如权利要求6中的所述方法,其中公开所述逻辑文件系统的存储配置扇区所述步骤包括在所述“vfm_inode_info”结构中存储FNT扇区和FET扇区。
8.如权利要求1中的所述方法,其中所述操作系统是Linux操作系统。
全文摘要
本发明公开了一种用于在可操作地与操作系统(110)的虚拟文件系统(115)连接的逻辑文件系统(120)诸如闪速存储器模块中查找文件的方法,所述逻辑文件系统(120)包括第一连接点结构。在第一连接点结构中公开了所述逻辑文件系统(120)的存储配置的扇区。(步骤220)。然后所述逻辑文件系统(120)从在所述第一连接点结构中标识的扇区处开始搜索。(步骤240)。可选地,本发明的所述方法可以包括在多个连接点结构中公开所述逻辑文件系统(120)的存储配置的扇区。
文档编号G06F12/06GK1604052SQ03132699
公开日2005年4月6日 申请日期2003年9月29日 优先权日2003年9月29日
发明者谷绍洪, 饶宏, 陈伟仁, 周景泽 申请人:摩托罗拉公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1