- 目录也是一种文件,存储在磁盘上,只是文件的内容是按照约定的格式来写入的,内部写了该目录下的所有文件或者目录的名称,以及对应的inode编号。可以想象,这样就形成了一颗文件系统的目录树,存储在磁盘上。
- 每个节点存储自己的孩子节点,而根节点一般是固定的/目录。当我们给定一个文件的相对路径时,就在当前工作目录下(进程自身的一个属性),去查询是否有对应的相对目录(可能是递归的查询,先查有没有子目录,如果没有,就不用查下去的),这也是为什么通常会报的错误是no such file or directory,因为系统可能发现目录不存在就不往下查询了。一直到最后一级,才去查看是否有对应名称的文件。这个是可能的文件路径到inode节点的查询方式,类似于一棵树的遍历,当然,这个和inode一样,这颗树不一定一直存储在磁盘上面,也可以存储在高速缓冲中。
- 通常一个目录文件占据了一个磁盘块的大小,因此可以提前存储到内存中,这样从绝对路径到inode之间的转换过程就变成了:①查看是否有相关的目录的磁盘块,②查看最后一级目录中是否有想要的文件名称。③根据文件名称获取到inode节点,并将其打开(即设置对应的inode的引用数+1)
【注意】:这里需要纠正一点的是,如果只是打开一次文件,并不去读取,inode是无需更新的,因为引用数是inode内存结构中的概念,并不是inode磁盘结构中的字段。