出于对linux内核的迷恋,决定专研下linux内核,体会下其优秀的设计理念和先进的运行机制!今天接触了其兼容多文件系统的内核子系统------虚拟文件系统(VFS)。说, 使用WINDOWS系统的人可能都不知道会有别的文件系统,对于它们来说FAT32和NTFS就是一切,绝大多数操作都可以在其上面进行,所以根本不需要支持什么多文件系统。即使熟悉linux的一般开发者而言,虽然他们知道EXT2,EXT3,EXT4,知道linux支持多种文件系统,即使是FAT和NTFS,但要是问道为什么要支持这么多类型的文件系统以及具体是怎么实现的,可能就无法回答出满意的结果了。诚然,接触任何事物都有一个由浅入深的过程,我也不例外,以下是我自己的一些浅显理解,希望能起到抛砖引玉的效果吧。
怎样屏蔽掉底层实际文件系统的具体实现,使上层用户不必关心自己操作的实现细节,却可以在不同的文件系统上对文件进行copy,mv等等操作是linux实现支持多文件系统的动力所在。用过c++的开发人员知道,类是对实体所包含的相同属性的抽象(既然是抽象,那就是人类用自己特有的思维总结或者想象出来的,是人类强行赋予某事物的,并非现实中就存在的东西),而对象就是就是这种抽象下的具体实现。这就如同水果和苹果的关系。虚拟文件系统采用了面向对象思想的精髓,虽然linux内核主要是用c写的,是面向过程语言的产物,不可能用c++或者java等面向对象语言实现VFS,但是却借鉴了这种思想。
VFS提供了一个通用文件系统模型(也就是对所有文件系统共性的概括),并为其实现了一个用于与用户通信的接口,上层应用通过此接口实现对不同文件系统的操作,而不必关心是什么文件系统。
今天先写到这里,具体细节下次再讲解,本文只是个人的理解,如有不同看法可以提出。谢谢!