设备驱动程序是否相互通信,还是异步调用?

时间:2013-11-18 21:17:31

标签: user-interface process operating-system device-driver multitasking

我将以清晰明确的细节描绘我所要求的一个例子。

假设我们处于典型的用户态应用程序中,例如绘制软件或文本编辑,我们决定将鼠标悬停在鼠标上或单击组合框。仅从这个输入中,需要从低级别的设备驱动程序获取鼠标的轨迹球,但视频驱动程序还需要在(看似)同时更新屏幕上指针的位置,如下所示:

enter image description here

如图所示,不移动鼠标,但调用驱动程序/更新屏幕不断工作。但是,如果我们选择单击菜单组合框/下拉列表并不断更新帧缓冲源,该怎么办?几乎是同时调用两个驱动程序,调用它们的是什么(GUI桌面,应用程序直接等)。因为鼠标在应用程序或任何地方都可以正常工作...这让我怀疑鼠标输入是否无限期地被系统调用,但视频输出更多地取决于应用程序是什么(如下所示,texpad)。

1 个答案:

答案 0 :(得分:1)

鼠标驱动程序与视频驱动程序无关。你在内核空间和用户空间之间发生的区别是错误的。

内核不知道“鼠标指针”的概念。它只导出一个界面,“我有一个输入设备给出X和Y坐标”。与视频驱动程序一样,它只导出一个界面,说“我有一个可以输出图片的设备” - 它不知道鼠标指针是什么。

GUI全部在用户空间处理,您可以在这里获得下拉框,鼠标指针等概念......无论程序处理什么,您的GUI都需要内核接口并对其进行处理,例如关联输入设备使用鼠标指针并将视频输出到屏幕。

如何将屏幕内容实际推送到硬件将取决于驱动程序,并且不涉及用户空间。 GUI只是告诉内核,“我希望屏幕看起来像这样”,内核处理其余内容。

如果您有多核CPU,两个驱动程序当然可以并行运行,但除非您实现驱动程序或调度程序,否则您不需要知道详细信息。