精华内容
下载资源
问答
  • 对我来说,不清楚两个Linux内存概念有什么区别缓冲和缓存。我读过this post,在我看来,他们之间的区别是过期政策:>缓冲区的策略是先进先出>缓存的策略是最近使用的。我对吗?特别是,我在看两个命令:...

    对我来说,不清楚两个Linux内存概念有什么区别:缓冲区和缓存。我读过

    this post,在我看来,他们之间的区别是过期政策:

    >缓冲区的策略是先进先出

    >缓存的策略是最近使用的。

    我对吗?

    特别是,我在看两个命令:free和vmstat

    james@utopia:~$ vmstat -S M

    procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----

    r b swpd free buff cache si so bi bo in cs us sy id wa

    5 0 0 173 67 912 0 0 19 59 75 1087 24 4 71 1

    james@utopia:~$ free -m

    total used free shared buffers cached

    Mem: 2007 1834 172 0 67 914

    -/+ buffers/cache: 853 1153

    Swap: 2859 0 2859

    展开全文
  • 缓冲和缓存

    2020-07-06 16:14:28
    1 缓冲(Buffer) 和缓存(Cache)区别和联系. 2 区别: buffer与cache操作的对象就不一样. (1) buffer(缓冲)是为了提高内存和硬盘或其他I/0设备之间的数据交换的速度而设计的. 当创建buffer对象时. 会创建一个缓冲区数组...

    1 缓冲(Buffer) 和缓存(Cache)区别和联系.

    2 区别: 两者操作的对象不一样.
    (1) buffer(缓冲): 是为了提高 内存和硬盘或其他I/0设备 之间的数据交换的速度而设计的.
    当创建buffer对象时, 会先创建一个缓冲区数组. 然后当我们读一个文件时, 先从硬盘中读到缓冲区, 待缓冲区 满后 再进行传送. 这样会大大减少读写次数,这样就可以节省很多时间, 效率会更高.

    (2) cache(缓存) 是为了提高 cpu和内存 之间的数据交换速度而设计.
    高速缓冲存储器, 读写速度很快,几乎与CPU一样。由于CPU的运算速度太快,内存的数据存取速度无法跟上CPU的速度,所以在cpu与内存间设置了cache为cpu的数据快取区。当计算机执行程序时,数据与地址管理部件会 预测 可能要用到的数据和指令, 并将这些数据和指令预先从内存中读出送到Cache. 一旦需要时,先检查Cache,若有就从Cache中读取,若无再访问内存,现在的CPU还有一级cache,二级cache。简单来说,Cache就是用来解决CPU与内存之间速度不匹配的问题,避免内存与辅助内存频繁存取数据,这样就提高了系统的执行效率. 设置缓存的理论基础, 是程序访问的局部性原理. 缓存的功能均由硬件实现,对程序员是透明的.
    (3) buffer偏重于写, 而cache偏重于读.

    3 相同点: 两者都加快了系统的反应速度.
    4 举例:
    缓冲:我们倒垃圾的时候,不可能一有垃圾就直接跑去垃圾站倒垃圾吧。而是先把垃圾倒到垃圾桶,垃圾桶满了再一起倒到垃圾站。其中垃圾桶就是这个缓冲容器。得到缓冲池满了,再一起处理。其实这和我们的缓冲流一样,都有一个buffer。很多中间件都有这个有。其实就是为了减少io操作次数,提高效率。
    缓存: 我们生活中看视频就是个最好的例子, 比如我要看《神雕侠侣》,如果我没有下载。则需要我先从远程服务器下载好到本地。那么我以后需要看《神雕侠侣》的时候,之间本地看就行了。本地的《神雕侠侣》就相当于一个缓存容器.

    展开全文
  • Buffer缓冲和Cache缓存区别

    千次阅读 2017-09-25 17:03:09
    缓冲和缓存区别

    buffer与cache操作的对象不一样。

    buffer(缓冲)是为了提高内存和硬盘(或其他I/0设备)之间的数据交换的速度而设计的。

    cache(缓存)是为了提高cpu和内存之间的数据交换速度而设计,也就是平常见到的一级缓存、二级缓存、三级缓存(也叫内存缓存)。

    cpu在执行程序所用的指令和读数据都是针对内存的,也就是从内存中取得的。由于内存读写速度慢,为了提高cpu和内存之间数据交换的速度,在cpu和内存之间增加了cache,它的速度比内存快,但是造价高,又由于在cpu内不能集成太多集成电路,所以一般cache比较小,以后intel等公司为了进一步提高速度,又增加了二级cache,甚至三级cache,【一级缓存 采用的是静态缓存(SRAM),速度比 采用动态缓存(DRAM)的二级缓存 更快,可以把二级缓存看成为 一级缓存的缓冲器】,它是根据程序的局部性原理而设计的,就是cpu执行的指令和访问的数据往往在集中的某一块,所以把这块内容放入cache后,cpu就不用在访问内存了,这就提高了访问速度。
    通常CPU找数据或指令的顺序是:先到一级缓存中找,找不到再到二级缓存中找,如果还找不到就只有到内存中找了
    (补充还有一个叫 磁盘缓存:当把磁盘当作缓存时,这是磁盘缓存。有点类似于 电脑中 虚拟内存的 一个东西,至于磁盘缓存和内存缓存可以看这个博客http://blog.csdn.net/as02446418/article/details/47913387

    缓冲(buffers)是根据磁盘的读写设计的,把分散的写操作集中进行,减少磁盘碎片和硬盘的反复寻道,从而提高系统性能。linux有一个守护进程定期清空缓冲内容(即写入磁盘),也可以通过sync命令手动清空缓冲。举个例子吧:我这里有一个ext2的U盘,我往里面cp一个3M的MP3,但U盘的灯没有跳动,过了一会儿(或者手动输入sync)U盘的灯就跳动起来了。卸载设备时会清空缓冲,所以有些时候卸载一个设备时要等上几秒钟。

    修改/etc/sysctl.conf中的vm.swappiness右边的数字可以在下次开机时调节swap使用策略。该数字范围是0~100,数字越大越倾向于使用swap。默认为60,可以改一下试试。–两者都是RAM中的数据。

    简单来说,buffer是即将要被写入磁盘的,而cache是被从磁盘中读出来的。

    buffer是由各种进程分配的,被用在如输入队列等方面。一个简单的例子如某个进程要求有多个字段读入,在所有字段被读入完整之前,进程把先前读入的字段放在buffer中保存。

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

    一般来说,相同价格的存储器,容量与速度成反比的。即装的越多速度相对越慢。
    缓存是指在低速设备和高速设备之间的中介。

    比如与cpu 速度相比,内存速度很慢,就增加一个速度比较快的L1 cache、L2 cache缓存,查询的时候先在缓存查,查不到再去慢的内存查,把查到结果放到缓存,下次在用的时候就快了。

    与内存相比,硬盘或者网络传输相比慢很多,所以为了速度可以把一部分数据放在内存中,查询的时候先在内存查,内存查不到在去硬盘或网络,把查到结果放到内存中,这就是缓存。

    所以程序都是运行在内存中的,至于缓存只是一个中介作用,可能是内存做缓存,也可能是别的设备。

    展开全文
  • 缓冲缓存区别

    2014-04-29 08:35:26
    缓存(Cache memory)是硬盘控制器上的一块内存芯片,具有极快的存取速度,它是硬盘内部存储外界接口之间的缓冲器。由于硬盘的内部数据传输速度外界介面传输速度不同,缓存在其中起到一个缓冲的作用。缓存的大小...

    http://blog.csdn.net/armygeneral/article/details/5199840

    http://zhidao.baidu.com/link?url=Oi7hMsYqnRvOz7fO0HSX8d-DT5TL0CkEQFfq7iAyZecxntaSsiskoWsBcP-l1mmKc__cnk5MGQzxVM8_lbWJZq

    缓冲器相当于一个寄存器,暂时保存数据。缓冲区是内存中存放数据的地方。在程序试图将数据放到机器内存中的某一个位置的时候,因为没有足够的空间就会发生缓冲区溢出。而人为的溢出则是有一定企图的,攻击者写一个超过缓冲区长度的字符串,然后植入到缓冲区,而再向一个有限空间的缓冲区中植入超长的字符串可能会出现两个结果,一是过长的字符串覆盖了相邻的存储单元,引起程序运行失败,严重的可导致系统崩溃;另有一个结果就是利用这种漏洞可以执行任意指令,甚至可以取得系统root特级权限。大多造成缓冲区溢出的原因是程序中没有仔细检查用户输入参数而造成的。 

         缓冲区是程序运行的时候机器内存中的一个连续块,它保存了给定类型的数据,随着动态分配变量会出现问题。大多时为了不占用太多的内存,一个有动态分配变量的程序在程序运行时才决定给它们分配多少内存。这样想下去的话,如果说要给程序在动态分配缓冲区放入超长的数据,它就会溢出了。一个缓冲区溢出程序使用这个溢出的数据将汇编语言代码放到机器的内存里,通常是产生root权限的地方,这就不是什么好现象了。仅仅就单个的缓冲区溢出惹眼,它并不是最大的问题根本所在。但如果溢出送到能够以root权限运行命令的区域,一旦运行这些命令,那可就等于把机器拱手相让了。


    缓存(Cache memory)是硬盘控制器上的一块内存芯片,具有极快的存取速度,它是硬盘内部存储和外界接口之间的缓冲器。由于硬盘的内部数据传输速度和外界介面传输速度不同,缓存在其中起到一个缓冲的作用。缓存的大小与速度是直接关系到硬盘的传输速度的重要因素,能够大幅度地提高硬盘整体性能。当硬盘存取零碎数据时需要不断地在硬盘与内存之间交换数据,如果有大缓存,则可以将那些零碎数据暂存在缓存中,减小外系统的负荷,也提高了数据的传输速度。


    硬盘的缓存主要起三种作用:一是预读取。当硬盘受到CPU指令控制开始读取数据时,硬盘上的控制芯片会控制磁头把正在读取的簇的下一个或者几个簇中的数据读到缓存中(由于硬盘上数据存储时是比较连续的,所以读取命中率较高),当需要读取下一个或者几个簇中的数据的时候,硬盘则不需要再次读取数据,直接把缓存中的数据传输到内存中就可以了,由于缓存的速度远远高于磁头读写的速度,所以能够达到明显改善性能的目的;二是对写入动作进行缓存。当硬盘接到写入数据的指令之后,并不会马上将数据写入到盘片上,而是先暂时存储在缓存里,然后发送一个“数据已写入”的信号给系统,这时系统就会认为数据已经写入,并继续执行下面的工作,而硬盘则在空闲(不进行读取或写入的时候)时再将缓存中的数据写入到盘片上。虽然对于写入数据的性能有一定提升,但也不可避免地带来了安全隐患——如果数据还在缓存里的时候突然掉电,那么这些数据就会丢失。对于这个问题,硬盘厂商们自然也有解决办法:掉电时,磁头会借助惯性将缓存中的数据写入零磁道以外的暂存区域,等到下次启动时再将这些数据写入目的地;第三个作用就是临时存储最近访问过的数据。有时候,某些数据是会经常需要访问的,硬盘内部的缓存会将读取比较频繁的一些数据存储在缓存中,再次读取时就可以直接从缓存中直接传输。

    缓存容量的大小不同品牌、不同型号的产品各不相同,早期的硬盘缓存基本都很小,只有几百KB,已无法满足用户的需求。2MB和8MB缓存是现今主流硬盘所采用,而在服务器或特殊应用领域中还有缓存容量更大的产品,甚至达到了16MB、64MB等。

    大容量的缓存虽然可以在硬盘进行读写工作状态下,让更多的数据存储在缓存中,以提高硬盘的访问速度,但并不意味着缓存越大就越出众。缓存的应用存在一个算法的问题,即便缓存容量很大,而没有一个高效率的算法,那将导致应用中缓存数据的命中率偏低,无法有效发挥出大容量缓存的优势。算法是和缓存容量相辅相成,大容量的缓存需要更为有效率的算法,否则性能会大大折扣,从技术角度上说,高容量缓存的算法是直接影响到硬盘性能发挥的重要因素。更大容量缓存是未来硬盘发展的必然趋势。

    展开全文
  • 缓冲缓存

    2019-10-31 19:23:16
    缓冲区(buffer)是内存空间的一部分,在内存空间中预留了一定的存储空间,这些存储空间用来缓冲输入或输出的数据,显然缓冲区是具有一定大小的。 可以解除高速设备与低速设备的不匹配,高速设备把数据直接送往缓冲...
  • Ruby库通过类似String的接口提供对IO对象的块缓冲和缓存读取。 将大文件解析为字符串的理想选择,从而限制了内存消耗。
  • mysql缓冲和缓存设置

    万次阅读 多人点赞 2015-12-14 11:44:17
    为了加快从文件中读取数据的过程,mysqld对这些打开文件进行了缓存,其最大数目由 /etc/mysqld.conf 中的table_cache 指定。清单 4给出了显示与打开表有关的活动的方式。 清单 4. 显示打开表的活动
  • 缓冲/缓存与C++

    2021-09-29 13:11:24
    缓冲缓冲本质上都是一块内存区域,缓冲强调的时写操作(对硬盘),缓存强调读操作(对硬盘)。 缓冲 缓冲(buffer)是指:向硬盘写入数据时,先把数据放入到一块内存区域(称为缓冲区)中,然后再一起向硬盘写入,...
  • InnoDB存储引擎基于磁盘文件存储,访问物理硬盘内存中进行访问,速度相差很大,为了尽可能弥补这两者之间的I/O效率的差值,就需要把经常使用的数据加载到缓冲池中,避免每次访问都进行磁盘I/O....
  • 磁盘缓存和内存缓存区别

    万次阅读 多人点赞 2015-08-23 22:49:50
    内存缓存高速缓存(英语:cache,英语发音:/kæʃ/ kash [1][2][3],简称缓存),其原始意义是指访问速度比一般随机存取存储器(RAM)快的一种RAM,通常它不像系统主存那样使用DRAM技术,而使用昂贵但较快速的SRAM...
  • RingCache是​​一种模拟环形缓冲区的内存高速缓存,其中旧元素被逐出以为新元素腾出空间。 在不值得或不可能将所有访问的数据保留在内存中,并且某些元素比其他元素更频繁地访问的情况下,它最有用。 作为环形缓冲...
  • 缓冲(buffer)和缓存(cache)区别

    千次阅读 多人点赞 2018-12-08 21:20:54
    缓冲(buffer)和缓存(cache)的区别缓存(cache)是在读取硬盘中的数据时,把最常用的数据保存在内存缓存区中,再次读取该数据时,就不去硬盘中读取了,而在缓存中读取。 缓冲(buffer)是在向硬盘写入数据时...
  • 基于内存缓冲区的流媒体数据缓存排序 基于内存缓冲区的流媒体数据缓存排序 要求: ①针对一个流媒体节目的单线程下载进行处理; ②节目数据包无丢失、无乱序; ③将收到的数据包直接写入缓冲区,缓冲区长度无限...
  • 缓存和缓冲区别 缓存(cache):把常用数据存储到可以快速获取的区域(缓存区),以备重复利用,提高效率。 例如:从内存中读取数据时,先将常用的数据存放到缓存区,硬盘直接从缓存区读取。 缓冲(buffer):在数据...
  • 内存缓冲和无效队列

    千次阅读 2018-12-08 15:09:01
    存储缓冲无效队列还是为了更好的利用CPU的高执行率。 首先印出来一个概念:缓存行(cacheline),数据在缓存里面不是杂乱无章的存储的,它是以缓存行的形式存储的。缓存行的大小就是CPU一次处理的最大数据的大小...
  • 不论什么时候,只要系统带有多个设备,而这些设备的性能又各不相同,就存在从慢速设备到快速设备不断更换工作地点以改善系统性能的... 缓存的概念可以用于几种设备,这些设备包括:• 比正常内存更快的高速内存缓存。•
  • 虚拟内存缓存 高速缓存存储器 (Cache Memory) In memory hierarchy, there is an additional level of memory which is Cache. It is high-speed storage and much faster than the main storage. It is much ...
  • 文件操作接口一(缓冲和缓存):一、缓冲区1、什么是缓冲区?2. 为什么需要缓冲区?3. 缓冲区的作用4.缓冲区的类型5.缓冲区的刷新5.1 输出缓冲区的条件:二、缓存2.1 缓存是什么?2.2 为什么需要缓存?2.3 缓存原理...
  • 内存缓存内存缓存是Android自带的LruCache,LruCache内部主要采用LinkedHashMap来实现,而LinkedHashMap天生自带缓存特性,可支持FIFOLRU访问。LinkedHashMap的特点LinkedHashMap继承自HashMap,同时也继承了...
  • 磁盘缓冲区和内存缓冲

    千次阅读 2015-03-24 11:16:49
     意是上面说的内存缓冲区,只是它是专门为读取或写入磁盘而设置的,因此可以简称为磁盘缓冲区,这个的例子是很多下载软件比如迅雷种都有的磁盘缓存设置,即先将数据下载到内存中缓存起来,达到一定数量后再写到磁盘...
  • Cache核心作用是加快取用的速度.Buffer核心作用是用来做缓冲. 避免资源大量重复调用, 将多个调用合并成一个.缓冲和缓存名称是不一样的, 叫... 只要是相对高速即可详见:Cache(缓存) Buffer(缓冲),主要区别是什...
  • linux系统内存缓冲和磁盘预留

    千次阅读 2020-07-07 10:08:11
    1. 系统缓冲 一般情况下,linux会把可用内存的40%的空间作为文件系统的缓存。...文件系统缓存的大小是由内核参数vm.dirty_ratio vm.dirty_backgroud_ratio控制决定的。 vm.dirty_background_rat
  • 在CPU和内存交换数据的时候,CPU内部的缓存才是关键的关键,今天小编就大家分享一下关于CPU缓存的那些事儿。CPU缓存干啥用?现在电脑上的存储器,即便是Intel的傲腾内存,也比不上CPU内的缓存速度快。而且,缓存的...
  • 处理器会将数据写入写缓冲器,这个过程是store;...处理器的乱序执行推测执行,都是指令重排序,这次的是内存重排序,因为都是发生在内存层面的写缓冲高速缓存中的。 这个内存重排序,有4种可能性:
  • 缓冲高速缓存

    千次阅读 2015-05-13 15:17:37
    例如,正在运行的进程的指令既存储在磁盘上,也存储在物理内存上,也被复制到CPU的二级一级高速缓存中。 不过,磁盘高速缓存技术不同于通常意义下的介于CPU与内存之间的小容量高速存储器,而是指利用内存中的存储...
  • 都是解决速度不一致的问题 ...buffer 写入缓冲区 cache 读取缓存区 cache一些重点 1 存放位置 客户端 内存(本机内存、远程服务器内存) 硬盘(本机硬盘,远程服务器硬盘) 2 过期时间 3 强制过期 4 c...
  • 缓存和内存区别

    千次阅读 2018-09-12 14:08:31
    许多人认为,“缓存”是内存的一部分  许多技术文章都是这样教授的  但是还是有很多人不知道缓存在什么地方,缓存是做什么用的  其实,缓存是CPU的一部分...缓存是为了解决CPU速度和内存速度的速度差异问题  内...
  • LINUX使用的缓存缓冲区高速缓存

    千次阅读 2013-10-18 21:37:12
    使用了多种和内存管理相关的高速缓存。 1.缓冲区高速缓存:  缓冲区高速缓存中包含了由块设备使用的数据缓冲区。这些缓冲区中包含了从设备中读取的数据块或写入设备的数据块。缓冲区高速缓存由设备标识号块...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 231,219
精华内容 92,487
关键字:

内存缓冲和缓存的区别