首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么设备驱动程序会导致页面错误?

为什么设备驱动程序会导致页面错误?
EN

Stack Overflow用户
提问于 2011-08-10 13:03:31
回答 1查看 717关注 0票数 2

我有一个Windows控制台应用程序,它使用并行IO卡进行高速数据传输。(通用标准HPDI32ALT)

我的进程在用户模式下运行,但是,我确信在设备API的后面有一些内核模式驱动程序活动(PCI传输、读取设备状态寄存器等)。工作模式大致如下:

  • 启动时:我从API请求一个指向IO缓冲区的指针。
  • 在我的主循环中:
    • 在设备缓冲区中等待空间的API块(低水印)
    • 用传输数据填充IO缓冲区
    • 通过将指针传递到IO缓冲区开始向设备传输数据(在此期间,API使用PCI总线上的DMA将数据移动到卡上)
    • 等待IO完成的API块。

应用程序似乎正确地工作在适当的数据速率和长时间的持续吞吐量,然而,当我查看sys内部工具process中的进程时,我会看到大量的页面错误(~6k /秒)。我要把~30 to /s移动到这张卡上。

我有大量的RAM,并且相当肯定页面错误与磁盘IO无关。

对于什么可能导致页面错误有任何想法吗?我也有这个应用程序的接收端,即在接收模式下使用相同的IO卡。API的接收模式使用不会导致大量页面错误。

将IO缓冲区移动到内核模式的行为会导致页面错误吗?

EN

回答 1

Stack Overflow用户

发布于 2011-08-10 15:03:00

所以您的应用程序要求驱动程序提供内存缓冲区,然后将发送数据复制到该缓冲区中?这是一个非常奇怪的模型,通常让应用程序管理缓冲区。

如果您正在错误的6K页/s,而您只传输30 If /s,您几乎是得到一个页面错误的每一个页面,您转移。当您从驱动程序中获得数据缓冲区时,它总是零填充吗?我想知道你是否每一次换车都有零故障。

-scott

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7011206

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档