美文网首页转载部分
Linux 文件IO的流程到底如何工作的

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

作者: 简书徐小耳 | 来源:发表于2019-03-21 17:28 被阅读62次

摘抄:https://www.ibm.com/developerworks/cn/linux/l-cache/index.html

image.png

概述

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

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

  • 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的上层抽象(接口)

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

磁盘的簇(硬件缓存)-->文件系统的块(通过队列去执行块的IO)-->文件系统的pageCache(块内容变为bufferCache,BufferCache组装成PageCache)-->到物理Page-->进程一次性读取一个或多个Page内容。

MMAP

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

LInuxIO的五种模型

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

个人认为其实只有4中IO模型,因为多路复用不属于新的IO,只是一种IO的管理方式,IO的五种模型分类主要是从read角度来区分的,而对于文件IO 从read角度可以看为是NIO(当然如果出现磁盘抖动也会出现阻塞),从write角度可以分为Buffer IO和DIO,前者是主要依赖于page cache,后者绕过pageCache 直接写块。IO的分类只是角度不同,就像人可以分为男人和女人,也可以分为好人和坏人

相关文章

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

    摘抄:https://www.ibm.com/developerworks/cn/linux/l-cache/in...

  • Linux 文件IO 和 标准IO

    [TOC] Linux 文件IO 和 标准IO Linux 文件IO Linux中做文件IO最常用到的5个函数是:...

  • Linux编程学习笔记 | Linux IO学习[2] - 标准

    在上一篇Linux编程学习笔记 | Linux IO学习[1] - 文件IO中,我总结了Linux下的文件IO。文...

  • 2、Linux IO模型

    下图是Linux处理IO调用的流程图: Linux IO模型分为5种: 阻塞IO 非阻塞IO IO复用 事件驱动I...

  • 浅析 Linux 文件 IO 读写

    浅析 Linux 文件 IO 读写 Linux的文件IO子系统是Linux中最复杂的一个子系统(没有之一)。读者可...

  • Linux 文件IO

    在linux中一切皆文件。1、creat 2、open 3、close 4、read 5、write 6、lsee...

  • 2019-06-16 IO文件操作---C语言

    Linux下普通IO文件操作---C语言 普通文件IO总结 FILE结构体 打开文件fopen函数 文件指针名=f...

  • 11.标准IO库

    标准IO和文件IO有什么区别 看起来使用时都是函数,但是:标准IO是C库函数,而文件IO是linux系统的API ...

  • IO调度器(译)

    这篇文章中,将会介绍Linux上常见的IO Scheduler,以及如何修改Linux上面的默认的IO Sched...

  • Linux磁盘IO流程

    概述 文件IO的分层设计 先看图: malloc的buf对应application buffer,用户空间; fw...

网友评论

    本文标题:Linux 文件IO的流程到底如何工作的

    本文链接:https://www.haomeiwen.com/subject/dzccvqtx.html