31|外设通信:IO Cache与IO调度
LMOS
你好,我是 LMOS。
从这节课开始,我们进入 IO 相关基础知识的学习,想要开发高性能的应用程序,这些基础知识必不可少。
前面的课程里,我们已经对进程和内存有了一定了解。进程在运行时刻和 CPU 是紧密相关的,抽象出进程就是为了提高 CPU 的利用率。因此,我们关注进程和内存,等同于关注 CPU 和 RAM。
一个计算机系统,无论是 PC,还是手机,除了有 CPU 和 RAM,还有各种外设,如键鼠、硬盘、显卡、以太网卡、声卡等各种 USB 扩展设备。
这些设备独立在 CPU 和内存之外,统称为外设。但是,外设通信的速度、大小、数据类型和传输方式各不相同,所以为了实现系统的整体效率最大化,操作系统实现了 IO Cache 和 IO 调度。今天我们就来研究它们。
IO Cache
顾名思义,Cache 即为缓存,IO 是指令外设传输(IN/OUT)数据的操作。
缓存是怎么回事我们都知道,由此我们就可以这样理解 IO Cache:把外设的 IO 操作的数据保存起来,当重新执行 IO 操作时,先从之前保存的地方开始查找,若找到需要的数据,即为命中,这时就不要去操作外设了;若没有命中就去操作外设。其中的数据,会根据 IO 操作频率进行组织,把操作最频繁的内容放在最容易找到的位置,达到性能最优化。
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
本文深入介绍了外设通信中的IO Cache和IO调度的基础知识。首先,文章解释了IO Cache的概念,即将外设的IO操作数据保存起来,以提高系统整体效率。在Linux系统中,IO Cache包括Buffer Cache和Page Cache,用于缓存IO设备的读写数据。接着,文章详细描述了Linux内核中的IO操作过程,包括经过文件系统层、块层和设备层的逻辑层次,以及IO操作的具体流程。最后,文章介绍了IO调度的过程,包括pdflush线程的作用、块层的IO调度器对bio进行合并和排序,以及设备驱动程序处理IO请求队列的过程。通过本文的阐述,读者可以快速了解外设通信中IO Cache和IO调度的基本原理和作用,有助于理解和开发高性能的应用程序。文章还重点讨论了三种IO调度算法,分别是Noop、CFQ、Deadline,其中综合性能最好的是Deadline。文章还对硬盘结构和不同场景下的IO调度器选择进行了深入讨论,为读者提供了全面的技术知识。
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《计算机基础实战课》,新⼈⾸单¥68
《计算机基础实战课》,新⼈⾸单¥68
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(7)
- 最新
- 精选
- ryohei牛逼 这节课,很多之前不清楚的概念 弄明白了
作者回复: 哈哈 有帮助就好
2022-10-13归属地:湖北3 - 顾琪瑶很多不明白的点, 都在这个课程中解答了, 真的牛逼. 想问下这些资料都是从哪获取的呢
作者回复: 没有系统的资料 看linux代码
2022-10-14归属地:湖北2 - 苏流郁宓文件系统有ntfs和ext4,很多游戏软件只支持ntfs格式,由于磁盘运行效率远低于cpu,好的算法文件系统可以提高磁盘的利用效率(包括跳过磁片中的坏点) io cache是必须的,就好比如把d盘的文件a剪切到c盘中,观察可以得知,假如传输过程中故意关机等,再次开机文件a还在d盘。预计cpu是传输完再删除,这样尽可能的减少磁盘碎片(特别的减少不能被系统识别的碎片冗余存在),io cache也方便操作系统部分情况下延迟应对硬件需求!
作者回复: 是 的
2022-10-12归属地:湖北2 - VMNode图是 page cache 建立在 buffer cache 上,文稿写反了吧……
编辑回复: 问过老师了,你可能理解反了,你再结合课程内容想想看~
2023-02-01归属地:广东 - 后视镜想问下,mmap 文件的话,是否经过pagecache啊,没搞清楚mmap和pagecache的关系,希望得到老师的指点。
作者回复: 会经过pagecache
2022-11-07归属地:湖北 - 浩仔是程序员一直有个疑问,如果一个写操作,写到cache,还没写到磁盘,断电了,上层应用能感知吗?
作者回复: 不能
2022-10-26归属地:湖北 - 青玉白露固态硬盘的出现大大降低了io的耗时
作者回复: 是的 正确
2022-10-16归属地:湖北
收起评论