fs_struct,file_struct,file,file_operations等的关联关系
先上一张图:
task_struct不用多说,是Linux中的进程描述符;
fs字段指向fs_struct结构体,是用来记录这个进程的工作目录pwd,和它的根目录root;显然目录信息是由dentry结构体保存的;在linux中,目录也是一种文件,因此dentry结构体会有指向inode结构体的指针字段d_inode;
file字段指向files_struct结构体,这个结构体是用来记录该进程打开的所有文件的信息;每个打开的文件都会为它建立一个file(图中的files错误)结构体;files_struct结构体中,用fd_array[]数组字段,维护着所有指向file结构体的指针;
而每个被打开的file也有其所在目录f_entry; 所有的operations都是对应目录或是inode或是文件的操作方法;
在linux中打开文件需要知道文件的inode,而inode就是通过dentry来获取的;因此需要拿着dentry去找它下面的文件的inode;