0
点赞
收藏
分享

微信扫一扫

Linux 文件IO的流程到底如何工作的

月白色的大狒 2021-09-25 阅读 172

概述

上图的整个流程可以分为从磁盘读取文件,以及从进程写入文件到磁盘。

从磁盘读取文件的流程如下(粗略的流程):

  • 1.文件系统从disk上读取内容到FS Cache(文件系统缓冲)的bufferCache中
  • 2.通过VFS(虚拟文件系统)从FS Cache的Page cache中获取数据---FS Cache 把Buffer Cache组装成PageCache(即一个PageCache包含多个bufferCache)。
  • 3.当PageCache的内容进入到物理内存Page,进程通过调用操作系统函数Read即可以获取Page数据。

从进程写数据到文件流程如下(粗略的流程):

  • 1.进程开始写数据的时候通过页表拿到可写的Page开始写数据
  • 2.通过VFS将数据写入到PageCache。
  • 3.调用文件系统的函数将PageCache数据写入到Disk

VFS和FS之间的关系

  • 由于linux会操作不同的文件存储介质,不同的介质需要不同的文件系统,而VFS可以堪称是FS的上层抽象(接口)

磁盘到用户进程之间细致的流程

MMAP

  • 1.可以看到内存管理系统有VMM(虚拟内存管理系统)可以通过mmap直接操作page cache,而不需要经过Page

LInuxIO的五种模型

  • 1.BIO
  • 2.NIO
  • 3.signal IO
  • 4.IO 多路复用
  • 5.AIO
举报

相关推荐

0 条评论