個人博客: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_struct 和 struct files_struct。spa
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