Cache 和 Buffer 都是缓存,主要区别是什么?
存储器的高速缓冲存储器存储了频繁访问的RAM位置的内容及这些数据项的存储地址。当处理器引用存储器中的某地址时,高速缓冲存储器便检查是否存有该地址。如果存有该地址,则将数据返回处理器;如果没有保存该地址,则进行常规的存储器访问。因为高速缓冲存储器总是比主RAM存储器速度快,所以当RAM的访问速度低于微处理器的速度时,常使用高速缓冲存储器。
Cache和Buffer在很多时候都被叫做缓存,那么它们是否一样呢?我们从以下几个方面来看。
一、定义
Cache:即高速缓冲存储器,是一种特殊的存储器子系统,其中复制了频繁使用的数据以便于CPU能够快速地访问。
Buffer:即缓冲寄存器,简称缓冲器,分为输入缓冲器和输出缓冲器。前者的作用是将外设送来的数据暂时存放,以便处理器将它取走;后者的作用是用来暂时存放处理器送往外设的数据。
二、单词本义
既然用这个单词来表示,那么肯定和其本义有着相似的地方,所以单词本义也可以在一定程度帮助我们理解这两个术语。
2.1 Buffer
Buffer 常见的释义是指如下图中铁道端头那个巨大的弹簧一类的东西,其作用是万一车没停住,撞弹簧上减速慢,从而增加其减速时间,根据动量定理Ft=mΔv,我们可以知道其冲击力减小了,从而减小其危险性,叫做缓冲。

2.2 Cache
Cache常见的是下面这个:就是一种保管箱。图中右边的Food Cache(生锈了,导致部分字母看不清了)就是森林中设置的用来存放应急物资的保管箱,作用是把我们需要的东西放在更容易拿到的地方,或许按照台湾的翻译更好一点叫做快取。
三、在计算机中使用当中的不同
3.1 Buffer的核心作用是缓冲。
比如你每秒要写或读100次硬盘,对系统冲击很大,浪费了大量时间在忙着处理开始读写和结束读写这两件事上。用个buffer暂存起来,变成每10秒写一次硬盘,对系统的冲击就很小,写入效率高了,极大缓和了冲击。
3.2 Cache的核心作用是加快取用的速度。
比如你一个很复杂的计算做完了,下次还要用结果,就把结果放手边一个好拿的地方存着,下次不用再算了,加快了数据取用的速度。
所以,如果你注意过存储系统的话,你会发现硬盘的读写缓冲/缓存名称是不一样的,叫write-buffer和read-cache。很明显地说出了两者的区别。
当然很多时候宏观上说两者可能是混用的。比如实际上memcached很多人就是拿来读写都用的。不少时候Non-SQL数据库也是。严格来说,CPU里的L2和L3 Cache也都是读写兼用——因为你没法简单地定义CPU用它们的方法是读还是写。硬盘里也是个典型例子,buffer和cache都在一块空间上,到底是buffer还是cache。
作者:耑新新,发布于 博客园
转载请注明出处,欢迎邮件交流:zhuanxinxin@foxmail.com
Cache 和 Buffer 都是缓存,主要区别是什么?的更多相关文章
- Cache 和 Buffer 都是缓存,主要区别是什么?【转】
作者:Towser 链接:https://www.zhihu.com/question/26190832/answer/32387918 来源:知乎 著作权归作者所有.商业转载请联系作者获得授权,非商 ...
- Page cache和Buffer cache[转1]
http://www.cnblogs.com/mydomain/archive/2013/02/24/2924707.html Page cache实际上是针对文件系统的,是文件的缓存,在文件层面上的 ...
- page cache和buffer cache
因为要优化I/O性能,所以要理解一下这两个概念,这两个cache着实让我迷糊了好久,通过查资料大概明白了两者的区别,试着说下. page cache:文件系统层级的缓存,从磁盘里读取的内容是存储到这里 ...
- Linux Free命令每个数字的含义 和 cache 、buffer的区别
Linux Free命令每个数字的含义 和 cache .buffer的区别 我们按照图中来一细细研读(数字编号和图对应)1,total:物理内存实际总量2,used:这块千万注意,这里可不是实际已经 ...
- cache与buffer
Cache 缓存区,是高速缓存,是位于CPU和主内存之间的容量较小但速度很快的存储器,因为CPU的速度远远高于主内存的速度,CPU从内存中读取数据需等待很长的时间,而 Cache保存着CPU刚用过的 ...
- cache与buffer的区别
Cache vs Buffer 高速缓存和缓冲区 缓存区cache和缓冲区buffer都是临时存储区,但它们在许多方面有所不同.缓冲区buffer主要存在于RAM中,作为CPU暂时存储数据的区域,例如 ...
- cache和buffer区别探讨
一. 1.Buffer(缓冲区)是系统两端处理速度平衡(从长时间尺度上看)时使用的.它的引入是为了减小短期内突发I/O的影响,起到流量整形的作用.比如生产者——消费者问题,他们产生和消耗资源的速度大体 ...
- Cache 和 Buffer 区别是什么
一 从常识来说,cache叫缓存,buffer叫缓冲. 二 尴尬的是缓存是什么?缓冲是什么? 缓冲,缓和冲击.也就是100次保存数据库,先把操作保存到本地,然后满10次才保存到数据库. 缓存,就是缓冲 ...
- 在 Linux 上如何清除内存的 Cache、Buffer 和交换空间
原文链接:http://www.linuxidc.com/Linux/2015-06/118856.htm 像任何其他的操作系统一样,GNU/Linux 已经实现的内存管理不仅有效,而且更好.但是,如 ...
随机推荐
- IO模型分析
html { font-family: sans-serif } body { margin: 0 } article,aside,details,figcaption,figure,footer,h ...
- 上传本地项目到githup仓库
1.在网上下载Git,然后安装 点击下一步 2.默认选择,下一步 3.选择使用命令行环境,下一步 4.后续步骤默认选择,点击下一步,等待安装完成 5.在githup上面新建一个仓库存放项目代码,具体方 ...
- Java Socket通信以及可能出现的问题解决
Java中基于TCP协议实现网络通信的两个类:客户端的Socket和服务器端的ServerSocket. Socket通信模型如图所示: 不管Socket通信的功能有多复杂,任何socket通信过程的 ...
- java中继承和组合的区别
子类继承父类,父类的所有属性和方法都可以被子类访问和调用.组合是指将已存在的类型作为一个新建类的成员变量类型,又叫"对象持有". 通过组合和继承,都可以实现系统功能的重用和代码的复 ...
- 基于FPGA的肤色识别算法实现
大家好,给大家介绍一下,这是基于FPGA的肤色识别算法实现. 我们今天这篇文章有两个内容一是实现基于FPGA的彩色图片转灰度实现,然后在这个基础上实现基于FPGA的肤色检测算法实现. 将彩色图像转化为 ...
- Java面向对象 IO (一)
Java面向对象 IO (一) 知识概要: (1)IO概述 (2)IO流的常用基类 (3)IO程序的书写 (4)字符流 写入 读取 文本文件的两种读取方式 ...
- PDO浅谈之php连接mysql
一.首先我们先说一下什么是pdo? 百科上说 PDO扩展为PHP访问数据库定义了一个轻量级的.一致性的接口,它提供了一个数据访问抽象层,这样,无论使用什么数据库,都可以通过一致的函数执行查询和获取数 ...
- asp.net(C#)利用QRCode生成二维码
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="QRCode.aspx.cs&q ...
- ajax和jsonp使用总结
前言:ajax和jsonp可以与后台通信,获取数据和信息,但是又不用刷新整个页面,实现页面的局部刷新. 一.ajax 定义:一种发送http请求与后台进行异步通讯的技术. 原理:实例化xmlhttp对 ...
- iOS正确使用const,static,extern
static 修饰局部变量 让局部变量只初始化一次 局部变量在程序中只有一份内存 并不会改变局部变量的作用域,仅仅是改变了局部变量的生命周期(只到程序结束,这个局部变量才会销毁) 修饰全局变量 全局变 ...