最近对Linux的学习呢,有很多很多不懂,不熟悉的命令。不过印象很深刻的一句话是,Linux下,一切皆文件。虽然不懂,但是觉得这话逼格真高哈哈。那么,就针对这一句话,加深理解看看吧。
“一切皆文件”,指的是,对所有文件(目录、字符设备、块设备、套接字、打印机等)操作,读写都可用fopen()/fclose()/fwrite()/fread()等函数进行处理。屏蔽了硬件的区别,所有设备都抽象成文件,提供统一的接口给用户。虽然类型各不相同,但是对其提供的却是同一套操作界面。更进一步,对文件的操作也可以跨文件系统执行。
然后,发现一个概念:Linux的VFS(Virtual File System)虚拟文件系统。
VFS正是以上Linux特性的关键所在。
1. 这里先记录下一些基础的概念,以便理解
文件系统:操作系统中负责管理和存储文件信息的软件机构。指定命名文件的规则。这些规则包括文件名的字符数最大量,哪种字符可以使用,以及某些系统中文件名后缀可以有多长。文件系统是操作系统用于明确磁盘或分区上的文件的方法和数据结构,即磁盘上组织文件的方法。各文件系统的信息对比可参考维基百科:https://en.wikipedia.org/wiki/Comparison_of_file_systems
windows和linux文件系统的差异:
1)规范方面的差异
linux只有一个单独的顶级目录结构。所有的一切从“root”开始,用‘/’代表,并且延伸到子目录。DOS/Windows有不同的分区,同时目录都存于分区上。可以简单的说:Windows的目录结构属于分区,而Linux分区‘加载’与目录结构。
2)权限上的差异
Windows用户分为两类:admin和limited,在安装一些软件的时候才有用户的限制。
Linux用户分为四类:超级管理员(也就是root权限),普通用户,同组用户,其他用户。root用户可以拥有任何操作,普通用户拥有自己的主目录和文件并拥有文件分配权限,可对其他用户授权。(权限分:读、写、运行)linux可对每一个文件进行授权,而用户只能对自己有权限的文件进行授权。
参考:https://www.zhihu.com/question/21135526
2. VFS虚拟文件系统
VFS,是Linux 内核中的一个软件层,用于给用户空间的程序提供文件系统接口;同时,它也提供了内核中的一个抽象功能,允许不同的文件系统共存。系统中所有的文件系统不但依赖 VFS 共存,而且也依靠 VFS 协同工作。
除了Linux标准的文件系统Ext2/Ext3/Ext4,Windows的vfat NTFS等,还有很多种文件系统,比如reiserfs,xfs,网络文件系统nfs(这些目前我都不大懂啦=。=)。Linux通过VFS这个中间层对这些文件系统提供支持。
VFS,向上,对应用层提供一个标准的文件操作接口。向下,对文件系统提供一个标准的接口,以便其他操作系统的文件系统可以方便的移植到Linux上。
VFS为底层文件系统提供了一个尽量大的通用模型,使得这个模型包含所有文件系统功能的合集。因此VFS封装了底层文件系统的所有功能和抽象,VFS负责把应用层的请求转发给特定的文件系统。
参考:http://blog.csdn.net/kickxxx/article/details/9468761
更详细的学习参考:http://blog.csdn.net/heikefangxian23/article/details/51579971
网友评论