Windows文件缓冲处理技术概述

2018-12-21 21:23陈亦欣江汉大学数学与计算机科学学院
数码世界 2018年2期
关键词:缓冲区驱动程序管理器

陈亦欣 江汉大学 数学与计算机科学学院

1 Windows缓存管理器

缓存管理器是Windows系统中的一个组件,提供一个与I/O管理器、虚拟内存管理器和文件系统协同作业的数据缓冲,这个缓冲在整个操作系统的存储设备上保持一致。缓存管理器把可用内存空间分割为跟页面一样大的缓冲区,磁盘中的数据可读入缓冲区,缓冲区数据可写入磁盘。缓存管理器以及文件系统二者可互相调用,前者为后者提供一些调用,并发出IRP请求,后者则为前者注册回调函数。

当有程序首次发出读文件请求时,缓存管理器就把文件数据读取到文件系统缓存之中,接着用户态进程把缓冲区中的数据复制到自己的进程空间里;而当进程完成了自身的工作后,数据先被写入文件系统缓存,最后再由缓存管理器将缓冲区中的数据写回磁盘文件中。

由于被缓冲文件的一切I/O请求全部需要通过缓存管理器,对于缓存管理器的策略会根据用户态进程的数据访问模式的不同而进行调整。对于一个请求读文件的应用程序,缓存管理器会预先将其请求之后的数据也读入缓冲区,从而使得当应用程序接下来请求后面的数据时可以快速响应,缩短了等待时间。对于一个请求写文件的应用程序,缓存管理器会将数据写入缓冲区并保留一段时间暂时不写入磁盘,延迟一段时间再将缓冲区数据一起写入磁盘中。这样就能使多个写操作合并成为一次写操作,更有效率,也降低了重复修改同一块数据时对磁盘反复写的负载。

2 缓冲文件读写

缓存管理器将文件映射到内存中实现缓冲文件数据。一个由用户态进程发起的读操作被I/O管理器传递到文件系统时,缓存管理器协同I/O管理器、虚拟内存管理器和文件系统共同工作,流程如下:

(1)用户应用程序执行一个读操作,它使控制被转移到内核中的I/O管理器中。

(2)I/O管理器使用IRP来把一个读请求传递给合适的文件系统驱动。

(3)文件系统驱动接收到读请求并发现是该读操作是针对一个以缓冲方式打开的文件。如果缓冲尚未初始化,那么缓存管理器就会被文件系统驱动调用从而将其初始化。反过来,缓存管理器请求虚拟内存管理器为被缓存的文件创建一个文件映射(段对象)。

(4)文件系统驱动程序调用CcCopyRead将读取请求传递给缓存管理器。缓存管理器此时负责将数据传输到用户缓冲区的一系列必要步骤。

(5)缓存管理器检查它的数据结构,以确定是否存在含有用户所请求的字节范围的文件的映射视图。如果没有映射视图存在,则由缓存管理器创建一个。

(6)缓存管理器从映射视图复制数据到用户缓冲区。

(7)如果文件的映射视图不在包含所需数据的物理页中,则产生一个页错误,且控制转移到虚拟内存管理器。

(8)虚拟内存管理器为页错误分配物理页面,它们会被用来包含被请求的数据。然后通过I/O管理器向文件系统驱动发出一个非缓存分页I/O读操作。

(9)在接收到非缓冲的读请求时,文件系统驱动程序创建一个相应的I / O请求从二级存储介质获取数据并将该I / O请求传给较低层驱动程序。

(10)文件系统下的设备驱动程序从二级存储(或通过网络)得到数据并完成请求。

(11)文件系统驱动程序完成来自虚拟内存管理器的分页I/O请求。

(12)导致页错误的指令被重新执行。

(13)缓存管理器完成从映射视图到用户缓冲区的复制操作。

(14)缓冲数据被复制到用户缓冲区中后,缓存管理器将控制返回给文件系统驱动程序。这些数据也将为缓存管理器继续保留在虚拟地址空间里。虚拟内存管理器能随时将其从内存里抛弃。

(15)文件系统驱动完成由I/O管理器发送给它的原始IRP请求。

(16)I/O管理器完成用户原始的读取请求。

3 结束语

缓冲写操作的步骤也要依照一定的顺序来满足写入请求,和读操作是基本类似的。Windows操作系统通过文件缓冲机制大大提高了系统文件的读写相应效率。

[1]方旺盛等.2004.一种基于文件缓冲方式的操作大数据量数据的方法[J]. 计算技术与自动化, 23(4).

[2]陈炜,曹斌.基于双缓冲文件系统过滤驱动技术研究[J].信息安全与技术,2013,4(11):44-47.

猜你喜欢
缓冲区驱动程序管理器
避免Windows系统更新反复安装显示驱动
启动Windows11任务管理器的几种方法
应急状态启动磁盘管理器
阻止Windows Update更新驱动程序
缓冲区溢出漏洞攻击及其对策探析
用好Windows 10任务管理器
初涉缓冲区
本期导读
Linux系统下缓冲区溢出漏洞攻击的防范
在Win 7下利用凭据管理器提高访问速度等