与软件中断相比,硬件中断如何工作?

与软件中断相比,硬件中断如何工作?

为了让您了解我感兴趣的细节程度,举一个例子。我知道系统调用最终会导致陷阱,从而让处理器存储寄存器、切换到监控模式并执行间接跳转。但这只是一种特殊情况(或者是吗?)。

那么,当发生硬件或软件中断时,硬件层面究竟会发生什么呢?

有哪些区别和共同点?硬件和操作系统究竟如何协作才能使中断正常工作?

答案1

硬件中断发生在硬件层面。这些中断可以是陷阱和暂停之类的操作,处理器本身会保存其状态并等待输入或执行其他不一定属于原始程序的操作(例如,如果除以零,处理器必须执行程序正常执行期间不打算执行的操作)。

也许更重要的是,硬件中断使处理器不必在所谓的轮询循环中浪费时间。想象一下,如果您必须查看用户是否按下了某个键。有两种方法可以做到这一点。第一种方法是经常检查并查看是否按下了该键。虽然这种方法可行,但很浪费,因为绝大多数情况下检查结果都是否定的。中断允许按键本身改变程序的状态,以便在按下键时得到“通知”。第二种方法在许多情况下显然更有效。

软件中断通常意味着上下文切换,由操作系统完成。在某些情况下,它只意味着操作系统交换当前正在执行的程序(如果您的计算机正在运行 50 个进程,除非您有 50 个核心/线程,否则程序同时执行的事实是一种假象),因此类似于上面键盘的例子,它正在等待某个事件发生(请参阅有关基于事件的编程的更多信息这里(摘自维基百科)

值得注意的是,虽然在很多情况下基于中断的编程是一个好主意,但是在存在许多基于中断的编程的应用程序中,如果它发生得太频繁,可能会效率较低,甚至可能导致系统崩溃。

相关内容