Linux中Buffer和cache

原文链接:https://www.cnblogs.com/qiaoyanlin/p/6746791.html
1.cache
高速缓存,是位于CPU和主内存之间的容量较小但速度很快的存储器,cache保存这CPU刚用过的数据或循环使用的部分数据,这是从cache中读取数据会更快,减少了CPU等待的时间,提高了系统的性能。
cache并不是缓存文件的,而是缓冲块的(块是I/O读写最小的单元),cache一般会用于I/O请求上,如果多个进程要访问某个文件,可以把此文件读入cache中,这样下一个进程获取CPU控制权并访问此文件直接从cache读取,提高系统性能。
2.buffer:缓冲区,用于存储速度不同步的设备或优先级不同的设备之间传输数据,通过buffer可以减少进程间通信需要等待的时间,当存储速度快的设备与存储速度慢的设备进行通信时,存储慢的数据先把数据存放到buffer,达到一定存储快的设备再读取buffer的数据,在此期间存储快的设备CPU可以干其他事情。
cache
Cache解决的是时间问题,Buffer解决的是空间问题

Cache利用的是RAM提供的高读写速度,Buffer利用的是RAM提供的存储容量(空间)。
1.buffer(缓冲)是为了提高内存和硬盘(或其他I/O设备)之间的数据交换的速度而设计的。
缓冲(buffers)是根据磁盘的读写设计的,把分散的写操作集中进行,减少磁盘碎片和硬盘的反复寻道,从而提高系统性能,linux有一个守护进程定期清空缓冲内容(即写入磁盘),也可以通过sync命令手动清空缓冲
2.cache(缓存)从CPU角度考虑,是为了提高CPU和内存之间的数据交换速度而设计的。
从内存读取与磁盘读取的角度考虑,cache可以理解为操作系统为了更高的读取效率,更多的使用内存来缓存可能再次访问的数据。
buffer是即将要被写入磁盘的,而cache是被从磁盘中读出来的,buffer是由各种进程分配的,被用在如输入队列等方面。一个简单的例子如某个进程要求有多个字段读入,在所有字段被读入完整之前,进程把先前读入的字段放在buffer中保存。
cache经常被用在磁盘的I/O请求上,如果有多个进程都要访问某个文件,于是该文件便被做成cache以方便下次被访问,这样可提高系统性能。

猜你喜欢

转载自blog.csdn.net/weixin_37625620/article/details/88879107