1 通过虚拟文件系统,linux可以支持多种文件系统类型;
2 虚拟文件系统所隐含的思想是把表示很多不同种类文件系统的共同信息放入内核;其中用1个字段或函数来支持所有支持具体文件系统所提供的任何操作。
3 VFS支持的文件系统可以分为3类:磁盘文件系统、网络文件系统及特殊文件系统;
4 VFS实现了一个通用文件模型:对于每个对象,都包含该对象操作的函数指针,指向具体处理文件系统所提供的相应接口;在发生系统调用的时候,通过该对象的函数指针找 到具体负责处理的函数,从而调用实际接口进行处理;
5 通用文件模型包含对象:
(1) 超级块对象(superblock object):存放的是已安装文件系统的信息;对于磁盘文件系统,通常对应于存放在磁盘上的文件系统控制块(filesystem control block);
(2)索引节点对象(inode object):存放具体文件的一般信息;对于基于磁盘的文件系统,通常对应于存放在磁盘上的文件控制块(file control block);每个索引节点对象 都有1个索引节点号,唯一地标识文件系统中的文件;
(3)文件对象(file object):存放进程与打开文件之间的交互信息;该对象只在进程访问文件期间存在于内核内存中;
(4)目录项对象(dentry object):存放目录项与对应文件之间链接的有关信息;
6 VFSc除了提供一个通用文件模型外,还能提高系统性能:最近最常使用目录项存放在目录项高速缓存中,以便加速从文件路径名到最后一个分量的索引节点的转换过程;
7
(1)磁盘高速缓存: 将磁盘中的内容保存到RAM中,加速对数据的访问而避免访问慢速的磁盘;
(2)硬件高速缓存:利用静态RAM,加快对慢速动态RAM的访问;
(3)内存告诉缓存:软件机制,为了绕过内核内存分配器;