作者:
北亚数据恢复中心
超级块结构表示一个文件系统。它包含管理文件系统所需的信息,包括文件系统名称(比如 ext2)、文件系统的大小和状态、块设备的引用和元数据信息(比如空闲列表等等)。超级块通常存储在存储媒体上,但是如果超级块不存在,也可以实时创建它。可以在 ./linux/include/linux/fs.h 中找到超级块结构(见图 4)。
超级块结构和 inode 操作
![figure4.jpg](https://i-blog.csdnimg.cn/blog_migrate/cff03ce8b2fc0171951f9f48c64cba45.png)
超级块中的一个重要元素是超级块操作的定义。这个结构定义一组用来管理这个文件系统中的 inode 的函数。例如,可以用
alloc_inode
分配 inode,用
destroy_inode
删除 inode。可以用
read_inode
和
write_inode
读写 inode,用
sync_fs
执行文件系统同步。可以在 ./linux/include/linux/fs.h 中找到
super_operations
结构。每个文件系统提供自己的 inode 方法,这些方法实现操作并向 VFS 层提供通用的抽象。
inode 表示文件系统中的一个对象,它具有惟一标识符。各个文件系统提供将文件名映射为惟一 inode 标识符和 inode 引用的方法。图 5 显示 inode 结构的一部分以及两个相关结构。请特别注意
inode_operations
和
file_operations
。这些结构表示可以在这个 inode 上执行的操作。
inode_operations
定义直接在 inode 上执行的操作,而
file_operations
定义与文件和目录相关的方法(标准系统调用)。
inode 结构和相关联的操作
![figure5.jpg](https://i-blog.csdnimg.cn/blog_migrate/7f22f8d21eb0dc9db8a294e881648d9e.png)
inode 和目录缓存分别保存最近使用的 inode 和 dentry。注意,对于 inode 缓存中的每个 inode,在目录缓存中都有一个对应的 dentry。可以在 ./linux/include/linux/fs.h 中找到
inode
和
dentry
结构。
转载于:https://blog.51cto.com/508239/141432