从文件系统看系统架构
linux实现了vfs,几乎任何一个可以交换数据的存在(我这里用一个很大的词:存在)都可以有一个vfs的代理,内存中就是一个inode结构,如果 你要操作它,那么需要一个file结构,而file结构拥有file_operations结构,该结构内存放有很多函数指针,指向一些具体的操作,这些操作将来都要和inode打交道,内核给用户一个统一的系统调用接口,然后这个系统调用的实现用来在file_operations里分发操作,这个系统 调用实际上就是一个多路复用的设施,这就是linux的vfs的全部了。 但是像没想过扩展,比如一个分层的驱动,这在linux下是完全可以实现的,实际上没有linux实现不了的,前面说过,linux都是小对象的组合,耦 合性低,扩展性炒好,很容易就可以组合成你需要的样子,比如usb驱动,块设备驱动,包括网络协议栈都是分层的驱动,但是这些东西给人的感觉很松散,(linux本身就是很松散,这才是linux,使他的杀手锏)我从来不敢奢望从网络协议栈驱动来学习怎么写一个块设备过滤器驱动,网络协议栈上可以用成熟的netfilter框架,这个框架是自成体系的,但是块设备呢?...





