。我们先看看读写在 Linux 里面大概的过程:
-
虚拟文件系统层的作 用:屏蔽下层具体文件系统操作的差异,为上层的操作提供一个统一的接口。正是因为有了这个层次,所以可以把设备抽象成文件,使得操作设备就像操作文件一样 简单。
-
在具体的文件系统 层中,不同的文件系统(例如 ext2 和 NTFS )具体的操作过 程也是不同的。每种文件系统定义了自己的操作集合。关于文件系统的更多内容,请参见参考资料。
-
引入 cache 层的目的是 为了提高 linux 操作系统对 磁盘访问的性能。 Cache 层在内存中 缓存了磁盘上的部分数据。当数据的请求到达时,如果在 cache 中存在该数据且是最新的,则直接将数据传递给用户程序,免除了对底层磁盘的操作,提高了 性能。
-
通用块层的主要工 作是:接收上层发出的磁盘请求,并最终发出 IO 请求。该层隐藏了底层硬件块设备的特性,为块设备提供了一个通用的抽象视图。
-
IO 调度层的功能:接收通用块层发出的 IO 请求,缓存请求并试图合并相邻的请求(如果这两个请求的数据在磁盘上是相邻的)。并根据 设置好的调度算法,回调驱动层提供的请求处理函数,以处理具体的 IO 请求。
-
驱动层中的驱动程 序对应具体的物理块设备。它从上层中取出 IO 请求,并根据该 IO 请求中指定的信息,通过向具体块设备的设备控制器发送命令的方式,来操纵设备传输数据。
-
设备层中都是具体的物理设备。定义了操作具体设备的规范。