LINUX中的虛擬文件系統結構

個人博客:www.shishangguan.netnode

如下以2.6.32版本的內核源碼爲例:linux

虛擬文件系統與具體文件系統之間是幾組操做函數的對應,包括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_structspa

struct fs_struct是文件系統的信息,定義在include/linux/fs_struct.h中:.net

  6 struct fs_struct {
  7         int users;
  8         rwlock_t lock;
  9         int umask;
 10         int in_exec;
 11         struct path root, pwd;
 12 };

內核中結構之間的關係如圖:3d

    圖片出自《linux內核源代碼情景分析》指針

 

圖片出自《深刻linux內核架構》code

相關文章
相關標籤/搜索