概述:
1.应用层访问具体文件的层次图
2.
3.
4.
5.
6.
一.应用层访问具体文件的层次图
结构图:
文件与文件系统的关系:
从上图中我们看出,文件首先分类,归属于不同的文件系统
文件与进程之间的关系:
进程与文件的连接,即"已打开文件"是进程的私有财产,归具体进程所有,那么这种连接的file结构必然与进程的task_struct结构存在着联系
struct task_struct {
......
/* filesystem information */
struct fs_struct *fs;//指向文件系统的信息,比如根目录,访问权限等
/* open file information */
struct files_struct *files;//指向关于已打开的文件信息
......
}
files_struct的主体是struct file 结构体数组:d_array[NR_OPEN_DEFAULT];应用层拿到的是一个"打开文件号"fid即数组下标,由该下表找到数组对应的实际file,在struct file中包含着具体的f_ops,最终通过绑定在f_ops上的open,read,write,close函数来访问具体的文件
每个文件对应两个信息:
dentry:对应逻辑上的文件,不同的进程可以操作同一个文件,造成读写位置等各信息都不一样
inode:对应物理上的文件
inode 与dentry的关系为一对多的关系