//本文基本上是摘要了网络上各位大神对cache、buffer的总结,由于是800年前保存在本地,所以也已经忘了出处了。感谢各位大神。

//本文对这2个概念的理解尚浅,如果愿意补充那就再好不过了。 

Cache和Buffer的中文是什么

  "Cache"被称为"缓存"

  "Buffer"被称为"缓冲"

它们的区别是什么

  首先引用一段话"A cache is something that has been "read" from the disk and stored for later use. A buffer is something that has yet to be "written" to disk. "

  不难理解,被操作的对象都是"数据"。也就是说数据这东西有的时候被CPU从磁盘里拿出来(因为用户这会儿想要使用它),而有的时候被CPU写进磁盘里(比如把游戏进度保存起来)。

  那么翻译过来就是:

  "Cache是数据被从磁盘中读出来的,等着被用"

  "Buffer是数据即将被写入磁盘,把数据完整地存起来"

它们的概念

Cache

  Cache也称为"高速缓存",是一个"位于CPU与主内存之间的一种容量较小但速度很高"的存储器。由于CPU的速度远高于主内存,CPU直接从内存中读取数据要等待一定时间周期,那么就用到Cache了。

  Cache保存着CPU刚用过或循环使用的一部分数据。这样的话,当CPU需要重新读取数据时,如果命中Cache(即:找到需要的数据),那么CPU就不用再去读硬盘了。如果没有命中Cache,那么CPU就会去读硬盘。Cache里面的数据会根据读取频率进行组织,把最频繁读取的内容放在最容易找到的位置,把不再读取的内容不断地往后排,直至从Cache中被删除。

Buffer

  Buffer也称为"缓冲区",它是根据磁盘的读写设计的,把分散的写操作集中进行,减少磁盘碎片和硬盘的反复寻道,使进程之间的相互等待变少,从而提高了系统性能。

它们是用来干什么的

Cache

  Cache经常被用在磁盘的I/O请求上,如果有多个进程都要访问某个文件,于是该文件便被做成cache以方便下次被访问,这样可提高系统性能。

Buffer

  Buffer是由各种进程分配的,被用在如输入队列等方面。

  Linux有一个守护进程,会定期清空缓冲区的数据(即:写入磁盘),也可以通过sync命令手动清空缓冲区(即:强制写入磁盘)。

言而总之

  Cache是提高了"读"的性能,Buffer是提高了"写"的性能。

cache buffer的更多相关文章

  1. lnux内核的malloc实现(Oracle的cache buffer影子)

    lnux内核的malloc实现(Oracle的cache buffer影子) 本文原创为freas_1990,转载请标明出处:http://blog.csdn.net/freas_1990/artic ...

  2. 【转】cache buffer chain 第一篇

    文章转自:http://www.jydba.net/cache-buffer-chain/ buffer cache的管理有两个重要的数据结构: hash bucket和cache buffer ch ...

  3. ORACLE CACHE BUFFER CHAINS原理

    原理图如下: 一个cache buffer chains 管理多个hash bucket,受隐含参数:_db_block_hash_buckets(控制管理几个hash bucket)

  4. Page Cache buffer Cache

    https://www.thomas-krenn.com/en/wiki/Linux_Page_Cache_Basics References Jump up ↑ The Buffer Cache ( ...

  5. 【学习笔记】cache/buffer

    cache 是为了弥补高速设备和低速设备的鸿沟而引入的中间层,最终起到**加快访问速度**的作用.buffer 的主要目的进行流量整形,把突发的大数量较小规模的 I/O 整理成平稳的小数量较大规模的 ...

  6. buffer cache —— buffer busy waits/read by other session

    oracle提供非常精确.有效的row level lock机制,多个用户同时修改数据时,为了保护数据,以块为单位挂起锁的情况不会发生.但这不太正确.以块为单位的锁虽然不存在,但正因为oracle I ...

  7. Cache Buffer 区别

    Cache 一般位于CPU中, 分为 L1 Cache, L2 Cache, 是一种读的操作,把CPU刚用过的/循环使用的数据存储起来,当CPU再次使用时,可以直接从Cache存储器中调用,减少了等待 ...

  8. 判断和调整library cache,data dictionary cache,buffer cache性能

    Oracle SGA是oracle的内存结构,存放着oracle通过oracle进程读写的内存数据.sga分为好多组件,比如shared pool,buffer cache,redo log buff ...

  9. linux中内存使用,swap,cache,buffer的含义总结

    首先介绍一下linux中内存是如何使用的.当有应用需要读写磁盘数据时,由系统把相关数据从磁盘读取到内存,如果物理内存不够,则把内存中的部分数据导入到磁盘,从而把磁盘的部分空间当作虚拟内存来使用,也称为 ...

随机推荐

  1. JavaScript中的栈及通过栈操作的实例

    <script> /*栈操作*/ function Stack() { this.dataStore = []; this.top = 0; this.push = push; this. ...

  2. 错误代码是1130,ERROR 1130: Host xxx.xxx.xxx.xxx is not allowed to connect to this MySQL server 是无法给远程连接的用户权限问题

    错误代码是1130,ERROR 1130: Host xxx.xxx.xxx.xxx is not allowed to connect to this MySQL server 是无法给远程连接的用 ...

  3. [故障公告]14:40-15:00博客站点web服务器雪崩似的CPU 100%

    非常抱歉,今天下午14:40-15:00左右,web服务器突然雪崩似的出现CPU 100%问题,造成博客站点无法访问(503).由此给您带来很大的麻烦,请您谅解. 在问题出现之前,博客站点运行着5台w ...

  4. iOS多线程开发之GCD(中篇)

    前文回顾: 上篇博客讲到GCD的实现是由队列和任务两部分组成,其中获取队列的方式有两种,第一种是通过GCD的API的dispatch_queue_create函数生成Dispatch Queue:第二 ...

  5. hasOwnProperty的用法

    判断一个属性倒底是在原型中,还是在实例中 hasOwnProperty() 来个栗子 function Person(){ }; Person.prototype.name = "hezhi ...

  6. 虚幻引擎UE4如何制作可拖动(Drag and Drop)的背包(Scrollbox)

    本教程适合初学者(学习经历已有30天的UE4初学者). 最终效果 由于隐私保护,不想截实际的效果图,下面给出了示意图,左边是背包A,右边是背包B,将其中的子项目从左侧拖往右侧的背包,然后在插入位置放置 ...

  7. [POJ2104/HDU2665]Kth Number-主席树-可持久化线段树

    Problem Kth Number Solution 裸的主席树,模板题.但是求k大的时候需要非常注意,很多容易写错的地方.卡了好久.写到最后还给我来个卡空间. 具体做法参见主席树论文<可持久 ...

  8. vue vuex 提交 this.$store.commit({type: 'setSelectPro', selectPro: this.productId});

    1.store.commit({'type':'mutation','parameter':'value'}); store.dispatch('action'); 2.获取state保存的值 sto ...

  9. 手机摄像头扫描识别车牌号,移动端车牌识别sdk

    一.移动端车牌识别应用背景 (技术交流:18701686857  QQ:283870550) 随着经济水平的不断提高,汽车数量的不断激增为汽车管理带来了不小的难度.路边违章停车的现象越来越频繁.现在, ...

  10. [分享] 自动化测试与持续集成方案-- UI 检查

    对于自动化测试中,UI 自动化测试估计是最有争议的,让人又爱又恨. UI 自动化做回归测试,可以省下很多人力.如果版本一直不稳定,投入跟产出不成比例的. 时机 一般是要版本稳定,界面改动不大.如果迭代 ...