有一个程序,需要同时打开多个大文件进行读操作,比如32个40M的文件。分别读一部分内容后输出到指定的设备,设备在中断处理程序中将内容送出。问题:因为中断教快,不能在指定的时间内读取文件,导致设备工作不流畅。是否有好的处理文件的方法,能够快速读取数据?
回复(6) 2001-12-29 12:44 来自版块 - 内核编程
表情
leehan其实我的应用中,文件访问是顺序的,而且每次读取的长度是一样的,在卡中对应每个通道有两块映射的内存区域与之对应,其中一块用来做cache,但还是有我所说的问题。 上层程序是用普通的文件操作做的,我希望其它的方式会对性能有所提高。 (2001-12-31 09:30)
lu0无论哪种方法. 最终都向FSD请求读文件. 最快的应该是自己预先CACHE一段内容. 等中断来了直接从内存TRANSFER. 由于东西太大,不能全部CACHE下来. 这就要靠你的预测算法了.(2001-12-30 19:31)
leehan我用VC写的程序,好象没有Alert IO。 想用内存映像试一试。 谢谢!(2001-12-29 17:03)
KDriverAlert IO呢,这个支持吗。 类似于完成端口,但是这个东西是使用一个CallBack函数来做,不用线程,效率相对完成端口要低,但是也是第二好的方法了 (再不支持,就没有办法了) 另外,在这里胡说一句,win98是桌面系统,你不能对他期望太高,像你的这种要求性...(2001-12-29 16:46)
leehan谢谢! 可我在98下,98对完成端口不支持。(2001-12-29 16:40)
KDriver给你一点提示,自己看 文件映射(File Mapping) 完成端口(Completion Port) 看书 《windows高级编程指南》 第三版 清华大学出版社 作者 : Jeffery Richer (2001-12-29 13:19)

返回顶部