buffer 和 cache


[linux 操作系统中buffer 和 cache 的作用]

  • Buffercache (它们都是占用内存)。
  • Buffer: 系统分配但未被使用的buffer 数量。
  • buffer :作为buffer cache的内存,是块设备的读写缓冲区
  • cache(名词):作为page cache的内存, 文件系统的cache

Buffer 缓冲区:

是块设备的读写缓冲区,buffer 是I/O 缓存,用于内存和硬盘(或其他 I/O设备)之间的数据交换的速度而设计的。

分析:

1**、**通常在写一个非常大的文件,文件会被分成一个个的小 block块–>一直往内存上写–>然后再写入磁盘,, 这个文件非常的大,但是会被分成一个个小的block块,每次都一点一点的–>写入内存–>再写入磁盘, 这样的效率较慢 。

2** 这种情况下,内存就会攒足一次大的block块–>再写入磁盘,这样的话就不会有第一种情况里的延迟。 这就是buffer.**

Cache**高速缓存** :

cache是高速缓存,用于cpu与内存之间的缓冲。主要原因是cpu与memory,由于cpu快,memory跟不上,且有些值使用次数多,所以放入cache中,主要目的是,使用内存来缓存可能被再次访问的数据。 Cache 经常被使用在I/O 请求上。为提高系统性能。

从硬盘上读内容时的情况:

例如 要打开一个非常大的视频文件从硬盘–>读到内存—>显示出来。 第一次打开这个文件的时候需要等待一些时间(视电脑性能),然后第二次打开的时候会比第一次流畅许多。

例如:小明第一次看这个10G的视频文件,从硬盘–>内存–>显示,他看完以后就关机了,内存也就清空空间了,但是他回头一想,电影中的某个情节想再回顾一下,这个时候,从硬盘–>读到内存 ,这个时候的内存没有再次从硬盘读取,而是之前关机有缓存,读取的时间可能比之前流畅,这就是cache.是为了提高文件读取效率的做法。

如果 cache 的值很大,说明cache住的文件数很多。如果频繁访问到的文件都能被cache住,那么磁盘的读IO 必会非常小。

坚持原创技术分享,您的支持将鼓励我继续创作!