pursuer_zhao
驱动牛犊
驱动牛犊
  • 注册日期2003-10-23
  • 最后登录2005-10-17
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:3042回复:8

IFS Kit下关于FastIo的OSR文档翻译(1)

楼主#
更多 发布于:2004-11-11 12:39
在论坛上一吃气看完了XiangXiangRen的文件驱动发教程,当然XiangXiangRen还没有写完,其中关于Fast I/0还没有讲,所以我就向XiangXiangRen索要关于Fast I/0的部分,XiangXiangRen建议我把这个东东看一编,看完后还鼓励我翻译一份出来,大家共享,我就这么做了:)

文笔不好,各位大侠多指点!希望大家看完后知道我在说什么:)

使用Fast I/O

在这里我们将讲述Fast I/O的基本原理,简单描述各种各样的Fast I/O调用,以及得出如何使用此接口来提高程序性能的建议性结论。

Windows NT内核模式开发的标准做法是采用IRP作为基本的与驱动程序通信的手段,它的优点是IRP封装了上下文所需的详细操作并且允许从驱动程序的众多操作细节中分离出来。

这个方法在windos NT的分层设备体系中非常通用,有相当多的上层操作请求需要快速响应,在这种情况下,上层操作生成IRP决定了整个操作的成本并会导致系统性能的下降。鉴于此,NT系统引入的Fast I/O的概念。这种方法被用在文件系统驱动,如NTFS,HPFS,FAT和CDFS以及被WinSock使用的传输驱动AFD。

任何驱动都可以注册一系列Fast I/O接口,但使用起来还有很大的限制―在这些接口被调之前需要满足合适的条件。例如,读操作和写操作的Fast I/O接口只有当Windows NT cache管理器保留了文件的信息时才被调用。我们在接下的论述中将会讲述这些限制。

当然,Windows NT的Fast I/O最让人郁闷的是关于它的资料很少,即使文件系统开发包也没有讲述Fast I/O是如何工作和怎样来使用Fast I/O。

原理

提供了Fast I/O是非常方便的---许多I/O操作可以对相同的数据进行重复操作。例如和许多流行的操作系统一样,Windows NT用虚拟内存集成了文件系统的缓冲,这样的系统无论是在使用上还是在感觉上都很有效率。

这种集成的另一原因是Windows NT支持内存映射文件。支持读写和内存映射相同的数据要么需要代价很高的cache一致性策略,要么使用NT的策略---将所有数据存储在虚拟内存中。这样,即便是两个程序用不同的技术访问相同的数据,也确保了数据的一致性。

这种紧密的集成意味着无论是读还是写都经常是对cache中的数据来操作。在查找过程中,这种策略用来调用一个特殊的程序,此程序将虚拟机(VM)的cache中的数据移到用户内存中,反之亦然。这样就避免了生成IRP,并且不需要请求底层的驱动了。这就是Fast I/O操作的基本功能。

一旦在程序中定义了Fast I/O读写接口,那么同时还需要进行一步添加其它的通用Fast I/O操作到Fast I/O链中,Fast I/O链中有13个接口(在NT3.51中)。在我们接下来要讲的各接口过程中,你会明显地发现各接口是互相关联的。这些接口包含在FAST_IO_DISPATCH结构中,此结构在ntddk.h中有定义。这个结构的第一个元素表示结构的大小,为以后在结构添加新接口提供了一种向上兼容的机制。

最新喜欢:

TOMG2004TOMG20...
fslife
驱动大牛
驱动大牛
  • 注册日期2004-06-07
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分9分
  • 威望49点
  • 贡献值0点
  • 好评度20点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-11-11 14:52
好东西!
老兄辛苦了!!
在交流中学习。。。
newkey
驱动小牛
驱动小牛
  • 注册日期2002-10-03
  • 最后登录2013-10-13
  • 粉丝1
  • 关注0
  • 积分45分
  • 威望392点
  • 贡献值1点
  • 好评度90点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-11-11 15:08
刚好才看了e文,再看一遍国文的

:)

继续
www.xDrv.com
pursuer_zhao
驱动牛犊
驱动牛犊
  • 注册日期2003-10-23
  • 最后登录2005-10-17
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2004-11-11 15:22
有人关注就是我继续的动力:)

=======================
QQ:37052768
MAIL:pursuer_zhao@tom.com
cicada
驱动小牛
驱动小牛
  • 注册日期2003-12-09
  • 最后登录2008-07-11
  • 粉丝1
  • 关注0
  • 积分74分
  • 威望15点
  • 贡献值0点
  • 好评度7点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2004-11-11 16:55
好东西,不过把E文也贴出来吧。谢谢!
newkey
驱动小牛
驱动小牛
  • 注册日期2002-10-03
  • 最后登录2013-10-13
  • 粉丝1
  • 关注0
  • 积分45分
  • 威望392点
  • 贡献值1点
  • 好评度90点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2004-11-12 00:12
e文的

Content provided by OSR Open Systems Resources, Inc.
Using Fast I/O
In this article we will provide the rationale for fast I/O, a brief description of the various fast I/O
calls, and conclude with some suggestions on how to use this interface to improve performance for
your project.
The standard dogma for Windows NT kernel mode development is that NT uses the I/O Request Packet
(IRP) as the basis of communications with drivers
www.xDrv.com
paladinii
驱动中牛
驱动中牛
  • 注册日期2003-10-28
  • 最后登录2012-03-09
  • 粉丝0
  • 关注0
  • 积分282分
  • 威望74点
  • 贡献值0点
  • 好评度23点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2005-02-04 20:02
太好了!顶。。。
Ideas for life!
tony163163
驱动牛犊
驱动牛犊
  • 注册日期2004-04-14
  • 最后登录2011-04-06
  • 粉丝0
  • 关注0
  • 积分161分
  • 威望19点
  • 贡献值0点
  • 好评度16点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2005-02-06 22:17
顶,哪天也反一个。
gongxp123456
驱动牛犊
驱动牛犊
  • 注册日期2004-12-15
  • 最后登录2013-10-10
  • 粉丝0
  • 关注0
  • 积分617分
  • 威望383点
  • 贡献值1点
  • 好评度59点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2007-01-09 01:14
好东西!
老兄辛苦了!!
游客

返回顶部