一、页高速缓存
1、address_space对象
描述属于同一持有者的页缓存描述符的链表,该对象记录在持有者索引节点对象数据结构中,为页高速缓存的主要数据结构。页描述符的mapping字段指向address_space、index字段表示在所有者地址空间中的页偏移量;
页的持有者可能是文件也可能是块设备文件,当进行文件的读写时页的持有者为文件,文件的索引节点对象的i_data字段指向address_space对象,索引节点的i_mapping字段指向同一索引节点的i_data字段,address_space的host字段也指向其索引节点;当直接访问磁盘块时,持有者为对应块设备文件,则address_space对象记录在块设备文件的块描述符的bdev的bd_inode字段中,块设备文件的索引节点与文件索引节点一样使用i_mapping字段指向address_space对象,address_space对象的host字段指向设备文件的索引节点,这种情况下的页缓存区的块缓冲区涉及的块必须在块设备上相邻,这种缓冲区页称作块设备缓冲区页(简称块设备页);
2、基树
address_space对象使用基树进行页描述符管理,其page_tree字段是基树的根。基树的每个节点有64个指针指向下层节点或页描述符,叶子节点指向页描述符,上层节点指向其他节点。