1

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

4

1 回答 1

1

中断处理程序很可能只是将关键代码保存在数据结构中并发出某种事件的信号,以便 desktop/window_manager/whatever_it_is 然后可以获取数据并将其提供给当前活动(控制台)窗口。

显然,数据可以在任何时候到达,而不一定是当您的程序(或外壳)在内部getchar()或类似的地方等待它时。由于数据传输的异步特性,需要缓冲数据。

ISR 几乎不知道关于 shell 或您的程序的任何事情,或者桌面事物如何处理其余的键盘数据传递。

于 2013-03-28T14:39:22.360 回答