Linux的虚拟文件系统.ppt
《Linux的虚拟文件系统.ppt》由会员分享,可在线阅读,更多相关《Linux的虚拟文件系统.ppt(66页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、Linux的虚拟文件系统的虚拟文件系统提纲提纲虚拟文件系统VFS的作用VFS的数据结构文件系统类型文件系统安装路径名查找VFS系统调用的实现文件加锁1/17/20232嵌入式嵌入式OS虚拟文件系统虚拟文件系统VFS的作用的作用虚拟文件系统Virtual FilesystemVirtual Filesystem SwitchVFS是一个软件层,用来处理与Unix标准文件系统相关的所有系统调用。是用户应用程序与文件系统实现之间的抽象层能为各种文件系统提供一个通用的、统一的接口Linux与其他类Unix系统一样,采用虚拟文件系统VFS来达到支持多种文件系统格式的目标1/17/20233嵌入式嵌入式O
2、SVFS在一个简单文件复制操作中的作用在一个简单文件复制操作中的作用假设用户输入以下shell命令$cp/floppy/TEST/tmp/test 其中,/floppy是MS-DOS的磁盘的一个挂载点(安装点)/tmp是Ext2文件系统中的一个目录对于cp命令而言,它不需要知道/floppy/TEST和/tmp/test分别是什么文件系统类型在cp命令中,它通过VFS提供的系统调用接口进行文件操作1/17/20234嵌入式嵌入式OS1/17/20235嵌入式嵌入式OSVFS支持的文件系统类型支持的文件系统类型VFS支持的文件系统可以划分为三种主要类型基于磁盘的文件系统:它们管理在本地磁盘分区中
3、可用的存储空间Linux使用的文件系统:ext2、ext3、ReiserFSUnix家族的文件系统:SYSV文件系统,UFS,MINIX文件系统以及VERITAS VxFS微软公司的文件系统:MS-DOS、VFAT以及NTFSISO9660CD-ROM文件系统和通用磁盘格式的DVD文件系统其他有专利权的文件系统,如HPFS、HFS、AFFS、ADFS起源于非Linux系统的其他日志文件系统,JFS,XFS1/17/20236嵌入式嵌入式OS网络文件系统:用于访问属于其他网络计算机的文件系统所包含的文件NFS、Coda、AFS、SMB、NCP特殊文件系统不同于上述两大类不管理具体的磁盘空间/pr
4、oc各种不同的文件系统通过mount(挂载、安装)到根文件系统中在Linux中,根文件系统即根目录所代表的文件系统通常是ext2文件系统1/17/20237嵌入式嵌入式OSVFS中通用文件模型概念中通用文件模型概念VFS的基本思想:引入一个通用文件模型,这个模型能够表示所有支持的文件系统对于一个具体实现的文件系统,在处理时,需要将其进行概念上的转换例如,在通用文件模型中,目录被看成是普通文件在实现上,read()sys_readfile数据结构f_opMS_DOS文件操作指针(其中的read操作)类似面向对象的概念1/17/20238嵌入式嵌入式OS通用文件模型有下列对象类型组成超级块对象(s
5、uperblock object)存放文件系统相关信息:例如文件系统控制块索引节点对象(inode object)存放具体文件的一般信息:文件控制块/inode文件对象(file object)存放已打开的文件和进程之间交互的信息目录项对象(dentry object)存放目录项与文件的链接信息1/17/20239嵌入式嵌入式OS三个不同的进程打开同一个文件三个不同的进程打开同一个文件两个不同的硬链接同一个硬链接1/17/202310嵌入式嵌入式OSVFS所处理的系统调用所处理的系统调用mount、umount:挂载/卸载文件系统sysfs:获取文件系统信息statfs、fstatfs、ust
6、at:获取文件系统统计信息chroot:更改根目录chdir、fchdir、getcwd:操纵当前工作目录mkdir、rmdir:创建/删除目录getdents、readdir、link、unlink、rename:对目录项进行操作readlink、symlink:对符号链接进行操作chown、fchown、lchown:更改文件所有者chmod、fchmod、utime:更改文件属性open、close、create 1/17/202311嵌入式嵌入式OS上述大部分操作之需要与通用文件模型中的一些对象打交道,而不需要真正操作具体的文件系统和文件,因此可以把VFS看成是一个“通用”的文件系统,
7、在必要时依赖某种具体的文件系统1/17/202312嵌入式嵌入式OSVFS的数据结构的数据结构每个VFS对象都对应一定的数据结构,在这个数据结构中包含对象的属性及其方法一个具体的文件系统:超级块对象:super_block所有超级块链表:super_blocks:s_list域文件系统特有信息:s_fs_info域脏标志:s_dirt域文件系统特有方法:super_operations数据结构及域include/linux/fs.h1/17/202313嵌入式嵌入式OS一个具体的文件:Inode对象:inodeInode特有的方法目录项对象:dentry一个打开文件:文件对象:file文件操作
8、指针f_pos文件对象特有的方法专用高速缓存:“filp”,filp_cachep include/linux/fs.hinclude/linux/dcache.hinclude/linux/fs.h1/17/202314嵌入式嵌入式OS1/17/202315嵌入式嵌入式OS1/17/202316嵌入式嵌入式OS与进程相关的文件与进程相关的文件文件系统相关信息fs_struct打开文件相关信息files_structinclude/linux/fs_struct.hinclude/linux/path.h1/17/202317嵌入式嵌入式OSinclude/linux/fdtable.hinc
9、lude/linux/fdtable.hinclude/linux/types.hinclude/linux/posix_types.h1/17/202318嵌入式嵌入式OS1/17/202319嵌入式嵌入式OS文件系统类型文件系统类型特殊文件系统用来为系统程序员、系统管理员等提供一种容易的方式来操作内核的数据结构并实现操作系统的特殊特征常用的特殊文件系统1/17/202320嵌入式嵌入式OS1/17/202321嵌入式嵌入式OS文件系统类型的注册文件系统类型的注册文件系统类型:file_system_type在系统初始化期间,register_filesystem()用来注册编译时指定的每个
10、文件系统相应的文件系统对象被插入到file_systems链表中unregister_filesystem()1/17/202322嵌入式嵌入式OS文件系统的挂载文件系统的挂载根文件系统在系统初始化过程中被直接mount提供系统初始化脚本以及基本命令每个文件系统都有自己的根目录如果一个文件系统的根目录是系统目录树的根目录,那个这个文件系统就是根文件系统其他文件系统可以挂载到系统的目录树上这样的目录称为挂载点(mount点,安装点)文件系统之间的挂载关系对应文件系统之间的父子关系1/17/202323嵌入式嵌入式OS例如,放在软盘/dev/fd0上的ext2文件系统,可通过下列命令安装在/flp
11、上mount-t ext2/dev/fd0/flp 一般情况下,只允许挂载一次在umount之前,其他对/dev/fd0的挂载命令会失败在2.4中,可以挂载多次不管被挂载多少次,只有一个真实的文件系统,因此只有一个超级块对象1/17/202324嵌入式嵌入式OS已挂载文件系统描述符vfsmount挂载根文件系统第一阶段:安装一个特殊的文件系统,该文件系统仅提供一个作为初始安装点的空目录:init_mount_tree第二阶段:mount_root挂载一个文件系统sys_mount卸载一个文件系统sys_umount1/17/202325嵌入式嵌入式OS路径名查找路径名查找VFS是如何从文件路径
12、名找到相应的索引节点的?分析路径名,将它拆分成一个文件名序列除了最后一个文件名之外,其他所有文件名必定都是目录名搜索的起点:绝对路径:currentfsroot相对路径:currentfspwd1/17/202326嵌入式嵌入式OS首先找到起点目录的索引节点在这个索引节点的目录文件中,找到第一个目录名(文件名)所对应的索引节点在第一个目录名的索引节点的目录文件中找到第二个目录名(文件名)所对应的索引节点反复,直到文件名序列的最后一项1/17/202327嵌入式嵌入式OS在上述查找过程中要处理的其他问题:对每个目录的访问权限必须进行检查若是符号链接,需要进行扩展要考虑符号链接的循环引用(进行处理
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Linux 虚拟 文件系统
限制150内