vfs中有4种主要的数据结构:
1 超级块对象,代表一个已安装的文件系统.super_block
2 索引节点对象,代表一个文件.inode
3 目录项对象,代表一个目录项.dentry
其中每种对象都包含一个操作对象.依次为super_operations,inode_operations,dentry_operations以及file_operations.各自操作不同的层次.然后我们的文件系统只需要实现这些方法,然后注册到内核就可以了.
然后是vfsmount结构,它表示了一个安装点,换句话说也就是一个文件系统实例.
第三个是files_struct结构,它主要是为每个进程来维护它所打开的句柄.这里只需要注意一个就是fd_array和fstable中的fd的区别.当进程数比较少也就是小于NR_OPEN_DEFAULT(32)时,句柄就会存放在fd_array中,而当句柄数超过32则就会重新分配数组,然后将fd指针指向它(然后我们通过fd就可以取得相应的file结构).
1 超级块对象,代表一个已安装的文件系统.super_block
2 索引节点对象,代表一个文件.inode
3 目录项对象,代表一个目录项.dentry
4 文件对象,表示一个被进程打开的文件.file
其中每种对象都包含一个操作对象.依次为super_operations,inode_operations,dentry_operations以及file_operations.各自操作不同的层次.然后我们的文件系统只需要实现这些方法,然后注册到内核就可以了.
然后是vfsmount结构,它表示了一个安装点,换句话说也就是一个文件系统实例.
第三个是files_struct结构,它主要是为每个进程来维护它所打开的句柄.这里只需要注意一个就是fd_array和fstable中的fd的区别.当进程数比较少也就是小于NR_OPEN_DEFAULT(32)时,句柄就会存放在fd_array中,而当句柄数超过32则就会重新分配数组,然后将fd指针指向它(然后我们通过fd就可以取得相应的file结构).