页高速缓存(page cache)把磁盘数据放到内存中,从而减少对磁盘的I/O操作。访问磁盘比访问内存慢几个数量级,cpu高速缓存更快。
金字塔式存储体系如下,每一种存储器设备只和它相邻的存储设备打交道:
/ \
/ \
/ Reg \ 寄存器(Register)
-------\
//L1 Cache \ 又分成: 数据缓存(Instruction Cache)和 指令缓存(Data Cache)
-----------\
// L2 Cache \
---------------\
// L3 Cache \ 多个核共享一个L3缓存
-------------------\
// Memory \ 这一章我们讲这一层
-----------------------\
// SSD HDD \ Solid State Disk(Drive)、Hard Disk Drive
---------------------------\ /
从上到下容量递增、速度递减、价格递减。cpu高速缓存包括L1、L2、L3三层,使用静态随机存取存储器(Static Random-Access Memory)的芯片。
维基百科上对访问局部性(Locality of reference)的定义:
页高速缓存由内存中的物理页面组成,对应磁盘(后端设备)上的物理块,大小可动态调整。
读操作时(如read()
系统调用),先检查数据是否在页高速缓存中,如果在缓存中则直接从内存中读取数据(称为缓存命中),如果不在缓存中则从磁盘上读取(缓存未命中)。 读完磁盘后,数据被放到内存中,后续的读操作就能命中缓存了。缓存可以存储文件部分内容或全部内容。
读操作时(如write()
系统调用),缓存有三种策略:
缓存回收策略: