虚拟文件系统VFS
来源:互联网 发布:淘宝客服处理技巧 编辑:程序博客网 时间:2024/06/06 14:07
一.虚拟文件系统VFS的作用
为了使Linux支持不同的文件系统,如ext2,ext3,NTFS,FAT等等,Linux引入了虚拟文件系统。它为用户提供了统一的接口,而不必关心具体的文件系统的细节,这些接口就是文件系统的系统调用,如read(),write(),等。VFS在系统中的位置如下图所示:
当用户程序在用户态调用write这样的系统调用时,而此时程序将陷入到内核态去,并引起write对应的内核调用sys_write,sys_write又会去调用vfs_write()。这个函数才会去调用具体的文件系统的文件操作
二.VFS中的对象
所谓“虚拟”的文件系统是指该文件系统并不存在于磁盘中,只存在于内存中。这样一个虚拟文件系统是如何形成的呢?linux并不是一下子把所有的文件系统挂载到系统中,而是在需要的时候才进行挂载。另外,VFS只管理挂载到系统上的文件系统。
linux文件系统中有4个对象:文件,目录项,索引结点和超级块。
其中目录项是指一个文件路径中的一部分,例如对于路径/home/zyl/myfile,home,zyl,myfile都是目录项。而目录也就是一个文件夹,Linux将它看作一种特殊的文件,与对文件的处理相同。下面单个介绍这几个对象。
1.超级块
超级块用于描述整个文件系统的信息。对于每个具体的文件系统,都有各自的超级块存在于磁盘中。当对一个文件系统进行初始化和注册时在内存中为其分配一个VFS超级块,VFS超级块只存在于内存中。
VFS超级块用super_block描述。
struct super_block { struct list_head s_list; /* Keep this first */ dev_t s_dev; /* search index; _not_ kdev_t */ unsigned long s_blocksize; unsigned char s_blocksize_bits; unsigned char s_dirt; loff_t s_maxbytes; /* Max file size */ struct file_system_type *s_type; const struct super_operations *s_op; void * s_fs_info; .......};各个super_block通过s_list链接到一个以super_blocks开头的链表中去,如下图:
<============================未完==========================>
- 虚拟文件系统(VFS)
- 虚拟文件系统VFS
- Linux虚拟文件系统(VFS)
- 虚拟文件系统(VFS)
- 虚拟文件系统-VFS介绍
- linux 虚拟文件系统VFS
- 虚拟文件系统:VFS
- VFS虚拟文件系统
- VFS虚拟文件系统层
- VFS虚拟文件系统
- Linux虚拟文件系统(VFS)
- VFS(虚拟文件系统)
- Linux虚拟文件系统VFS
- Linux VFS虚拟文件系统
- 虚拟文件系统VFS
- 虚拟文件系统VFS---2
- linux虚拟文件系统-VFS
- Linux虚拟文件系统VFS
- 薄荷花开
- [proc 系统] /proc/sys/kernel
- 大师级写的C# 中的委托和事件 简明扼要
- java 泛型
- java类修饰符整合
- 虚拟文件系统VFS
- vs2010编译OVALInterpreter
- gcc预定义宏
- 七夕·殇
- struts2 转换器
- 策略模式
- .pro->.ts->.qm
- 爱是永久相思情
- Json树形结构数据转Java对象并存储到数据库的实现-超简单的JSON复杂数据处理