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