内核是如何找到发送硬件中断的正确过程的

时间:2015-04-07 14:43:12

标签: linux linux-kernel linux-device-driver

起初,这两件事可能存在:

  1. 系统有一个响应硬件中断的表
  2. 进程有一个表来响应内核发送/设置的中断
  3. 如果我按下键盘上的某个键,键盘会向CPU /内核发送一个中断,内核会处理这个中断。但是,也许当前正在运行的进程不是我们眼前的前景,它可能是一个守护进程或其他东西。那么,内核如何知道哪个进程应该读取/响应我们的击键?

    谢谢!

1 个答案:

答案 0 :(得分:2)

硬件中断仅由内核处理。处理特定于设备的事件,如果存在要与用户空间共享的事件/数据,则驱动程序使其可用。在您的键盘示例中,设备驱动程序为中断提供服务,提取任何数据并清除条件。然后,表示从硬件中提取的数据的输入事件被发送到输入子系统。用户空间进程必须在读取时打开和阻止公开的输入设备句柄。内核中的输入子系统正在管理它。在其他驱动程序中看到相同的情况非常常见:公开响应open / close / read / write / ioctl的设备句柄(例如/ dev / misc / mydevice)。当一个进程执行"读取"并且没有数据,内核代码阻塞调用进程,使其等待直到有数据满足读取条件。我建议阅读内核设备驱动程序。 " Linux设备驱动程序"是一个很好的开始。