【翻译WINDOWS NT FILE SYSTEM INTERNAL】NT缓存管理器一(8)

来源:互联网 发布:结婚成本 知乎 编辑:程序博客网 时间:2024/05/29 11:30

缓存管理器客户

       接下来的组件是缓存管理器提供接口的典型用户。那些组件仅仅被认为是缓存管理器的客户。

1.      文件系统驱动,比如NTFS,FASTFAT,CDFS,以及其他第三方文件系统使用缓存管理器的拷贝接口服务来执行每一个文件数据操作。这样会有很高的性能,因为一旦数据被缓存在系统内存,后续的数据访问操作可以被立即执行,而不用再从二级存储媒介获得数据。文件系统驱动仅仅使用缓存管理器来缓存文件系统元数据,包括卷结构,目录信息,磁盘自由空间位图(置位表),文件关联扩展属性,其他类似信息。许多这些结构经常被文件系统驱动锁定在内存。注意,缓存管理器不解释被缓存数据流的类型;它仅仅知道关于文件对象数据结构和与文件对象有关的数据流的信息。

文件系统驱动仅仅典型的使用缓存管理器提供的预读和延迟写功能,尽管这是可能的,某一成熟的文件系统实现可以添加他们自己对预读和延迟写操作的支持。最后,所有的文件系统驱动必须使用缓存管理器提供的文件流操作函数来正确的和缓存管理器协作。

 

2.      网络重定向器和文件系统驱动实现很相似;但是,那些模块通过网络从文件服务器获得数据,代替了直接从绑定在宿主系统的二级存储设备取得数据。那些组件一般会在系统缓存中缓存大量数据流来提供极快性能,能和本地文件系统相比。            网络重定向器一般使用缓存管理器提供的拷贝接口。他们可能仅适用MDL接口来直接DMA数据进出系统缓存。那些组件仅仅从缓存管理器提供的预读和延迟写功能来获得好处。为了初始化和终止特定数据流上的缓存,或者去执行其他缓存操作函数,网络重定向器使用文件流操作函数。

3.      网络文件服务器是缓存管理器的间接客户,因为它最终使用本地文件系统来获取访问文件数据。那些驱动从不直接调用缓存管理器例程。由于性能原因,文件服务器常常被实现为内核模式驱动。他们通过接受那些请求的文件系统驱动使用拷贝接口。文件系统服务器一般使用DMA来传输数据,直接进出系统缓存。为了做到这些,文件服务器使用MDL接口调用缓存管理器。由于文件服务器不能直接调用缓存管理器,他们使用特殊标记的读/写IRP发送到文件系统驱动来请求为一个文件流的特定虚拟地址范围创建一个MDL。在数据被传输完成以后,文件服务器通知文件系统驱动,先前创建的MDL现在可能被删除了。第九章,包含一个例子,关于文件服务器用来请求创建和删除系统缓存中数据缓冲区用的MDL的标记。

4.      过滤驱动,或者其他为特定目的使用NT文件系统接口的驱动,是缓存管理器的间接客户。考虑一个过滤驱动,它提供被存储在较慢媒介(磁带或者光介质)上数据的硬盘缓存。这样的驱动使用本地文件系统服务来存储缓存信息。因此,过滤驱动是缓存管理器的间接客户,因为文件系统支持过滤驱动使用拷贝接口来传输数据进出系统内存。相似的,考虑一个提供HSM(High-Speed Memory)功能的过滤驱动。一个驱动从相对快的二级存储设备移动数据,比如磁盘,到一个慢速设备,比如磁带。为了帮助加速(speed up)这个过程过滤驱动使用DMA来直接从系统缓存向磁带传输数据,因此,使用缓存管理器提供的MDL接口(通过发往文件系统驱动的读/写IRP中的特定标记)。在传输结束之后,过滤驱动将会通知文件系统驱动,之前创建的MDL可以被删除了。                                                                               

表6-1列举了缓存管理器的客户使用的多种接口。





原创粉丝点击