30,读写操作

作者: AndyWei123 | 来源:发表于2020-05-07 01:00 被阅读0次
image.png

缓存IO:大多数文件系统使用缓存IO,对于读操作来讲,操作系统会先检查,内核的缓冲区有没有需要的数据。如果已经缓存了,那就直接从缓存中返回;否则从磁盘中读取,然后缓存在操作系统的缓存中。对于写操作来讲,操作系统会先将数据从用户空间复制到内核空间的缓存中。这时对用户程序来说,写操作就已经完成。至于什么时候再写到磁盘中由操作系统决定,除非显式地调用了 sync 同步命令。

直接IO:就是应用程序直接访问磁盘数据,而不经过内核缓冲区,从而减少了在内核缓存和用户程序之间数据复制。

  • write 过程

    • 调用 genric_perform_write 它里面是一个循环,每次写入对应的页
      • 调用 write_begin 对系统进行初始化工作,主要是ext4_journal_start 即日志文件系统准备,然后调用grab_cache_page_write 获取需要写入的缓存页

      • 日志系统模式:
        - jnuranl模式:这种模式在将数据写入文件系统前,必须等待元数据和数据的日志已经落盘才能发挥作用。这样性能比较差,但是最安全。
        - order 模式:这个模式不记录数据的日志,只记录元数据的日志,但是在写元数据的日志前,必须先确保数据已经落盘。这个折中,是默认模式。
        - writeblack模式:不记录数据的日志,仅记录元数据的日志,并且不保证数据比元数据先落盘。这个性能最好,但是最不安全。

      • iov_iter_copy_form_user_atmoic 即通过kmap_atomic 映射内核虚拟地址,然后将用户态数据拷贝到内核态。再使用kumap_atmoic 删除映射

    • ext4_write_end 结束日志写入,将数据写入缓存。
    • balance_dirty_pages_ratelimited 查看脏页数量是否超过限制
    • 脏页写入内存情况:
      用户主动调用 sync,将缓存刷到硬盘上去,最终会调用 wakeup_flusher_threads,同步脏页;
      当内存十分紧张,以至于无法分配页面的时候,会调用 free_more_memory,最终会调用 wakeup_flusher_threads,释放脏页;
      脏页已经更新了较长时间,时间上超过了 timer,需要及时回写,保持内存和磁盘上数据一致性。

  • read 过程

    • genric_file_buffer_read 直接查看page cache是否有缓存,假如不存在,然后读入该页,并进行预读。
    • copy_page_to_iter 将内容从内核态复制到用户态。

相关文章

  • 30,读写操作

    image.png 缓存IO:大多数文件系统使用缓存IO,对于读操作来讲,操作系统会先检查,内核的缓冲区有没有需要...

  • Python 学习笔记6 2018-04-13

    文件操作: 1,文件的读写操作 2,文件的各种系统操作 3,存储对象 1,文件的读写操作 读写数据: ...

  • 【2017-09-28】文件与IO(一)

    文件的读写操作 前导 python内置了读写文件的函数。读写文件,不是直接操作磁盘,现代操作系统不允许,所以在磁盘...

  • python012-文件操作

    文件的基本操作 1 文件操作步骤 打开文件 读写等操作 关闭文件 注意:可以只打开和关闭文件,不进行任何读写操作。...

  • 读写操作

    获取cookie 删除cookie 写入cookie

  • python读写文件

    python读写文件是很常见的操作,而多数情况下是对纯文件的读写操作。我们先看一下,纯文本是如何进行读写操作的。 ...

  • Android 基础之文件和数据库

    Java 文件流 1. 字节流文件操作(读写)的代码 2. 字符流文件操作(读写)的代码 3. 按行(读写)的代码...

  • 用Python实现磁盘IO操作全攻略,让数据流动起来!

    01 文件读写 1. 打开文件 读写文件是最常见的IO操作。Python内置了读写文件的函数,方便了文件的IO操作...

  • PythonのIO操作

    IO操作,即对硬盘上的数据进行读写操作。直接上代码: 对于读写操作,最后一定要关闭文件对象,因为文件对象会占用操作...

  • Error: access violation accessin

    frida 执行读写操作 表示 写入手机的路径 没有读写权限

网友评论

    本文标题:30,读写操作

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