系统中的每一个进程都有自己的一组打开的文件 ,像根文件系统,当前目工作目录,安装点等。有四个数据结构将VFS层和系统的进程紧密联系在一起,它们分别是:files_struct,fs_struct,file_system_type 和namespace结构体。
我们先看两个图:
1.files_struct转载请尊重原创、保留相关链接本文来自多宝平台:http://www.mbodb.com
文件描述符是用来描述打开的文件的。每个进程用一个files_struct结构来记录文件描述符的使用情况,这个结构称为用户打开文件表(含有描述符表)。它是进程的私有数据。
1.1数据结构
files_struct 结构体定义在文件 include/linux/fdtable.h该结构体由进程描述符中的files 域指向。所有与每个进程相关的信息如打开的文件及文件描述符都包含在其中。
44struct files_struct {
//文件描述符表
45 /*
46 * read mostly part
47 */
48 atomic_t count; //共享该表的进程数
49 struct fdtable *fdt;