Chinaunix首页 | 论坛 | 博客
  • 博客访问: 6319170
  • 博文数量: 2759
  • 博客积分: 1021
  • 博客等级: 中士
  • 技术积分: 4091
  • 用 户 组: 普通用户
  • 注册时间: 2012-03-11 14:14
文章分类

全部博文(2759)

文章存档

2019年(1)

2017年(84)

2016年(196)

2015年(204)

2014年(636)

2013年(1176)

2012年(463)

分类: LINUX

2014-12-21 10:08:46

        首先vfs是内存中维护的虚拟数据,是对各种fs的高层次的抽象,一般主要包括:dentry、inode、super_block这几个真实的文件系统物理信息的内存表示,通过管理这些数据结构,就完成了对该文件系统的操作。
        对于一个文件系统而言,super_block是最关键的数据结果,它代表 了这个文件系统自身,它存有fs中文件块的大小,超块的操作函数等,超块的内容具体fs在存储介质上的超块数据结构获得,操作函数结构为super_operation。
        dentry是fs中的目录,目录和文件按树状分布,通过遍历目录可以到达根目录,这个在vfs中反映fs系统文件的树状关系。目录也是文件,每个文件都有dentry结构,其链接到上级目录的dentry,为加快对dentry的查找,内核使用的slabdentry cache,并加入hash表。
        inode为索引节点,代表一个具体文件,包含了该文件的一些描述信息。主要是对文件的操作函数和文件缓存,对于一个文件,inode是唯一的。主要关注i_fop(基本的操作函数)和i_mapping(对文件内容进行缓存,无论是读还是写,现在缓存中找,之后才可能去磁盘中操作,主要是通过对文件地址空间的一种映射关系去确定实际的缓存数据)。
        最后来谈谈file文件结构,它是对一个file的内存态数据表示,它主要是f_mapping(address_space),类似于i_mapping
        对于多个进程打开同一个文件,大部分情况下,进程内的file是多个实体,进程间file内核表示是互不相同的,除非是父子进程。file结构只是在进程角度上,表示打开的文件。所以数据一致性不是page cache能保证的,是要应用程序保证的。
阅读(1187) | 评论(0) | 转发(0) |
0

上一篇:kernel笔记——VFS

下一篇:Linux系统VFS机制

给主人留下些什么吧!~~