linux文件系统--虚拟文件系统与进程

来源:互联网 发布:免费淘宝客高佣金采集 编辑:程序博客网 时间:2024/05/22 08:21

1.fs_struct
struct fs_struct {//建立进程与文件系统的关系         atomic_t count;              /*结构的使用计数*/        rwlock_t lock;               /*保护该结构体的锁*/        int umask;                  /*默认的文件访问权限*/        struct dentry * root;        /*根目录的目录项对象*/        struct dentry * pwd;         /*当前工作目录的目录项对象*/        struct dentry * altroot;    /*可供选择的根目录的目录项对象*/        struct vfsmount * rootmnt;   /*根目录的安装点对象*/        struct vfsmount * pwdmnt;    /*pwd的安装点对象*/        struct vfsmount * altrootmnt;/*可供选择的根目录的安装点对象*/};
fs_struct保存了关联特定进程和文件的所有信息。

                         

(1)count

   count保存应用特定fs_struct的进程描述符的数目。

(2)umask

   保存一个掩码,它表示将要在打开的文件上设置的许可权。

(3)root,pwd和altroot

   root和pwd分别指向进程的根目录和当前工作目录。altroot指向可选根目录的目录项结构。

(4)rootmnt,pwdmnt和altroot,分别指向进程根目录的安装文件系统对象,当前工作目录的安装文件系统和可选根目录的安装文件系统对象。

2.files_struct

   files_struct包含打开文件和其描述符的相关信息。

include/linux/file.h22  struct files_struct {23    atomic_t count;24   spinlock_t file_lock25    int max_fds;26    int max_fdset;27    int next_fd;28    struct file ** fd;  29    fd_set *close_on_exec;30    fd_set *open_fds;31    fd_set close_on_exec_init;32    fd_set open_fds_init;33    struct file * fd_array[NR_OPEN_DEFAULT];34  };
(1)max_fds

   表示进程能够打开的文件的最大数。默认值32.

(2)max_fdset

   表示文件描述符的最大值。

(3)next_fd

   保存下一个将要分配的文件描述符的值。

(4)fd

   fd数组指向打开的文件对象的数组。

(5)fdset

   fdset数据类型可被追溯到保存无符号整型数组的结构体,数组的每个元素保存一个文件描述符。

   文件描述符的宏


描述

FD_SET

在集合中设置文件描述符

FD_CLR

从集合中清楚文件描述符

FD_ZERO

清除文件描述符集.

FD_ISSET

如果文件描述符被设置,返回


(6)fd_array

fd_array素组指针指向前32个打开的文件描述符。
进程与文件系统各部分的关系:

图片示例_进程与超级块、文件、索引结点、目录项的关系


原创粉丝点击