首页 > 技术文章 > LINUX中的虚拟文件系统结构

yamadie 2013-12-19 23:03 原文

我的博客: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_structstruct 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内核架构》

推荐阅读