资源描述:
《Windows NT File System Internals_7 中文翻译》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、导言:理解一本原版精典是我们每一个刚进入IT行业人员的梦想,今天这里将见证一位初哥的心历路程.需要中文原版的同志网上有.全部中文版可能马上就要面市了.大家可以在网上各大书店搜搜.....下面是我7章以后的译文....不好勿拍 ...也希望我能坚持下去. 谢谢支持!Windows NT File System Internals第七章 NT缓存管理器II 本章主要介绍:1.NT缓存管理器构造2.模块间交互(文件系统和网络重定向器)3.NT缓存管理器接口 上一章,我们介绍了NT缓存管理器怎样给文件流分配全局缓存,还有预读和延迟写功能.这一章我
2、们要理解这样的问题,NT缓存管理器自身并不提供那样的功能,它必须和虚拟内存管理器,I/O管理器,文件系统还有网络重定向驱动一起偕同工作才能达到增加吞吐效率和提升系统性能的目的. 在这一章甚至还有下一章,我们会对NT缓存管理器当前的接口有个详细的说明.我指出个大概,接口中有些是NT缓存管理器为文件流缓存保留在内部使用的数据结构.其中的有些数据结构在我们以前的章节中也提到过.在本章你将会看到,NT缓存管理器怎样使文件流缓存在内存中的全部相关信息保持一致. 下面,我来描述一下,NT缓存管理器和文件系统驱动还有网络重定向器之间的相互关系.其中包括他们为获取资源而相互竞争,以及在为文件流启用前进行
3、缓存部件检查的详细过程.在我们提供的示例代码基础上,可以在你自己的现实开发环境下开发并扩展出更多具体的功能. 虽然NT缓存管理器给文件系统驱动输出的例程非常简单,当前调用NT缓存管理器的模块仍然会发送自己的回调函数.我会在本章列出一些这样的例程给大家.在第十一章我们会更深入的介绍文件系统驱动的回调输出例程,Writing a File System Driver III 详细的说明和例子见附件.注消接口和MDL接口我们会在本章结尾论述. NT缓存管理器结构 NT缓存管理器为每个文件流维护高速缓存的运行状态,在检查和NT缓存管理器相关的其它部件之前.这些信息可以被我们利用,用来描述NT缓
4、存管理器内部给文件流缓存提供的状态信息的数据结构.给一点小提示,当前公开的在NT缓存管理器上使用的数据结构,有一部分会持续更新,在新一版的Windows NT操作系统会包括这些更新的信息. I/O管理器为每一个成功打的文件流创建一个文件对象结构.为每个被启动的文件对象维护缓存相关状态信息: .一个专用的文件对象缓存映像结构 .一个共享的文件对象缓存映像结构,表示全部打开文件中相同的文件流. NT缓存管理器为每个刚打开的文件对象分配一个专用的缓存映像结构,这对每一个文件对象来说都是唯一的,因此多个专用缓存映像结构可以在一个打开的文件流中同时存在.另一方面,在一个文件流被启用并通过一
5、些文件对象的时候,NT缓存管理器仅分配一个共享缓存映像.共享映像被打开这个文件流的例程使用.通过文件对象结构的SectionObjectPointer字段可以间接的存取这个映像. 来回忆下以前我们介绍过的,NT缓存管理器通过映像视图为文件流提供缓存服务.每个文件映像视图通过NT缓存管理器在一个叫做虚拟地址控制块(VACB)中描述.这个映像的粒度或者说每个文件流的映像视图大小是固定的,它们通过NT缓存管理器设置,虚拟地址控制块(VACB)也是同样的.这个固定的值规定了NT缓存管理器许可每个窗口最大的文件流.管理器也提供一个全局的VACB结构数组,分配VACB到指定文件流需要的地方. 共享缓
6、存映像结构是文件流缓存信息中的主要部分,它由NT缓存管理器维护. 在同一个文件流中相关的所有VACB通过NT缓存管理器管理的共享缓存映像结构进行存取,每个VACB块中包括相关视图的虚拟地址及文件流的开始偏移地址.它帮助NT缓存管理器确定用户请求的范围是否在己经存在的视图映像中.如果不在视图映像里.NT缓存映像管理器创建一个新的视图并分配一个VACB来表示它.包涵文件流的VACB块列表我们使用一个指向共享缓存映像的VACB指针数组来存取.自从VACB结构在一个全局的VACB池中被分配了一个固定大小后,有可能发生这种情况,当一个文件流的视图被创建的时候NT缓存管理器没有足够的VACB空间.那么
7、,NT缓存管理器就需要释放一个以前的视图映像,并把VACB从文件流VACB列表中移出,重新给这个新来的文件流分配VACB.甚至这个操作不是必须的,自从VACB被释放后文件件关闭操作也会完成,一个空闲的VACB无论在什么时候都是有用的. 像图7-1所示的那样,一个文件流缓存的全部私有缓存映像结构被链接到一起,这些通过共享缓存映像结构中的一个字段指出.文件系统和网络重定向器之间的互相关系. 文件系统驱动和网络