inode file 浅析

inode file 浅析

在open()操作时遇到此两个结构,查阅后整理下笔记之

张永辉 2012年10月10日
//**************************************************************************************************


inode 简介
    1 inode 是 UNIX 操作系统中的一种数据结构,它包含了与文件系统中各个文件相关的一些重要信息。
    2 inode或叫i节点 是指对文件的索引。文件是放在磁盘或flash上,就要编个目录,来说明文件的属性,如:在什么地方、大小等。便于操作系统用来找和管理。
    3 在linux中,即一个文件对应一个inode,inode结构表示一个具体的文件.
    4 #ls -i  或 ll -i  可以看到文件节点。inode 相同的文件是硬链接文件


file 简介
    1 file 是一个文件描述符(file descriptor)。表示打开的文件描述符.
    2 当一个文件被打开时,就产生一个文件描述符,多次打开就产生多个file,一一对应。
    3 他记录了文件的当前位移量,文件位移量等数据,为每一个打开文件的操作服务。
    4 它由内核在open时创建,可以传递给任何函数,直到最后关闭,由内核释放这个数据结构。
    所以一个i节点可以有0个或多个文件描述符。多个文件描述符可以对应一个i节点。

struct inode
{
  struct   list_headi_list;
  unsigned longi_ino;     // 每一个inode都有一个序号
  atomic_t i_count;       // reference count,以确保如果某个结构正在使用,它不会被不小心释放掉
  kdev_t   i_dev;         //*inode所在的device代码
  umode_t  i_mode;        // inode的权限
  nlink_t  i_nlink;       // hard link的个数
  uid_t    i_uid;         // inode拥有者的id
  gid_t    i_gid;         // inode所属的群组id
  kdev_t   i_rdev;        //*如果inode代表的是device的话,那此字段将记录device的代码
  off_t    i_size;        // inode所代表的档案大小
  time_t   i_ctime;       // inode的产生时间
  unsigned long i_state;  // inode目前的状态,可以是I_DIRTY,I_LOCK和 I_FREEING的OR组合
    ...  
};

struct file
{
    struct path     f_path;
    const struct    file_operations *f_op;  //该操作 是定义文件关联的操作的。内核在执行open时对这个 指针赋值。
    atomic_long_t   f_count;
     unsigned int   f_flags;                //该成员是文件标志。
    loff_t          f_pos;
    unsigned int    f_uid, f_gid;
    void            *private_data;          //该成员是系统调用时保存状态信息非常有用的资源。
    struct address_space    *f_mapping;
    ...
};

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值