Chinaunix首页 | 论坛 | 博客
  • 博客访问: 217002
  • 博文数量: 27
  • 博客积分: 2010
  • 博客等级: 大尉
  • 技术积分: 360
  • 用 户 组: 普通用户
  • 注册时间: 2008-07-14 17:06
文章分类

全部博文(27)

文章存档

2011年(1)

2009年(5)

2008年(21)

我的朋友

分类: LINUX

2008-07-25 12:26:54

inode结构前四个字段就是用来帮助将inode串起来的字段,分别是

struct        ; //用于散列链表的指针
struct ; //用于描述索引节点当前状态的链表的指针
struct ; //超级块的索引节点的链表的指针
struct ; //引用索引节点的目录项对象链表的头
在虚拟文件系统里,有四个串行是用来管理inode的,分别是inode_unused、inode_in_use、sb->s_dirty、hash table;
inode_unused:使用i_list这个字段将目前还没使用的inode串在一起。
inode_in_use:用来将目前正在使用的inode串在一起,当一个inode被使用时,它会从inode_unused中被取出来,接着利用i_list字段放到inode_in_use中。
sb->s_dirty:用来将 dirty inode串行在一起。这个串行的开头位于super block的s_dirty字段,一样也是使用i_list串接。

所有正在使用中的inode都可以在inode_in_use串行中找到,但是,因为系统的inode太多,所以,串行可能会很长,如果慢慢找,在速度上比较慢,因此,每个使用中的inode都会计算出其hash value,并且放到hash table,但是hash table有时会有冲突的情形出现,因此每一个entry是由一个list串接起来,这个list就是利用i_hash字段来串接的。
至于 i_dentry是在dcache中使用的,dcache利用这个字段将inode串接起来。
阅读(1788) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~