今天在写一篇关于Linux文件系统的博客时,画了一张这样的图:

这张图是用以说明Linux文件系统是怎样设计的,当时画的时候感觉很自然,而且似乎这张图也很清晰地展示了Linux文件系统中inode、block等组建所包含的内容。但我总感觉怪怪的,尤其是对那些”箭头——>“,总在疑惑”箭头“代表的意义,以及我为什么要用箭头来做这样的表述。再加上《鸟哥的Linux私房菜》一书中也有一段类似的内容,它是通过解释”读取/etc/passwd"文件中内容的读取流程来阐述的,该解释同样让我不解。
归结起来就是,Linux文件系统作为一个设计出来的静态实物,为什么可以通过这两种方式来解释:一种方式是通过画图(我所迷惑的不是画图,而是图中的箭头,给人一种在动态执行的感觉);另一种是通过跟踪一段流程(这也是一个动态的过程)。。。。。。那么问题来了,为什么静态的事物可以通过“动态”的方式去解释呢?这个问题至少让我觉得很是忐忑不安,因为觉得感性上的东西缺乏理论依据作为支撑。
强迫性地想了半天,总算想出了些结果,不至于那么忐忑。
- 画图的方式,尽管标有箭头,但实质上并不是一个动态的过程。。。之所以我们直觉上认为其是动态过程,这与我们的思维习惯有关,因为见到过太多“箭头”表示运动流程的实例,所以一见到箭头就条件反射了。其实箭头的含义有很多,可以用于静态表示A属于B,可以动态表示从A地到达B地,当然也可以静态表示A中存有B中的id,就像这里所用到的。该图中完全可以把箭头全部去掉,剩下的便是静态扁平化的磁盘存储,inode和block之间的关系也是可以看出来的(这里加上箭头只是为了使其之间的关系更加直观)。
- 在文件系统中,讨论纯静态的存在是没有任何意义的。也就是说,文件系统本身就具有“被”运动的特性。在操作系统运行的过程中,必然会不停地将inode和block调入内存,利用CPU进行处理读取,其本身便具有了“被”运动的特性。因此“跟踪一段流程”来解释Linux文件系统,并不是说文件系统本身拥有了运动的特性,而是说其作为操作系统被调用的对象而拥有了“运动”的特性。
- 跟踪一段流程,只能沿着一条线去“窥视”静态文件系统的一部分,而不具有全局性。所以要通过“跟踪流程”达到阐述整个文件系统的目的,就必须跟踪多段流程,或在每段流程的节点处进行可能的分类讨论。。一般在流程图中,习惯性地使用“箭头”表明一种时间上的前进,这也成了一种“自然”的做法。。