Linux内核读文件过程-LinuxKernelExploration.PDF

  1. 1、本文档共35页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Linux内核读文件过程-LinuxKernelExploration

Linux 内核读文件过程 Linux内核读文件过程 1 Linux 内核读文件过程 目 录Table of Contents 1 概述4 2 虚拟文件系统与ext4文件系统层6 2.1 sys_read ()6 2.1.1 fget_light ()和fput_light ()7 2.2 vfs_read ()8 2.3 do_sync_read ()10 2.3.1 异步I/O 10 2.3.2 do_sync_read ()12 2.4 generic_file_aio_read ()14 2.5 do_generic_file_read ()17 2.5.1 address_space-readpage ()方法24 2.5.2 file_read_actor ()25 2.6 do_mpage_readpage ()26 2.7 mpage_bio_submit ()31 3 读数据完成返回过程31 3.1 读进程的阻塞和继续执行过程31 3.2 读数据返回过程34 2 Linux 内核读文件过程 图目录 List of Figures 图1 内核中块设备操作流程4 图2 __lock_page ()函数调用栈34 图3 读数据返回内核栈34 3 Linux 内核读文件过程 1 概述 我们对系统调用read ()非常熟悉,也常听说“零拷贝”。在看Linux 内核源码时,有很多 人会有一些困惑;比如读文件的整个流程是怎样的?内核是如何Cache 已经读取的文件数据? 驱动从磁盘上读取的数据是否会直接写到用户的缓冲区中?内核是在哪个地方分配空间来存储 将要读取的数据?是在哪个地方将当前进程阻塞,直至读取数据结束?“零拷贝”是如何实现 的? 本文以Redhat Enterprise Linux 6 Update 3 内核版本2.6.32-279.el6.x86_64为例,分析从 用户进程通过read ()读取文件,直至数据返回给用户的整个流程。 在我们分析源码之前,仍要回顾一下内核中块设备操作的流程,如图1所示。 Virtual Filesystem Switch Disk Caches Disk Disk Filesystem Filesystem Generic Block Layer I/O Scheduler Layer Block Device Driver Block Device Driver HDD SSD 图1 内核中块设备操作流程

您可能关注的文档

文档评论(0)

xiaozu + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档