我的博客:www.shishangguan.net
以下以2.6.32版本的内核源码为例:
虚拟文件系统与具体文件系统之间是几组操作函数的对应,包括file_operations,dentry_operations, inode_operations 等操作函数指针。
进程由 include/linux/sched.h(第1457-1460行) 中的 struct task_struct表示,在这个结构中有两个跟文件系统有关的指针:
1 1456 /* filesystem information */ 2 1457 struct fs_struct *fs; 3 1458 /* open file information */ 4 1459 struct files_struct *files;
这两个指针分别指向struct fs_struct 和 struct files_struct。
struct fs_struct是文件系统的信息,定义在include/linux/fs_struct.h中:
6 struct fs_struct { 7 int users; 8 rwlock_t lock; 9 int umask; 10 int in_exec; 11 struct path root, pwd; 12 };
内核中结构之间的关系如图:
图片出自《linux内核源代码情景分析》
图片出自《深入linux内核架构》