前言
本篇文章来介绍Linux中的文件系统。
相信大家都听过这么一句话,在Linux系统中,“一切皆文件”。
也就是说,你能想到的计算机中的任何东西,在linux中都可以映射成文件,比如线程、硬件等等。
既然一切皆文件, 那么操作系统中的信息交流就是通过文件的交流完成的。
本文首先会介绍Linux中的文件组织结构——VFS(虚拟文件系统)。
然后会介绍文件之间的交流方式,包括内存与硬盘之间交流的page cache和程序与程序之间交流的file descriptor。
VFS
VFS,全称Virtual File System
,也叫虚拟文件系统。是一个倒置的树状结构。其中根目录是整个树的根。
虚拟文件系统是操作系统内核(kernel)的一个功能。
它的作用就是将所有计算机中的实体抽象成一个文件,每一个目录就映射着计算机的某个区域。
抽象成文件有什么好处呢?
比如要给计算机换一个新硬盘,由于旧硬盘在Linux中已经被抽象成一个目录,那么只要不改动这个目录,底层换硬盘对整个操作系统的运行没有影响。
换句话说,VFS可以将硬件与软件解耦。
文件间的交流
内存与硬盘的交流——Page Cache
当操作系统运行一个程序的时候,会将程序需要的文件从硬盘中加载进内存。
而加载内存的过程中并不是一个字节一个字节地从内存中读出来,这样太慢了。
为了减少IO的次数,Li