IO缓冲区

在计算机存储体系中,缓存(cache)的使用非常的广泛,结合程序的局部性原理,为了提高寻址的效率,在CPU寻址的体系中采用了缓存技术,简单来说就是将数据存储起来以备后续使用。

如高速缓存(cache)产生的原理类似,在 I/O 过程中,读取磁盘的速度相对内存读取速度要慢的多。因此为了能够加快处理数据的速度,需要将读取过的数据缓存在内存里。而这些缓存在内存里的数据就是高速缓冲区(buffer cache),下面简称为 buffer

具体来说,buffer 是一个用于存储速度不同步的设备或优先级不同的设备之间传输数据的区域。一方面,通过缓冲区,可以使进程之间的相互等待变少,从而使从速度慢的设备读入数据时,速度快的设备的操作进程不发生间断。另一方面,可以保护硬盘或减少网络传输的次数。

Buffer 和 Cache

buffer(缓冲) 和 cache(缓存) 是两个不同的概念:

  • cache 是高速缓存,用于 CPU 和内存之间的缓冲,是在读取硬盘中的数据时,把最常用的数据保存在内存的缓存区中,再次读取该数据时,就不去硬盘中读取了,而在缓存中读取。
  • buffer是 I/O 缓存,用于内存和硬盘的缓冲,是在向硬盘写入数据时,先把数据放入缓冲区,然后再一起向硬盘写入,把分散的写操作集中进行,减少磁盘碎片和硬盘的反复寻道,从而提高系统性能。

简单的说,cache 是加速 ,而 buffer 是缓冲 ,前者解决读的问题,保存从磁盘上读出的数据,后者是解决写的问题,保存即将要写入到磁盘上的数据。

IO缓冲(buffer)和高速缓存(cache)相关推荐

  1. 缓冲(Buffer)与缓存(Cache)

    缓冲介绍 缓冲区是一块特定的内存区域.开辟缓冲区的目的是通过缓解应用程序上下层之间的性能差异,提高系统的性能.在日常生活中,缓冲的一个典型应用是漏斗. 缓冲最常用的场景就是提高I/O的速度.为此,JD ...

  2. linux内核学习6:Linux的CPU高速缓存cache和页高速缓存cache,buffer

    一.CPU高速缓存(cache) 参考:https://blog.csdn.net/u014470361/article/details/80060701 参考:https://blog.csdn.n ...

  3. 缓存(cache)与缓冲(buffer)

    相关文章: <MySQL:更新过程(buffer pool与redo.bin.undo log)> <Redis:持久化RDB与AOF> <Java8之BufferedI ...

  4. linux的每次IO大小控制,linux文件io缓冲

    linux文件io缓冲 出于速度和效率考虑,系统io调用(即内核)和标准 C语言库的io函数(即 stdin 函数)在操作磁盘文件时会对数据进行缓冲. read(),write()系统调用在操作磁盘文 ...

  5. Linux内存buffer和cpu cache的区别

    1.cache 和 buffer的区别 cache是高速缓存,用于CPU和内存之间的缓冲: buffer是I/O缓存,用于内存和硬盘的缓冲<1>.Cache最初用于cpu cache, 主 ...

  6. 缓冲区(buffer)与缓存(cache)

    下面介绍缓冲区的知识. 一.什么是缓冲区 缓冲区(buffer),它是内存空间的一部分.也就是说,在内存空间中预留了一定的存储空间,这些存储空间用来缓冲输入或输出的数据,这部分预留的空间就叫做缓冲区, ...

  7. netty io.netty.buffer简介

    2019独角兽企业重金招聘Python工程师标准>>> io.netty.util.ReferenceCounted 此接口代表一个引用计数的对象,此对象需要显示的释放. 当一个Re ...

  8. 例说STM32F7高速缓存——Cache一致性问题(一)

    例说STM32F7高速缓存--Cache一致性问题(一) 例说STM32F7高速缓存--Cache一致性问题(二) 例说STM32F7高速缓存--Cache一致性问题(三) 为了说清楚这个问题,我特意 ...

  9. 简单聊聊PostgreSQL buffer与OS cache

    0.概述 缓存可以说是数据库中相当重要的一部分,很多性能相关的问题都与之息息相关.那么我们今天就聊聊在PostgreSQL中的缓存. 1.为什么需要缓存? 在数据库中似乎我们最关心的是磁盘IO,经常会 ...

最新文章

  1. C语言编程技巧-signal(信号机制)
  2. 轻松练:如何从900万张图片中对600类照片进行分类|技术头条
  3. VisionSeed 腾讯优图实验室
  4. winform频繁刷新导致界面闪烁解决方法
  5. 我用24小时、8块GPU、400美元在云上完成训练BERT!特拉维夫大学新研究
  6. CodeSmith(2):对象和控制台
  7. 系分考试论文实例12篇
  8. jQuery easyUI--数据表格 datagrid 的使用
  9. React Native 蓝牙4.0 BLE开发
  10. 编写高质量代码:改善Java程序的151个建议(第3章:类、对象及方法___建议36~40)
  11. SAP ABAP实用技巧介绍系列之 通过ST03G查询指定transaction的trace data
  12. matlab井深测量,一种井深测量系统及方法与流程
  13. python 数据逐个验证_案例实战 | Python 实现 AB 测试中常见的分层抽样与假设检验 (附代码和数据集)...
  14. 《敏捷可执行需求说明 Scrum提炼及实现技术》—— 3.4 关注干系人的“愿求”...
  15. 判断一个字符(小写变为大写,大写变小写,数字不变,空格输出space,其他字符输出other)C语言
  16. 与孩子一起学编程python_与孩子一起学编程(Python读书笔记3)
  17. Atitit各种驱动的xdd tdd bdd设计 ATDD ddd v3 u66.docx Atitit各种驱动的xdd tdd bdd设计 ATDD ddd v2 s66 开发方法论与效率提
  18. 豆瓣评论【数据集分享】
  19. ArcGIS投影坐标系xy转地理坐标系经纬度
  20. Shaolin(map)

热门文章

  1. 概率论 —— 随机事件与概率
  2. Questa CDC(安全性测试)
  3. # CF #807 Div.2(A - D)
  4. 常见即时通讯:网易IM 、腾讯IM、环信IM、融云IM、leancloud IM介绍
  5. 网易im即时聊天php怎么接入,网易云信IM即时通讯功能接入方式与流程_如何收费_企业服务汇...
  6. 一步一步安装CentOS7(图文)
  7. [ROS学习笔记1]在RViz中查看激光雷达数据
  8. 模态综合医疗时间序列数据:REAL-VALUED (MEDICAL) TIME SERIES GENERATION WITH RECURRENT CONDITIONAL GANS
  9. android获取存储设备根目录,浅谈android获取存储目录(路径)的几种方式和注意事项...
  10. UltraEdit 多词搜索