首页 > 代码库 > Buffer 和Cache 的区别
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 以方便下次被访问??这样可提高系统性能。
Buffer 和Cache 的区别