Linux虚拟文件系统对物理文件的管理.doc

Linux虚拟文件系统对物理文件的管理.doc

ID:52223892

大小:59.50 KB

页数:5页

时间:2020-03-25

Linux虚拟文件系统对物理文件的管理.doc_第1页
Linux虚拟文件系统对物理文件的管理.doc_第2页
Linux虚拟文件系统对物理文件的管理.doc_第3页
Linux虚拟文件系统对物理文件的管理.doc_第4页
Linux虚拟文件系统对物理文件的管理.doc_第5页
资源描述:

《Linux虚拟文件系统对物理文件的管理.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、Linux虚拟文件系统对物理文件的管理引言   随着嵌入式技术的发展,越来越多的嵌入式设备采用Linux作为其操作系统。Linux支持各种物理文件系统,而不同物理文件系统具有不同的组织结构和不同的处理方式。为了兼容支持不同的文件系统,Linux设计了在系统启动时由系统在内存创建的文件系统,即虚拟文件系统(VirtualFileSystem,VFS)。该文件系统对不同的物理文件系统的所有特性进行抽象,屏蔽各种文件系统的差别,向Linux内核和进程提供了一个处理各种物理文件系统的公共接口,从而实现了对不同文件系统的支持。而且,Lin

2、ux系统把一切的设备也当作文件来处理。理解Linux虚拟文件系统机制对于学习Linux运行原理起着重要的作用。本文对Linux虚拟文件系统原理进行了较为详尽的分析。1 LinuxVFS基本原理   Linux以EXT2作为基本的文件系统,组成虚拟文件系统的超级块、索引节点、目录项等数据结构,兼容于各种文件系统的相应数据结构,从而实现了对多种文件系统的透明调用。1.1 Linux所支持的文件系统的一般结构   Linux继承了Uinx,把文件名和文件控制信息分开管理。一个Linux所支持的物理文件系统使用的块设备上的一个独立逻辑分

3、区可大致分为:引导块、超级块、inode块、data块4部分[1]。超级块是描述文件系统整体信息的数据结构,在系统运行期间被读入内存,在内存中建立一个超级块的映像。Linux所支持的文件系统的一般结构如图1所示。图1 Linux所支持的文件系统的一般结构1.2 VFS对物理文件系统的管理   LinuxVFS采用超级块(super_block)和索引节点(inode)来描述文件系统。这里的super_block和inode不同于物理文件系统中的super_block和inode数据结构,VFSsuper_block是VFS把不同

4、文件系统中的整体组织和结构信息进行抽象后形成的,兼顾不同文件系统的统一的超级块结构。在安装文件系统时,由系统在内存中建立,其内容主要由文件系统的超级块数据来填充。inode则是在系统打开文件时,由系统在内存动态建立,其内容主要由文件系统的inode节点的数据来填充。   LinuxVFS除了没有存储文件内容的data块外,文件系统的结构与物理文件系统基本相似,如图2所示。图2 LinuxVFS文件系统结构   Linux进程通过VFS中相应的超级块和索引节点中的信息,准确地访问操作目的磁盘文件系统中的相应文件。2 LinuxVF

5、S的实现   为了区分文件系统中的inode,这里把VFS中的inode称为vnode。   Linux系统支持文件系统目录树机制,根据路径名,如/home/xyz/work/test.c,就可以在磁盘上找到文件test.c的目录项和索引节点。在路径/home/xyz/work/test.c中,目录/、home、xyz、work以及普通文件test.c都对应一个目录项对象。目录项在磁盘文件系统中的数据结构是dir_entry,VFS在遍历路径名的过程中将其解析成内存目录项对象(dentry对象)和vnode对象。   vnode

6、与某个文件的对应关系是通过设备号i_dev与inode号i_ino建立的,它们唯一地指定了某个设备上的一个文件或目录。vnode是设备上的文件或目录的inode在内存中的统一对应结构,并且给出了不同文件系统特有的信息,即各种文件系统的inode在内存中的映像。   如前所述,Linux继承了Uinx,把文件名和文件控制信息分开管理,由目录项(dir_entry)管理文件名,索引节点(inode)管理文件控制信息,并且通过dir_entry结构中的d_inode域指向文件的inode节点,建立与文件索引节点的联系。文件的索引节点(

7、inode)结构体包含了关于文件的组织信息和管理信息,根据其中的i_info查找存储文件内容的数据块,根据i_op指向的inode_operations结构,通过其中的指针函数调用各自的inode操作函数。   系统进程使用文件由表示进程当前打开的所有文件的数据结构files_struct建立进程与文件系统的关系。指针fd和fd_array都指向代表打开文件对象数组。进程调用文件操作函数,依据文件路径打开文件,文件操作函数返回一整数,即文件描述符,例如intopen(constchar*pathname,intflages)[2

8、]。之后,进程便用文件描述符来表示一个打开的文件,该整数文件描述符就是files_struct中file数组fd的下标。   图3描述了进程使用文件时用到的VFS中主要数据结构的关系。图3 VFS中主要数据结构关系图   dentry结构描述的是逻辑意义上的文件

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。