cache 和 buffer的区别

cache 和 buffer的区别

A buffer is something that has yet to be “written” to disk.

A cache is something that has been “read” from the disk and stored for later use ;

对于共享内存(Shared memory),主要用于在UNIX 环境下不同进程之间共享数据,是进程间通信的一种方法,一般的应用程序不会申请使用共享内存

Buffer:缓冲区,用于存储速度不同步的设备或优先级不同的设备之间传输数据;通过buffer可以减少进程间通信需要等待的时间,当存储速度快的设备与存储速度慢的设备进行通信时,存储慢的数据先把数据存放到buffer,达到一定程度存储快的设备再读取buffer的数据,在此期间存储快的设备CPU可以干其他的事情。从而使速度慢的设备读入数据时,速度快的设备的操作进程不发生间断。 

Cache:高速缓存,是位于CPU与主内存间的一种容量较小但速度很高的存储器。由于CPU的速度远高于主内存,CPU直接从内存中存取数据要等待一定时间周期,Cache中保存着CPU刚用过或循环使用的一部分数据,当CPU再次使用该部分数据时可从Cache中直接调用,这样就减少了CPU的等待时间,提高了系统的效率。Cache又分为一级Cache(L1 Cache)和二级Cache(L2 Cache),L1 Cache集成在CPU内部,L2 Cache早期一般是焊在主板上,现在也都集成在CPU内部,常见的容量有256KB或512KB L2 Cache

它是根据程序的局部性原理而设计的,就是cpu执行的指令和访问的数据往往在集中的某一块,所以把这块内容放入cache后,cpu就不用在访问内存了,这就提高了访问速度。当然若cache中没有cpu所需要的内容,还是要访问内存的

查看CPU的 L1、L2、L3

[root@localhost ~]#  ll /sys/devices/system/cpu/cpu0/cache/
总用量 0
drwxr-xr-x. 2 root root 0 8月  12 11:21 index0  #一级cache中的data和instruction cache
drwxr-xr-x. 2 root root 0 8月  12 11:21 index1  #一级cache中的data和instruction cache
drwxr-xr-x. 2 root root 0 8月  12 11:21 index2  #二级cache,共享的
drwxr-xr-x. 2 root root 0 8月  12 11:21 index3  #三级cache,共享的

总结

cache 是cpu与内存间的,buffer是内存与磁盘间的,都是为了解决速度不对等问题

CPU中的Cache和free中的cache不是一个概念

free中的cache是Page cache,它实际上是针对文件系统的,是文件的缓存

CPU中的Cache并不是缓存文件的,而是缓存块的(块是I/O读写最小的单元);Cache一般会用在I/O请求上,如果多个进程要访问某个文件,可以把此文件读入Cache中,这样下一个进程获取CPU控制权并访问此文件直接从Cache读取,提高系统性能。

大致来说数据是通过内存-Cache-寄存器,Cache缓存则是为了弥补CPU与内存之间运算速度的差异而设置的的部件

缓冲技术(buffer)是为了协调IO和CPU之间的速度不一致而存在的一种设计的,把分散的写操作集中进行减少磁盘碎片和硬盘的反复寻道,以减少CPU中断次数,提高程序效率,从而提高系统性能;linux有一个守护进程定期 清空缓冲内容(即写入磁盘),也可以通过sync命令手动清空缓冲。

缓存技术(cache)则是通过将CPU最为频繁访问的数据保存在特定区域,并具有优先被访问权,重新读取时若命中(找到需要的数据)就不要去读硬盘了,若没有命中就读硬盘。其中的数据会根据读取频率进行组织,把最频繁读取的内容放在最容易找到的位置,把不再读的内容不断往后排,直至从中删除,这样提高CPU对数据的获取效率来提高程序运行效率

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

缓冲区(buffer)和内存缓存区(cache)都属于内存的一部分,而Cache也可以是磁盘的一部分,但在底层设计上,Cache是由静态RAM构成的,它比用于Buffer的动态RAM更快;

Cache是高速存储区域,而Buffer是RAM的临时存储的正常存储区域;

Buffer主要用于输入/输出过程,而Cache则用于从磁盘读取或写入进程;

在Cache不能使用的情况下,可以在键盘中使用Buffer来编辑键入错误

参考文档

http://m.blog.chinaunix.net/uid-16361381-id-5818750.html        

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值