先讲一下系统是如何管理文件的。
如管理进程一般,管理文件也是有一堆数据结构来管理的。管理文件里面有一个叫file_struct的结构体。
看一下内核代码:
代码很长,截了一小段而已。
里面有一个成员类型很有趣,叫struct file_operations,我们可以看一下里面是什么。
我们惊奇的发现:里面是一堆函数指针,也就是说,linux内核把函数放进了结构体里面。这不就是面向对象的思想吗!
先说结论:确实是面向对象思想,linux把所有硬件,目录,文件等都当成文件对象来管理了。这还是一种多态!
大致过程是这样的:
在系统层面,为了管理硬件,file结构体里面的IO函数根据不同的硬件调用不同的驱动层面的IO函数,实现用文件的角度来管理所有硬件
总结一下:为什么linux一切都可以是文件,并不是说实体是文件,而是以文件的方式去做管理,以文件的角度去看待硬件和软件。这是一种多态思想!