【问题标题】:Do device drivers communicate with each other, or are they asynchronously called?设备驱动程序是相互通信,还是异步调用?
【发布时间】:2013-11-18 21:17:31
【问题描述】:

我将画一个非常清晰的细节示例。

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

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

【问题讨论】:

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


    【解决方案1】:

    鼠标驱动与视频驱动无关。您在内核空间和用户空间中发生的事情之间的区别是错误的。

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

    GUI 都是在用户空间中处理的,这就是下拉框、鼠标指针等概念的地方...无论处理您的 GUI 的程序都需要内核接口并对其进行处理,例如关联输入设备使用鼠标指针并将视频输出到屏幕。

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-31
      • 1970-01-01
      相关资源
      最近更新 更多