[LINUX]inode文件索引节点介绍

inode索引节点:

  • ①inode索引节点是一种数据结构,是VFS文件系统要求文件系统必须要实现的一个部分。以磁盘文件系统为例,inode结构体数据一般以线性的方式(数组),存储在磁盘上(一般磁盘布局是引导块、超级块、inode索引、数据块)4个布局。
  • ②inode结构与一个特定的文件相对应,在磁盘上,主要包括一些文件大小、修改时间、创建时间、inode修改时间、所属用户、文件操作权限、联结数、数据块号等文件强相关的数据。
  • ③内存中的inode节点:inode节点不可能直接从磁盘上去读取的,所以还是会放到内存中,那么就会有一个容量的问题,和缓存一样,内核有一套几乎一摸一样的空闲队列和hash表,其中空闲队列会预分配一系列的内存中inode结构体,稍微会多一些运行时的东西,比如引用计数(打开一个文件就会加一个引用计数,关闭后才会释放),以及一些处理并发、等待的专用数据结构,比如锁之类的,还有一个比较关键的是id,因为内存中是所有文件系统的inode节点一起管理的(这个缓存应该在VFS系统模块中),所以有设备号+inode号(由于在磁盘是线性存储的,所以这里的inode号实际上就是inode信息在磁盘上面的数组索引,而超级块中会有inode节点的首地址信息,这样通过偏移,就能够找到对应的inode节点在磁盘上面存储的位置。平时空闲态都是空的,需要读取的时候,会从磁盘读入内存,并且会放到hash表中,进行上锁,后续的操作和buffer cache完全一致的,用完后会将锁释放,这样其他进程可以访问这个inode节点,但是hash表中的内容实际上还是暂时存在的,这样后续使用的时候,可以直接进行使用。
  • ④所以这套缓存机制在内核中不仅仅在buffer cache中进行了使用,在VFS等其他地方其实也用了这个buffer cache,还是比较常用的,另外其实平时程序文件加载到进程也用了buffer cache进行缓存的,因为运行某一个程序,除了准备工作之外,主要进行的还是文件读取的操作。- - ⑤稍微和之前的buffercache存取逻辑有一点区别的地方是,inode节点的缓存,实际上并不是调用释放的时候,就释放的,释放的时候只是降低一下引用计数而已,只要引用计数达到0的时候才会真正的去进行释放。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值