《Linux内核设计与实现》学习【8】—— 虚拟文件系统

1 VFS文件系统

  虚拟文件系统(VFS)为用户空间程序提供了文件和文件系统相关的接口,使应用通过统一的系统调用访问各种存储介质。
在这里插入图片描述
  虚拟文件中的4个主要对象:文件、目录项、索引节点和安装点

2 文件特性

  superblock:记录此 filesystem 的整体信息,包括inode/block的总量、使用量、剩余量, 以及档案系统的格式与相关信息等;
  inode:记录文件的属性,一个文件占用一个inode,同时记录此文件的资料所在的 block 号码;
  block:实际记录文件的内容,若文件太大时,会占用多个 block 。
  每个文件(不管是一般文件还是目录文件)都会占用一个 inode。

3 对象

(1)超级块对象
  定义在<linux/fs.h>
  结构体:struct super_block
  操作函数:struct super_operations

(2) 索引点对象
  <linux/fs.h>
  结构体:struct inode
  操作函数:struct inode_operations
(3) 目录项对象
  <linux/dcache.h>
  结构体:struct dentry
  操作函数:struct dentry_operations
  3种状态

  • 被使用:对应一个有效的索引节点,并且该对象由一个或多个使用者
  • 未使用:对应一个有效的索引节点,但是VFS当前并没有使用这个目录项
  • 负状态:没有对应的有效索引节点(可能索引节点被删除或者路径不存在了)

  目录项缓存

  • “被使用的”目录项链表;
  • “未被使用的”双向链表;
  • 散列表和相应的散列函数。

  先从缓存中找,VFS将目录项对象加入dcache中,dcache在一定意义上页提供对索引点的缓存。
(4) 文件对象
  文件对象表示进程已打开的文件。
  结构体:struct file
  操作函数:struct file_operations

3.5 其他

3.5.1 文件系统相关的数据结构

  struct file_system_type——用来描述各种特定文件系统类型
  struct vfsmount —— 描述一个安装文件系统的实例

3.5.2 进程相关的数据结构

   struct files_struct——由进程描述符中的 files 目录项指向,所有与单个进程相关的信息(比如打开的文件和文件描述符)都包含在其中。
  struct fs_struct——由进程描述符中的 fs 域指向,包含文件系统和进程相关的信息。
  struct mmt_namespace——由进程描述符中的 mmt_namespace 域指向。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值