Linux操作系统--虚拟文件系统VFS

1、内核通过抽象层能够方便、简单的支持各种类型的文件系统。实际文件系统通过编程提供VFS所期望的抽象接口和数据结构

2、Unix系统将文件信息和文件本身区分。文件信息包括:访问控制权限、大小、拥有者、时间信息等。称为元数据。存储在索引节点中。

3、Unix文件系统的物理磁盘按照VFS的组织概念布局。其他非Unix风格的文件系统也可以工作在Linux上。但是需要在使用现场引入一些特殊处理,在内存中建立满足VFS的组织结构。

4、

 

 

VFS对象和数据结构:

超级块对象:代表一个已经安装的文件系统

索引节点:代表一个具体文件,主要包含文件的信息

目录项对象:代表一个目录项(没有对应的磁盘数据结构,没有葬、写回标志)

文件对象:代表进程打开的文件(没有对应的磁盘数据),同一个文件被多个进程打开,存在多个文件对象。

 

日志文件系统:

 

超级块:文件系统的控制信息存储在超级块中,超级块是一种包含文件系统信息的数据结构。

 

    所谓文件系统,就是VFS,而根文件系统是其中的一个属性项而已;而每个设备本身是内核数据区里的一个数据结构,经过VFS的映射,才被用户层视为一个文件。所以,内核要创建继而访问一个设备,是可以直接传递"/dev/ram"这样的参数给create_dev函数来实现的。

    至于设置根文件系统,只是C语言里对一个数据结构的成员赋值而已。而所谓目录项,也是内核数据区里的一个数据结构。要创建/dev/ram0,只需赋值根文件系统的值,创建dev目录项,并且创建这个ram设备即可。

    要区分内核层以及用户层的区别,可以用一个很简单的逻辑来解释,试想一个,你在用户层删除了/dev里的ram0,那是不是内核就没有了这个设备了呢?再想,如果你删除了你正在使用的硬盘的设备节点/dev/hda,那么是不是内核就不能操作硬盘了呢?答案是很明显的,没有了设备节点,只意味着用户不能操作该设备,并不代表内核不能访问该设备。在最新的设备管理体系中,设备管理的操作逻辑是放在用户层的,那就是udev,默认的规则中没有/dev/eth0设备节点,但你可以照样上网。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值