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

Virtual Block Caching(vbc)

一些操作系统使用物理偏移(或磁盘块地址)实现在系统内存中缓存文件数据。不同于其他使用磁盘块地址的操作系统,NT缓存管理器通过对文件流缓存使用文件映射方法提供虚拟块缓存(vbc)。图6-1描述这两种数据缓存方法之间的不同。值得注意的是,指示逻辑顺序的序号在操作系统中被实现(Note that the numbering indicates the logical sequence in which the operations areperformed.)。

在使用物理块寻址缓存数据的操作系统(UNIX SVR4老式缓冲区缓存实现)中,文件系统或缓存模块必须在检查数据存在于系统缓存中之前,先把虚拟字节偏移转换成一个磁盘上物理块偏移文件,因此,缓存模块—缓冲区缓存—使用物理块编号保持对被缓存数据的跟踪。无论如何,如6-1图示,NT缓存管理器使用文件中虚拟字节偏移来跟踪缓存信息。缓存管理器不需要理解将要被访问的物理块地址。因此,仅当数据不能被从正在被缓存管理器管理的缓存中取得的时候,NT操作系统的文件系统驱动通常将磁盘文件虚拟字节偏移转译为磁盘物理块偏移,如果数据不能被维持。

使用虚拟块缓存的好处(与物理块缓存对比):

一些应用程序可以使用本地NT系统调用来访问文件数据,比如,NtReadFile()或NtWriteFile(),但是其他应用程序同时执行可以把需要读或者写访问所需要的数据映射到自己进程地址空间。使用虚拟块缓存,通过文件映射,然后使用适当的同步机制,使得所有这样的应用程序看到几乎全部当前数据成为可能。

概念上讲,被NT缓存管理器映射的文件数据和被应用程序映射的文件数据没有区别。通过使用文件映射模型,所有物理内存都可用来缓存数据。综上所述,NT虚拟内存管理器来管理物理内存的分配;被分配给缓存管理器的物理内存页数量依赖于系统中其他组件对内存需求量的变化。

I/O管理器经常直接调用缓存管理器,完全绕过文件系统驱动或者网络重定向驱动。在一些案例中,缓存管理器通过一个硬件虚拟寻址来解析访问文件是可能的。这明显比,在系统缓冲区中数据合法检查之前,将虚拟地址转换到物理磁盘地址更高效。



相关推荐
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页