Buffer Cache and Page Cache
Buffer cache 與 page cache 都用 DRAM 加速 file-system I/O;差別在 cache unit 與和 VM subsystem 的關係。
相關概念:D-OS-Ch12cb-Buffering、D-OS-Ch12cc-Caching、D-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 missPage 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 的互動更複雜。