起初,这两个东西可能存在:
- 一个系统有一个响应硬件中断的表
- 一个进程有一个表来响应内核发送/设置的中断
如果我在键盘上敲了一个键,键盘会向CPU/内核发送一个中断,内核会处理这个中断。但是,也许当前正在运行的进程不是我们眼前的前台进程,它可能是守护进程或其他东西。那么,内核如何知道哪个进程应该读取/响应我们的击键?
谢谢!
最佳答案
硬件中断仅由内核处理。处理特定于设备的事件,如果有事件/数据要与用户空间共享,则驱动程序将其提供。在您的键盘示例中,设备驱动程序为中断提供服务,提取任何数据并清除条件。表示从硬件中提取的数据的输入事件然后被发送到输入子系统。用户空间进程必须打开公开的输入设备句柄并在读取时阻塞。内核中的输入子系统正在管理它。在其他驱动程序中也很常见:公开响应打开/关闭/读/写/ioctl 的设备句柄(例如/dev/misc/mydevice)。当进程执行“读取”并且没有数据时,内核代码会阻塞调用进程,使其等待直到有数据满足读取条件。我建议阅读内核设备驱动程序。 “Linux 设备驱动程序”是一个很好的开始。
关于linux - 内核如何找到发送硬件中断的正确进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29494374/