文件 Cache 相关数据结构

http://www.cnblogs.com/huxiao-tee/p/4657851.html   

从内核文件系统看文件读写过程


https://www.ibm.com/developerworks/cn/linux/l-cn-directio/ 

Linux 中直接 I/O 机制的介绍


https://www.cnblogs.com/zhaoyl/p/5515317.html   

mmap为什么比read/write快(兼论buffercache和pagecache)


https://blog.csdn.net/xiaofei0859/article/details/75106857 

Linux Page Cache的工作原理


文件 Cache 相关数据结构

  在 Linux 的实现中,文件 Cache 分为两个层面,一是 Page Cache,另一个 Buffer Cache,每一个 Page Cache 包含若干 Buffer Cache。内存管理系统和 VFS 只与 Page Cache 交互,内存管理系统负责维护每项 Page Cache 的分配和回收,同时在使用 memory map 方式访问时负责建立映射;VFS 负责 Page Cache 与用户空间的数据交换。而具体文件系统则一般只与 Buffer Cache 交互,它们负责在外围存储设备和 Buffer Cache 之间交换数据。Page Cache、Buffer Cache、文件以及磁盘之间的关系如图 2 所示,Page 结构和 buffer_head 数据结构的关系如图 3 所示。在上述两个图中,假定了 Page 的大小是 4K,磁盘块的大小是 1K。本文所讲述的,主要是指对 Page Cache 的管理。


文件 Cache 相关数据结构_第1张图片
文件 Cache 相关数据结构_第2张图片

查看Page Cache的核心数据结构struct address_space就可以看到上述结构(略去了无关结构):

struct address_space  {

struct inode            *host;              /* owner: inode, block_device */

struct radix_tree_root      page_tree;        /* radix tree of all pages */

unsignedlong          nrpages;  /*number of total pages */

struct address_space      *assoc_mapping;      /* ditto */

......

} __attribute__((aligned(sizeof(long))));



MMAP和DIRECT IO区别   https://www.cnblogs.com/zhaoyl/p/5901680.html


文件 Cache 相关数据结构_第3张图片

你可能感兴趣的:(文件 Cache 相关数据结构)