linux目录数据结构

it2022-05-05  181

以下均参考于<unix/Linux编程实践教程> 由于这个书已经出版太久如果有纰漏.概不负责.等我看到APUE再综合说说.

本来想一句话over但是发现不能和之前一样 一句话说出来然后和久久开始两个垃圾的清谈各种思想理念.但是一句话总结完总是缺点什么,还是按照书上的顺序来,捋一遍好了.


一句话就是: unix目录就是一个有很多节点的链表.你可以通过节点找到文件或者下一个目录.

很多话[默书走起]:

unix有很多磁盘作为存储的地方,磁盘可以分区 每个分区又可以看做一个磁盘,磁盘又有磁道扇区,扇区又可以分成数据块.一个或者多个数据块上又可以做为文件系统.

文件系统又是由 超级块 i-节点表 数据块组成.

superblock记录文件系统的信息 大小,还有剩余空间 等等…

i-节点表:就是一张记录满i节点的表.i节点可以记录文件名称 文件属性 文件大小 文件类型 文件修改时间等等

数据块:存储文件内容的地方.

以touch a.c为例 说说这个文件创建过程.

首先内核找到一个空的i节点 往里写入a.c这个文件的文件信息.

然后根据a.c这个文件大小在数据块区找到满足大小的数据块,写入a.c文件的内容.

然后把数据块里找到的编号写入i节点.

然后在目录里写入a.c这个文件名和i节点号

总结:

目录实际上是由文件名和i节点构成.   目录内的每个文件或者子目录都有i 节点.i节点记录这些就像引用,根据节点可以找到节点对应的文件或者目录. 每个目录新建时都会默认携带两个东西 : .当前目录 …上一级目录,它们也有节点.根节点的 . …节点号是一样的.因为根目录不会再有父级目录了.

这一章我看了三遍 简直不可饶恕 愚蠢至极.不过证明了我确实是边学边忘.看完以后也不过如此 就是链表嘛.还有链接 软连接之类都是差不多建立在理解这个基础上. 发现这只是开始从第五章开始,看书都不能跳,都得从新看两遍…不可饶恕.


最新回复(0)