搜索
bottom↓
回复: 12

初学Linux,请教大家,如何理解inode和file的区别和联系

[复制链接]

出0入0汤圆

发表于 2021-3-6 10:41:46 | 显示全部楼层 |阅读模式
额,如题,针对一个初学者,不用讲的太深入,也不要求太全面。
我只想有一个初步并且直观的印象,后续再慢慢理解其中的奥秘(大体明白其中的区别和联系即可)。
网上也有少量零碎的介绍,但我理解起来很费劲。
坐等大神讲解,非常感谢。

出0入24汤圆

发表于 2021-3-6 10:48:17 | 显示全部楼层
一个file是一瓶酒,inode是杯子,一瓶酒可能要很多杯子才能装下,杯子不够就装不下了。(这里不考虑用其它容器装酒)

出0入10汤圆

发表于 2021-3-6 16:24:27 | 显示全部楼层
本帖最后由 10xjzheng 于 2021-3-6 16:28 编辑

inode是文件的概述,包括文件的名字、修改日期、文件存放的地址等等,file就是文件数据具体所在的位置。所谓硬链接,就是有多个inode指向同一个file。
计算机中会有用很多中间层来解决问题,比如虚拟内存在内存和内存具体实现中分开来,使得内存可以不连续的,也可以用硬盘当作部分内存。
inode也是文件的中间层,具体我想可能为了解决有相同数据的文件空间占用的问题,可能还有其他考虑。

出0入0汤圆

 楼主| 发表于 2021-3-8 09:02:02 | 显示全部楼层
vtte 发表于 2021-3-6 10:48
一个file是一瓶酒,inode是杯子,一瓶酒可能要很多杯子才能装下,杯子不够就装不下了。(这里不考虑用其它 ...

感谢指教!

出0入0汤圆

 楼主| 发表于 2021-3-8 09:02:22 | 显示全部楼层
10xjzheng 发表于 2021-3-6 16:24
inode是文件的概述,包括文件的名字、修改日期、文件存放的地址等等,file就是文件数据具体所在的位置。所 ...

感谢指教!

出130入30汤圆

发表于 2021-3-8 11:05:46 | 显示全部楼层
UNIX高级环境编程,讲得比较清楚。

出0入4汤圆

发表于 2021-3-8 15:51:27 | 显示全部楼层
inode是linux内核管理文件的索引, 每个inode代表存储体上的一个文件。
file 或者说 struct file 是用户每打开一次文件,在内核中建立的一个记录; 打开的文件被关闭时相应的记录也被关闭。
还有,  每个文件只有一个inode, 但是多次打开该文件会产生多个struct file 记录。

出0入0汤圆

 楼主| 发表于 2021-3-8 18:54:43 | 显示全部楼层
sunliezhi 发表于 2021-3-8 15:51
inode是linux内核管理文件的索引, 每个inode代表存储体上的一个文件。
file 或者说 struct file 是用户每 ...

感谢阁下指教。
理解一下阁下的意思,我感觉:似乎inode相对于file更加偏底层一点。
总感觉,没有抓住它俩的本质区别。

出0入0汤圆

发表于 2021-3-9 08:53:49 | 显示全部楼层
我自以为已经入门Linux了, 居然没有听说过inode,  明天接着入门

出0入0汤圆

发表于 2021-3-9 09:48:28 | 显示全部楼层
inode 其实 应该是 vfs 这一层实现的概念, 可以对接传统的ext,亦可以对接 vfat 或者是设备。 比如vfat 需要在 vfat 文件系统实现下 做相关转换 实现supernode + inode的 支持。 而 对于硬件,比如一个字符硬件设备在打开之后,则是作为一个 special file方式 存在的,并且在打开的时候会把驱动层的 file ops 对接到 struct file的 ops, 这样用户层 就可以调用 read write等操作。 基本就实现了 一切接文件的 设计理念。 有点记不太清了,随手写的,可能有不太正确的地方。

出0入4汤圆

发表于 2021-3-9 10:06:14 | 显示全部楼层
擦鞋匠 发表于 2021-3-8 18:54
感谢阁下指教。
理解一下阁下的意思,我感觉:似乎inode相对于file更加偏底层一点。
总感觉,没有抓住它 ...

嗯, 纸上得来终觉浅, 绝知此事要躬行(read the fucking code)   

出0入0汤圆

发表于 2021-3-9 16:53:56 | 显示全部楼层
我自以为已经入门Linux了, 居然没有听说过inode,  明天接着入门

出0入198汤圆

发表于 2021-3-9 17:10:33 来自手机 | 显示全部楼层
denike 发表于 2021-3-9 16:53
我自以为已经入门Linux了, 居然没有听说过inode,  明天接着入门

你执行
ln 一个旧文件 新文件名
然后对旧文件随便做点什么操作,再看新旧文件的大小啊属性啊什么的。
然后想想如果是要你做,你该怎么实现这个功能,就知道了。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子论坛 -- 东莞阿莫电子网站 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2022-9-27 07:19

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表