一切皆文件 –一种顶层的设计思想
目的:
将整个计算机的所有资源虚拟成一个个文件(驿站包裹快递码),通过文件管理资源(包裹),达到统一管理所有文件的目的。
过程: 为了实现统一管理资源的思想,设计了一个虚拟文件系统(驿站)VFS
注释: VFS 一个抽象层级 :可以将底层实际的文件(实际的资源),通过文件系统本身兼容(可以理解为一个驿站可以接收京东‘天猫’顺丰‘圆通等不同包裹,进行统一的管理收发)
技术:
使用面向对象多态技术实现兼容,任何接入到系统的设备可以通过文件系统都可以进行操作(增‘删‘改’查),,而后虚拟文件系统它会对上层用户层(用户View层)提供一个系统统一调用的接口(一个电视,在外壳提供包括亮度‘音量‘色彩调节的按钮,一个个实体的按钮就是可以调用内部模块的接口,而一个个接口都是需要系统统一进行管理的),这就导致对于用户层来讲,一个个文件(实际的资源)就像一个个黑匣子(如果在你同时收到10000个快递,只发快递码,你压根就不知道这一个个码的具体意义,你只知道这是快递(文件 ))
作用:
通过VFS 提供的统一接口就能达到我管理文件的目的(非用户层),这就是他的作用
用户层怎么使用统一接口
过程:
- 用户程序(用户层)通过文件I/O (一些文件接口做系统调用作用,调用系统内部一些functions 模块) 使用系统调用模块 ,该中枢模块会调用 open 模块,该模块会创建一个struct file 对象(每个struct file 对象 对应一个struct inode 对象,Struct file 会提供一些方法操作struct inode,inode对象为用户层需使用底层某个文件的描述接口,通过这个inode对象就可以查看该文件实现什么样的功能,而一个描述对应只能是一个文件,不能张冠李戴,对应inode 对象和实际的文件本身是一一对应的关系,一个身体就是一个文件系统,小肠就是一个inode 对象,但是小肠本身其实是一个抽象、非具体的词,只是利于人本身理解,而如果我们这样讲:小肠是一个是消化管中最长的一部分,在成人全长5-7m,按位置与形态,分为十二指肠、空肠和回肠三部分,是食物消化与吸收的主要场所,这会让交流变得十分困难,而说小肠本身一个词,可以囊括一顿废话),正因为这个属性,struct inode 可以对应各种文件(设备文件、socket 文件、普通文件、目录文件,这些文件像管理人不同功能的系统,有管理消化系统,神经系统,内分泌系统等等)
- 注意上面所讲的,比如用户层每打开一个View窗口就会创建一个struct file对象,但是sturct inode是唯一的,因为打开同一个文件会创建多个struct file 对象,但是struct inode是唯一对应一个文件的,也就是说我们不论实在哪个手机上打开查看我同一个快递的快递码,对应的都是一个快递,这个例子还是有点不恰当
- 就是我同时喊多次姚老板,但是姚老板始终代表是同一个人