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

Operating system 中断处理程序如何知道将数据传递给哪个线程?,operating-system,interrupt,interrupt-handling,Operating System,Interrupt,Interrupt Handling,假设我们在unix shell中工作,并键入了一个命令“ls”。当我们点击回车键时,一个中断请求(IRQ)从键盘控制器发送到处理器。当接收到IRQ时,处理器停止它正在做的任何事情,保存执行上下文并运行中断处理程序。 我很好奇,关于按下哪个键的信息是如何传递给感兴趣的线程的(在我们的例子中,它是属于unixshell进程的线程)?我猜这就是中断处理程序的角色?当中断发生时运行的代码不一定是unixshell的代码,对吗?导致线程在等待IO时被阻塞?中断处理程序很可能只是将关键代码保存在数据结构中,

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

中断处理程序很可能只是将关键代码保存在数据结构中,并发出某种事件的信号,以便桌面/窗口管理器/无论它是什么,都可以获取数据并使其可用于当前活动的(控制台)窗口

显然,数据可以随时到达,而不一定是在程序(或shell)在
getchar()
或类似程序中等待数据时到达。由于数据传输的异步特性,需要对数据进行缓冲


ISR对shell或您的程序或桌面设备如何处理其余的键盘数据传输几乎一无所知。

中断处理程序很可能只是将关键代码保存在数据结构中,并发出某种事件的信号,以便桌面/窗口管理器/无论它是什么,都可以获取数据并使其可用于当前活动(控制台)窗口

显然,数据可以随时到达,而不一定是在程序(或shell)在
getchar()
或类似程序中等待数据时到达。由于数据传输的异步特性,需要对数据进行缓冲

ISR对shell或您的程序以及桌面设备如何处理其余键盘数据传输一无所知