缓冲区buffer与缓存区cache

1.buffer 就是写入到磁盘。
buffer 是为了提高内存和硬盘(其他 I/O 设备) 之间的数据交换的速度而设计的。
buffer 将数据缓冲下来, 解决速度慢和快的交接问题;
速度快的需要通过缓冲区将数据一点一点传给速度慢的区域。
例如: 从内存中将数据往数据往硬盘中写入, 并不是直接写入, 而是缓冲到一定大小之后刷入硬盘中。

2.cache: cache 就是从磁盘读取数据然后存起来方便以后使用。
cache 实现数据的重复使用, 速度慢的设备需要通过缓存将经常要用到的数据缓存起来, 缓存下
来的数据可以提供高速的传输速度给速度快的设备。
例如: 将硬盘中的数据读取出来放在内存的缓存区, 这样以后再次访问同一个资源, 速度会快很多。

3.buffer 和 cache 的特点
共性:
都属于内存, 数据都是临时的, 一旦关机数据就会丢失
差异:
A: buffer 是要写入数据, cache 是已读取数据。
B: buffer 数据丢失会影响数据的完整性,源数据不受影响; cache 数据丢失不会影响数据完整性, 但会影响性能。
C: 一般来说 cache 越大, 性能越好, 超过一定程度, 导致命中率太低之后才会越大性能越低。
buffer 来说, 空间越大性能影响不大, 够用就行。
cache 过小,或者没有 cache 的话, 不影响程序逻辑(高并发 cache 过小或者丢失导致系统忙死除外)。
buffer 过小有时候影响程序逻辑, 如导致网络丢包。

cache 可以做到应用透明, 编写应用的可以不用管是否有 cache , 可以在应用做好之后再上 cache。 当然开发者显式使用 cache 也行。

buffer 需要编写应用的人设计, 是程序的一部分buffer 前者针对磁盘块的读写, cache 针对文件 inode 的读写.

虚拟内存是内存管理的一种技术,使得应用程序认为自己拥有连续的内存空间,
而实际上它对应的物理内存是不连续的,甚至还有一部分对应着外部磁盘存储器,在需要时再进行数据交换。

你可能感兴趣的:(linux很好玩的,缓存,linux,buffer)