文档详情

11-虚拟文件系统.ppt

发布:2024-08-02约5.08千字共24页下载文档
文本预览下载声明

11虚拟文件系统*定义虚拟文件系统作为内核子系统,为用户空间程序提供了文件和文件系统相关的接口。系统中所有文件系统不但依赖VFS共存,而且也依靠VFS系统协同工作。程序可以利用标准的Unix系统调用对不同的文件系统,不同介质上的文件系统进行读写操作*虚拟文件系统位于操作系统系统调用界面与具体类型文件系统之间,负责记录操作系统中可以支持和已经安装有哪些文件系统类型,将相关系统调用转换为对具体类型文件系统的调用,负责不同类型文件系统间的协同工作(例如跨FS复制),实现对不同类型文件系统的动态装卸和可扩充性等。*1通用文件系统接口VFS使用户可直接使用open()、read()和write()这样的系统调用而无须考虑具体文件系统和实际物理介质。用户程序可以把所有文件看成一致的、抽象的VFS文件,通过这些系统调用对文件进行操作,而无需关心具体的文件属于什么文件系统以及具体文件系统的设计和实现,有点类似面向对象设计方法。系统调用在这些不同的文件系统和不同介质之间执行,使用标准的系统调用从一个文件系统拷贝或移动数据到另一个文件系统。*2文件系统抽象层*例:ret=write(fd,buf,len)write()调用将来自用户空间的数据流,首先通过VFS的通用系统调用,其次通过文件系统的特殊写法,最后写入物理介质中*3Unix文件系统抽象概念文件目录项索引节点安装点*管理方式文件系统是数据分层存储结构,包含文件、目录和相关的控制信息。通用操作包含创建、删除和安装等。文件系统被安装在一个特定的安装点上,该安装点在全局层次结构中称为命名空间,已安装文件系统作为根文件系统树的枝叶。类Unix操作采取单一、统一的树形管理文件系统Windows将文件的命名空间分类为驱动字母,例如C:。*文件:有序的字符串,被分配一个名字,典型的操作有读、写、创建和删除等。目录:文件通过目录组织起来,目录可以嵌套,形成文件路径。路径中每一部分称为目录条目例:/home/wolfman/butter,/根目录,home目录wolfman和文件butter是目录条目,统称为目录项目录是普通文件,列出包含在其中的所有文件,可以对目录执行和文件相同的操作。*文件相关信息:文件元数据,例如访问控制权限、大小、拥有者、创建时间等信息。存储在一个单独的数据结构中,称为索引节点(inode)。文件系统相关信息:文件系统控制信息存储在超级块中,超级块是一种包含文件系统的数据结构。称为文件系统数据元,集单独文件信息和文件系统的信息。*4VFS对象及其数据结构VFS有四个主要的对象类型:超级块对象,代表一个具体的已安装文件系统索引节点对象,代表一个具体文件目录项对象,代表一个目录项,是路径的一个组成部分文件对象,代表由进程打开的文件*5超级块对象用于存储特定文件系统的信息,对应于存放在磁盘特定扇区的文件系统超级块或文件系统控制块。超级块(super_block)(include/linux/fs.h)每个装配的文件系统由一个VFS超级块来表示,VFS超级块中主要包括下列几个域:设备:该文件系统所在的块设备的设备标识。例如/dev/hda/--系统中第一个IDE硬盘,它的设备标识是0X301。inode指针:mountedinode节点指针指向文件系统中的第一个inode节点。Coveredinode节点指向代表该文件系统装配点目录的inode节点。根文件系统的VFS超级块没有Covered指针项。*块长度:以字节为单位表示的该文件系统的块长度。如1024字节。超级块操作:指向该文件系统的一组超级块例程。这些例程主要由VFS用于读写inode节点和超级块。文件系统类型:指向装配的文件系统的file_system_type数据结构的指针。文件系统特征:指向该文件系统所需信息的指针。*structsuper_block{kdev_ts_dev;/*具体文件系统的块设备标识符*/unsignedlongs_blocksize;/*以字节为单位数据块的大小*/unsignedchars_blocksize_bits;/*块大小的值占用的位数*/…structlist_heads_list;/*指向超级块链表的指针*/structfile_system_type*s_type; /*指向文件系统的file_syst

显示全部
相似文档