【发布时间】:2015-12-06 06:17:44
【问题描述】:
我正在尝试确保在发生特定硬件中断后尽快执行唯一的用户进程。
我知道这样做的一种机制是编写一个小型内核模块,该模块在读取处理程序中休眠时导出设备。该模块还注册了一个 irq 处理程序,它除了唤醒进程之外什么都不做。然后从用户的角度,读取该设备块,直到相关中断发生。
(1) 在具有主线内核的现代 CPU 上,您能否可靠地预期内核看到中断与用户进程重新获得控制之间的亚毫秒延迟?
(2) 在主线内核上是否有任何更低延迟的机制?
【问题讨论】:
-
您的方法似乎没问题。我不确定亚毫秒级的延迟,但它可能可以通过“轻”内核达到(你总是可以在你的机器上测试它)。但是可靠性是实时系统的属性。非 RT 操作系统不提供任何有关响应时间的保证。
-
亚毫秒级可能很难实现,但无论如何您都需要 RT 补丁 rt.wiki.kernel.org/index.php/Main_Page
-
抱歉,编辑澄清我试图了解如何在非面向实时的内核上尽可能降低这种延迟。是否有任何其他技巧或者这是可以做到的最好的?
标签: linux-kernel linux-device-driver freebsd openbsd