Chinaunix首页 | 论坛 | 博客
  • 博客访问: 6090642
  • 博文数量: 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 09:52:18

原文地址:vfs层次理解杂谈 作者:镇水铁牛

        为屏蔽各种底层文件系统差异,vfs是在应用层和fs之间抽象而来,而应用层为了统一接口,则遵循POSIX协议,调用glibc中函数,实现访问所有文件,可以认为vfs才是直接面对用户态程序的入口,而用户态程序又经过glibc访问vfs。
        文件系统一般分3类:在存储介质中的文件系统(ext2、ext3等)、基于内存的文件系统(proc、sysfs、debugfs等),网络文件系统(不熟)。
        从用户角度来看,一个应用程序打开某个文件,返回的是一个int型的句柄,但是这个句柄在内核中是对应一个file结构,该句柄当然也是内核分配的,不过两个独立应用程序可能出现相同的句柄,但是它们实际对应的是不同的文件。该句柄只有在该应用程序中有效。
        而对于内核而言,真正有意义的是inode结构,每一个具体的fs中,inode都是唯一的,它记录了其一切有用信息,对于用户访问文件的入口,如open,read等调用,提示下open一个文件,成功的返回值是一个int的整数,0,1,2一般是标准错误输入输出等,因此句柄会从3开始。
        对于一个具体的fs,一定有其super_block,因为他包含了该超块内操作inode的具体函数实现,这也体现了vfs的层次和作用。
        内核将所有活动文件的超块维护起来,目的可能是为了sync数据到存储介质中吧,因为遍历所有超块中的脏inode,就能同步数据了。

阅读(1333) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~