Linux 循环无延时写文件,Linux内核延迟写机制-LinuxKernelExploration.PDF

Linux内核延迟写机制-LinuxKernelExploration

Linux 内核延迟写机制

Linux内核延迟写机制

1

Linux 内核延迟写机制

目 录Table of Contents

1  概述 4

2  Linux内核bdi系统 5

2.1  writeback主要数据结构 6

2.2  bdi-default 内核线程 9

2.2.1  bdi_register () 10

2.2.2  bdi_forker_task () 11

2.3  flush-x:y 内核线程 13

2.3.1  bdi_start_fn () 15

2.3.2  bdi_writeback_task () 16

3  脏页回写到磁盘 18

3.1  wb_do_writeback () 18

3.2  wb_writeback () 19

3.3  writeback_inodes_wb () 24

3.4  writeback_sb_inodes () 25

3.5  writeback_single_inode () 27

3.6  do_writepages () 31

3.7  ext4文件系统写数据流程 32

3.7.1  ext4_da_writepages () 32

3.7.2  mpage_da_map_and_submit () 39

3.7.3  mpage_da_submit_io () 43

3.7.4  ext4_writepage () 45

3.8  address space写数据流程 47

3.8.1  block_write_full_page () 47

3.8.2  block_write_full_page_endio () 48

3.8.3  __block_write_full_page () 48

3.9  写结束回调函数end_buffer_async_write () 53

附录 56

2

Linux 内核延迟写机制

图目录 List of Figures

图1 writeback主要数据结构关系 9

图2 bdi_writeback_task ()流程图 18

图3 ext4文件系统extent基本原理 33

图4 页面page与I/O wait_queue 56

3

Linux 内核延迟写机制

1 概述

在分析sys_write ()的源码过程中,generic_perform_write ()函数执行完后,会逐

层返回,直至sys_write ()返回,系统调用结束。但此时要写的数据,只是拷贝到内核缓

冲区中,并将相应的页标记为脏;但数据并未真正写到磁盘上。那么何时才会将数据写到磁

盘上,又由谁来负责将数据写到磁盘上呢?

由于页高速缓存的缓存作用,写操作实际上会被延迟。当页高速缓存中的数据比后台存

储的数据更新时,那么该数据就被称做脏数据。在内存中累积起来的脏页最终必须被写回磁

盘。在以下

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值