Operating system 轮询与中断

Operating system 轮询与中断,operating-system,interrupt,polling,Operating System,Interrupt,Polling,我对中断有一个基本的怀疑。假设一台计算机没有任何中断,因此为了进行I/O,CPU必须定期轮询*键盘按键、鼠标点击等。现在,如果有中断,CPU将定期检查中断线是否变高(或变低)。那么,如何通过使用中断来节省CPU周期呢。根据我的理解,我们现在不是检查设备,而是检查中断线。有人能解释一下我犯了什么基本错误吗 *这里我所说的轮询并不意味着CPU处于繁忙等待状态。引用Wikipedia的话,“轮询还指重复检查设备是否准备就绪,如果没有准备就绪,计算机将返回到不同的任务”检查中断线不需要任何CPU周期。这

我对中断有一个基本的怀疑。假设一台计算机没有任何中断,因此为了进行I/O,CPU必须定期轮询*键盘按键、鼠标点击等。现在,如果有中断,CPU将定期检查中断线是否变高(或变低)。那么,如何通过使用中断来节省CPU周期呢。根据我的理解,我们现在不是检查设备,而是检查中断线。有人能解释一下我犯了什么基本错误吗


*这里我所说的轮询并不意味着CPU处于繁忙等待状态。引用Wikipedia的话,“轮询还指重复检查设备是否准备就绪,如果没有准备就绪,计算机将返回到不同的任务”

检查中断线不需要任何CPU周期。这是由专用硬件完成的,而不是CPU指令。被称为中断的原因是,如果中断行被断言,CPU将被中断。

“CPU被中断”:它将离开(保持)正常的程序执行,然后执行ISR(中断子程序),然后再次返回到暂停程序的执行


CPU通过IRQ(中断请求)了解中断,如果(中断标志)

@David Schwartz和@RKT正确,则不需要任何CPU周期来检查中断线

基本上,处理器有一组连接到一组设备的中断线。当其中一个设备有话要说时,它会打开中断线,从而触发处理器(不需要任何软件的帮助)暂停当前指令的执行,并开始运行处理程序功能

下面是它的工作原理。当操作系统引导时,它使用一条特殊指令向处理器注册一组回调(实际上是一个函数指针表),该指令获取表的第一个条目的地址。当中断
N
被触发时,处理器从表中提取
N
th项,并在其所指的内存位置运行代码。函数中的代码是由OS作者在汇编中编写的,但通常它所做的只是保存堆栈和寄存器的状态,以便在调用中断处理程序后可以恢复当前任务,然后调用更高级别的公共中断处理程序,该处理程序用C编写,并处理“如果这是一个页面错误,则执行X”,“如果这是一个键盘中断,则执行Y”,“如果这是一个系统调用,则执行Z”,等等。当然,不同的体系结构和语言在这方面存在差异,但其要点是相同的


软件中断的想法(用Unix的说法是“信号”)基本过程是,userland进程通过一个系统调用向操作系统注册一个信号处理程序,该系统调用以处理程序函数的地址为参数,然后操作系统在将来的某个时间识别出它应该发送信号该进程是一个信号。下一次运行该进程时,操作系统会将其指令指针设置为处理程序函数的开头,并将其所有寄存器保存到进程可以从中恢复的某个位置,然后再继续执行该进程。通常,处理程序会有某种路由逻辑来警告c的相关位ode表示它收到了一个信号。当进程完成执行信号处理程序时,它会恢复在信号处理程序运行之前存在的寄存器状态,并在停止执行的地方继续执行。因此,软件中断在了解来自内核的事件到该进程方面也比轮询更有效(然而,这并不是一种真正的通用机制,因为大多数信号都有特定的用途)。

中断:由计算机中的一个设备产生的事件,用于引起CPU的注意。 提供以提高处理器利用率。 为了处理中断,有一个与之相关的中断服务例程(ISR)。 为了中断处理器,设备在其IRQ线上发送一个信号,并继续这样做,直到处理器确认中断。 然后,CPU通过将程序状态字(PSW)和PC推到控制堆栈上执行上下文切换。 CPU执行ISR。 然而,池是计算机等待外部设备检查其就绪性的过程。 计算机除了检查设备的状态外,不会执行任何其他操作 轮询通常与低级硬件一起使用 示例:当打印机通过Parrnell端口连接时,计算机将等待打印机收到下一个字符。
这些过程可能只需读取1字节即可。有两种不同的方法(轮询和中断)为计算机系统的I/O提供服务。在轮询过程中,CPU持续保持忙碌状态,要么向I/O设备提供输入数据,如果是,则检查相应设备的源端口以及为其提供服务的输入的优先级


在中断驱动方法中,当一个数据被提供给一个I/O设备时,会产生一个中断,CPU会检查该输入的优先级以提供服务。

嗨,谢谢你的回答,但我有点困惑。“CPU被中断”的确切含义是什么"。CPU如何知道它需要在不检查的情况下为中断提供服务?同样,你也可以在不检查的情况下知道电话何时响起。铃声会打断你。你的大脑是这样构造的:当电话响起时,无论它在做什么,它都会被中断并注意到电话正在响。你不必轮询ph值一个是看它是否在响。电话铃声的例子准确地描述了我的困惑。这难道不是意味着我的大脑在无意识地“轮询”附着在我耳朵上的神经元。如果它是无意识的,那么它就不是轮询。轮询的关键是它是一个活跃的pr