合肥浦发建设集团网站,源码猫网站建设ym361,wordpress pdf 加密,wordpress底部栏文字一款操作系统要管理各种各样不同的硬件#xff0c;因为硬件的不同所以它们使用的文件系统也不同。但是按道理来说#xff0c;文件系统的不同对于用户来说可不是一件好事#xff0c;操作不同的硬件就要使用不同的方法。
但是Linux有一切皆文件。
简单来说#xff0c;Linux…一款操作系统要管理各种各样不同的硬件因为硬件的不同所以它们使用的文件系统也不同。但是按道理来说文件系统的不同对于用户来说可不是一件好事操作不同的硬件就要使用不同的方法。
但是Linux有一切皆文件。
简单来说Linux把所有不同的文件系统都抽象成同一个对象用户使用这一个对象就可以对底层不同的文件系统进行操作。
所以Linux中的一切皆文件从面向对象的角度来说就是多态。但是Linux是用C写的所以说它是多态是不准确的(因为C不是一门面向对象的语言)但是作为Linux的使用者确实感受到了多态这一特性。
多态是什么多态就是同一种操作方法放在不同的对象上这些对象有不同的响应行为。即使用统一的接口来处理不同的对象。
所以理解一切皆文件的本质就是搞清楚Linux对文件系统的管理是怎么做到多态的
Linux管理的硬件可能有键盘、网卡、显示器、磁盘等等这些硬件呢会有配套的驱动程序这些驱动程序当中会有让硬件执行某个操作的方法。所以使用者想使用这些硬件的时候实际上是在向Linux求助让Linux去调用这些硬件的驱动程序当中用户指定的操作方法。
因为硬件五花八门所以驱动程序各不相同。所以Linux想出了一个办法 你们这些硬件不是有驱动程序么驱动程序不是有控制硬件行为的方法么那我就把你们这些操作方法全都给汇聚起来然后再添加一些东西封装成一个struct_file结构体。 至此Linux内核当中就存在了一个汇聚所有文件系统的操作信息(汇聚一词是不准确的应该是抽象)。画一张图想必就明白了 这幅图描述了Linux管理文件系统的大概过程。 Linux在内核当中创建struct_file结构体该结构体里面有众多字段例如文件的类型、状态以及对应文件系统的操作方法的函数指针(如果没有则为空指针)等等字段。 那么用户在使用read()、write()等系统调用时Linux会根据用户传入的信息去确认使用哪个struct_file从而操作正确的硬件。 因为一切硬件、文件系统在Linux当中都是struct_file结构体对象 所以在Linux下一切皆文件。
因为Linux做出了抽象那么这个抽象层有一个专属的名词叫做VFS(虚拟文件系统)VFS使得用户可以直接使用read()、write()等系统调用而无需考虑具体的文件系统和实际的物理介质。 本篇文章只是对这些知识一个简单的理解实际上Linux做的工作比这复杂的多得多。