中断处理程序如何知道哪个线程传递数据?

时间:2013-03-28 13:31:45

标签: operating-system interrupt interrupt-handling

假设我们正在使用unix shell并输入命令“ls”。当我们按下回车键时,中断请求(IRQ)从键盘控制器发送到处理器。当收到IRQ时,处理器会停止正在执行的操作,保存执行上下文并运行中断处理程序。 我很好奇如何将有关键被按下的信息传递给感兴趣的线程(在我们的例子中,它是属于unix shell进程的线程)?我猜这是中断处理程序的作用?发生中断时运行的代码不一定是unix shell的代码,对吧?当线程等待IO被阻止时?

1 个答案:

答案 0 :(得分:1)

中断处理程序很可能只是将密钥代码保存在数据结构中并发出某种事件信号,因此desktop / window_manager / whatever_it_is可以抓取数据并使其可用于当前活动(控制台)窗口。

显然,数据可以随时到达,而不一定是您的程序(或shell)在getchar()或类似内容中等待它的时候。由于交付的异步性,数据需要缓冲。

ISR很少了解有关shell或程序的任何信息,或者桌面内容如何处理其余的键盘数据传输。