从文件系统看系统架构

linux实现了vfs,几乎任何一个可以交换数据的存在(我这里用一个很大的词:存在)都可以有一个vfs的代理,内存中就是一个inode结构,如果 你要操作它,那么需要一个file结构,而file结构拥有file_operations结构,该结构内存放有很多函数指针,指向一些具体的操作,这些操作将来都要和inode打交道,内核给用户一个统一的系统调用接口,然后这个系统调用的实现用来在file_operations里分发操作,这个系统 调用实际上就是一个多路复用的设施,这就是linux的vfs的全部了。
但是像没想过扩展,比如一个分层的驱动,这在linux下是完全可以实现的,实际上没有linux实现不了的,前面说过,linux都是小对象的组合,耦 合性低,扩展性炒好,很容易就可以组合成你需要的样子,比如usb驱动,块设备驱动,包括网络协议栈都是分层的驱动,但是这些东西给人的感觉很松散,(linux本身就是很松散,这才是linux,使他的杀手锏)我从来不敢奢望从网络协议栈驱动来学习怎么写一个块设备过滤器驱动,网络协议栈上可以用成熟的netfilter框架,这个框架是自成体系的,但是块设备呢?我无语...
还是不说的罢,windows的我就不说了,看看《天数夜读》吧,很详细。说说bsd吧(当然我可以说,看看源码吧,都在眼前...想不开了,寻短见了,看看这个世界吧,多美好...真是那样世界就完蛋了)
bsd提供了一个从用户接口到最底层的通用直通式通道,和linux一样,系统调用接口下面也是一个多路复用器,将请求分发到管道,套接字,文件...不同的是,bsd将各个驱动之间的关系处理得相当好,它让这些模块间联系更加紧密但是不增加耦合性,也就是说,这个通道我方那儿了,谁都可以用,只要遵守约定,这个和windows有点像,应该说windows和unix有点像才对,linux则相反,一切自己动手丰衣足食,linux简直就是高手们的玩 具,菜鸟的地狱!还是代码里见吧,搞程序只会说文解字,没用。

struct vop_vector {

你可能感兴趣的:(linux,windows,struct,vector,网络协议,null)