免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1344 | 回复: 0
打印 上一主题 下一主题

[linux] 文件系统 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-12-30 12:52 |只看该作者 |倒序浏览
不同的文件系统有不同的实现,但和VFS的接口都是通过一个file_operation数据结构
(include/linux/fs.h),作为函数跳转表。

struct file_operation{
   struct module *owner;
   .. llseek()
   .. read()
   .. write()
   .. readdir()
   .. ioctl()
   .. mmap()
   .. open()
   .. flush()
   .. fsync()
   .. lock()
}

用户进程只和VFS交互。

-----------------------------------------
task_struct中的两个相关结构体

struct task_struct {

  /*
    struct fs_struct{
        atomic_t  count;
        rwlock_t  lock;
        int umask;

        /*
             文件的属性,如文件名、访问权限
             root  本进程的根目录,即用户登录时看到的根目录
             pwd   进程当前所在目录
             altroot  用户设置的“替换根目录” -- 再议

             dentry结构中有一个d_inode(struct inode)指针,指向记录着文件在
                   存储介质上的位置和分布信息的inode结构体
                   dentry 是逻辑文件
                   inode  是物理文件     所以多个dentry指向一个inode
         */
        struct dentry *root, *pwd, *altroot;


        /*
             对应着上三个结构
         */
        struct vfsmount *rootmnt, *pwdmnt, *altrootmnt;
     }

   */
   struct fs_struct *fs;//文件系统信息,全局的,与具体文件无关
   
   /*
       files_struct 主体是一个file结构数组
       每打开一个文件,进程就通过一个fid访问,fid实际是相应file 结构在数组中的下标
       每个file结构中
          f_op   指向该文件所属文件系统的file_operation
          f_dentry  指向该文件的dentry
   */
   struct files_struct *files;//已打开的文件的信息
}


---------------------

inode结构体


每个inode都有
       一个“i节点号”i_ino,同一文件系统中唯一
       一个“文件主”,为创建文件的用户,可改变 -- 系统每个用户都有一个uid标识,都属于一个组gid,所以inode也有两个对应i_uid、i_gid字段
       两个设备号  i_dev  除特殊文件外,一个索引节点总需存在在某个设备上,即i_dev
                 i_rdev  若索引节点达标的是某个设备(即不是常规文件),则需另一个设备号i_rdev
                (主设备号、次设备号)
       i_link  文件链接数,即文件别名数
       i_count [动态]文件共享计数

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u3/109164/showart_2135331.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP