• 与进程联系的文件结构的关系示意图


    与进程联系的文件结构的关系示意图

    struct file
    
    {
    
     struct list_head        f_list;    /*所有打开的文件形成一个链表*/
    
     struct dentry           *f_dentry; /*指向相关目录项的指针*/
    
     struct vfsmount         *f_vfsmnt; /*指向VFS安装点的指针*/
    
     struct file_operations  *f_op;     /*指向文件操作表的指针*/
    
      mode_t f_mode;                                  /*文件的打开模式*/
    
      loff_t f_pos;                                   /*文件的当前位置*/
    
       unsigned short f_flags;                         /*打开文件时所指定的标志*/
    
       unsigned short f_count;                           /*使用该结构的进程数*/
    
       unsigned long f_reada, f_ramax, f_raend, f_ralen, f_rawin;
    
       /*预读标志、要预读的最多页面数、上次预读后的文件指针、预读的字节数以及
    
        预读的页面数*/
    
      int f_owner;                  /* 通过信号进行异步I/O数据的传送*/
    
      unsigned int         f_uid, f_gid;  /*用户的UID和GID*/
    
      int                 f_error;       /*网络写操作的错误码*/
    
     
    
      unsigned long f_version;           /*版本号*/
    
       void *private_data;                      /* tty驱动程序所需 */
    
     
    
    };
    struct files_struct {
    
         atomic_t count;        /* 共享该表的进程数 */
    
         rwlock_t file_lock;     /* 保护以下的所有域,以免在
    
    tsk->alloc_lock中的嵌套*/
    
         int max_fds;           /*当前文件对象的最大数*/
    
         int max_fdset;        /*当前文件描述符的最大数*/
    
              int next_fd;          /*已分配的文件描述符加1*/
    
          struct file ** fd;      /* 指向文件对象指针数组的指针 */
    
          fd_set *close_on_exec;  /*指向执行exec(  )时需要关闭的文件描述符*/
    
          fd_set *open_fds;     /*指向打开文件描述符的指针*/
    
           fd_set close_on_exec_init;/* 执行exec(  )时需要关闭的文件描述符的初            值集合*/
    
              fd_set open_fds_init;  /*文件描述符的初值集合*/
    
          struct file * fd_array[32];/* 文件对象指针的初始化数组*/
    
    };
    struct fs_struct {
    
             atomic_t count;
    
             rwlock_t lock;
    
             int umask;
    
            struct dentry * root, * pwd, * altroot;
    
             struct vfsmount * rootmnt, * pwdmnt, * altrootmnt;
    
    };
  • 相关阅读:
    查看uCOS-II的CPU使用率
    ARM的工作环境和工作模式
    一个简单的 JSON 生成/解析库
    [转] libtool的作用及应用
    Qt 使用 net-snmp 包的过程记录
    Qt 立体水晶按键实现
    xampp 修改 mysql 默认 root 密码
    mint 设置无线 AP
    dpkg 小记
    转-ubuntu清理卸载wine的残余项目
  • 原文地址:https://www.cnblogs.com/shaohef/p/3957048.html
Copyright © 2020-2023  润新知