NT缓存管理器(一)

在这篇文章中,我们将对缓存管理器的一个运行时例程做个基本的描述。此外,对于这些例程使用的一些方法以及示例代码,可以参考Microsoft IFS Kit。

缓存管理器概述

缓存管理器是一个软件部分,集成在Windows Nt内存管理器中,以集成文件系统(数据)和虚拟内存系统。一些操作系统完成它们自己的文件系统,所以它们有自己的数据cache. 然而,因为这些caches受物理内存限制,它们在大小上受限 – 用作cache的这块内存在系统中也不能做其它用途使用了。

因此,使用windows NT缓存管理器的一个关键优势是,它可以使文件缓存和程序运行所需要的物理内存达到平衡。当应用程序是I/O密集型的时候,所谓的“平衡”就倾向于做缓存数据。当应用程序非常耗内存,那么用来缓存数据的内存可能会被减为0。因此最终结果是系统更好地使用物理内存从而提供更好的性能。文件系统使用缓存管理器的另一个重要原因是,文件能这样被访问:通过标准文件系统接口(例如读和写)或者通过内存管理器(一个内存映像文件)。当对同一个文件同时使用这两种方法的时候,缓存管理器能够提供机制以保证数据一致性。

缓存管理器数据结构

文件系统和缓存管理器的接口依赖于一个过程接口。基本上缓存管理器里用到的所有数据结构都关联于一个文件,但是这些数据结构的所有内部结构对于文件系统是透明的。这一部分我们会描述那些关键的数据结构(被文件系统和缓存管理器共享的数据结构)。

缓冲区控制模块

缓冲区控制模块被缓存管理器用来追踪,当文件的一部分被映射到系统地址空间的时候。

大部分BCB是不透明的。BCB的第一部分曝光给文件系统:

          typedef struct _PUBLIC_BCB {

                CSHORT NodeTypeCode;

                CSHORT NodeByteSize;

                ULONG MappedLength;

                LARGE_INTEGER MappedFileOffset;

           } PUBLIC_BCB, *PPUBLIC_BCB;

前两个域是标准的WindowsNT数据结构,它们指定数据结构本身的类型和大小,后两个域指明了由这个特定BCB管理的文件范围。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值