Windows系统缓存管理机制深度解析
1. 缓存管理器分区
缓存管理器分区包含与缓存相关的数据,如全局共享缓存映射列表、工作线程列表(预读、后写、额外后写、惰性写入器和惰性写入器扫描、异步读取)、惰性写入器扫描事件、记录后写历史的数组、脏页阈值的上下限、脏页数量等。
当缓存管理器系统分区初始化时,所有所需的系统线程会在属于该分区的系统进程上下文中启动。每个分区都有一个关联的最小系统进程,该进程在分区创建时(通过 NtCreatePartition API)创建。
系统通过 NtCreatePartition API创建新分区时,会创建并初始化一个空的 MI_PARTITION 对象(内存可从父分区移动到子分区,或稍后使用 NtManagePartition 函数热添加)。缓存管理器分区对象仅按需创建。若在新分区上下文中未创建文件,则无需创建缓存管理器分区对象。
当文件系统为缓存访问创建或打开文件时, CcinitializeCacheMap(Ex) 函数会检查文件所属的分区,以及该分区是否与缓存管理器分区有有效链接。若没有缓存管理器分区,系统会通过 CcCreatePartition 例程创建并初始化一个新的分区。新分区会启动与缓存管理器相关的独立线程(如预读、惰性写入器等),并根据特定分区的页面数量计算脏页阈值的新值。
文件对象通过其控制区域包含指向所属分区的链接,该控制区域最初由文件系统驱动程序在创建和映射流控制块(SCB)时分配。目标文件的分区存储在文件对象扩展(
超级会员免费看
订阅专栏 解锁全文
1233

被折叠的 条评论
为什么被折叠?



