




全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Linux虚拟文件系统对物理文件的管理 引言 随着嵌入式技术的发展,越来越多的嵌入式设备采用Linux作为其操作系统。 Linux支持各种物理文件系统,而不同物理文件系统具有不同的组织结构和不同的处理方式。为了兼容支持不同的文件系统,Linux设计了在系统启动时由系统在内存创建的文件系统,即虚拟文件系统(Virtual File System,VFS)。该文件系统对不同的物理文件系统的所有特性进行抽象,屏蔽各种文件系统的差别,向Linux内核和进程提供了一个处理各种物理文件系统的公共接口,从而实现了对不同文件系统的支持。而且,Linux系统把一切的设备也当作文件来处理。理解Linux虚拟文件系统机制对于学习Linux运行原理起着重要的作用。本文对Linux虚拟文件系统原理进行了较为详尽的分析。1 Linux VFS基本原理 Linux以EXT2作为基本的文件系统,组成虚拟文件系统的超级块、索引节点、目录项等数据结构,兼容于各种文件系统的相应数据结构,从而实现了对多种文件系统的透明调用。1.1 Linux所支持的文件系统的一般结构 Linux继承了Uinx,把文件名和文件控制信息分开管理。一个Linux所支持的物理文件系统使用的块设备上的一个独立逻辑分区可大致分为:引导块、超级块、inode块、data块4部分1。超级块是描述文件系统整体信息的数据结构,在系统运行期间被读入内存,在内存中建立一个超级块的映像。Linux所支持的文件系统的一般结构如图1所示。图1 Linux所支持的文件系统的一般结构1.2 VFS对物理文件系统的管理 Linux VFS采用超级块(super_block)和索引节点(inode)来描述文件系统。这里的super_block和inode不同于物理文件系统中的super_block和inode数据结构,VFS super_block是VFS把不同文件系统中的整体组织和结构信息进行抽象后形成的,兼顾不同文件系统的统一的超级块结构。在安装文件系统时,由系统在内存中建立,其内容主要由文件系统的超级块数据来填充。inode则是在系统打开文件时,由系统在内存动态建立,其内容主要由文件系统的inode节点的数据来填充。 Linux VFS除了没有存储文件内容的data块外,文件系统的结构与物理文件系统基本相似,如图2所示。图2 Linux VFS文件系统结构 Linux进程通过VFS中相应的超级块和索引节点中的信息,准确地访问操作目的磁盘文件系统中的相应文件。2 Linux VFS的实现 为了区分文件系统中的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与某个文件的对应关系是通过设备号i_dev与inode号i_ino建立的,它们唯一地指定了某个设备上的一个文件或目录。vnode是设备上的文件或目录的inode在内存中的统一对应结构,并且给出了不同文件系统特有的信息,即各种文件系统的inode在内存中的映像。 如前所述,Linux继承了Uinx,把文件名和文件控制信息分开管理,由目录项(dir_entry)管理文件名,索引节点(inode)管理文件控制信息,并且通过dir_entry结构中的d_inode域指向文件的inode节点,建立与文件索引节点的联系。文件的索引节点(inode)结构体包含了关于文件的组织信息和管理信息,根据其中的i_info查找存储文件内容的数据块,根据i_op指向的inode_operations结构,通过其中的指针函数调用各自的inode操作函数。 系统进程使用文件由表示进程当前打开的所有文件的数据结构files_struct建立进程与文件系统的关系。指针fd和fd_array都指向代表打开文件对象数组。进程调用文件操作函数,依据文件路径打开文件,文件操作函数返回一整数,即文件描述符,例如int open(const char *pathname ,int flages)2。之后,进程便用文件描述符来表示一个打开的文件,该整数文件描述符就是files_struct中file数组fd的下标。 图3描述了进程使用文件时用到的VFS中主要数据结构的关系。图3 VFS中主要数据结构关系图 dentry结构描述的是逻辑意义上的文件,记录的是其逻辑上的属性。只要是有效的dentry结构,则其指针d_inode必定指向一个inode结构。而inode结构所代表的是物理意义上的文件,记录的是其物理上的属性。一个inode结构可能对应着不只一个dentry结构,因为一个物理意义上的文件可以被链接(link)其他路径名。 所以,在inode结构中有个队列i_dentry,凡是代表着这个文件的所有目录项(普通文件也是目录文件的一种)都是通过dentry结构中的d_alias挂入相应的inode结构中的i_dentry队列。
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二五年度房地产并购重组法律尽职调查合同
- 2025年度住宅小区公共设施改造合同范本
- 二零二五年度智能办公设备维护与维修合同
- 2025版建筑劳务合作承诺协议书模板
- 二零二五年电力设备买卖及运行维护管理合同
- 二零二五年度工衣采购与员工职业发展合同
- 2025年新能源项目承包经营权长期转让合同范本
- 二零二五年度房产买卖合同房地产投资分析与咨询合同
- 2025版房产代理合同补充协议范本下载
- 二零二五年度文化知识产权保护保密合同范本
- 木工三级安全教育试卷
- 中学田径基础校本课程教材
- 永能选煤厂生产安全事故应急救援预案
- 河北省邯郸市各县区乡镇行政村村庄村名居民村民委员会明细及行政区划代码
- 浙江省建设领域简易劳动合同(A4版本)
- 浙江省本级公务车辆租赁服务验收单(格式)
- 糖代谢紊乱的实验诊断
- 400T汽车吊主臂起重性能表
- 大信审计执业问题解答-存货监盘审计指引
- GB∕T 12703.1-2021 纺织品 静电性能试验方法 第1部分:电晕充电法
- 特种设备(天车、叉车)事故应急演练方案
评论
0/150
提交评论