系统中的每个进程都有自己的一组打开的文件,像根文件系统、当前工作目录、安装点等。
有三个数据结构将VFS层和系统的进程紧密联系在一起。
它们是files_struct,fs_struct,mnt_namespace。
struct files_struct {
atomic_t count; //自动增量
struct fdtable *fdt;
struct fdtable fdtab;
fd_set close_on_exec_init; //执行exec时需要关闭的文件描述符初值集合
fd_set open_fds_init; //当前打开文件的文件描述符屏蔽字
struct file * fd_array[NR_OPEN_DEFAULT];
spinlock_t file_lock; /* Protects concurrentwriters. Nests inside tsk->alloc_lock */
};
Protects concurrentwriters. Nests inside tsk->alloc_lock
保护此结构的自旋锁;