linux内核模式文件操作,Linux内核写文件过程-LinuxKernelExploration.PDF

Linux内核写文件过程-LinuxKernelExploration

Linux 内核写文件过程

Linux内核写文件过程

1

Linux 内核写文件过程

目 录Table of Contents

1  概述 4

2  虚拟文件系统与ext4文件系统层 6

2.1  sys_write () 6

2.2  vfs_write () 7

2.3  do_sync_write () 9

2.4  ext4_file_write () 10

2.4.1  Ext4文件系统extent特性 10

2.4.2  ext4_file_write ()函数分析 12

2.5  generic_file_aio_write () 14

2.6  __generic_file_aio_write () 15

2.7  generic_file_buffered_write () 18

2.8  generic_perform_write () 19

2.8.1  ext4文件系统address_space_operations 19

2.8.2  ext4文件系统delay allocation机制 20

2.8.3  genric_perform_write () 21

2.8.4  genric_write_end () 29

2.8.5  block_write_end () 30

2

Linux 内核写文件过程

图目录 List of Figures

图1 Linux内核块设备I/O流程 4

图2 Ext4文件系统间接块映射与Extent模式 10

图3 ext4_extent、ext4_extent_idx、ext4_extent_header数据结构 11

图4 ext4 extent树 12

图5 缓冲页与缓冲区头的关系 27

3

Linux 内核写文件过程

1 概述

用户进程通过系统调用write ()往磁盘上写数据,但write ()执行结束后,数据是否

立即写到磁盘上?内核读文件数据时,使用到了“提前读”;写数据时,则使用了“延迟写”,

即write ()执行结束后,数据并没有立即立即将请求放入块设备驱动请求队列,然后写到

硬盘上。

本文不考虑以O_DIRECT或O_SYNC方式打开文件的情形,我们仅考虑异步I/O。同步方式写的I/O流

程相对简单。

本文以Redhat Enterprise Linux 6 Update 3内核版本2.6.32-279.el6.x86_64为例,分

析内核写文件过程。

在分析具体源码之前,我们回顾一下Linux内核块设备I/O流程,如图1所示。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值