版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第4节 虚拟文件系统virtual filesystem (VFS)l 不同的文件系统的磁盘数据在内存怎么放?l Linux支持的文件系统l Linux的VFSl 进程与文件通常一个操作系统会支持使用几个文件子系统FAT外、内存数据结构数据块FAT1FAT2目录区盘卷总信息外存:外存:内存:内存:DPB链(驱动器参数块链)SFT(系统文件表)Open()返回这个表的行号CDS(当前目录结构)DBF(磁盘缓冲区)文件子系统的安装程序文件子系统的建立程序文件子系统拆除程序打开、读写、关闭文件程序.ext2的外、内存数据结构 superblock inode dentry file块组3块组2块组1
2、块组0引导块数据块索引节点表组描述符块位图索引节点位图超级块内存:外存:虚拟文件系统的引入seccylhead磁盘驱动第第1层抽象层抽象第第2层抽象层抽象第第3层抽象层抽象I/O系统系统文件系统文件系统1文件系统文件系统2.第第4层抽象层抽象虚拟文件虚拟文件系统系统虚拟文件系统是在内存的Linux支持的文件系统由于由于Linux自由软件的特点,很多人为自由软件的特点,很多人为Linux添加文件系统,所以。添加文件系统,所以。文件系统分类 支持的文件系统可分为三类 基于磁盘的文件系统 e.g ext2、ext3、VFAT、NTFS、ISO9660 CDROM 网络文件系统 e.g NFS、Cod
3、a 特殊文件系统 不占磁盘空间,e.g /procLinux支持的部分文件系统虚拟文件系统(vfs)第四层抽象第四层抽象virtual filesystem (VFS) VFS不直接操作文件,所有对文件的实际操作都要通过实际作用于某个介质的文件系统来完成 引入VFS的目的是为了屏蔽各种文件系统的差异 VFS对实际文件系统进行抽像,采用统一的数据结构在内存中描述所有实际的文件系统,向用户提供一组标准的文件操作函数。 VFS负责将标准文件操作映射到实际文件系统的操作。 正是这种抽像和映射,保证了Linux系统可以支持多种介质的不同文件系统,使所有文件系统都具有基本相同的外部表现virtual fi
4、lesystem (VFS) VFS通过一组统一的数据结构和操作函数接口实现抽象 操作函数 操作函数由实际的文件系统实现 VFS依据这些对象提供的信息和操作函数来完成将用户的文件请求映射到实际文件系统的操作数据结构的建立 结构体的数据由实际文件系统的相应的数据来填充 各个数据结构的对象存在于内存 superblock inode dentry file只内存有Superblock 每个文件系统都有自己的superblock结构(卷总结构) superblock结构用来存储文件系统的相关信息 设备标识符、文件系统标志、数据块大小、文件系统的特殊信息、文件系统的使用信息、超级块操作集指针 VFS的
5、superblock和文件系统一一对应,代表一个实际的文件系统 superblock在文件系统挂载时建立,在文件系统卸载后撤销 存在同步更新的问题,所以,VFS也会周期性地将所有发生改变的Superblock写回磁盘Superblock与介质文件系统块组3块组2块组1块组0引导块数据块索引节点表组描述符块位图索引节点位图超级块数据块FAT1FAT2目录区盘卷总信息ext2:FAT:inode inode结构体代表文件系统中的一个文件 仅当文件被打开时,其对应的VFS inode结构体才在内存中创建 inode信息的获取 从磁盘读入文件的FCB inode信息同步 与超级块相同,inode也存在
6、同步更新的问题,所以,VFS也会周期性地将所有发生改变的inode写回磁盘inode与介质文件系统块组3块组2块组1块组0引导块数据块索引节点表组描述符块位图索引节点位图超级块数据块FAT1FAT2目录区盘卷总信息ext2:FAT:file、dentry、inode三者关系用户可见举例#include #include stdlib.h#define N 8void main() int i;char ch;FILE *fp;if(fp=fopen(file2.txt,w)=NULL)printf(不能打开文件!n);exit(0); printf(从键盘输入%d个字符:,N);for(i=0
7、;iN;i+)ch=getchar();fputc(ch,fp);fclose(fp);printf(文件的内容如下:n);if(fp=fopen(file2.txt,r)=NULL)printf(不能打开文件!n);exit(0); while(!feof(fp) ch=fgetc(fp); putchar(ch); fclose(fp);file 从用户(进程)角度看 进程直接处理文件,关心文件的访问模式、以及读、写等操作,而不是superblock、inode、dentry file结构体描述进程打开的文件 当进程open()一个文件,VFS将为它建立一个file结构 file结构 文件
8、打开模式(f_mode) 读/写位置指针(f_pos) 文件访问计数(f_count) 文件的目录项指针(f_dentry) 文件操作集指针(f_op) file_operations文件操作集结构体 它由一组对文件内容进行操作的函数指针组成,如read()、wirte()、lseek()等。 file结构体因open()系统调而创建,因close()而销毁dentry dentry 结构体用来记录目录项(directory entry) 路径名中的每一个目录项都对应一个dentry e.g., /home/lkp/Chapter06.txt 为/, home, lkp, and Chapte
9、r06.txt分别创建dentryl 当VFS首次解析一个路径名时,它依次读取路径中的每个目录或文件,为每个分量建立一个dentry结构l VFS将这些已建立的dentry结构按目录关系链接在一起在后续的文件查找操作中,VFS只需沿dentry的链接结构进行查找,可以很快地找到目标文件的dentry结构,然后得到它的VFS inode为什么要dentry linux在定位一个文件时需要沿该文件的路径逐级访问路径中的目录 如果每次都要从磁盘读取目录文件的话,访问文件的效率就会很低。 为了方便查找操作,VFS引入了目录项(dentry)的概念。dentry 与 inode 的关系 dentry是对文件的逻辑描述 dentry描述的是文件的逻辑标识(文件名)以及该文件与其他文件的逻辑关系(其在目录树中的位置) VFS inode描述文件的属性及其内容的物理存储 dentry与inode结合可以完整地表示一个文件 dentry可看作是访问一个文件的入口,查找文件就是在dentry链表中沿路径找到目标dentry的过程文件路径名进程与其相关文件之间的关系 多个进程可以同时打开和操作同一个文件 同一个文件在内存中可能存在多个file结构体对象 一个文件 对应inode是唯一的 但其对应的file结构体对象可能不唯一(被多个进程打开“读”)多个进程同时打开同一个文件PCB2PCB1filed
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/T 46734-2025智能工厂评价通则
- GB/T 46798-2025网络安全技术标识密码认证系统密码及其相关安全技术要求
- 2025年云南富宁县那能乡卫生院公开招聘编外合同制人员的备考题库及参考答案详解
- 2025年中国民航科学技术研究院公开招聘备考题库(第二批)及一套答案详解
- 2026年技术改造合同
- 2025年丹东市荣军优抚医院(原丹东市公安医院)招聘备考题库及1套完整答案详解
- 2025年鲤城区东门实验小学顶岗合同教师招聘备考题库及答案详解一套
- 2025年代招某行政机关派遣制工作人员招聘备考题库及完整答案详解一套
- 2026年现代医疗服务合同
- 中国人民银行清算总中心直属企业银清科技有限公司2026年度公开招聘备考题库完整答案详解
- 观光车景区运营管理办法
- 福禄贝尔教学课件
- 《产科危急重症早期识别中国专家共识(2024年版)》解读
- 绿色建筑自评估报告参考样式
- 涉密文件解密管理制度
- 巡特警(辅警)政审表
- 医用耗材知识培训课件
- 《竹木复合集装箱底板》(T-CSF 009-2019)
- 婚介协议书模板
- 成人学历销售培训课件
- 民主测评及征求意见表
评论
0/150
提交评论