Buffer Cache and Page Cache

Buffer cache 與 page cache 都用 DRAM 加速 file-system I/O;差別在 cache unit 與和 VM subsystem 的關係。

相關概念:D-OS-Ch12cb-BufferingD-OS-Ch12cc-CachingD-SP-Ch4b-Buffering


Buffer Cache

以 file-system block / storage block 為單位 cache。適合 superblock、directory block、inode block、bitmap block,也可 cache file data。

block request → buffer cache → storage if miss

Page Cache

以 virtual memory page 為單位 cache file data;ordinary read/write 與 memory-mapped files 都可共用 VM paging machinery。

優點:支援 memory-mapped files、統一 replacement policy、減少 user/kernel copy 的複雜度。


Double Caching

若 read/write 走 buffer cache、mmap 走 page cache,同一 file data 可能有兩份 cache:

read/write path → buffer cache → file system
mmap path       → page cache → buffer cache → file system

問題:浪費 memory、增加 copy、兩份資料不同步會 corrupt file。


Unified Buffer Cache

Unified buffer cache 讓 read/write 與 mmap 共用同一 cache,通常以 page cache 為主。

好處是避免 double caching;代價是 VM、file system、writeback、metadata ordering 的互動更複雜。