首先,这两件事可能存在:
如果我按下键盘上的一个键,键盘将向CPU/内核发送一个中断,而内核将处理这个中断。但是,也许当前正在运行的进程不是我们眼前的前景进程,它可能是一个守护进程或其他什么。因此,内核如何知道哪个进程应该读取/响应我们的关键笔画?
谢谢!
发布于 2015-04-07 14:50:59
硬件中断只由内核处理。处理特定于设备的事件,如果有事件/数据要与用户空间共享,则驱动程序将使其可用。在键盘示例中,设备驱动程序为中断提供服务,提取任何数据并清除条件。然后将表示从硬件中提取的数据的输入事件发送到输入子系统。用户空间进程必须在读取时打开并阻塞公开的输入设备句柄。内核中的输入子系统正在管理这一点。在其他驱动程序中也很常见:公开一个设备句柄(例如/dev/misc/mydevice),它响应于打开/关闭/读/写/ioctl。当进程执行“读”而没有数据时,内核代码会阻塞调用进程,导致它等待,直到有满足读取条件的数据。我建议阅读内核设备驱动程序。"Linux设备驱动程序“是一个很好的开端。
https://stackoverflow.com/questions/29494374
复制相似问题