Buffer 和Cache 的区别

Buffer 和Cache 的区别
buffer 与cache 操作的对象就不一样。
buffer􀃞缓冲􀃟是为了提高内存和硬盘􀃞或其他I/0 设备􀃟之间的数据交换的速
度而设计的。
cache􀃞缓存􀃟是为了提高cpu 和内存之间的数据交换速度而设计。
cpu 在执行程序所用的指令和读数据都是针对内存的􀃠也就是从内存中取得的。
由于内存读写速度慢􀃠为了提高cpu 和内存之间数据交换的速度􀃠在cpu 和内存之
间增加了cache􀃠它的速度比内存快􀃠但是造价高􀃠又由于在cpu 内不能集成太多
集成电路􀃠所以一般cache 比较小􀃠以后intel 等公司为了进一步提高速度􀃠又增加
了二级cache􀃠甚至三级cache􀃠它是根据程序的局部性原理而设计的􀃠就是cpu
执行的指令和访问的数据往往在集中的某一块􀃠所以把这块内容放入cache 后􀃠cpu
就不用在访问内存了􀃠这就提高了访问速度。当然若cache 中没有cpu 所需要的内
容􀃠还是要访问内存的。
缓冲􀃞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 以方便下次被访问􀃠这样可提高系统性能。

posted @ 2014-12-22 10:31  Aveen  阅读(208)  评论(0编辑  收藏  举报
Top