Linux基础之IO栈

I/O栈

  Linux 存储系统的 I/O 栈,由上到下分为三个层次,分别是文件系统层、通用块层和设备层。

  • 文件系统层,包括虚拟文件系统VFS和其他各种文件系统的具体实现。VFS作用就是屏蔽不同的文件系统,为上层提供一套标准的文件访问接口;
  • 通用块层,包括块设备 I/O 队列和 I/O 调度器。Block Layer作用是屏蔽底层异构设备,向上提供统一的款设备访问接口;还可以优化调度I/O请求;
  • 设备层,包括存储设备和相应的驱动程序,负责最终物理设备的 I/O 操作。
    Linux基础之IO栈_第1张图片

I/O缓存

  存储系统的 I/O ,通常是整个系统中最慢的一环。所以, Linux 通过多种缓存机制来优化 I/O 效率。

  • 用户态缓存:包括用户数据缓存和标准库缓存,目的是减少系统调用次数;
  • 内核态缓存:文件系统缓存(Page Cache、索引节点缓存、目录项缓存等),块设备缓存(Buffer Cache);
  • 设备缓存:硬件设备内自带的缓存区;

Linux基础之IO栈_第2张图片

Direct I/O VS Buffered I/O

  Direct I/O是指绕过文件系统的缓存,直接访问通用块层的I/O请求;与此相反,Buffered I/O是指使用了文件系统缓存的I/O请求。

参考:

  1. 聊聊 Linux IO

你可能感兴趣的:(Linux)