还记得我们曾经介绍过的文件系统内核缓冲区(Buffer Area)吗?它位于物理内存的内核地址空间,除了使用 O_DIRECT 标 记打开的文件之外,所有对磁盘文件的读写操作都要经过它,所以你也可以把它看成是磁盘的前端设备。
这块内核缓冲区也称为页高速缓存(Page Cache),实际上它包括以下两部分:
1,读缓存区
2,写缓存区
读缓存区中保存着最近系统从磁盘上读取的数据,一旦下次需要读取这些数据的时候,内核将直接从这里获得,而不需要访 问磁盘。
写缓存区的目的主要在于减少磁盘的物理写操作,通常情况下向磁盘中写入数据并不着急,进程不需要因为写操作而等待, 内核缓冲区可以将多次写操作的指令累积起来,通过一次物理磁头的移动来完成。当然,写缓存区导致数据真正写入磁盘会 产生几秒的延迟,在实际写入磁盘之前,这些数据被称为脏页(Dirty Page)。
其实,从工作职能上看,将写缓存区称为缓冲区更加形象,缓冲区的例子在生活中处处可见,比如城市道路的十字路口,它 就像一个写缓冲区,红灯亮起的时候,车辆都停在缓冲区,当变成绿灯后,车辆开始依次前进,这就像内核缓冲区中的数据 积累到一定程度时被写入磁盘。
一个有趣的现象是,有些城市会在十字路口增加左转弯等待区,多么美妙的想法啊,它使得缓冲区与目的地的距离更加接近, 绿灯时将会有更多的车辆通行,提高了道路的吞吐率。
同样的,类似于页高速缓存,我们也可以在数据库和动态内容之间建立一层缓存区,它可以部署在独立的服务器上,用于加 速数据库的读写操作,这个缓存区实际上是由动态内容来控制的。
感觉本站内容不错,读后有收获?小额赞助,鼓励网站分享出更好的教程